Mikropalveluarkkitehtuuri ei ole kaikki ongelmat ratkaiseva hopealuoti, mutta siinä on useita etuja verrattuna perinteisempään monoliittiseen järjestelmään.
Yksittäinen mikropalvelu on usein helpompi päivittää, skaalata, ymmärtää ja tarvittaessa vaihtaa toiseen, kuin kaikki toiminnot sisältävä yksi järjestelmä.
Apache Software Foundation (ASF) järjesti 22.–24.10.2019 Kulturbrauereissa Berliinissä ApacheCon EU 2019 -tapahtuman. Kahden ja puolen päivän aikana nähtiin kymmeniä esityksiä Apache-tuoteperheen projekteista. Esityksistä osa oli ilahduttavan teknisiä ainakin allekirjoittaneen mielestä.
Tapahtuman kohdeyleisönä olivat data-analyytikot, järjestelmäylläpitäjät ja sovelluskehittäjät. Osallistujista jäi sellainen vaikutelma, että osa heistä tunsi jo toisensa sähköisten viestimien kautta, mutta henkilökohtainen tapaaminen tapahtui ensimmäistä kertaa ApacheConissa.
Tapahtuma nähtiin osallistumisen arvoiseksi, koska tavoittelemme avointa, mikropalveluarkkitehtuuriin perustuvaa datainfrastruktuuria. Apache-tuoteperheen teknologiat vaikuttavat tarjoavan tähän useita ratkaisuja, joista osa esitellään jäljempänä tässä kirjoituksessa.
Avoin lähdekoodi torjuu toimittajaloukun
Apache Software Foundationin missio on tarjota ohjelmistoja yleisen edun hyväksi ”to provide software for the public good”. Ohjelmistot ovat lisensoitu Apache 2.0 open source -lisenssillä. Näin lisensoidun ohjelmiston käyttäjä voi tehdä sillä tai sen lähdekoodilla ihan mitä haluaa, kunhan ei haasta sen tekijöitä oikeuteen, jos se toimiikin huonosti. Vastaavia sallivia lisenssejä ovat esimerkiksi BSD ja MIT. Jälkimmäinen on käytössä Helsingin kaupungin avoimen ohjelmistokehityksen projekteissa.
Monia Apachen palvelinohjelmistoja voi ostaa palveluna useilta eri toimittajilta. Avoin lähdekoodi ja monta toimittajaa varmistavat sen, että niin sanottu toimittajaloukku (vendor lock-in) ei pääse muodostumaan niin helposti kuin suljetun lähdekoodin ohjelmistoissa. Tämä kannattaa muistaa, kun älykaupunki hankkii järjestelmiä.
Vikasietoisuus ja skaalautuvuus
Useita Apache-sateenvarjon alla olevia ohjelmistoja yhdistää niiden korkea saatavuus ja suorituskyky sekä skaalautuvuus. Tämä on pääsääntöisesti toteutettu klusteroimalla eli hajauttamalla palvelu useammalle palvelimelle.
Järjestelmät voivat selvitä järjestelmän tyypistä ja kokoonpanosta riippuen useamman palvelimen yhtäaikaisesta vikaantumisesta. Suorituskykyä voi myös usein kasvattaa lähes lineaarisesti vain lisäämällä palvelinyksiköitä järjestelmään.
Kehittäjän näkökulma
Tavallinen devaaja eli ohjelmistokehittäjä ei ehkä tule ensimmäiseksi kokeilleeksi Apache-ohjelmistoja, ei ainakaan huvikseen vapaa-ajallaan. Klusterin pystyttäminen vaatii useita virtuaalipalvelimia, joista koituu kustannuksia. Onneksi useimpia ohjelmistoja voi testata suhteellisen helposti kehitystilassa myös yhdellä tietokoneella, esimerkiksi omalla läppärillä tai työasemalla.
os testattavalle järjestelmälle vaikuttaa löytyvän oikeaa käyttöä, sen voi muutaman päivän opettelun vaivalla asentaa laajempia testejä varten itse johonkin pilvipalveluun tai ostaa valmiina palveluna joltain palveluntarjoajalta. Forum Virium testaa parhaillaan Apache Kafkaa palveluna, joka on ostettu kotimaiselta palveluntarjoajalta.
Kiinnostavimmat Apache-projektit
- Kafka. Apache Kafka on hajautettu viestinvälitysjärjestelmä (distributed streaming platform). Sitä käytetään usein integrointityökaluna yhdistämään eri mikropalveluita sekä datalähteitä ja datan kuluttajia toisiinsa. LinkedInin kehittämällä Kafkalla on laaja käyttäjäkunta, suurista nettiyrityksistä esimerkiksi Twitter, Netflix ja Airbnb.
- Cassandra. Apache Cassandra on alunperin Facebookin kehittämä hajautettu NoSQL-tietokanta. Ominaisuuksista mainitaan erityisesti nopeus, vikasietoisuus, korkea saatavuus ja skaalautuvuus. Nämä on saatu aikaan hajautetulla arkkitehtuurilla, joka koostuu solmuista (node, esimerkiksi virtuaalipalvelin), datakeskuksista (data center, koostuu useasta nodesta) ja klustereista (cluster, koostuu useasta data centeristä). Data replikoidaan Cassandra-klusterin eri solmuille ja käytetystä replikointistrategiasta riippuen järjestelmä sietää useamman solmun poistumisen ilman datan hävikkiä. Järjestelmää voidaan skaalata lähes lineaarisesti vain lisäämällä solmuja.
- Spark. Apache Spark on yleiskäyttöinen pilvilaskentaan tarkoitettu tuote. Se soveltuu sekä datan reaaliaikaiseen että eräajona tapahtuvaan käsittelyyn. Tärkeimpiä käyttökohteita ovat datavirtojen reaaliaikainen käsittely, datan luokittelu ja klusterointi koneoppimiskirjastojen avulla sekä datan interaktiivinen analysointi esimerkiksi Spark SQL, Python tai R-kielillä.
- Hadoop HDFS. Hadoop distributed file system (HDFS) on hajautettu tiedostojärjestelmä, joka voi toimia esimerkiksi Sparkin tietovarastona.
- Hive. Apache Hive on tarkoitettu suurten datamassojen analysointiin SQL-tyyppisellä HiveQL-kyselykielellä.
- IoTDB. Apache IoTDB on kiinnostava tulokas aikasarjadatan – esimerkiksi sensoridatan – taltioimiseen. Se on vielä ”incubating”- eli hautomovaiheessa matkalla täysiveriseksi ASF-projektiksi.
- Flink. Datan prosessointiin kehitetty Apache Flink -ohjelmistokehys voi käsitellä joko jatkuvaa datavirtaa tai dataa eräajona. Datalähteenä voi olla esimerkiksi Kafka, HDFS tai Cassandra.
Jatkotutkimukseen otettavia Apache-projekteja
Yllä esitellyt ohjelmistot ovat jo aktiivisen testauksen kohteena Forum Viriumissa ja tulevaisuudessa näitä oppeja tullaan viemään käytäntöön muun muassa Finest Twins-, Urban Eco Islands– ja AI4Cities-hankkeissa.
Edellisten lisäksi jatkotutkimusta jäivät odottamaan seuraavat kiinnostavalta vaikuttavat projektit:
- Pulsar – hieman Kafkan tyyppinen hajautettu ”pub-sub” viestintäjärjestelmä: https://pulsar.apache.org/
- Airflow – työkalu monimutkaisten datankäsittelyprosessien automatisointiin: https://airflow.apache.org/
- Beam – työkalu datavirtojen ja datasettien prosessointiin: https://beam.apache.org/
Lisätietoja
Tilaa uutiskirje
Älyratkaisuja kaupungeille, pilotteja yrityksille ja yhteistyömahdollisuuksia tutkimuslaitoksille – kerromme sinulle ensimmäisenä!