Mikropalvelut - kuujakke/arkisto GitHub Wiki
Itse applikaation ympärillä on monia palveluita ja nämä palvelut on jaettu kokonaisuuksiksi, joita Kontenan tapauksessa kutsutaan Stackeiksi.
Mikropalvelualustana on Kontena. Kontenan käyttämät nodet sijaitsevat AWS EC2 pilvipalvelussa. Nodet käyttävät EBS (Elastic Block Storage) tallennustilaa yksinkertaisuuden vuoksi ja S3 (Simple Storage Service) tallennuspalvelua, kuvien ja Docker konttien tallentamiseen. Lisäksi tietokannat ja applikaatio persistoidaan S3 -tallennuspalveluun.
Applikaatio Stack
Itse sovellusstack koostuu useista palveluista. Sovellus on rakennettu käyttäen ruby:2.4-slim konttia pohjakuvana.
Tietokannan pohjakuvana on postgres:alpine. Tämä erittäin pienikokoinen kontti on hyvä pohja kevyille Docker ratkaisuille. Kontin koko on vain 37.7Mb ja se perustuu Alpine linuxiin. Pienempi kuva on nopeampi siirtää palvelimille ja Docker rekisteristöön sekä, kun otetaan huomioon tarpeettomien ohjelmien ja turhien käyttöjärjestelmän osien puute, parantunut tietoturva hyökkäyspinta-alan ollessa pienempi. Pohjakuvan päälle asennetaan pg_similarity -laajennus, joka mahdollistaa Hammingin ja Levenhsteinin etäisyyksien laskemisen tietokantamoottorilla.
Tietokannan rinnalla on Redis -tietokanta, jota käytetään cachena ja viestien välitykseen. Pohjakuvana käytetään redis:alpine konttia.
Nginx toimii sovelluksen Reverse-Proxyna ja jakaa sovelluksen staattisia resursseja kuten kuvia käyttäjille. Nginx soveltuu hyvin staattisen sisällön toimittamiseen ja tämä auttaa jakamaan sovellus kontin kuormaa. Kontin pohjakuva: jwilder/nginx-proxy
Sidekiq pohjautuu applikaatiokuvaan ja eroaa ylikirjoittetulla kontin CMD rivillä. Ylikirjoitettu komento käynnistää sidekiq palvelun kontin käynnistyessä rails palvelun sijaan.
Sovelluksesta on avoinna portti vain alustan yhteiselle Loadbalancerille, joka puolestaan sallii pääsyn internetistä portin 80 kautta ja mahdollistaa näin sovelluksen käyttämisen internetin yli selaimella.
Drone CI/CD Stack
Sovellus käyttää Drone CI/CD palvelua. (Travis alkuvaiheessa). Tämä stack koostuu muutamasta eri komponentista.
Palvelin on keskeisessä roolissa ja jakaa rakennus tehtävät agenteille. Pohjakuvana käytetään drone:0.5
Agentit tekevät varsinaisen testaukseen ja niitä on varattu yhteensä 3 instanssia tähän tarkoitukseen. Pohjakuvana on sama drone:0.5 kuin palvelimellakin.
Lisäksi stackiin kuuluu Drone-Wall komponentti.
Rakennettava ja testattava koodi pushataan järjestelmään Kontena Git builderin avulla. Builder on saavutettavissa vain VPN yhteyden kautta. Builder pushaa rakennetut Docker kontit alustan Registry stackiin.
Infrastruktuuri Stackit
Sovelluksen ja CI/CD:n taustalla toimii muutama tärkeä palvelu.
Registry säilöö rakennetut Docker kontit Amazonin S3 volumelle, josta alusta voi korvata vanhat kontit uusilla. Pohjakuvana Kontena Registry
VPN mahdollistaa yhteyden kehittäjän koneelta suoraan konteille käyttäen OpenVPN yhteyttä. Esimerkiksi Git Builder ja Registry ovat saavutettavissa vain OpenVPN yhteydellä. Lisätietoja Kontena VPN
Kuormantasaukseen käytetään Kontena Loadbalancer pohjakuvaa.
Sanastoa | Tarkennus |
---|---|
Alusta | Kontena -mikropalvelualusta |
Kontti | Docker-container |
Pushaus | Esimerkiksi git push tai docker push komento. |
Stack | Kontena Stack |
Node | Kontena Host Nodes |