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

Building reliable APIs

Building reliable APIs

mattheath

July 10, 2018
Tweet

More Decks by mattheath

Other Decks in Programming

Transcript

  1. Building Reliable APIs
    Matt Heath, Monzo

    View Slide

  2. Matt Heath, Monzo
    @mattheath

    View Slide

  3. View Slide

  4. View Slide

  5. monoliths
    traditional dev

    View Slide

  6. View Slide

  7. What do we mean
    by “reliable”?

    View Slide

  8. View Slide

  9. Contacting us
    Using your debit card
    Making payments
    Freezing your card 

    Viewing your balance
    Viewing recent transactions
    Sending emoji reactions
    Setting your profile picture
    Viewing merchant logos

    View Slide

  10. Contacting us
    Using your debit card
    Making payments
    Freezing your card 

    Viewing your balance
    Viewing recent transactions
    Sending emoji reactions
    Setting your profile picture
    Viewing merchant logos

    View Slide

  11. ?

    View Slide

  12. Application

    View Slide

  13. Application

    View Slide

  14. APPLICATION
    Application

    View Slide

  15. View Slide

  16. View Slide

  17. ?

    View Slide

  18. View Slide

  19. API

    View Slide

  20. API

    View Slide

  21. API Gateway
    API
    Service
    API
    Service
    API
    Service
    API
    Service
    API
    Service
    API
    Service
    API
    Service
    API
    Service

    View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. API Gateway
    Accounts Cards Pots Emojis Payments …

    View Slide

  26. API Gateway
    Accounts Cards Pots Emojis Payments …
    New

    Exciting

    API!!

    View Slide

  27. Cards Pots Emojis Payments …
    API Gateway
    Accounts
    New

    Exciting

    API!!





    View Slide

  28. Cards Pots Emojis Payments …
    API Gateway
    Accounts
    New

    Exciting

    API!!






    View Slide

  29. API Gateway
    Accounts Cards Pots Emojis Payments …
    New

    Exciting

    API!!


    View Slide

  30. View Slide

  31. pod

    View Slide

  32. pod
    container
    container
    container

    View Slide

  33. pod
    API service

    View Slide

  34. pod

    View Slide

  35. pod

    View Slide

  36. pods
    replica set

    View Slide

  37. replica set
    pods
    deployment

    View Slide

  38. pods
    replica set
    deployment

    View Slide

  39. pods
    replica set
    deployment
    change

    View Slide

  40. deployment
    change
    old pods
    old replica set

    View Slide

  41. deployment
    change
    old pods
    old replica set new replica set

    View Slide

  42. deployment
    change
    old pods
    old replica set new replica set
    new pod

    View Slide

  43. deployment
    change
    old pods
    old replica set new replica set
    new pod

    View Slide

  44. deployment
    change
    old replica set
    new pods
    new replica set

    View Slide

  45. deployment
    change
    new replica set
    new pods

    View Slide

  46. deployment
    replica set
    pods

    View Slide

  47. pods

    View Slide

  48. pods
    service

    View Slide

  49. pods
    service
    kubedns

    View Slide

  50. pods
    service routing - static cluster IP
    managed replicas
    resource allocations
    rollout strategies
    liveness checks
    anti-affinity, etc
    kubedns routing - “service name”

    View Slide

  51. ?

    View Slide

  52. machine

    View Slide

  53. machine machine

    View Slide

  54. machine machine machine machine machine machine

    View Slide

  55. machine machine machine machine machine machine
    Kubernetes

    View Slide

  56. machine machine machine machine machine
    kubelet

    View Slide

  57. kubelet kubelet kubelet kubelet kubelet kubelet

    View Slide

  58. kubelet kubelet kubelet kubelet kubelet kubelet
    Kubernetes Master

    View Slide

  59. kubelet kubelet kubelet kubelet kubelet kubelet
    Kubernetes Master
    etcd

    View Slide

  60. kubernetes

    View Slide

  61. kubernetes
    service service service service service service
    service
    service
    service service

    View Slide

  62. kubernetes
    service service service service service service
    service
    service
    service service

    View Slide

  63. kubernetes
    service service service service service service
    service
    service
    service service

    View Slide

  64. kubernetes
    service service service service service service
    service
    service
    service service

    View Slide

  65. kubernetes
    service service service service service service
    service
    service
    service service service
    service
    service

    View Slide

  66. kubernetes
    service service service service service
    service service service
    service
    service

    View Slide

  67. Reliable inter-service
    communication

    View Slide

  68. Service
    Service

    View Slide

  69. Service
    Service Service
    Service

    View Slide

  70. Service
    Service Service
    Service
    Kubernetes

    Service

    View Slide

  71. Service Discovery
    Load Balancing
    Timeouts and Expirations
    Retries
    Rate Limiting
    Connection Pooling
    Circuit Breaking
    Failure Detection
    Metrics and Tracing
    Interrupts
    Context Propagation

    View Slide

  72. Service Discovery
    Load Balancing
    Timeouts and Expirations
    Retries
    Rate Limiting
    Connection Pooling
    Circuit Breaking
    Failure Detection
    Metrics and Tracing
    Interrupts
    Context Propagation

    View Slide

  73. Service
    Service Service
    Service
    ?

    View Slide

  74. Service
    Service Service
    Service
    linkerd

    View Slide

  75. Service
    linkerd

    View Slide

  76. Service
    linkerd
    service

    discovery

    View Slide

  77. Service
    Service Service
    Service
    linkerd
    service

    discovery

    View Slide

  78. Service
    Service Service
    Service
    linkerd

    View Slide

  79. Service
    Service Service
    Service
    linkerd

    View Slide

  80. Service
    Service Service
    Service
    linkerd

    View Slide

  81. Service
    Service Service
    Service
    linkerd

    View Slide

  82. Event Driven

    Architecture

    View Slide

  83. Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    API
    Service

    View Slide

  84. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway

    View Slide

  85. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    D
    Service
    E

    View Slide

  86. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E

    View Slide

  87. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E

    View Slide

  88. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E


    View Slide

  89. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E





    View Slide

  90. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E





    Service
    D

    View Slide

  91. API
    Service
    Service
    A
    Service
    B
    Load Balancer
    Edge Gateway
    Service
    C
    Service
    D
    Service
    E

    Service
    D

    View Slide

  92. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  93. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  94. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  95. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  96. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  97. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  98. View Slide

  99. API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns
    API card-api card-processing cards transactions balance transaction-enrichment merchant feed-generator feed apns

    View Slide

  100. View Slide

  101. Critical Path

    View Slide

  102. How do we make
    systems reliable?

    View Slide

  103. Masterless systems
    No single points of failure
    Simple / small components
    Minimise critical path
    Queue deferrable tasks
    Automated failure correction

    View Slide

  104. View Slide

  105. View Slide

  106. View Slide