Upgrade to Pro — share decks privately, control downloads, hide ads and more …

High Performance Architecture Patterns

High Performance Architecture Patterns

Celso Crivelaro

May 12, 2016
Tweet

More Decks by Celso Crivelaro

Other Decks in Technology

Transcript

  1. High Performance
    Architecture Patterns
    Celso Crivelaro
    @celsocrivelaro

    View Slide

  2. $ whoami > Celso Crivelaro
    - Engineer and MSc in Computer Engineering
    - Dev Ruby / Python / Java
    @celsocrivelaro
    http://crivelaro.me

    View Slide

  3. View Slide

  4. View Slide

  5. 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

    View Slide

  6. View Slide

  7. Platforms

    View Slide

  8. View Slide

  9. View Slide

  10. View Slide

  11. View Slide

  12. High Availability

    View Slide

  13. Resource Consumption

    View Slide

  14. View Slide

  15. Disk
    Memory
    Band-
    width
    Processor
    time
    Logs
    GC
    Open
    Connections
    Deadlocks
    Stop all disk activities
    Swap
    Slowness
    Services stop
    responding
    Queues Amount
    Workers
    Slowness

    View Slide

  16. Integrations

    View Slide

  17. Integrations always
    fails!

    View Slide

  18. Integration Fails always
    Internal
    External
    DB API Storage Network
    API ISP Hop
    Cloud

    View Slide

  19. Map hidden
    integrations
    E.g. DNS

    View Slide

  20. Fail Fast

    View Slide

  21. Failing Fast reduces
    transient errors

    View Slide

  22. Timeouts

    View Slide

  23. Never trust in
    default timeouts

    View Slide

  24. Threads Timeouts to get rid of deadlocls
    Internal Little timeout
    External Depends: The least possible

    View Slide

  25. Retry

    View Slide

  26. 1 2 3 5 8 n
    Fibonacci Proportion
    ...

    View Slide

  27. Isolate Critical
    Components

    View Slide

  28. Panel / API
    Painel Web Internal API - HTTP
    Resources
    Connection
    Pool
    App Server
    Business
    Rules
    Integrations

    View Slide

  29. App Internal API
    App Panel
    Painel Web API - HTTP
    Resources
    Conn.
    Pool
    App
    Server
    Business
    Rules
    Integrations
    Resources
    Conn.
    Pool
    App
    Server
    Business
    Rules
    Integrations

    View Slide

  30. Less Components
    ==
    Less Problems

    View Slide

  31. View Slide

  32. Redundancy

    View Slide

  33. Health Check

    View Slide

  34. View Slide

  35. View Slide

  36. Scalability

    View Slide

  37. CAP Theorem

    View Slide

  38. Availability
    Consistency
    Tolerance
    to network
    partition

    View Slide

  39. Availability
    Consistency
    Partition
    Tolerance
    to network
    partition
    whether system is
    available or not

    View Slide

  40. Availability
    Consistency
    Tolerance
    to network
    partition
    Same data in all nodes

    View Slide

  41. Availability
    Consistency
    Tolerance
    to network
    partition
    Tolerante when a network
    fails

    View Slide

  42. Availability
    Consistency
    Partition
    Tolerance
    Postgres

    View Slide

  43. Availability
    Consistency
    Partition
    Tolerance
    DNS

    View Slide

  44. Availability
    Consistency
    Partition
    Tolerance
    Protocols

    View Slide

  45. Evaluate which one is
    acceptable to your
    platform

    View Slide

  46. Pool of Resources

    View Slide

  47. App
    Connection
    Resource
    Connection
    Connection
    Connection
    Connection

    View Slide

  48. Controlled Timeouts
    Controlled Resource Consumption
    Avoid opening/closing connections
    overhead

    View Slide

  49. Cache

    View Slide

  50. Make your data closer
    to your app

    View Slide

  51. When use cache
    App API
    DB

    View Slide

  52. Default Cache Strategy
    App
    Cache
    Source
    1
    2
    3

    View Slide

  53. Hot Cache Strategy
    App Cache Source
    2 1

    View Slide

  54. Load Balacing

    View Slide

  55. LB
    App
    App
    App
    App

    View Slide

  56. Load Balance Strategy
    matters!

    View Slide

  57. Decoupled
    Architecture

    View Slide

  58. Slow Processing
    Fast processing
    Asynchronous Processing
    Authentication
    Message
    Transformation
    MTA Providers
    User
    Message
    Persistence
    Consolidation

    View Slide

  59. Background jobs
    Messaging frameworks

    View Slide

  60. How to discover
    bottlenecks?

    View Slide

  61. Test your limits...
    Load Test
    Stress Test
    Peak Test

    View Slide

  62. Telemetry

    View Slide

  63. View Slide

  64. Grafana + InfluxDB

    View Slide

  65. Other scalabity
    patterns

    View Slide

  66. Indexes

    View Slide

  67. Sharding

    View Slide

  68. References

    View Slide

  69. View Slide

  70. View Slide

  71. View Slide

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

    View Slide

  73. View Slide

  74. Thank you!
    Celso Crivelaro
    @celsocrivelaro
    [email protected]

    View Slide