Metodika integrácie a dodávania softvéru

Integrácia dodávania softvéru opisuje proces integrácie a dodávania softvéru zo zdrojových kódov v repozitári do bežiacej aplikácie prístupnej pre cieľových používateľov.

Dedikácia

Metodika je určená pre všetkých členov tímu, špeciálne pre Technického vedúceho a technických správcov, ktorí sa aktívne podieľajú na procese integrácie a dodávania softvéru.

Roly

  • Technicky vedúci (Tech leader) Zodpovednosti: Administrácia konfigurácie v nástroji, Jenkins, Administrácia konfigurácie nástroja Docker, poveruje Technických správcov, rokuje o riešeniach integrácie a dodávania softvéru s produktovým vlastníkom, Aktualizuje a spravuje Metodiku integrácie a dodávania softvéru.

  • Technický správca Člen tímu poverený Technickým vedúcim, ktorý má práva pre prístup a zmenu konfigurácie pre vedúcim určený komponent projektu. Zodpovednosti - Po dohode s Technickým vedúcim upravuje konfiguráciu integrácie a nasadenia, ak nie je proces integrácie automatiovaný , tak po dohode s Technickým vedúcim vykoná ručne proces integrácie a nasadenia pre daný komponent projektu.

Vymedzenie pojmov a definícií

Komponent projektu - Softvérový produkt Gridbox pozostáva z 3 komponentov (WebApp - webová aplikácia a používateľské rozhrania, DB Server - databázový server s REST službami pre perzistenciu dát, Simulation Server - simulačný server s REST rozhraniami pre výpočty a simuláciu). Architektúra systému je detailne opísaná v dokumente Architektúra. Systém využíva architektonický štýl Mikroslužieb a tieto komponenty sa nachádzajú v samostatných repozitároch. Každý komponent je samostatne spustiteľný a nasaditeľný do ďalšej fázy nasadenia.

Fáza nasadenia - Každý komponent projektu prechádza fázami nasadenia:

  • Nasadené vo vývoji: Počas vývoja na komponente projektu je komponent nasadení v Vývojovom prostredí na vývojovom serveri. Slúži na demo pri stretnutiach s produktovým vlastníkom, vývoj novej funkcionality projektu a integračnom testovaní komponentov projektu.
  • Testovanie pred produkciou: Po dohode s produktovým vlastníkom je verzia komponentu projektu presunutá do fázy testovania pred produkciou, kde je komponent projektu nasadený na server produktového vlastníka, alebo je po dohode s produktovým vlastníkom určené inak. Testovanie prebieha v réžií produktového vlastníka. Cieľový používateľ softvérového produktu nemá prístup k produktu v tejto fáze nasadenia.
  • Nasadenie v produkcií: Po úspešnom ukončení fázy testovania pred produkciou je komponent projektu nasadený do produkcie. Jedine v tejto fáze má Cieľový používateľ prístup k softvérovému produktu.

Využívané technológie

Jenkins - nástroj pre konfiguráciu integrácie a nasadenia jednotlivých komponentov projektu, umožňuje rozšírenie o prepojenie s verziovaním softvéru (git), kontajnerizáciu komponentov (docker) ale aj počúvanie na prichádzajúce zmeny (Team Foundation Server)

Docker - nástroj pre kontajnerizáciu softvérových komponentov vhodný pre vývoj aplikácií s mikroslužbovou architektúrou

Linux Ubuntu - operačný systém pre aplikačné serveri (vo vývoji, test pred produkciou a aj produkciu)

Integrácia a dodávanie pre jednotlivé komponenty projektu:

WebApp

Pre tento komponent je vytvorený proces automatizovanej kontinuálnej integrácie v nástroji Jenkins. Konfigurácia procesu je definovaná v súbore Jenkinsfile, ktorý sa nachádza v koreňovom priečinku repozitáru. Konfigurácia využíva rozšírenie Jenkins Pipeline, ktoré umožňuje definovať automatizovanú integráciu ako postupnosť krokov. Integrácia je delená do fáz (a angl. Stage), ktoré spájajú spolu súvisiace kroky integrácie (z angl. Steps). Spustenie automatizovanej integrácie nastane po zaregistrovaní akcie push pre špecifikované vetvy z repozitára z TFS. Kontinuálna integrácia zahŕňa aj vytvorenie Docker kontajnerov, ktorých konfigurácia sa nachádza v súbore Dockerfile v koreňovom priečinku repozitára.

Fázy kontinuálnej integrácie pre komponent WebApp:

  1. Fetch dependencies - načítanie nevyhnutných knižníc pre build Angular aplikácie do výstupných súborov.
  2. Compile - kompilácia súborov z TypeScript na JavaScript a build Angular aplikácie do výstupných súborov s produkčnou konfiguráciou.
  3. Build and Push Docker Image - kroky pre vytvorenie Docker kontajneru pre tento komponent a pridanie novej značky s verziou pre tento kontajner a odoslanie do registra kontajnerov pre komponent WebApp.

Proces nasadenia komponentu aktuálne je potrebné vykonať manuálne nasadenie vykonávané na určenom serveri podľa fázy nasadenia (Vo vývoji, Testovanie pred produkciou alebo Produkcia).

Kroky manuálneho nasadenia:

  1. Stiahnutie kontajneru z registra podľa požadovanej verzie komponentu (značka kontajneru)
  2. Ak aktuálne beží kontajner webovej aplikácie na serveri je potrebné zastaviť a odstrániť bežiacu inštanciou Docker kontajneru.
  3. Spustenie novej inštancie Docker kontajneru z novo stiahnutej verzie.

DB Server

Momentálne pre tento komponent neexistuje automatizovaná metóda a je potrebné manuálna integrácia a proces nasadenia komponentu je potrebné vykonať manuálne na určenom serveri podľa fázy nasadenia (Vo vývoji, Testovanie pred produkciou alebo Produkcia).

Kroky manuálnej integrácie:

  1. Vytvorenie Docker kontajneru pre tento komponent a pridanie novej značky s verziou pre tento kontajner
  2. Odoslanie vytvoreného kontajneru do registra kontajnerov pre komponent DB Server.

Kroky manuálneho nasadenia:

  1. Stiahnutie kontajneru z registra podľa požadovanej verzie komponentu (značka kontajneru)
  2. Ak aktuálne beží kontajner webovej aplikácie na serveri je potrebné zastaviť a odstrániť bežiacu inštanciou Docker kontajneru.
  3. Spustenie novej inštancie Docker kontajneru z novo stiahnutej verzie.

Simulation Server

Momentálne pre tento komponent neexistuje automatizovaná metóda a je potrebné manuálna integrácia a proces nasadenia komponentu je potrebné vykonať manuálne na určenom serveri podľa fázy nasadenia (Vo vývoji, Testovanie pred produkciou alebo Produkcia).

Kroky manuálnej integrácie:

  1. Vytvorenie Docker kontajneru pre tento komponent a pridanie novej značky s verziou pre tento kontajner
  2. Odoslanie vytvoreného kontajneru do registra kontajnerov pre komponent Simulation Server.

Kroky manuálneho nasadenia:

  1. Stiahnutie kontajneru z registra podľa požadovanej verzie komponentu (značka kontajneru)
  2. Ak aktuálne beží kontajner webovej aplikácie na serveri je potrebné zastaviť a odstrániť bežiacu inštanciou Docker kontajneru.
  3. Spustenie novej inštancie Docker kontajneru z novo stiahnutej verzie.