Bevezetés a Spinnakerbe

1. Áttekintés

Ebben az oktatóanyagban a Spinnaker-t, a Netflix által épített nyílt forráskódú folyamatos szállítási platformot fogjuk megvizsgálni. Használhatjuk alkalmazásainak telepítésére több felhőszolgáltató között.

A rendszer a Spring Boot tetejére épül, és számos felhőszolgáltatót támogat.

Meglátjuk, hogyan működik, és mely esetekben tudjuk használni.

2. Háttér

Vessünk egy pillantást a szoftverfejlesztés történetére. Először is megvolt a Vízesés, ritka kiadásokkal.

Ezt követően elkezdtük az Agile dolgát, és minden sprintben átadtuk a funkciókat. Azonban még mindig nem telepítettünk minden sprintet a gyártásba. Sajnos a felhasználók továbbra sem tudták használni az új funkciókat, amelyek egy polcon hevertek.

A rendszeres telepítés elmaradásának volt néhány oka. Az egyik az volt, hogy a telepítési lépéseket gyakran manuálisan hajtották végre, és hajlamosak voltak az emberi hibákra.

Ezenkívül egyesek úgy gondolták, hogy a bevetés gyakrabban jelent nagyobb kockázatot a lehetséges problémákra. Manapság többnyire egyetértünk abban, hogy az apró változtatások bevezetése kisebb kockázatot jelent a nagy hibákra. Ennek ellenére, ha hiba történik, gyorsan megtalálhatjuk a kis változásban, és kiadhatunk egy új verziót, amely megoldja a problémát.

3. Spinnaker

A Spinnaker segítségével folyamatos kézbesítést vagy folyamatos telepítést használhatunk, hogy alkalmazásunkat automatikusan kiadhassuk a gyártás során. A folyamatos szállítás azt jelenti, hogy minden elő van készítve egy produkció kiadására.

A kiadást azonban manuálisan hagyják jóvá, mielőtt az alkalmazást telepítik a termelésre. A folyamatos telepítés azt jelenti, hogy nincs kézi beavatkozás. Minden lépés végrehajtásra kerül, beleértve a telepítést a gyártásig. Csak áttesszük az alkalmazáskódunkat egy verziókezelő rendszerre, és ennyi.

A kódnyomásunktól a verzióvezérlésen át a telepítésig a gyártásig sok lépést végrehajthatunk. Felépíthetjük kódunkat, egységesen tesztelhetjük a kódot, telepíthetjük egy tesztkörnyezetre és végrehajthatunk funkcionális teszteket. Az említett lépések konfigurálásához úgynevezett csővezetéket használunk.

A Spinnakerrel létrehozhatunk egy ilyen folyamatot, és telepíthetjük alkalmazásunkat a legtöbb felhőszolgáltatóra.

4. Alkatrészek

A Spinnaker alapvetően két részből áll: egy absztrakciós rétegből a különféle felhőszolgáltatók tetején és egy eszközből a folyamatos szállításhoz.

4.1. Hagyományos felhőalapú telepítések

Ha felhőszolgáltatókat nézünk, akkor ezek valamennyien többé-kevésbé ugyanazokat a szolgáltatásokat kínálják. Ezek a szolgáltatások például példányokat, kiszolgáló nélküli és tárolótámogatást tartalmaznak.

Ezeknek a szolgáltatásoknak a konfigurációja azonban a szolgáltatók között nagyon eltérő. Ez megnehezíti a szolgáltatók közötti váltást. Némi időbe telik áttérni egy másik felhő szolgáltatóhoz és megismerni az összes részletet, ami azt jelenti, hogy alapvetően szállítói zárolásra van szükségünk a felhő szolgáltatónknál.

A Netflix azt kívánta, hogy lehetősége legyen a váltásra a felhőszolgáltatók között, ahelyett, hogy csak egytől függene. Ezért építettek absztrakciós réteget a felhőszolgáltatók tetejére.

4.2. Absztrakciós réteg

Amikor a Spinnakert használjuk, ez minden felhőszolgáltatónál ugyanaz. Használhatjuk az Amazon Web Services, a Microsoft Azure, a Google Cloud Platform, az OpenStack, a Google App Engine vagy a Kubernetes webhelyeken. Ez lehetővé teszi számunkra, hogy egy másik felhő szolgáltatóhoz költözzünk, ha az árak versenyképesebbek.

Sőt, dönthetünk úgy, hogy egyszerre több szolgáltatóhoz is telepítjük. Így két vagy több szolgáltatón futtathatjuk alkalmazásunkat extra redundancia érdekében.

Az absztrakciós réteg további előnye, hogy az erőforrások helyett az alkalmazásokra összpontosít. Normális esetben a felhőszolgáltatók megmutatják nekünk azokat az erőforrásokat, amelyeket jelenleg használunk. Meg kell azonban találnunk magunknak, hogy melyik alkalmazás mely erőforrásokat használja.

De az erőforrások nem érdekesek számunkra. Szeretnénk futtatni az alkalmazásunkat anélkül, hogy időt töltenénk az erőforrások nyomon követésével. A Spinnaker alkalmazásközpontú nézettel rendelkezik. Tehát, ha megnézzük, először látjuk az alkalmazást, majd az alkalmazás által használt erőforrásokat.

4.3. Folyamatos szállítás

Az absztrakciós réteg tetején a Netflix folyamatos szállítási platformot épített. Ez a platform lehetővé teszi számunkra, hogy alkalmazásunkat egy vagy több felhőszolgáltatón telepítsük. Kicsit úgy néz ki, mint a Jenkins, de szebb integrációt kínál a felhőszolgáltatókkal, és kevesebb konfigurációt igényel.

Kiválthatjuk például a folyamatos szállítási folyamatot a Jenkins-től, egy feltöltött Docker-képet vagy egy git push-ot. Ezt követően egyszerűen létrehozhatunk egy képet vagy egy tárolót az alkalmazásunkkal, és elindíthatjuk a gyártásban.

Sokkal több lehetőség áll rendelkezésre, például automatizált tesztek és manuális jóváhagyások a gyártás bevezetése előtt.

Akár azt is eldönthetjük, hogy milyen stratégiát akarunk követni egy meglévő alkalmazás új verziójának telepítésekor. Mint ilyen, lehetséges, hogy egyszerűen cserélje le a régi verziót az új verzióra. Jobb stratégia azonban az lenne, ha először egymás mellett futtatnák őket. Így automatikusan vagy manuálisan ellenőrizhetjük az új verzió működését, és ha igen, akkor eltávolíthatjuk a régi verziót.

5. A Netflix felhőmodell

Minden alkalmazás egy vagy több szervercsoportból áll. Az alkalmazás ugyanaz a verziója fut a kiszolgálócsoport összes példányán. A következő elnevezési szokást használják: ---. A (nem kötelező) veremező arra szolgál, hogy meghatározza, hogy a kiszolgálócsoport tesztelésre, gyártásra vagy más célokra szolgál-e. Az opcionális részletmező a további információkhoz használható.

Végül, rendelkezünk egy olyan fürt fogalmával, amely egy vagy több azonos nevű, veremű és részletű kiszolgálócsoportot tartalmaz. A fürt minden kiszolgálócsoportja azonban legtöbbször az alkalmazás más verzióját futtatja. A sikertelen példányokat egy új példány váltja fel.

Az is lehetséges, hogy automatikusan példányokat adjon hozzá egy szervercsoporthoz a megnövekedett terhelés érdekében.

6. Telepítési stratégia

Amikor egy alkalmazás új verzióját telepítjük, általában a „piros / fekete” stratégiát választjuk. Először egy új kiszolgálócsoportot telepítenek az alkalmazás új verziójával a fürtbe. Az alkalmazás telepítése után ellenőrizzük, hogy az új kiszolgálócsoport egészséges-e.

Most a szervercsoport engedélyezve van és elérhető az ügyfeleink számára. Végül a régi kiszolgálócsoport le van tiltva.

Ebben a helyzetben könnyű visszagörgetni, ha valami nem stimmel az új alkalmazáskiszolgálóval. Egyszerűen újra engedélyezhetjük a kiszolgálócsoportot a régi verzióval, és elérhetővé tehetjük ügyfeleink számára.

7. Miért Spinnaker

A Spinnaker segítségével az alkalmazásunkra koncentrálhatunk a felhőalapú erőforrások helyett. Ez megkönnyíti alkalmazásaink telepítését és karbantartását.

Ezenkívül a Spinnaker lehetővé teszi, hogy egyszerre több felhőszolgáltatón fusson. Sőt, könnyen válthatunk más felhőszolgáltatókra az árstratégiájuktól és az elérhető funkcióktól függően.

8. Következtetés

A Spinnaker a Netflix tapasztalataira épít. Minimális erőfeszítéssel ugyanúgy felhasználhatjuk tudásukat és munkájukat. Ezen eszközök alapján könnyen megvalósíthatunk egy telepítési folyamatot, amellyel telepíthetjük az alkalmazásokat a termelésbe.

Ha többet szeretne megtudni a Spinnakerről, töltse le az ingyenes Folyamatos szállítás Spinnakerrel e-könyvet.