Technologie

Aug 20. 2018

Jaké DevOps nástroje používáme?

devops

My, lidé v IT společnosti Touch4IT, pracujeme s mnoha nástroji, které nám pomáhají s celým procesem vývoje a nasazování. Při práci s nimi se nám však osvědčilo, že čím méně nástrojů spravujeme, tím máme více času na projekty a našich zákazníků.

 

Na obrázku dole můžete vidět tzv. "DevOps infinity loop", tj nekonečný DevOps řetězec, který se skládá z několika částí představujících proces vytváření produktu.

devops infinity loop touch4it

 

Prvním krokem je plánování, na které používáme námi přizpůsoben a upravený nástroj Redmine. Veškerá práce, která má být provedena, je zařazena do úloh s přiřazeným odhadem času a osobou, která je za ni zodpovědná. Každý zaměstnanec firmy vidí na své domovské stránce všechny úkoly, které má přiřazeno a je vždy oznámený o jakékoli změně nebo vyjádření k daným úkolům.

 

Součástí počátečního plánování projektu a plánování vizuálu je vytváření mockup, moodboard či klikacích vizuálních prototypů, které mohou být užitečné pro programátory, ale i zákazníky.

 

Na samotném začátku projektu se vždy setkávají techničtí lídři s projektovým manažerem a vybírají tu nejoptimálnější technologii pro daný projekt. Po dohodnutí a schválení se pak pracuje už jen s danou technologií. Pro API backendy většinou používáme Node.js, pro CRM systémy používáme Symfony framework, při webových stránkách pracujeme nejčastěji s Drupal CMS a pro interaktivní webové aplikace využíváme SPA technologie jako Angular. Když vyvíjíme prototypy mobilních aplikací nebo nativní aplikace pro iOS a Android, nejčastěji pracujeme s Ionic technologií. V průběhu času jsme měli i projekty v PHP, Ruby, Java, C++ nebo jsme také pracovali i na vývoji desktopových aplikací, různých vestavěných systémů, serverových platforem a pod.. V článku se budeme více zaměřovat na backend, nakolik je to moje hlavní specializace.

 

Po tom, čo je úloha dokončená, musí byť overená. Je finálny stav vtedy, keď vývojár povie: „na mojom zariadení to pracuje“? Určite nie. Odkedy používame Docker na lokálnych zariadeniach i serveroch, nemali by existovať veľké rozdiely v správaní sa medzi lokálnym prostredím, vývojovým serverom, predprodukčným a produkčným serverom. Každý produkt je však akýmsi živým organizmom a každý problémový „orgán“ je problémom i v globálnom meradle. Preto by mal byť každý vyvinutý systém vždy testovaný súborom automatických testov rôznych typov. Najčastejšie sa používajú unit testy (pokrývajú celú logiku), integračné testy (ako spolu jednotlivé jednotky pôsobia a kooperujú) a testy používateľského rozhrania – UI testy (ako daný systém vyzerá).

 

Unit a integrační testy mohou být napsány v různých frameworcích. Pro Node.js je nejlepší volbou Mocha, Jest a Jasmine. Pracovali jsme už se všemi, ale nejvíce upřednostňujeme Mocha. Při využívání těchto testů je také užitečné vytvářet i tzv. "Testy pokrytí".

 

UI testy dokáží spustit aplikaci v předem předdefinovaném chování a vytvořit několik snímků obrazovky pro vývojáře a testery na zhodnocení správného UI designu. Na našich projektech jsme například využili Selenium a Puppeteer - samotná naše webová stránka je testována pomocí programu Puppeteer na 8 rozlišeních, pro desktop i mobilní zařízení a na šířku i výšku.

 

Kvůli udržení vysoké kvality kódu máme nastavené Kontroloři - Linter tak, aby hlásili varování a chyby v IDE a později i v CI/ CD řetězci. Pro Node.js jsme zvykli používat ESLint, XO nebo Prettier. ESLint je podporován ve většině IDE, ale je relativně snadné upravit nastavení IDE tak, aby pracovalo i se zbývajícími dvěma.

 

Na buildovanie, testování a nasazování kódu používáme Gitlab CI. Nástroj Gitlab oficiálně prohlašuje, že může být použit při všech krocích DevOps cyklu a je pravda, že i my ho používáme pro některé z nich. V nástroji lze buildovanie i implementace, takže víme vytvořit infrastrukturu pomocí jediného konfiguračního kódu. Každé dokončené aplikační prostředí běží jako Docker stack.

gitlab ci pipeline
Gitlab CI pipeline

 

Monitorování už spuštěných služeb se provádí prostřednictvím nástroje Icinga2, který zasílá e-mailové notifikace vždy, když se objeví nějaká chyba nebo se něco opraví. Také monitorujeme i naši infrastrukturu abychom viděli, zda je vše v pořádku na našich procesorech a zda náhodou někdo nezneužívá naše stroje - například na tažení kryptoměna.

 

icinga2 service grid
Icinga2 service grid

 

Po každém vydání aplikace hned automaticky pracujeme na dalším.

 

Počkat... kde je tedy vlastně konečný produkt? No přece po každém vydání. Ve skutečnosti je to tak, že produkt nikdy není zcela dokončen, dokud ho klient nestáhne z trhu. Proč? Protože vždy existují různá vylepšení.

Viktor

Viktor Šulák

Partner, Lead Backend Developer

Štítky: