AWS - migratie naar AWS


Maarten Jongmans is software engineer en projectleider bij endroit.nl en boo2.nl.  Met zijn team ontwerpt, ontwikkelt en onderhoudt hij web-applicaties. In deze blog vertelt hij over zaken die hij bij zijn dagelijkse werkzaamheden tegenkomt.

We gebruiken Amazon Web Services (AWS) cloudplatform voor het draaien en beheren van onze web-applicaties. Meestal omdat onze klanten dat eisen of wensen, maar inmiddels zijn we ook enthousiast over dit cloud-platform. AWS staat in Gartners Magic Quadrant voor Cloudservices al jaren dik aan de top ver voor Google (Cloud) en Microsoft (Azure). 

Bestaande web-applicaties migreren we regelmatig van klassieke hosting, Google-cloud of Azure naar AWS. In deze blog beschrijf ik enkele aspecten waarbij rekening moet worden gehouden voor een dergelijke migratie. De technische infrastructuur van AWS die we thans (aug 2018) gebruiken staat schematisch weergegeven in figuur 1.  

  • Server-keuze. Dit is meestal de keuze tussen Microsoft (IIS) of Apache. Indien Apache bieden we het meer moderne Nginx aan als alternatief.  Met Nginx minder vastlopende servers en weekendwerk! 
  • Operating system. We gebruiken meestal die waarop de web-applicatie voorheen draaide om compatibiliteitsproblemen te voorkomen. Als het een oud of verlopen operating system betreft gebruiken we Docker. Docker isoleert de web-applicatie van de server plaatst het in een container.  In deze container kan de web-applicatie in de meeste operating systemen draaien. 
  • 'Los-knippen' van de web-applicatie. Om de web-applicatie met database te kopiëren naar een andere omgeving moeten alle linkjes en draadjes met de oude server omgeving worden doorgeknipt en algemeen worden gemaakt. De kwaliteit van de code komt hier direct aan het licht.  Het "hardcoding" van verwijzingen naar server-,  database en file-servers is a big NoNo in programmeerland.  Wijzigingen en migraties worden daardoor erg moeilijk. Directe verwijzingen naar file-servers moeten worden vervangen door generieke verwijzingen naar S3, de opslag-service van AWS. Alle links met de omgeving en server moeten  worden geplaatst in een config(uration) file. 
  • Stateless maken van de web-applicatie. Dit betekent dat de web-applicatie blijft draaien als de code op een andere server wordt verplaatst. Het gebruik van sessies of cookies wordt vervangen door tokens zodat er niets op een server wordt opgeslagen. Dit biedt weer meer zekerheid dat de applicatie ook op een andere server zoals AWS zonder problemen zal draaien. Een bijkomend voordeel is dat de performance kan worden verbeterd door het gebruik van Load-balancing. Load-balancing kan alleen met stateless web-applicaties.
  • SES wijzigen. Web-applicaties communiceren vanuit de cloud naar de gebruikers op aarde via het internet (http). Maar ook door het versturen van email (SMTP) of SMS. Hiervoor biedt AWS een betrouwbare service waarbij Amazon garant staat voor de mails die je verstuurt zodat ze niet in de spam komen.
  • Testen. Met een grote 'T'. Niets in de automatisering gaat automatisch en controleren is beter dan vertrouwen. Dat laatste heb ik nog uit mijn accountancy periode. De rol, betrokkenheid, verantwoordelijkheid, tijd en beschikbaarheid van gebruikers bepaalt hierbij het slagen van het testen.

help

figuur 1: AWS technische infrastructuur