Futugrid: ühest virtuaalmasinast nelja EKS-klastrini
Futugridi toode töötas umbes kolmekümne Java mikroteenusena ühes virtuaalmasinas, juurutus toimus poolkäsitsi. Alates 2022. aastast oleme ehitanud ja haldame AWS-i platvormi, millel see täna töötab — neli EKS-klastrit, täielik CI/CD, hallatavad andmebaasid ja SSO.
- Klient
- Futugrid Technologies OÜ
- Periood
- Tehnoloogiad
- AWS, EKS, RDS, Kafka, AWS IoT Core, Helm, GitLab CI, Authentik, OpenTelemetry, Grafana LGTM, Tailscale, WireGuard, IPsec, Teltonika
Lähtekoht
Kui Futugrid 2022. aasta sügisel meie poole pöördus, elas kogu toode ühes virtuaalmasinas. Selles töötas kõrvuti umbes kolmkümmend Java mikroteenust ja uue versiooni väljalaskmine tähendas poolkäsitsi juurutust: ehita, kopeeri, taaskäivita ja looda, et miski muu samas masinas seda ei märka. See oli ettevõtte varases faasis oma töö ära teinud, kuid keskkonnad ei olnud eraldatud, rollback’iks puudus korratav viis ja iga release sõltus inimesest, kes seda tegi.
Mida me ehitasime
Asendasime ühe masina AWS-i platvormiga, mille keskmes on Amazon EKS:
- Neli Kubernetese klastrit, igaühel oma roll:
production,staging, katsetuste jaokssandboxjatooling, kus töötavad ülejäänud kolme jaoks vajalikud ühised teenused. - CI/CD GitLab Runneris, iga teenuse jaoks oma Helm chart. Merge ehitab image’i, käivitab testid ja deploy’b staging’usse; production kasutab sama pipeline’i ja sama charti, nii et välja läheb täpselt see, mida testiti. Secret’e hallatakse keskselt, mitte ei kopeerita käsitsi.
- Hallatavad andmebaasid RDS-is, kus backup’ide ja point-in-time recovery eest vastutab AWS, mitte cron virtuaalmasinas.
- Kafka ja AWS IoT Core toote seadmete ja streaming’u poole jaoks.
- SSO Authentiku peal, et meeskond logiks klastri tööriistadesse, dashboard’idele ja siseteenustesse sisse ühe identiteediga.
- Privaatne ligipääs üle Tailscale’i. Siseteenused — klastri tööriistad, dashboard’id, admin-liidesed — ei ole internetti avatud; meeskond jõuab nendeni Tailscale’i võrgu kaudu, mis on seotud samade identiteetidega kui SSO.
- Objektide ühendus Teltonika edge-ruuteritel. Päikesepargid ja kolmandatest osapooltest teenusepakkujad, kellega toode andmeid vahetab, on platvormiga ühendatud IPsec- ja WireGuard-tunnelitega, mis lõpevad Teltonika ruuteritel objektil, nii et välisseadmed suhtlevad pilvega krüpteeritud ühenduste, mitte avalike otspunktide kaudu.
- Täielik observability Grafana LGTM stack’il: iga teenus on instrumenteeritud OpenTelemetryga ning trace’id (Tempo), logid (Loki) ja meetrikad (Mimir) jõuavad ühte Grafanasse. Aeglast päringut saab jälgida API gateway’st läbi kõigi mikroteenuste kuni andmebaasipäringuni, vastavad logiread kõrval.
Kuidas see täna töötab
Koostöö ei lõppenud kolimisega. Me haldame platvormi: alert’id samade meetrikate ja trace’ide põhjal, mida arendajad ise kasutavad, klastri ja sõltuvuste uuendused, kulude ülevaatus ning muudatused, mis kaasnevad iga uue teenusega, mille Futugridi meeskond lisab. Deploy, mis varem oli sündmus, on nüüd merge request, ja keskkond millegi katsetamiseks on ühe namespace’i kaugusel, mitte teine server, mida keegi puutuda ei taha.