Került hozzám egy projekt aminek javítani szeretnék a költséghatékonyságán. Ebben lenne jó egy picit együtt gondolkodni, meg tippeket is szívesen vennék.
Az a felállás, hogy ügyfelenként van egy Windows IIS szerveren futó webszolgáltatás, amit egy Linuxon futó MariaDB szolgál ki.
Minden AWS-en fut, de alapvető AWS szolgáltatásokat sem használnak, csak EC2-kön fut minden, közvetlenül telepítve, még konténerek sincsenek.
Az ügyfelek semmiféleképpen nem férhetnek hozzá egymás adataihoz, ezért minden ügyfélnek van egy külön Windows IIS és egy külön Linux EC2-je, bezárva a saját pici subnetjükbe. És ebből lassan 100 darab, ami ugye 200 EC2-t jelent.
Ez így szerintem nem jó hatékonyságú üzemeltetés. Sajnos az RDS nem opció momentán, mert a kereséshez fut egy indexelő szolgáltatás aminek a storage engine-e nem támogatott.
Arra gondoltam, hogy felhúznék a sok linuxos EC2 helyett egy EKS clustert. Arra felhúznék MariaDB konténereket, mellé az indexelő szolgáltatás konténerét, külön StatefulSettel és külön PVC-el mindegyik ügyfélnek. A Windowsos IIS-ek maradnának úgy ahogy, mert egyelőre nem konténerizálhatóak, csak átírnám a DB címét az új végpontokra. Ha jól sejtem NodePort-tal külön portra lehetne tenni mindegyik MariaDB konténert.
Van-e ebben a tervben valami nyilvánvalóan nagy buktató amire nem gondoltam?
Úgy gondolom, a Kubernetes segíthetne egy kicsit a hatékonyágon ebben a felállásban. Éjszaka, mikor nincs nagy terhelés, elég gondolom néhány node a ~100 DB konténerhez, nappal meg fel tudna húzni új nodeokat mikor nagyobb a forgalom. Másrészt meg a sok külön EC2-nek kezd elszállni az adminisztációs overheadje, mindet patchelni, monitorozni, backupolni, stb. külön-külön, nagyon szarul skálázódik.
Harmadrészt meg az IIS-függő webapp is átírás alatt van már multiplatform dotnetre, amit egyszer majd reményeim szerint szintén át lehetne tenni az EC2-kről Kubernetesre.