Use Case: Platform as a Service

Wat is PaaS

PaaS staat voor Platform as a Service en laat toe om de applicatie laag volledig te laten beheren door de automatisatie-tools en mechanismen die cloud providers ter beschikking stellen. Het is een soort DBaaS voor applicaties, waarbij een bepaalde applicatie engine wordt aangeleverd in plaats van alleen maar het besturingssysteem. Dit laat de organisatie toe om zich meer te focussen op de applicatie zelf. De focus kan dan herlegd worden naar de performantie en integratie in plaats van het opzetten en onderhouden van het besturingssysteem en de software. Het geeft ook vrijheden aan de developers om bepaalde wijzigingen te kunnen aanbrengen aan de omgeving zelf, vanuit de code, mits toegelaten vanuit de organisatie. Het zorgt ook voor een betere dev-prod pariteit, omdat het gemakkelijker is om dezelfde omgeving lokaal of in test te draaien.

De producten die aangeboden worden door de verschillende cloud providers zijn:

  • Amazon AWS: Elastic Beanstalk (PaaS met root/admin toegang)
  • Google Cloud: App Engine
  • Microsoft Azure PaaS
  • Ook interessant: Heroku (geen cloud provider, maar bekendste PaaS systeem)

Veelal is er geen extra kostprijs verbonden aan het gebruik van PaaS ten opzichte van IaaS. De extra tools en onderhoud dat aangeboden wordt maakt deel uit van het cloud platform. Er moet wel altijd betaald worden voor de onderliggende infrastructuur, zoals instances (IaaS) en databases (DBaaS).

In dit document wordt Elastic Beanstalk besproken. De implementaties van de andere cloud providers zijn echter zeer gelijklopend.

Voordelen

De belangrijkste voordelen van PaaS is het automatische opzet en onderhoud van het platform. Dit zorgt er voor dat personeel minder tijd zal moeten spenderen om de platforms up-to-date te houden. De belangrijkste voordelen op een rijtje:

  • Ingebouwde Healthchecks (vervangt automatisch applicatie instances die om welke reden dan ook niet meer functioneren)
  • Green/Blue deployments (automatische roll-back als deployment fout gaat)
  • Zero-downtime deployments (deployments zonder downtime)
  • One Click / One Command deployments (deployments met een klik op de knop of via een commando)
  • Applicatielaag kan scale-out en scale-in doen gebaseerd op indicatoren of op tijd
  • Monitoring van het platform
  • Een Self-healing platform

Amazon’s Elastic Beanstalk

Elastic Beanstalk is de PaaS oplossing van Amazon. De ondersteunde platforms zijn de volgende:

  • PHP
  • Python
  • Ruby
  • Node.js
  • .NET op een Microsoft Windows Server met IIS
  • Go
  • Java SE
  • Java met Tomcat
  • Single Docker container
  • Multi-Docker container (gebruik makend van EC2 Container Services)

Als de programmeertaal die uw organisatie gebruikt niet in de lijst staat, dan kan een container ontworpen worden met Docker om de deployments via Docker te doen.

Developer impact

Met PaaS zal het developer team veel sneller hun code in productie kunnen plaatsen. Eenmaal de code in een versiecontrolesysteem zoals git zit, dan kan de CI de nodige build & test uitvoeren, en vanaf de release OK is, zal de code naar S3 (Object Storage) doorgestuurd kunnen worden. Eenmaal in S3 zal de instructie gegeven worden aan het platform om de nieuwe versie te deployen op de instances. Er zal een Blue/Green deployment strategie gebruikt worden om na te gaan of de nieuwe versie deployment resulteert in succesvolle healthchecks. Indien niet, dan wordt de versie teruggedraaid, indien wel, dan wordt de oude versie verder afgebouwd en is de nieuwe versie finaal. Dit hele proces gebeurt als een zero-downtime deployment, de eindgebruiker merkt hier niets van.

PaaS Architectuur

Het onderstaande architectuur diagram voor PaaS geeft enkele belangrijke elementen weer:

  • Ondersteuning voor multi-zone
  • Ondersteuning voor multi-zone DBaaS
  • Zowel private als publieke subnets naargelang requirements
  • Developer workflow: van versiecontrole systeem naar deployment
  • Applicatie code versies (artifacts) worden bewaard in S3 (Object Storage) voor gemakkelijke rollback indien nodig
  • Logs kunnen bewaard worden in S3 (Object Storage), zodat deze gemakkelijk opvraagbaar zijn en gearchiveerd kunnen worden
_images/use-case-paas-1.png _images/contact-in4it.png