Přístup devops - Vývoj software a webových aplikací

Vývoj software a webových aplikací

Přístup devops

OBSAH

  1. Úvod
  2. Continuous Integration
  3. Continuous Delivery
  4. Continuous Deployment
  5. Co je to Jenkins?
  6. Závěr


 

ÚVOD

V dnešní době se od programátorů požaduje automatizovat procesy vývoje s cílem optimalizovat osvědčené postupy.

Tento požadavek, společně s potřebou větší rychlosti při výrobě softwaru a aplikací, nachází své řešení v konceptu DevOps.

Přístup DevOps je model, podle kterého interfunkční vývojové skupiny programují rychleji, ale stále vydávají projekty a řešení vysoce kvalitní a bezpečné jak v tradičním prostředí, tak na cloudu.

DevOps, pojem složený ze dvou důležitých termínů ve fázi vývoje: “development” a “operations”, pojmy, které naznačují více než přiměřeně tento nový trend, kdy se nové úrovně sdílení a integrace upevňují mezi vývojáři a mezi pracovníky v provozu za účelem urychlení projektování, testování a vydání nového firemního softwaru.

Tudíž, je to metoda vývoje softwaru, která využívá novou logiku sdílení a spolupráce mezi programátory za konkrétním účelem zrychlit programování v každé své fázi a současně zaručit vysokou kvalitu bezpečnosti finálního softwaru.

Trend, který vedl v průběhu času ke vzniku řady specifičtějších termínů a metod vytvořených za účelem nabídnout vývojářům všechny nástroje pro to, aby se stalo každé firemní řešení lepším produktem z jakéhokoliv hlediska.

A právě z tohoto hlediska vznikly metodiky, jako například: Continuous Integration, Continuous Delivery a Continuous Deployment. Tři velmi zajímavé koncepty, které nesmí být zaměňovány.

 

 

CONTINUOUS INTEGRATION 

Continuous integration (CI) neboli průběžná integrace je jednou ze základních metodik DevOps a také vývojovou metodou zaměřenou na integraci a sdílení kódu mezi vývojáři.

Zejména proto, aby byla metoda Continuous Integration účinná, integrují vývojáři často celý kód do sdíleného úložiště neboli prostředí, které funguje jako informační systém, ve kterém jsou spravována všechna metadata prostřednictvím souboru relačních tabulek.

Toto virtuální úložiště nabízí mnoho výhod z hlediska bezpečí, kontrolu pro přístup, obnovu chyb a centralizovanou správu backupu. Díky využívání sdíleného úložiště může každý vývojář snadno a efektivně sdílet velké množství dat, stejně jako může rychle přidávat a spravovat datové subsystémy, které fungují nezávisle na sobě.

Jakmile se tak kód sloučí pomocí úložiště, bude možné provést kompilaci a vytvoření “balíčků”, které se zcela automaticky umístí na server, aby se ověřil a otestoval celý projekt bez zásahu člověka.

Cílem této fáze automatického ověřování je transformovat zdrojový kód do artefaktu neboli vedlejšího produktu, který je realizován během vývoje softwaru. V tomto smyslu jsou artefakty zdrojový kód, různá dokumentace a vše, co napomáhá popisovat funkci, architekturu a projektování softwaru.

Dobře víme, jak je koncept Continuous Integration zásadní ve fázi projektování, protože se svým zaměřením na nástroje automatizace průběžně umožňuje vývojářům integrovat, sdílet a testovat kód.

To vše nejen umožňuje značnou úsporu času ve fázi projektování, ale také usnadňuje proces.

Tato metoda vznikla kolem devadesátých let na podporu integrace a sdílení osvědčených postupů mezi vývojáři.

Přestože vyžaduje specifické dovednosti a čas pro nastavení nástrojů a pokročilých a automatických postupů, průběžná integrace je vývojovou metodou, která nabízí mnoho výhod pro finální realizaci softwaru. 

Rychlá a častá integrace, zvýšená komunikace a spolupráce mezi vývojovými týmy, rychlé a efektivní zjištění problémů; to jsou jen některá z mnoha výhod, které tato metoda nabízí vývojářům během programování moderního a špičkového softwaru.

 

CONTINUOUS DELIVERY

Continuous Delivery (CD) neboli průběžné dodávání je další důležitá metoda přístupu DevOps.

Continuous Delivery, úzce spojený s Continuous Integration, je metoda vývoje softwaru, ve které je na základě automatizovaných testů, získaných prostřednictvím Continuous Integration, možné vyvíjet a distribuovat vysoce kvalitní software efektivním, rychlým a spolehlivým způsobem s manuálním přetížením sníženým na minimum.

V tomto smyslu jsou Continuous Integration a Continuous Delivery nedílnou součástí procesu průběžné implementace.

Zatímco průběžná integrace se zaměřuje na agilní vývoj prostřednictvím neustálé integrace bloků kódu ve sdílených úložištích a automatizaci ověřovacích testů, při průběžném dodání je prováděna metoda, která zahrnuje fázi vydání finálního softwaru.

Hlavním rozdílem mezi těmito dvěma metodami vývoje se týká automatizace. Pokud je v počáteční fázi, a tedy v průběžné integraci, automatizace probíhá na testech a na postupech ověřování kódu, ve druhé fázi, tedy v průběžném dodání, se tato činnost zaměřuje na proces vydání softwaru. Tímto způsobem je možné díky Continuous Delivery implementovat proces, ve kterém vývojové týmy produkují software v krátkých cyklech a spolehlivě garantují jeho vydání kdykoliv.

Tudíž jde o postup, který má za cíl vytvářet, testovat a vydávat software častěji a s vyšší rychlostí tím, že snižuje náklady a čas vydání.

I když při nepřetržitém dodání softwarů vytvořených a připravených k vydání nebudou nikdy distribuovány bez manuálního rozhodnutí a tudíž bez zásahu člověka.

 

CONTINUOUS DEPLOYMENT 

Continuous Deployment (CD) neboli průběžné nasazení je ale postup vývoje softwaru, ve kterém jsou změny kódu navrženy automaticky pro nasazování na produkci.

V tomto smyslu průběžné nasazení přesahuje průběžné dodání, protože s touto metodou je každá modifikace, jakmile překoná všechny fáze testování kódu, automaticky vydána klientovi.

Continuous Delivery a Continuous Deployment jsou dva koncepty úzce související a často využívané zaměnitelným způsobem, protože obě zajišťují automatizaci fází po konstantní integraci kódu vztahující se k metodě Continuous Integration.

Continuous Delivery a Continuous Deployment jsou používány odděleně s cílem indikovat různé stupně aplikované automatizace.

Continuous Deployment je postupem, který s sebou nese automatizaci všech procesů bez jakéhokoliv lidského zásahu a přináší novou verzi softwaru přímo z výrobního prostředí.

Proto průběžná distribuce znamená konečnou vývojovou fázi toku CI/CD.

Přesto se průběžná distribuce zdá být v očích mnoha firem riskantní, protože nedochází k manuálnímu blokování, průběžná distribuce softwaru musí nutně spoléhat na dobře navrženou automatizaci testů.

I přes rizika spojená s touto metodou má průběžná distribuce mnoho výhod.

Díky Continuous Deployment nejenže vývojáři zkracují dobu vývoje pro jakékoliv modifikace nebo aktualizace, ale také výrazně zvyšují spolehlivost softwaru.

V tomto smyslu mohou vývojové týmy bezpečně přidávat nové funkce do softwaru a vydávat je automaticky uživatelům tím, že prostě napíšou kód a související testy.

 

CO JE TO JENKINS?

S postupem průběžné integrace jako vývojové metody stále více využívané od malých vývojových týmů až po velké firemní organizace, které interně provozují své komplexní platformy, se v průběhu času rychle vyvinul důležitý ekosystém nástrojů spojených s touto metodou.

Mezi první nástroje vytvořené pro podporu průběžné integrace patří Jenkins, což je open source projekt, který patří mezi vývojáři  k nejpoužívanějším.

Jenkins je napsán v jazyce Java a je hlavním automatizačním serverem používaným ve fázi průběžné integrace, který poskytuje stovky pluginů pro podporu vytvoření, implementace a automatizace jakéhokoliv projektu.

Jenkins byl koncipován a naprogramován tak, aby podporoval jakýkoliv typu projektu, od malých implementací až po komplexnější a členitější implementace. 

Jenkins je architektura vytvořená velmi rozsáhlou a aktivní vývojovou komunitou, díky níž je dodnes velké množství pluginů s mnoha moderními a kvalitními funkcemi.

Navíc, Jenkins v posledních letech získal nový jazyk pro popis toku práce průběžné integrace, také známý jako Pipeline.

To vše umožňuje vývojářům nejen vytvářet standardní moduly pro opětovné použití, ale také různé projekty, ale především deklarovat a popsat proces související s kompilací a distribucí softwaru.

 

ZÁVĚR

Continuous Integration, Continuous Delivery a Continuous Deployment jsou tři postupy vývoje, které se zaměřují na schopnost plánovat, vyvíjet a distribuovat software rychlým, efektivním a bezpečným způsobem.

Ale jakým způsobem mohou vývojáři nejlépe využívat tyto postupy?

Průběžná integrace, průběžné dodání a průběžná distribuce jsou vývoje, které umožňují vývojářům soustředit se na psaní kódu a vynechat proces kontroly, ověření a manuální distribuce.

To vše je možné díky řadě nástrojů a technologií, z nichž mohou dnes vývojáři těžit, aby se zautomatizovaly jednotlivé fáze vývoje.

Tímto způsobem může systém automaticky a jednoduše řídit jakoukoliv situaci, aniž by bylo nutné, aby vývojový tým řídil akce úprav, kontroly a aktualizací softwaru.

Každý postup je konceptem v průběžném vyvíjení, stejně jako každý projekt, který je ještě ve fázi projektování, potřebuje být naplánován na základě přístupu, který má mít koncový uživatel.

Průběžná distribuce je tedy základním postupem pro to, aby se rychle získal feedback od koncových uživatelů a umožnilo se plánování následných interakcí.

V tomto smyslu se průběžná distribuce nebo průběžná implementace plně soustředí na postup dynamického vývoje, protože umožňuje, aby se životní cyklus projektu mohl rychle měnit a to na základě kontrolních relací.

Dodržování tohoto postupu vývoje proto zaručuje plynulé a průběžně aktualizované změny na základě stavu projektu v daný okamžik.

Je to však průběžná integrace, která je základem jak pro průběžné dodání, tak pro průběžné nasazení a průběžné dodávání tak nebude skutečně funkční bez možnosti průběžně distribuovat a verifikovat software ve výrobním a testovacím prostředí. 

Každý postup vývoje je nezávislý a nabývá zcela subjektivního významu, stále však souvisí s využíváním jiných postupů a s nimi souvisejících nástrojů. 

Autor: Roberta Foglia