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

Serverless : transition du monolithique au système distribué

Ba2198386e326d6e3ca57b2271d861e9?s=47 Yves Brissaud
February 10, 2017

Serverless : transition du monolithique au système distribué

SnowCamp 2017

C'est l'histoire d'une application web. De base monolithique, elle a évolué pour intégrer de manière massive des technologies de type "serverless" (pool de 2000 AWS Lambda en production) : amélioration drastique des performances, meilleure expérience utilisateur. L'introduction de cette technologie a surtout transformé au plus profond l'architecture de l'application en un système distribué… et avec ma vision de tous mes futurs développements.

Ba2198386e326d6e3ca57b2271d861e9?s=128

Yves Brissaud

February 10, 2017
Tweet

Transcript

  1. Serverless : transition du monolithique au système distribué SnowCamp 2017

    @_crev_
  2. Yves Brissaud $ docker run squarescale/ybrissaud PaaS for your Cloud

    Native Applications
  3. λ

  4. Il était une fois

  5. https://www.flickr.com/photos/64248265@N02/14002402266/

  6. AWS cloud

  7. Amazon S3 Paperclip

  8. Amazon S3 Paperclip • Upload • Resize • Info (imagemagick)

  9. https://www.flickr.com/photos/emyanmei/7050219929

  10. None
  11. None
  12. None
  13. None
  14. None
  15. None
  16. None
  17. CPU

  18. None
  19. > 500 photos / utilisateur

  20. > 500 photos / utilisateur ≃ 10 000 resize

  21. 100% CPU dans ImageMagick

  22. None
  23. None
  24. None
  25. λ

  26. None
  27. AWS Lambda est un service de calcul sans serveur qui

    exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul sous-jacentes pour vous. https://aws.amazon.com/fr/lambda/details/
  28. Amazon S3 Paperclip • Upload • Resize • Info

  29. Amazon S3 Paperclip • Upload • Resize • Info

  30. AWS Lambda est un service de calcul sans serveur qui

    exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul sous-jacentes pour vous. https://aws.amazon.com/fr/lambda/details/
  31. AWS Lambda est un service de calcul sans serveur qui

    exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul sous-jacentes pour vous. https://aws.amazon.com/fr/lambda/details/
  32. Amazon S3

  33. Amazon S3

  34. Amazon S3 Lambda function

  35. Amazon S3 Lambda function NodeJS + GraphicsMagick

  36. Amazon S3 Lambda function

  37. Amazon S3 Lambda function

  38. Amazon S3 Lambda function ≈ 1.5 s / photo

  39. Amazon S3 Lambda function ≈ 1.5 s / photo 100

    λ
  40. None
  41. « En tant qu’utilisateur, afin de préparer ma vidéo, je

    veux découper et redimensionner chaque photo. » — Da Backlog
  42. > 500 photos / utilisateur

  43. > 1800 photos / utilisateur

  44. None
  45. None
  46. < 10 s

  47. Amazon S3 Lambda function

  48. Lambda function

  49. Lambda function X 1800

  50. Lambda function X 1800 100

  51. Lambda function X 1800 100 > 10 s

  52. None
  53. 10 200 200

  54. 10 200 200 < 2 s

  55. Amazon S3 Lambda function

  56. Amazon S3 Lambda function 1.5 - 2 s

  57. Amazon S3 Lambda function > 30 s

  58. Amazon S3 Lambda function > 30 s

  59. « Amazon, I Want Moar λ »

  60. 2000 λ

  61. Amazon S3 Lambda function > 30 s

  62. Amazon S3 Lambda function ≈ 2 s

  63. O RLY?

  64. ≈ 3-4 secondes

  65. ≈ 3-4 secondes Latence Appel des lambda non // Lambda

    utilisées
  66. Click 3-4 s

  67. None
  68. ?

  69. Amazon SQS

  70. CPU

  71. X 1800

  72. X 1800

  73. X 1800

  74. Amazon S3 Lambda function Amazon SQS Amazon RDS

  75. Amazon SQS Amazon RDS Lambda function Amazon S3

  76. Amazon SQS Amazon RDS Amazon S3 Lambda function

  77. Amazon SQS Amazon S3 Lambda function Amazon RDS

  78. Amazon SQS Amazon S3 Lambda function Réseau local (vpc) Amazon

    RDS
  79. Amazon SQS Amazon S3 Lambda function Réseau local (vpc) Amazon

    RDS Réseau local (vpc) S3 endpoint
  80. Amazon SQS Amazon S3 Lambda function Réseau local (vpc) Amazon

    RDS Réseau local (vpc) S3 endpoint
  81. Amazon SQS Amazon S3 Lambda function Réseau local (vpc) Amazon

    RDS Réseau local (vpc) S3 endpoint
  82. Amazon SQS Amazon S3 Lambda function Réseau local (vpc) Amazon

    RDS Réseau local (vpc) VPC NAT gateway
  83. None
  84. Lambda function Amazon S3 Amazon RDS Amazon SQS

  85. Lambda function Amazon S3 Amazon RDS Amazon SQS

  86. Lambda function Amazon S3 Amazon RDS Amazon SQS Réseau local

    (vpc)
  87. None
  88. Amazon S3 Lambda function Amazon RDS Amazon SQS

  89. Amazon S3 Lambda function Amazon RDS Amazon SQS 2000 updates

    + lock
  90. « When deploying containers + microservices, there is an unstated

    truth: you are developing a distributed system » — Bryan Cantrill, CTO of Joyent — Hashiconf http://www.slideshare.net/bcantrill/the-container-revolution-reflections-after-the-first-decade
  91. « When deploying containers + microservices, there is an unstated

    truth: you are developing a distributed system » — Bryan Cantrill, CTO of Joyent — Hashiconf http://www.slideshare.net/bcantrill/the-container-revolution-reflections-after-the-first-decade serverless
  92. None
  93. Amazon S3

  94. Amazon S3 DB clé => valeur

  95. None
  96. Amazon S3 Status files

  97. Amazon S3 Status files

  98. Amazon S3

  99. Amazon S3 < 10 messages pour 2000 λ

  100. Amazon S3 < 2s < 4s < 1s

  101. Amazon S3 < 2s < 4s < 1s 1800 images

    crop + 2 resize < 10 s
  102. None
  103. En production

  104. None
  105. Monitoring ? Logs ? Erreurs?

  106. None
  107. None
  108. Parfois ≃ temps de traitement

  109. None
  110. None
  111. Boot ~ ms TTL < 2s x 2000

  112. AWS Lambda est un service de calcul sans serveur qui

    exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul sous-jacentes pour vous. https://aws.amazon.com/fr/lambda/details/
  113. AWS Lambda est un service de calcul sans serveur qui

    exécute votre code en réponse à des événements et gère automatiquement les ressources de calcul sous-jacentes pour vous. https://aws.amazon.com/fr/lambda/details/
  114. None
  115. None
  116. None
  117. None
  118. Par mois pour 2000 coeurs

  119. None
  120. Amazon S3 Status files

  121. Amazon DynamoDB

  122. None
  123. https://github.com/eawsy/aws-lambda-go-shim

  124. None
  125. None
  126. None
  127. None
  128. None
  129. Keep It Simple, Stupid

  130. I SEE λ EVERYWHERE

  131. None
  132. None