Jo alussa tehtiin päätös yhdessä Aimo Parkin kanssa, että paras tapa edetä olisi rakentaa uusi infrastruktuuri alhaalta ylöspäin ja siirtää sitten käynnissä olevat palvelut yksi kerrallaan uudelle alustalle.
Tavoitteeksi asetettiin palveluiden kontitus ja sitä myötä siirtyminen kohti mikropalvelumallia. Tämä saavutettiin yhdessä Aimo Parkin kehittäjien kanssa ja sovellusten elinkaaren läpinäkyvyys varmistettiin DevOps-kehittämisen ja ketterän ohjelmistokehityksen menetelmien avulla.
Infrastruktuuriuudistuksen tärkeimmät painopisteet olivat:
• Tilirakenne
• Identiteetin ja pääsynhallinta
• Infrastruktuurin automatisointi
• Kontitus
• Infrastruktuurin monitorointi
• Keskitetty lokienhallinta
• CI/CD ja julkaisut
Uusi AWS-tilirakenne luotiin palvelujen ja ympäristöjen eristys huomioiden. Sovellusten työkuormat jaettiin kehitys-, testaus- ja tuotantoympäristöihin, ja ne pidettiin erillään identiteetin ja pääsynhallintaympäristöstä. Tällä eristyspainotteisella infrastruktuurimallilla vältettiin tarpeettomat riippuvuudet.
Pilvi-infrastruktuuri rakennettiin yksinomaan noudattaen Infrastructure-as-Code -periaatteita ja käyttäen hyväksi Terraformia. Tuloksena oli erittäin itsedokumentoiva koodi, jossa infrastruktuurin muutokset toteutetaan CI/CD-putken kautta ja manuaalisen työn tarve saatiin minimoitua. GitLab-palvelua käytettiin sekä infrastruktuurin että sovellusten julkaisuputkissa.
Konttien orkestrointialustaksi valittiin Kubernetes ja tarkemmin sanottuna EKS. Useat eri työkalut, kuten Kustomize ja Keel valjastettiin myös käyttöön julkaisuprosessien avuksi. Ingress-ohjaimeksi valittiin Traefik ja käyttöön otettiin myös Kuberneteksen tarjoama autoscaler. Lisäksi aikaansaatu järjestelmä integroitui useisiin AWS-työkaluihin, joiden avulla mahdollistettiin palvelujen saatavuus ja resurssien skaalautuvuus. Tuloksena on korkeasti automatisoitu sekä kestävä alusta, jonka päällä sovellukset voivat pyöriä.
Perusteellisen arvioinnin jälkeen keskitetyksi valvonta- ja lokienhallintaratkaisuksi valittiin Datadog. Se vastasi asetettuja vaatimuksia, jotka olivat mahdollisimman vähäinen ylläpitotarve sekä metriikoiden ja lokien yhtenäinen sijainti. Näiden lisäksi otettiin käyttöön hälytykset, jotka integroitiin sisäiseen viestintäalustaan, jotta vianselvitys helpottuisi ja vasteajat olisivat nopeampia.
Näiden suuren mittakaavan korjausten lisäksi toteutettiin monia muita pienempiä parannuksia, joilla lisättiin tehokkuutta ja parannettiin turvallisuutta sekä luotettavuutta. Pieni turvallisuuteen myönteisesti vaikuttava muutos oli sovelluksien salaisuuksien siirto koodista AWS Parameter Storeen.