DevOps 101 s Atlassian- Jak vybrat ty správné nástroje pro vývoj v rámci DevOps

12.06.2017 | Víte, jaké jsou možnosti nástrojů pro vývoj? Ukážeme vám ty, které využívá Atlassian a které doporučuje

 „Narovinu? Žádný nástroj na světě nedokáže kouzlem změnit vaše DevOps“
DevOps podporuje spolupráci a komunikaci mezi vývojem a operativními týmy, takže je to spíš posun kultury, než kouzelný recept.

Avšak jsou zde nástroje, které podporují automatizaci a spolupráci mezi týmy. Lidé se nás často ptají, jaké nástroje podporují DevOps u nás v Atlassian, a tak jsme sestavili průvodce nákupem, který vám přiblíží a objasní pohled na DevOps tools a ukáže vám, které nástroje využíváme my.

I přesto, že se mnoho nástrojů dotýká všech fází cyklu vývoje- ať už v jednom či druhém směru, není žádný nástroj, o kterém bychom věděli, který by hrál primární roli v každé fázi. Takže pokud přemýšlíte o nástrojích pro vývoj, je to jedině dobře- rozdělili bychom to následovně: plán, build, kontinuální integrace, deploy, operativní procesy, a kontinuální feedback.

Plán

Spolupracujte na vizi a designu

Vezmeme stránku z agile příručky- doporučujeme nástroje, které umožňují plánovat v iteracích. Touto cestou se dříve či později budete učit od uživatelů a z jejich zpětné vazby budete produkty více optimalizovat. Podívejte se na nástroje, které umožňují plánování ve sprintech.

Další dobrým postupem je nepřetržité získávání zpětné vazby, je dobré ji organizovat do dalších použitelných vstupů, a řídit priority pro váš vývojový tým. Podívejte se na nástroje, které vám umožní „asynchronní brainstorming“ (pokud se jej rozhodnete využívat)- je velice důležité, aby se kdokoli mohl vyjádřit k čemukoliv- nápady, strategie, cíle, požadavky, roadmapy a dokumentace. To zajistí předání správných informací správným lidem.

Nezapomínejte na integrace- ať už se rozhodnete kdykoliv a u čehokoliv, že dané funkce anebo projekty by měly být převedeny do backlogu. Myslete na to předem.

Pro více informací o této problematice se podívejte na článek o prioritizaci a správě zpětné vazby- http://atlassianblog.wpengine.com/2015/12/inside-atlassian-prioritizing-customer-feedback-backlog-grooming/

Build

Staging prostředí pro vývoj

Zatímco zákazníci mají benefity především z operací, vývojáři využívají nástroje jako je Docker k poskytování individuálního vývojového prostředí. Psaní oproti replikám produkčního prostředí poskytuje lepší komfort pro práci, a výsledky jsou více jednoznačné.

Něco divného s classpath? Maven instalace najednou nefunguje? „Infrastruktura jako kód“ znamená rychlejší přípravu, nežli opravy- a také spolehlivější. To znamená, že můžete vytvářet libovolné variace prostředí.

Když celý tým pracuje na identickém prostředí, pracují „na stejném stroji“.

Pro toto využíváme: Docker

Infrastruktura jako kód

Vývojáři vytvářejí modulární aplikace, protože jsou výhodnější, co se týká přizpůsobení a údržby. Takže- proč nepřemýšlet o infrastruktuře?

Tyto myšlenky může být složité aplikovat na systémy, jelikož se neustále mění. Pojďme to vzít okolo a podívat se na přípravu kódu- kód může být nasazen „na holý server“ a následně znovu využit, aby se server vrátil zpět do předchozího stavu.

O tyto procesy se může postarat version controll- dají se testovat ucelené části kódu, jednotlivé změny. To celé je zakomponováno v kontinuální integraci.

Pokud jsou znalosti institucí zapsány v kódu, a celý kód je dobře popsaný, odpadá potřeba mít po ruce další zdroje, které vysvětlují danou problematiku. Následně se objevují opakovatelné procesy a spolehlivější systémy- k předávání informací méně mluvte, více fungujte a zapisujte.

Pro toto využíváme: BambooBitbucketChefDockerPuppet

Týmové psaní kódu

Než čekat na schválení změn kódu před nasazením do produkce, můžete vylepšovat kód – „leštit“ kvalitu, a celý proces zahrnutí změn může být zprocesovaný přes pull-requesty.

Ptáte se, co je to pull request? Pull requesty sdělují týmu změny, které se udělali v kódu „za zády jednotlivců“ a které změny byly pushnuty do repozitáře s kódem. Tým má možnost diskutovat o navrhovaných změnách ještě před tím, než jsou zahrnuty do hlavního kódu.

Pro více informací o týmové spolupráci při psaní kódu (a také proč jeden z vývojářů změnil názor na code review) se podívejte na „Hello World! A new grad’s guide to coding as a team“.

Kontinuální integrace

Spojitá integrace

Spojitá integrace má význam v kontrole kódu ve sdíleném repozitáři několikrát za den a testování neustále. Touto cestou můžete detekovat problémy brzy a opravovat je ve fázi, kdy je jednoduché je opravit, tímto způsobem můžete uživatelům doručovat vyleštěné funkce, po kterých touží.

Protože branch-and-merge workflow znamenají agresi, nástroje, které převezmou strach z kontinuální integrace v multi-branch prostředí, jsou klíčem k testování bez omezování rychlosti vývoje.

Podívejte se na nástroje, které automaticky spouští testy nad vývojovými větvemi, a nabídnou vám možnost zahrnout změny do hlavní větve, když jsou buildy úspěšné. Díky tomuto procesu získáte real-time upozornění na případné chyby.

Pro více informací se podívejte na winning at CI with feature branches and Bamboo.

Nástroje, které využíváme: BambooHipChat

Automatizované testy

Automatizované testy platí čas, který byste museli strávit nad testováním vy. Tím opět o něco více urychlují vývoj a odhalují potencionální chyby- to přináší povědomí o kódu napříč týmem.

K přípravě a podpoře je důležité, aby operativní týmy měli možnost vidět, co se testuje a jak důkladně. Na rozdíl od manuálních testů se ty automatizované provádějí vždy stejně, se stejnou přesností a stejným scénářem. Také mohou poskytovat grafy trendu a přehledy, takže pomáhají odhalit rizikové oblasti ve vyvýjené komponentě.

Skutečné riziko je v životnosti softwaru, ale nemůžete měnit něco, o čem nevíte- pokud nemáte ponětí o chybě, nemůžete ji opravit (anebo jí opravíte pouze náhodou).

Hledejte nástroje, které podporují dashboardy a wallboard, nechte všechny, kdo se do projektu zapojili, aby měli možnost se vyjádřit ke konkrétním výsledkům buildů anebo deploye.

Nástroje, které využíváme: BambooBitbucketCapture for JIRA

Deploy

Release dashboards

Jednou z nejvíce stěžejní částí doručování nové verze softwaru je podchycení všech úprav a nových změn- ty testovat a schraňovat všechny potřebné informace na jednom místě. V neposlední řadě je důležité, aby všichni odpovědní lidé znali aktuální stav daných věcí- zde nastupují dashboardy.

Hledejte nástroje, které podporují jednotný dashboard s možností integrace na vaše repozitáře a vývojové nástroje. Nalezněte něco, co vám dá plnou viditelnost na všechny branche, buildy, pull requesty a upozornění ohledně deploymentu na jednom místě.

Nástroje, které používáme: JIRA Software

Automatizovaný deployment

Neexistuje žádný jednotný kouzelný recept pro automatizaci procesu deploymentu všech aplikací a na všechny prostředí. Ale zapsání procesů např. pomocí Ruby anebo bash skriptů je dobrý začátek. Využívejte proměnné pro hostname a další možnosti konfigurace a individualizace. Využívejte funkce pro zamezení duplicit v procesu.

Nejprve zkuste automatizovat deployment na nejnižším levelu (interně), teprve posléze jej zkuste aplikovat dále. Když nic jiného, tak časem zjistíte rozdíly mezi prostředím a dostanete nové podněty, jak tyto procesy upravovat.

Nástroje pro přípravu jako Puppet, nebo Chef, snižují riziko strachu standardizace jednotlivých prostředí. Bamboo nabízí krok po kroku komplexní procesy deploymentu a také jejich historii.

Nástroje, které využíváme: AWSBambooHipChatPuppet

Operativní procesy

Monitoring výkonu serverů a apliakcí

Jsou zde dva základní typy monitoringu, které se dají automatizovat- monitoring serverů a monitoring aplikací.

Manuální nastavování a doplňování stavů monitoringu je dobré proto, abyste měli pod kontrolou sledované věci, ale pro pochopení celkové kondice a stavu aplikací a serverů je potřeba mít nástroj, který jej sleduje 24/7.

A jak hádáte- je zde mnoho nástrojů, které to umí: New Relic, Splunk a Nagios jsou asi ty nejvíce populární a umí oboje- jak monitorovat servery, tak aplikace.

Hledejte nástroje, které je možné integrovat do komunikačních kanálů vašeho týmu.

Nástroje, které využíváme: BigPandaHipChatHostedGraphiteNagiosNew RelicPager DutyPingdomSplunk

Komunikace a swarming

Komunikace mezi týmy je první krok k tomu, aby se změnila kultura fungování- a chatovací nástroje tomu pomáhají v reálném čase. Spousta těchto nástrojů umí vytvářet specifické místnosti- pak není problém vytvořit speciální místnost pro konkrétní problém a do ní pozvat ty uživatele, kterých se problém týká. Ti následně řeší, co bude mít jaké dopady a co vše ovlivní a společnými silami hledají cesty k vyřešení problému. Je také důležité zůstat v obraze po celou dobu řešení.

Hledejte nástroje pro komunikaci- takové, které je možné rozšiřovat a integrovat s monitoringem, který chcete využívat- takže nezmeškáte informace o degradaci služeb.

Více si přečtěte ve článku how Atlassian deals with incidents

Nástroje, které využíváme: BigPandaDataDogHipChatNew RelicPager DutyStatusPage

Incidenty, změny a tracking problémů

Klíčem k odemčení spolupráce mezi týmy je to, aby všichni viděli stejnou práci. Co se stane, když je nahlášen problém? Jsou prolinkované s daným software? Když se udělají změny, jsou opět zaneseny?

Nic neblokuje vývoj více, než mít reportované incidenty a software trackovaný v rozdílných systémech.

Hledejte nástroje, které umožní držet incidenty, změny, problémy a projekty na jedné platformě- pak můžete identifikovat a řešit problémy rychleji a více efektivně.

Nástroje, které využíváme:  JIRA Service DeskJIRA Software

Kontinuální feedback, zpětná vazba

K lepším produktům díky zpětné vazbě

Zákazníci vám vždy sdělí, když se vám povede build, jen musíte dobře poslouchat. To zahrnuje např. dotazníky, bug reporty, support tickety, ale i tweety. V DevOps kultuře, má každý produktový tým přístup k uživatelským komentářům, protože ty vylepšují plánování vývoje a release management.

Hledejte aplikace, které integrují vás chat tool s vaší oblíbenou platformou na průzkumy a dotazníky. Twitter a Facebook mohou také být integrovány s chatem pro real-time feedback.

Sledování zpětné vazby se může zdát neskutečně časově náročné, ale je to lepší, než dlouhodobý vývoj něčeho, co nikdo nechce.

Nástroje, které využíváme: GetFeedbackHipChatJIRA Service DeskPendoSurveyMonkeyHootsuite

Vylepšování DevOps nástrojů

Atlassian vytváří nástroje, které podporují kolaboraci mezi týmy, v každé části životního cyklu vývoje. A jak jste si všimli, rozšiřujeme portfolio o nové nástroje, anebo i jen doplňky k těm stávajícím. 

V malých firmách může být jeden tým odpovědný za celý proces vývoje. Ve větších společnostech je to rozdělné na jednotlivá oddělení. DevOps se snaží rozbít dané bariéry a zrychlit procesy vývoje- s vysokou úrovní automatizace a vývojem bez problémů.

Zvolení správných DevOps tools je první a nejvýznamnější krok k pohledu na váš software a operativní procesy, pak následuje rozhodnutí co zlepšit.

Také by se Vám mohl zamlouvat náš ebook „Hello World! A new grad’s guide to coding as a team”- sbírka esejí navržených novým programátorům pro úspěšnou cestu k zapojení se do týmu.

Dostupná zde- http://atlassianblog.wpengine.com/wp-content/uploads/HelloWorldEbook.pdf


Pro další informace o novinkách Atlassian a JIRA sledujte web www.myJIRA.cz.

Diskutujeme také na LinkedIn ve skupině Atlassian komunita CZ & SK.

V případě dotazů se obraťte na atlassian_zavináč_onlio.com nebo na tel. +420222744766


Pavel Novák
Java Developer

Zdroje:

https://www.atlassian.com/blog/devops/how-to-choose-devops-tools
(How to choose the right DevOps tools, Sarah Zorah, March 31, 2016)

Zpět