Amazonin Lambda- ja API Gateway -palveluilla voi kehittää omia mikropalveluita pilveen ilman erillisiä apuvälineitä. Olen itsekin aloittanut useita pieniä kehitysprojekteja pelkkää AWS Console -käyttöliittymää käyttäen. Projektin saa helposti alulle ja kehittäminen on edullista ja mukavaa, koska erillisiä palvelimia käyttöjärjestelmäasennuksineen ei tarvita.

Projektien edetessä käy kuitenkin melko poikkeuksetta selväksi, miksi jonkinlainen hallinta-alusta on tarpeen:

  • Lähdekoodi ja palvelujen konfiguraatio on saatava talteen Git-versiohallintaan
  • Lambda-funktioissa tarvitaan apumoduuleja, kuten Promise- ja HTTP-kirjastoja
  • Tarvitaan käyttöön muitakin pilviresursseja (kuten tietokantoja ja jonoja)
  • Sovelluksen tietoturvaa ja käyttöoikeuksia on hallittava keskitetysti
  • Sovelluksen julkaisua halutaan vaiheistaa development- ja production-vaiheisiin
  • Vanhat sovellukset pitää saada siivottua pois kaikkine rönsyineen

Näistä syistä avoimen lähdekoodin markkinoille on ilmaantunut useita kehitysalustoja, jotka on tarkoitettu mikropalveluiden kehittämiseen Amazonin ympäristössä. Tässä lyhyt katsaus.


Serverless vaikuttaa tällä hetkellä selkeältä markkinajohtajalta. Se keskittyy pelkästään Amazon pilveen ja on helppo opetella ja ottaa käyttöön, mikäli AWS on ennestään tuttu. Serverless tekee jokaisesta projektista CloudFormation-pinon ja sillä voi hallita kaikkia sovelluksen tarvitsemia pilviresursseja sekä niiden käyttöoikeuksia. Serverlessiin ei liity mitään omaa rajapintakerrosta, vaan sovellukset käyttävät Amazonin rajapintoja ja Serverlessin voi tarvittaessa poistaa käytöstä.


DEEP Framework on kiintoisa haastaja Serverlessille. DEEPin kehittäjät ovat rakentaneet oman abstraktiokerroksensa Amazonin pilvipalveluiden ympärille. Ajatuksena on, että myöhemmin DEEP-sovelluksia voisi ajaa muissakin pilviympäristöissä. Kiintoisa idea, mutta tekee sovellusten kehittämisestä ja ymmärtämisestä hankalampaa, kun pelkkä AWS-osaaminen ei riitä. Samalla sovellukset sidotaan kiinteästi DEEP Frameworkiin.


Sparta on Go-pohjainen alusta ja tarkoitettu Go-pohjaisten mikropalveluiden julkaisemiseen Amazonin plvessä. Se määrittelee omat Go-rajapintansa, jotka toteuttamalla voi kehittää Go-pilvisovelluksia.


Apex on yksinkertainen Go-pohjainen työkalu Lambda-funktioiden julkaisemiseen. Se muistuttaa Serverlessiä, mutta ei käytä CloudFormationia eikä tue pilviresurssien hallintaa laajemmin. Apexin valttina on, että sillä voidaan julkaista Go-kielellä kehitettyjä mikropalveluita (kuten Spartallakin).


PAWS perustuu Swagger API -standardiin ja laajentaa sen kattamaan myös API Gatewayn ja Lambdan ominaisuudet. Projekti vaikuttaa kuitenkin yhden hengen hankkeelta, joka on vaipunut uneen


Itse suosittelisin tällä hetkellä Serverlessiä yleiskäyttöiseksi mikropalvelualustaksi. Sillä saa pidettyä ainakin pienimuotoiset pilviprojektit hyvin hallinnassa, ja kehittäminen tapahtuu tutuilla AWS-rajapinnoilla.

Jos toimittajaloukku huolettaa, DEEP Framework saattaa kehittyä varteenotettavaksi vaihtoehdoksi. Olisin kuitenkin varovainen sovellusten rakentamisessa sen varaan ennen kuin projekti kasvaa isommaksi, sillä sovellukset ovat sen jälkeen sidottuja DEEPin omiin rajapintoihin.

Published 11.1.2016