Assertivní sobi
Úterý 8. března 2016

Assertivní sobi

Březnová slezina se povedla — dorazilo sedmnáct lidí, nad talky se rozjela vřelá debata a projektor se nám v průběhu přednášek vypnul jen čty-ři-krát!

Nebojte se testování

V prvním bloku vystoupil Honza Bednařík se svou přednáškou o testování. Honza je aktivní Python programátor, a ikdyž promítané slajdy primárně obsahovaly ukázky z tohoto programovacího jazyka, komentoval je i obecnějšími radami, které se dají aplikovat na jiné prostředí.

Ukázka testu napsaného ve frameworku pytest

To jak pohodlně se vám budou testy psát záleží i na volbě testovacího frameworku. Na ukázce výše je jednoduchá funkce a její test ve frameworku pytest. Otestovat stejný kód s variantou knihovny xUnit je pracnější:

Srovnání testu napsaného ve frameworku pytest a unittest

Pro psaní testů existuje celá řada doporučení a filozofií, ze kterých Honza vyzdvihl hlavně tyto:

  • Jeden test by měl prověřovat jedinou situaci. Psát tučné testovací funkce, které kontrolují více situací je antipattern. Pokud něco selže tak se sice můžete dozvědět na jakém řádku v testu nastal problém, ale už nezjistíte, jestli je potíž i v kódu který jej následuje.
  • Název testu by neměl doslovně popisovat co se děje uvnitř (to by mělo oko programátora poznat samo). Lepší je volit takové pojmenování, které vystihuje testovanou situaci.
  • TDD, tedy Test Driven Development, je způsob vývoje, při kterém se nejdříve píšou testy a teprve poté samotný aplikační kód. Tímto postupem přirozeně vzniká dobře protestovaný kód a programátor mívá menší pokušení psát zbytečnosti. I v TDD ale hrozí scestí ve formě kódu, který sice formálně testy prochází, ale jeho implementace reaguje správně pouze na testované scénáře. Chod v reálných podmínkách nemusí dopadnout dobře.
  • Při testech se někdy nevyhneme mockování, tj. nahrazování reálných objektů naší vlastní (zjednodušenou) implementací. Pokud má test odhalit problémy v práci s časem, externími API službami či s mezními situacemi, určitě se poohlédněte po mock, stub či fake knihovnách.
  • Testy které musí prověřovat chování s databází bývají obvykle pomalé. Pokud to jde, vyhněte se jim (otestuje objekt či funkcionalitu bez ní). Pokud to nejde, narvěte ji na SSD disk či do RAM. Plnění databází řešte generátory či factory funkcemi, před fixturami zdrhněte (rozuměj, špatně se udržují).

Celou Honzovu přednášku si můžete poslechnout na YouTube:

Promítané slajdy najdete na našem tkalcovském webu.

Na konci prvního bloku si vzal slovo i Zdeněk Rejda a prolítnul s náma testovaní v jazyce C. No peklo, co vám máme povídat:

 

ELK, Logování s ❤

V druhém bloku vystoupil Michal Valoušek s přednáškou o ELK stacku — třech klíčových opensource technologiích, které dohromady tvoří šikovný nástroj pro sběr, analýzu a vizualizaci vašich logů.

Pod písmenem E se schovává Elasticsearch, vyhledávací a analytický engine.
L představuje Logstash, vycucávače a zpracovávače logů. Je to právě Logstash, do kterého budete logy odesílat, anebo jeho prostřednictvím vybírat z nejrůznějších míst. Co Logstash zkonzumuje a zprocesuje, uloží do Elasticsearche.
Posledním dílkem skládanky je K jako Kibana, což je javascriptová aplikace napsaná v Angularu, která vám v pěkném UI zpřístupní data uložená v Elasticsearchi a umožní nad nimi provádět sofistikované dotazy a vizualizace.

Kibana

Přednáška byla pojata prakticky. Po úvodním seznámení s technologiemi jsme nahodili ve VirtualBoxu Ubuntu mašinu, sestavili v ní Ansible skriptem celý stack a začali si s losem hrát naživo.

Nejprve jsme měli Logstash nakonfigurován tak, aby konzumoval pouze hlášky přicházející ze syslogu. Aby nám ale Kibana začala vůbec něco kloudného zobrazovat, museli jsme se přihlásit na virtuální stroj a dráždit ji příkazy typu "logger maslo" či "logger chleba".
To jsme vzápětí vyřešili sledováním logů ze samotné Kibany, takže se nám v UI prostředí začal objevovat bohatší set dat, nad kterými už bylo možné provádět rozumnnější filtrování a dotazy.

Pořád jsme ale jen škrábali po povrchu. Teprve po nastavení sekce filter v konfiguraci Logstashe, parsování vstupních logů a simulovaném trafficu nad statický webem všem došlo, jak silný nástroj ELK je. V jediném prostředí může operátor provádět dotazy napříč celým systémem a vytvářet z nich smysluplné vizualizace. Čím více dat se vám povede do ELKu nasypat, tím větší užitek z něj budete mít.

Celý výstup jsme nahrávali a vystavili na Youtube:

Slajdy jsou k nahlédnutí zde. Pokud si budete chtít ELK stack osahat u sebe, podívejte se na tento GitHub repozitář. V adresáři demo/ je popsán kompletní postup instalace.

Díky všem co jste přišli a vystupujícím dvojnásob.


Obrázek Kibany via https://www.elastic.co/assets/blt45376e159402a169/Screen-Shot-2014-12-15-at-12.28.30-PM.png