De afgelopen jaren is de inzet van microservices mainstream geworden. Veel vooraanstaande technologiebedrijven maken hier gebruik van als standaardarchitectuur voor hun IT-landschap. Bekende voorbeelden van succesvolle diensten op basis van microservices zijn Netflix en Soundcloud. Er zijn online veel verhalen te vinden die de ‘journey’ beschrijven die deze organisaties hierbij hebben doorgemaakt.

Microservices zijn erg waardevol voor SaaS-architecturen omdat ze invulling geven aan mogelijkheden die niet beschikbaar zijn in commerciële SaaS-oplossingen. Ze kunnen tevens dienen als integratielijm tussen verschillende SaaS-systemen.

Het spreekt voor zich dat de ideale hosting-locatie voor een microservice-platform in een cloud-tijdperk een cloud PaaS is. Zo’n platform biedt namelijk diverse platformdiensten die het softwareontwikkelproces stroomlijnen. Typische voorbeelden van dergelijke diensten zijn:

  • High availability via multi-zone
  • Verschillende runtime-omgevingen (ondersteuning voor meerdere programmeertalen)
  • Databases (SQL en NOSQL)
  • In-memory databases en data grids
  • Big data
  • Containerisation en container-orkestratie
  • Geavanceerde monitoring en beheer (inclusief automatisch schalen)
  • Monitoring en beheer API
  • Veilige infrastructuur

 

Een goed ontworpen technisch raamwerk is de basis voor een stabiel softwareplatform en garandeert zo voorspelbare kwaliteit, ontwikkeltijden en lagere kosten. Om de time to market te verkleinen, zullen organisaties raamwerken van gedeelde, herbruikbare microservice-componenten moeten ontwikkelen bovenop PaaS-diensten waardoor stabiele en veerkrachtige microservice-architecturen ontstaan.

 

 

Voorbeelden van microservice-raamwerkcomponenten zijn:

  • Service Registry (voor Service Discovery)
  • Circuit Breaker (om opeenstapeling van fouten te voorkomen)
  • Distributed Cache
  • Edge Server

 

PaaS hosting en software-raamwerken kunnen IT-architecten de tools leveren om een sterk chassis te bouwen. Toch moet eerst een cloud microservice-platformarchitectuur ontworpen worden. Hieronder staat daarvan een voorbeeld:

 

 

NB: Het domein van gedistribueerd datamanagement en event-gedreven architectuur komt niet volledig aan bod in dit diagram

 

Het ontwerp is duidelijk, behalve wellicht het concept van ‘edge services’. Dit is een patroon dat bekend is geworden met de uitbreiding van het internet. Een edge service is een op internet gerichte dienst die als gateway fungeert naar bestaande platform microservices. Je kunt het zien als een service gateway. Edge servers bieden herbruikbare security-mogelijkheden (zoals gebruikersauthenticatie voor API-consumptie), beveiliging van componenten (door rate-limieten door te voeren en zo het platform te beschermen tegen extreme loads) en vormen de backbone voor ‘Experience API’s.

Ik moet daar wel bij vermelden dat microservice-compositie (en in zekere zin ook orchestratie) ook tot de verantwoordelijkheid kan horen van de Edge Server. Het hangt allemaal af van de complexiteit van de composities (de beschikbare server kan bijvoorbeeld te licht zijn) en hoe de architecten het Edge-component willen positioneren.

Sommige gedeelde componenten van het microservices-raamwerk kunnen in het hele landschap ingezet worden. De Deployment Server kan bijvoorbeeld ook gebruikt worden om veranderingen en configuraties door te voeren aan bouwstenen in andere landschappen, zoals SaaS en premises IT-functies (mits aanwezig).

Een goed ontworpen cloud microservices-platform draagt bij aan snelle IT-delivery zonder in de bekende spaghetti-architectuur val te trappen.

Salesforce Heroku: van PaaS-pionier naar vooraanstaand cloud microservices-platform

Om de de overgang naar het volgende tijdperk in cloud computing te versnellen en een platform te ontwikkelen voor social, mobiele en real-time business-applicaties heeft Salesforce zijn SaaS-aanbod een boost gegeven door in 2011 Heroku over te nemen. Heroku is opgericht in 2007 en is “een cloud-platform gebaseerd op een managed container-systeem, met geïntegreerde data services en een krachtig ecosysteem, voor het het inzetten en draaien van moderne apps.”

Het platform biedt een programmeeromgeving voor de ontwikkeling van applicaties die gebouwd worden in meerdere programmeertalen: Python, Ruby, NodeJs, Java, Scala, Closure, PHP, etc. Het is volledig DevOps compliant en heeft een focus op ‘developer experience’.

Heroku biedt programmeurs twee belangrijke bronnen:

  1. Dynos: lichtgewicht Linux containers voor executie (computing appliances)
  2. Add-ons: marktplaatscomponenten via Heroku en derde partijen

 

Het aanbieden van een platform-marktplaats is een van de belangrijkste pijlers voor het succes van een platform, dat hebben de AppStore van Apple en de AppExchange van Salesforce wel laten zien. De enterprise grade add-ons die beschikbaar zijn op de ‘Heroku Elements Marketplace’ zijn ideaal voor het implementeren van microservice-architecturen.

Voorbeelden van bestaande add-ons zijn:

  • Databases: Postgres; MongoDB; …
  • In-memory databases en data grids: MongoDB; Memcached; …
  • Message brokers: Kafka; CloudAMQP (RabbitMQ); …
  • Big data: Treasure Data (Hadoop); …
  • Monitoring: AppDynamics; …
  • Logging: Logz.io (ELK); …
  • Indexing en searching: Elasticsearch; …
  • Identity and Access Management: Auth0; …
  • Force.com-integratie: Heroku Connect; Marketing Connector; Salesforce Identity
  • Ga voor meer informatie over Heroku en om meer Add-ons in de Elements Marketplace te ontdekken naar https://www.heroku.com/

 

Investeren in de cloud

Investeren in de cloud is voor veel bedrijven prioriteit geworden omdat ze zodoende meerdere IT-uitdagingen aanpakken waaronder de noodzaak voor constante verandering en evolutie, de ondersteuning voor omni-channel-ervaringen en de vraag naar dynamische schaalbaarheid. Het antwoord om cloud-adoptie te versnellen en het succes van cloud-architecturen te vergroten is het ontwerpen en inzetten van een cloud microservices-platform. Nu we in het tijdperk zitten waarin cloud mainstream is geworden zullen IT-architecten nieuwe paradigma’s en technologieën moeten omarmen van optimale waarde te kunnen zijn voor hun organisaties. Hoe ze dat kunnen aanpakken vertel ik in mijn volgende blogpost.