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

C'est l'histoire d'une app web qui rencontre le serverless

Ba2198386e326d6e3ca57b2271d861e9?s=47 Yves Brissaud
September 13, 2016

C'est l'histoire d'une app web qui rencontre le serverless

HumanTalk Grenoble

Ba2198386e326d6e3ca57b2271d861e9?s=128

Yves Brissaud

September 13, 2016
Tweet

Transcript

  1. C’est l’histoire d’une app web Qui rencontre le #serverless Yves


    Brissaud @Sogilis.com
 @_crev_
 eunomie
  2. Chapitre 1 L’ignorance

  3. Besoin d’une app web

  4. Besoin d’une app web

  5. A quoi sert l’app ? A uploader et traiter des

    photos
  6. Paperclip Upload Resize

  7. 1 utilisateur

  8. None
  9. 2 utilisateurs

  10. None
  11. 5 utilisateurs

  12. None
  13. CPU Load

  14. Paperclip Upload Resize

  15. • 500+ photos • 1080p minimum • 3 resizes en

    sortie
 (1080, 720, 360) Par utilisateur
  16. 100% CPU dans ImageMagick

  17. Chapitre 2 La découverte

  18. La solution classique

  19. L’autre solution λ

  20. None
  21. 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/
  22. None
  23. Trigger automatique 100 λ

  24. Trigger automatique Resize (ImageMagick) 100 λ

  25. Trigger automatique Resize 100 λ

  26. • Rails -> proxy vers S3 • Pas de calcul

    sur les serveurs • Disponibilité
 (100 lambda)
  27. That’ll work

  28. Chapitre 3 Vers l’infini et au delà

  29. — Da Backlog « En tant qu’utilisateur, afin de préparer

    ma vidéo, je veux découper et redimensionner chaque photo. »
  30. Entrée ± 1800 photos > 1080p & <= 4K Sur

    action utilisateur
  31. Entrée ± 1800 photos > 1080p & <= 4K Sur

    action utilisateur Sortie ± 3600 photos 1080p + 720p pour chaque Le plus rapidement possible
  32. Entrée ± 1800 photos > 1080p & <= 4K Sur

    action utilisateur Sortie ± 3600 photos 1080p + 720p pour chaque Le plus rapidement possible < 10 secondes « Et quand il y a plusieurs utilisateurs ? »
  33. λ FTW

  34. Crop
 2x Resize 100 λ Clic 2000
 demandes

  35. Crop
 2x Resize 100 λ Clic 2000
 demandes > 10

    secondes pour appeler les λ
  36. Crop
 2x Resize 100 λ Clic 10x
 200 demandes <

    2-3 secondes
  37. Crop
 2x Resize 100 λ Clic 10x
 200 demandes ≈

    2 secondes
 / image 40 secondes mini
 sans parler de latence 㱺
  38. None
  39. « Amazon, I Want Moar λ »

  40. λ FTW 2000

  41. Crop
 2x Resize 2000 λ Clic 10x
 200 demandes ≈

    2 secondes
 / image 40 2 secondes mini
 sans parler de latence 㱺
  42. ≈ 3-4 secondes Latence Appel des lambda non / /

    Lambda utilisées
  43. Chapitre 4 Chérie, ça va couper !

  44. ? 2000 λ

  45. ? 2000 λ 2000 messages en 3-4 secondes AWS SQS

    (queue)
  46. CPU Load

  47. ? 2000 λ λ + S3 + RDS (postgresql) +

    SQS (queue de notification)
  48. ? 2000 λ λ + S3 + RDS (postgresql) +

    SQS (queue de notification) 㱺 conf réseau dans les lambda (VPC, Gateway)
  49. ? 2000 λ λ + S3 + RDS (postgresql) +

    SQS (queue de notification) 㱺 perf :-(
  50. ? 2000 λ λ + S3 + RDS (postgresql) +

    SQS (queue de notification) 㱺 découper les lambda… en fonctions !
  51. 2000 λ ? 2000 updates + lock en 3-4 s

  52. — Bryan Cantrill, CTO of Joyent — Hashiconf http://www.slideshare.net/bcantrill/the-container-revolution-reflections-after-the-first-decade «

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

    When deploying containers + microservices, there is an unstated truth: you are developing a distributed system » serverless
  54. None
  55. AWS S3 DB clé 㱺 valeur

  56. 2000 λ

  57. 2000 λ Status files

  58. 2000 λ Status files

  59. 2000 λ Quelques updates (< 10) + lock en 3-4

    s
  60. None
  61. Conclusion Alors, ça donne quoi ?

  62. C’est viable ! En production avec les 2000 λ

  63. None
  64. Restez simple

  65. Restez simple Une λ = une fonction Une λ peut

    appeler une λ Isolation des problématiques réseau, droits, etc.
  66. think BIG

  67. 2000 λ c’est loin d’un serveur sur heroku…

  68. I SEE λ EVERYWHERE

  69. Merci ! Questions ?