Vývoj software v roce 2018

Vydáno:

Jiří Kupka

Vývoj software se neustále mění podle toho, jaké technologie jsou aktuálně v kurzu, jak jsou dostupné a jaká metodika se osvědčila. Určitě nebudu sám, kdo vzpomene na kódění v PSPadu a nasazování do produkce přes Total Commander a FTP, které fungovalo, jak se mu chtělo a pokud jste měli štěstí. A jak to vypadá v roce 2018?

  • Používejte IDE, ze kterého získáte maximum. Obyčejné textové editory se dají výborně použít pro jednoduché skripty či aplikace, ale u větších projektů a komplexních aplikací je jednoznačně lepší využít nástrojů, které nabízí IDE. Využijete stromového zobrazení projektu, připojení externích knihoven, prokliknutí se do definic funkcí a tříd, remote debuggingu a spousty drobných funkcionalit zpříjemňujících vývoj.
  • Používejte Git. Bez gitu si už vývoj nedokážu představit. Není to pouze nástroj pro verzování zdrojových souborů, ale taky nástroj pro kolaboraci v týmu a základ pro automatizaci.
  • Nedělejte nic ručně, automatizujte. Využívejte nástrojů typu Gitlab CI, Jenkins, Gulp, Grunt nebo i prostých bashových skriptů. Pokud nějakou věc děláte stále dokola a navíc se skládá z více kroků, okrádá vás o čas a zároveň se zde vytváří prostor pro procesní chyby.
  • Používejte Docker. Pokud jste někdy vytvářeli trošku větší aplikaci, určitě se její nasazení neobešlo bez nastavení prostředí - vytvoření adresářové struktury, instalace systémových knihoven, instalace knihoven z balíčkovacích systémů, spuštění minifikačních skriptů atd. Když půjdeme ještě o úroveň níže, často jste se museli zajímat i o architekturu a operační systém, který běžel na fyzickém či virtuálním stroji, kde aplikace měla běžet. Prostě kopa práce. Docker vám dává volnost ve výběru operačního systému - pokud máte jednoduchou aplikaci, postačí vám Alpine Linux, jehož kontejner zabírá něco kolem 130 MB; pokud jste zvyklí na Debian a vaše aplikace si s ním rozumí, můžete vyjít z Docker image Debianu. Základem práce s Dockerem je tzv. Dockerfile, což je jakýsi předpis, jak se váš kontejner má ubalit. Stručně řečeno, je to sada kroků, které říkají, co se má kam nakopírovat a jaký skript se má spustit. Touto sadou kroků jste schopni nastavit prostředí pro běh aplikace a nakonec ji spustit. Krásná věc je, že Docker kontejner funguje jako samostatná jednotka, kterou je možné podle potřeby škálovat.
  • Používejte nástroje pro orchestraci kontejnerů. Pokud spustíte docker kontejner pomocí prostého docker run z příkazové řádky, aplikace se vám samozřejmě spustí. Problém nastává v okamžiku, kdy vyžadujete jistou robustnost či škálovatelnost projektu. V tomto případě se vám hodí využít některého z nástrojů pro orchestraci, jako je Kubernetes či Marathon. Tyto nástroje kontrolují stav kontejneru
  • Testujte. Nepříjemné je, že mnoho vývojářů stále testy nechce psát, protože to není produktivní, stimulující či zábavná práce. Samozřejmě mají pravdu, ale z dlouhodobého hlediska je to práce, která se vyplatí a ušetří člověku trápení. Jednotkové testy vám pomohou vyhnout se problémům při refaktoringu kódu, vizuální regresní testy vám například odhalí rozbitou část webové stránky při úpravě css souborů, testy json schémat odhalí problém s vydáváním obsahu na REST API atd. Důležité je snažit se minimalizovat čas a úsilí strávené nad psaním a spouštěním testů. Je potřeba mít vytvořené spolehlivé testovací prostředí a kvalitní testovací framework. Spouštění testů by se nemělo nechávat na vůli programátorů, ale mělo by se dít automaticky například při pushnutí nové verze projektu skrze Gitlab CI nebo Jenkinse. Co se týče pochopení produkťáků, řekl bych, že se to v posledních letech dost zlepšilo. Pokud však stále bojujete se svým produkťákem o čas strávený nad testy, je potřeba se s ním pobavit nad výhodami testů (dát konkrétní případy, kdy testy zachránily vývojáři/produktu kůži či ukázat komplexnost projektu a co všechno se může stát). Potom se domluvte nad technologickými tickety, na základě kterých připravíte testovací prostředí (přece nebudete kácet stromy tupou sekerou) a při každém dalším dílčím ticketu na vývoj projektu myslete na to, aby odhad práce zahrnoval i napsaní testů.
  • Pracujete v týmu? Používejte vhodné komunikační nástroje. Nastavte si e-mailové skupiny, notifikace. Pro real-time komunikaci zkuste využívat nástrojů typu Slack, Mattermost, Google Hangouts. Vaše zprávy se neztratí, můžete si vytvořit skupiny, jistě využijete i možnost integrace do jiných služeb
  • Používejte OS, ve kterém se vám dobře pracuje a jste v něm efektivní.
  • Pokud neznáte Linux, určitě věnujte chvíli alespoň základům práce s ním.
  • Sledujte aktuální trendy a učte se novým věcem.
  • V produkci nezapomeňte logovat a monitorovat.

V dalším pokračování článku bych se rád zamyslel právě nad nástroji pro logování, monitoring a nasazením aplikace do produkce. Vyplatí se v dnešní době ještě třeba FTP webhosting?