Jak se dostat k první práci programátora
Začít kariéru v IT jako vývojář je dnes jednodušší i těžší zároveň. Na jedné straně je poptávka po programátorech stále vysoká, na straně druhé roste počet lidí, kteří se do oboru chtějí dostat. Klíčem k úspěchu není jen umět psát kód, ale také vědět, jak se prezentovat a kde hledat první příležitost. Tento článek vám ukáže, jak na to bez zbytečných iluzí.
Při návrhu rozhraní API se dnes JWT tokeny staly standardem pro ověřování požadavků. Jejich hlavní výhodou je bezstavovost – server si nemusí pamatovat relaci, protože veškeré potřebné informace jsou přímo v tokenu. Tento přístup usnadňuje škálování služeb, ale vyžaduje důslednou implementaci. Bez správného nastavení se totiž JWT snadno stane slabým místem celé aplikace. Než token začnete používat, věnujte pozornost třem klíčovým oblastem: podepisování, expiraci a přenosu dat.
Další praktický krok je nastavení sprintů. Začněte s dvoutýdenními iteracemi, které jsou pro začátek ideální. Na začátku sprintu si naplánujete, co se stihne, a na konci předvedete hotovou funkci. Důležité je, aby sprint končil něčím, co jde spustit. I když je to jen malá část systému, musí být funkční. Pokud se vám stane, že nestíháte, nebojte se škrtat úkoly, ne prodlužovat sprint. Zkrácení rozsahu je častější a zdravější než posouvání termínu.
Samostatná kapitola je technický dluh. Scrum vám dá sice do rukou nástroj, jak řídit požadavky, ale nezachrání vás před špatnou architekturou. V českém prostředí se často stává, že tým jede v rychlých sprintech, ale kód je neudržovatelný. Řešení spočívá v tom, že si každý sprint vyhradíte čas na refaktoring a testování. Třeba každý čtvrtý den sprintu věnujte čištění kódu. Není to luxus, ale nutnost, pokud chcete dlouhodobě dodávat rychlost.
Další zásadou je krátká doba platnosti tokenu. Nastavte expiraci na minuty, maximálně na hodiny, nikdy ne na dny nebo týdny. Krátká expirace snižuje dopad případného úniku tokenu. Pro obnovení přístupu použijte takzvaný refresh token, který má delší životnost a je uložen na serveru. Tento token by měl být možné jednoduše zneplatnit, pokud uživatel odhlásí nebo změní heslo. Při jeho vydávání vždy snižujte počet použití a kontrolujte, zda není odcizený.
Častou chybou je neověřování všech součástí tokenu na serveru. Kromě podpisu a expirace kontrolujte také issuer a audience, tedy pro koho byl token vydán a pro kterou službu je určen. Bez této kontroly může útočník použít token z jiné aplikace, pokud má stejné podpisové klíče. Dále si dejte pozor na algoritmus, kterým je token podepsán. Útočník může zkusit změnit hlavičku na „none" a obejít tak ověření. Vždy explicitně definujte seznam povolených algoritmů a v případě pochybnosti token zamítněte.
Nejčastější chyby při zavádění Scrumu První velký kámen úrazu je nedostatečná komunikace s produktovým vlastníkem. Ten musí být k dispozici na denní bázi, ideálně osobně nebo alespoň na videu. Pokud odpovídá na otázky až po třech dnech, tým uvízne na mrtvém bodě. Druhou častou chybou je přetěžování sprintů. Tým slíbí víc, než může stihnout, a pak dělá přesčasy. Naučte se měřit rychlost týmu (velocity) a plánujte podle ní. Třetím problémem je formální provádění retrospektiv. Pokud se na nich jen pochválíte a nic nezměníte, je to ztracený čas. Retrospektiva musí končit konkrétními akcemi, třeba „budeme psát automatické testy pro každý nový příběh".
Prvním krokem je volba algoritmu pro podpis. Vždy používejte asymetrické podepisování, například algoritmus RS256. Tím zajistíte, že token podepíše pouze autorizační server a ostatní služby si pouze ověřují podpis pomocí veřejného klíče. Nikdy nepoužívejte symetrický algoritmus HS256, pokud nemáte jediný server a plnou kontrolu nad sdíleným tajemstvím. Pokud dojde k úniku tajemství, útočník může podepsat libovolný token. U asymetrického přístupu je riziko omezeno na kompromitaci soukromého klíče, který je uložen jen na jednom místě.
V praxi pomáhá kombinace: použijte SQL pro části aplikace, které vyžadují komplexní vztahy a transakce, a NoSQL pro objemová a flexibilní data. Například e-shop může mít objednávky v SQL, ale katalog produktů s mnoha atributy v dokumentové databázi. Takové oddělení usnadní škálování i údržbu. Před nasazením si ale vždy připravte vývojové prostředí s ostrými daty a otestujte si chování při výpadku uzlu – to je okamžik, kdy se projeví rozdíly mezi konzistencí a dostupností. Vyberte si nástroj, který odpovídá vašim požadavkům na správu, monitorování a podporu v týmu, protože kvalitní technologie bez schopného týmu je jen složitý systém.