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

Code to Current Account

Code to Current Account

Presented with Simon Vans-Colina at Hashidays London

mattheath

June 12, 2017
Tweet

More Decks by mattheath

Other Decks in Programming

Transcript

  1. Code to 

    Current Account
    @simonvc & @mattheath

    View Slide

  2. @simonvc @mattheath

    View Slide

  3. @simonvc @mattheath

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. Legacy banks

    View Slide

  10. Number of banks running entirely* free* software.

    View Slide

  11. Number of banks running entirely* free* software.

    View Slide

  12. Rebuild everything
    * Go microservices
    * Git as Change management
    * Realtime and API

    View Slide

  13. Go ❤
    * Emphasis on

    correctness
    * Performant
    * Lean

    View Slide

  14. "Plan to throw your first one away."
    Mesos -> Kubernetes
    RabbitMQ -> LinkerD
    Cloud Formation -> Terraform

    View Slide

  15. View Slide

  16. Terraform

    View Slide

  17. View Slide

  18. View Slide

  19. github.com/hashicorp/vault/
    pull/2241
    Cassandra storage backend

    View Slide

  20. Builds

    View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. 0
    40
    80
    160
    120
    Feb
    2015
    June
    2017
    200
    Number of services
    240

    View Slide

  25. View Slide

  26. View Slide

  27. View Slide

  28. Service
    Service

    View Slide

  29. Service
    Service Service
    Service

    View Slide

  30. Service
    Service Service
    Service
    HTTP
    HTTP

    View Slide

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

    View Slide

  32. Service
    Service Service
    Service
    HTTP
    HTTP
    ?

    View Slide

  33. Service
    Service Service
    Service
    HTTP
    HTTP
    linkerd

    View Slide

  34. Service
    Service Service
    Service
    HTTP
    HTTP
    linkerd
    service
    discovery

    View Slide

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

    View Slide

  36. Service
    Service Service
    Service
    HTTP
    HTTP
    linkerd
    service
    discovery

    View Slide

  37. Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service

    View Slide

  38. Service
    Service Service
    Service
    linkerd
    host B
    Service Service
    Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service
    Service
    Service Service
    Service
    Service
    linkerd
    host C
    Service

    View Slide

  39. Service
    Service Service
    Service
    linkerd
    host B
    Service Service
    Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service
    Service
    Service Service
    Service
    Service
    linkerd
    host C
    Service

    View Slide

  40. Service
    Service Service
    Service
    linkerd
    host B
    Service Service
    Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service
    Service
    Service Service
    Service
    Service
    linkerd
    host C
    Service

    View Slide

  41. Service
    Service Service
    Service
    linkerd
    host B
    Service Service
    Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service
    Service
    Service Service
    Service
    Service
    linkerd
    host C
    Service

    View Slide

  42. Service
    Service Service
    Service
    linkerd
    host B
    Service Service
    Service
    Service Service
    Service
    Service
    linkerd
    host A
    Service
    Service
    Service Service
    Service
    Service
    linkerd
    host C
    Service

    View Slide

  43. View Slide

  44. Amazon 

    eu-west-1

    View Slide

  45. Amazon 

    eu-west-1

    View Slide

  46. View Slide

  47. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2

    View Slide

  48. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2

    View Slide

  49. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2

    View Slide

  50. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2
    BGP
    BGP
    BGP
    BGP

    View Slide

  51. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2

    BGP
    BGP

    View Slide

  52. Amazon 

    eu-west-1
    colocation

    dc 1
    colocation

    dc 2


    View Slide

  53. third parties
    colocation
    AWS
    Hardware

    VPN device

    View Slide

  54. third parties
    colocation
    AWS
    Hardware

    VPN device
    VPN client

    View Slide

  55. third parties
    colocation
    AWS
    “connectivity” pod
    Quagga
    (BGP)
    services
    Hardware

    VPN device
    VPN client

    BGP

    View Slide

  56. third parties
    colocation
    AWS
    “connectivity” pod
    Quagga
    (BGP)
    services ??????
    VPN client

    BGP

    View Slide

  57. View Slide

  58. third parties
    colocation
    AWS
    “connectivity” pod
    Quagga
    (BGP)
    services ??????
    VPN client

    BGP

    View Slide

  59. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP

    View Slide

  60. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP

    View Slide

  61. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP

    View Slide

  62. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP
    Linux HA
    Linux HA

    View Slide

  63. View Slide

  64. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP
    Linux HA
    Linux HA

    View Slide

  65. third parties
    colocation
    “connectivity” pod
    Quagga
    (BGP)
    VPN client

    BGP

    View Slide

  66. View Slide

  67. B
    A

    View Slide

  68. active standby

    View Slide

  69. active standby

    View Slide

  70. active standby

    View Slide

  71. active standby

    View Slide

  72. standby active

    View Slide

  73. third parties
    colocation
    AWS
    “connectivity” pod
    Quagga
    (BGP)
    services ??????
    VPN client

    BGP

    View Slide

  74. third parties
    colocation
    AWS
    “connectivity” pod
    Quagga
    (BGP)
    services
    HA VPN

    Appliance
    VPN client

    BGP

    View Slide

  75. Amazon 

    eu-west-1

    View Slide

  76. Build: Terraform
    Secure: Vault
    Develop: Vagrant
    Provision: Packer

    View Slide

  77. monzo.com/careers

    View Slide

  78. monzo.com/careers

    View Slide