Top Banner
High Performance Architecture Patterns Celso Crivelaro @celsocrivelaro
74

High Performance Architecture Patterns

Apr 14, 2017

Download

Technology

Celso Crivelaro
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: High Performance Architecture Patterns

High Performance Architecture Patterns

Celso Crivelaro @celsocrivelaro

Page 2: High Performance Architecture Patterns

$ whoami > Celso Crivelaro- Engineer and MSc in Computer Engineering- Dev Ruby / Python / Java

@celsocrivelarohttp://crivelaro.me

Page 3: High Performance Architecture Patterns
Page 4: High Performance Architecture Patterns
Page 5: High Performance Architecture Patterns

SMTP Locaweb- Transaction email platform- Fast and high quality email sending- Live reports- Integration by SMTP Protocol and HTTP API

- 2,5 Millions of messages per day- + 2 years

Page 6: High Performance Architecture Patterns
Page 7: High Performance Architecture Patterns

Platforms

Page 8: High Performance Architecture Patterns
Page 9: High Performance Architecture Patterns
Page 10: High Performance Architecture Patterns
Page 11: High Performance Architecture Patterns
Page 12: High Performance Architecture Patterns

High Availability

Page 13: High Performance Architecture Patterns

Resource Consumption

Page 14: High Performance Architecture Patterns
Page 15: High Performance Architecture Patterns

Disk

Memory

Band-width

Processor time

Logs

GC

Open Connections

Deadlocks

Stop all disk activities

Swap

Slowness

Services stop responding

Queues Amount Workers Slowness

Page 16: High Performance Architecture Patterns

Integrations

Page 17: High Performance Architecture Patterns

Integrations always fails!

Page 18: High Performance Architecture Patterns

Integration Fails alwaysInternal

External

DB API Storage Network

API ISP HopCloud

Page 19: High Performance Architecture Patterns

Map hidden integrationsE.g. DNS

Page 20: High Performance Architecture Patterns

Fail Fast

Page 21: High Performance Architecture Patterns

Failing Fast reduces transient errors

Page 22: High Performance Architecture Patterns

Timeouts

Page 23: High Performance Architecture Patterns

Never trust in default timeouts

Page 24: High Performance Architecture Patterns

Threads Timeouts to get rid of deadlocls

Internal Little timeout

External Depends: The least possible

Page 25: High Performance Architecture Patterns

Retry

Page 26: High Performance Architecture Patterns

1 2 3 5 8 n

Fibonacci Proportion

...

Page 27: High Performance Architecture Patterns

Isolate Critical Components

Page 28: High Performance Architecture Patterns

Panel / API

Painel Web Internal API - HTTP

Resources

Connection Pool App Server Business

Rules Integrations

Page 29: High Performance Architecture Patterns

App Internal APIApp Panel

Painel Web API - HTTP

Resources

Conn. Pool

App Server

Business Rules Integrations

Resources

Conn. Pool

App Server

Business Rules Integrations

Page 30: High Performance Architecture Patterns

Less Components ==

Less Problems

Page 31: High Performance Architecture Patterns
Page 32: High Performance Architecture Patterns

Redundancy

Page 33: High Performance Architecture Patterns

Health Check

Page 34: High Performance Architecture Patterns
Page 35: High Performance Architecture Patterns
Page 36: High Performance Architecture Patterns

Scalability

Page 37: High Performance Architecture Patterns

CAP Theorem

Page 38: High Performance Architecture Patterns

Availability

ConsistencyTolerance to network partition

Page 39: High Performance Architecture Patterns

Availability

Consistency

Partition Tolerance to network partition

whether system is available or not

Page 40: High Performance Architecture Patterns

Availability

ConsistencyTolerance to network partition

Same data in all nodes

Page 41: High Performance Architecture Patterns

Availability

ConsistencyTolerance to network partition

Tolerante when a network fails

Page 42: High Performance Architecture Patterns

Availability

Consistency Partition Tolerance

Postgres

Page 43: High Performance Architecture Patterns

Availability

Consistency Partition Tolerance

DNS

Page 44: High Performance Architecture Patterns

Availability

Consistency Partition Tolerance

Protocols

Page 45: High Performance Architecture Patterns

Evaluate which one is acceptable to your

platform

Page 46: High Performance Architecture Patterns

Pool of Resources

Page 47: High Performance Architecture Patterns

App

Connection

Resource

Connection

Connection

Connection

Connection

Page 48: High Performance Architecture Patterns

Controlled Timeouts

Controlled Resource Consumption

Avoid opening/closing connections overhead

Page 49: High Performance Architecture Patterns

Cache

Page 50: High Performance Architecture Patterns

Make your data closer to your app

Page 51: High Performance Architecture Patterns

When use cache

App API

DB

Page 52: High Performance Architecture Patterns

Default Cache Strategy

App

Cache

Source

1

2

3

Page 53: High Performance Architecture Patterns

Hot Cache Strategy

App Cache Source2 1

Page 54: High Performance Architecture Patterns

Load Balacing

Page 55: High Performance Architecture Patterns

LB

App

App

App

App

Page 56: High Performance Architecture Patterns

Load Balance Strategy matters!

Page 57: High Performance Architecture Patterns

Decoupled Architecture

Page 58: High Performance Architecture Patterns

Slow Processing

Fast processing

Asynchronous Processing

Authentication Message Transformation MTA ProvidersUser

Message Persistence Consolidation

Page 59: High Performance Architecture Patterns

Background jobs

Messaging frameworks

Page 60: High Performance Architecture Patterns

How to discover bottlenecks?

Page 61: High Performance Architecture Patterns

Test your limits...

Load Test

Stress Test

Peak Test

Page 62: High Performance Architecture Patterns

Telemetry

Page 63: High Performance Architecture Patterns
Page 64: High Performance Architecture Patterns

Grafana + InfluxDB

Page 65: High Performance Architecture Patterns

Other scalabity patterns

Page 66: High Performance Architecture Patterns

Indexes

Page 67: High Performance Architecture Patterns

Sharding

Page 68: High Performance Architecture Patterns

References

Page 69: High Performance Architecture Patterns
Page 70: High Performance Architecture Patterns
Page 71: High Performance Architecture Patterns
Page 72: High Performance Architecture Patterns

http://use-the-index-luke.com

Page 73: High Performance Architecture Patterns
Page 74: High Performance Architecture Patterns

Thank you!Celso Crivelaro@celsocrivelaro

[email protected]