AWS migratie

AWS

Zelfschalend AWS cluster met Elastic Beanstalk

Van Heroku naar AWS...

Vanuit een klant was er de wens om een Laravel backend (admin + api) vanuit Heroku te migreren naar AWS. De 'dynos' bij Heroku werden erg duur, maar het geheel had vooral te maken met stabiliteitsproblemen.

In AWS hebben we een productie en een test omgeving opgezet voor deze app:

  • Een zelfschalende Elastic Beanstalk app, met gescheiden onderdelen voor: API, admin, en 'worker'
  • Een shared application load balancer om SSL af te handelen en het verkeer naar de goede targets te leiden
  • Deployment pipelines voor continuous delivery/integration en immutable deployments zonder offline tijd
  • Een redundant Elasticache/redis cluster

Met een simpele git push kan de deployment pipeline getriggered worden. De database draaide reeds bij AWS.



Load / Stress testing

Om het nieuwe cluster in te stellen, hebben we enkele stress tests uitgevoerd op de oude en nieuwe omgeving.
Een orienterende test hebben we gebruikt om de servers nauwkeurig in te stellen zodat deze geen geheugen problemen ondervinden onder load

Uit de tests bleek dat het nieuwe cluster 30% meer performant was dan de Heroku setup. Daarnaast heeft de Heroku setup kritische punten bereikt, terwijl AWS nog niet eens (automatisch) hoefde te schalen tijdens de test.


Kostenbesparing

Naast de hogere capaciteit en snelheid, wordt de kosten besparing ten opzichte van het laten draaien op Heroku ingeschat op 60%!

Voor nog hogere schaalbaarheid zetten we 'spot instances' in (naast een 'on demand' base) - dit is ongebruikte reserve capaciteit bij AWS die aangeboden wordt tegen een zeer lage prijs.



Datum: Maart, 2021

Kennis van de applicatie

Voor dit project hebben ik ook goed gekeken naar de applicatie. De aanwezige kennis van het gebruikte PHP framework heb ik goed kunnen gebruiken om de performance en het functioneren van de stack te kunnen evalueren en tunen.

Nog wat specs

  • Application framework: PHP Laravel
  • Nginx
  • php-fpm tuned to the application and instance size
  • Code Pipeline with CodeCommit (VCS), CodeBuild project and CodeDeploy
  • Docker image (in ECR) for the build process
  • Environment specific configuration strategy in the build process
  • Daemonized workers using supervisord

Zie ook

AWS Certified Devops Engineer

Ik volg momenteel de AWS Certified DevOps Engineer-cursus om mijn kennis te vergroten op het gebied van het automatiseren van infrastructuur en CI/DI.

Load en Stress tests

Cloud infrastructuur testen met K6

Gobot RPI simulator

GPIO pin simulator voor RPI geschreven in Golang

Reactions Craft CMS plugin

Nieuwe Craft CMS plugin voor Facebook stijl reacties

Liveblog Beurs

Gedaan met stoffige beursartikelen. Hier een Facebook-stijl blog feed om het beursnieuws wat kleurrijker en actueler te maken.

Vertaal component

Een vertaal component in Symfony, voorzien van api en beheersmodule.