Svět IT se definitivně změnil, dávno pryč jsou doby, kdy stačilo několik vývojářů a pár lidí z provozu k tomu, aby firma mohla fungovat.
Na trhu jsme viděli nespočet změn, od přesunu IT ze sklepů do vyšších pater přes postupné zapojení technických ředitelů do užších vedení firem až do aktuální situace, kdy jsou v důsledku digitální transformace informační technologie nedílnou součástí produktů firem. Žijeme v době, kdy se i fyzické produkty automaticky nabízejí s aplikací pro mobilní telefony, kterou zákazníci vnímají jako jejich nedílnou součást. Málokdo si dnes vzpomene na průkopnické firmy, jako například Nest, která představila učící se termostaty, které postupně změnily smýšlení celého světa o tom, jakou roli informační technologie hrají a budou hrát v budoucnosti.
Celá tato změna má za následek výrazný nárůst komplexity a kompetencí napříč všemi oblastmi v oboru informačních technologií a přinesla s sebou celou řadu dílčích problémů. Ty jsme dosud řešili pomocí agilních transformací a metodik vývoje, zavedením užší spolupráce mezi vývojáři a odborníky na informační technologie z provozu (přístup DevOps), snahou o zajištění spolehlivosti v systémech, službách a produktech (přístup SRE, Site Reliability Engineering) či cloudově nativními způsoby vývoje. Všechny tyto oblasti a řešení nás posunuli dále, ale zároveň odhalili množství dalších problémů. Jednotlivé aplikace se rozpadají na menší celky, kterým moderně říkáme mikroslužby a které velmi urychlují vývoj a začleňování nových vlastností do aplikací. Zároveň však přinášejí další výzvy v podobě udržování a verzování rozhraní pro programování aplikací (API, Application Programming Interface), náročnějšího testování, monitoringu a samostatné oblasti, kterou je konzistence dat, zálohování a obnova těchto distribuovaných systémů.
Abychom těmto výzvám začali čelit úspěšně, je třeba se na ně podívat jako na celek a již je neřešit jednotlivě. Podobně jako průmyslová revoluce přinesla automatizaci a iniciovala přerod menších manufaktur ve větší podniky, tak i my aktuálně projdeme změnou, která bude mít podobné důsledky. Hovoříme o vizi tzv. Softwarových továren, které s využitím standardizace nástrojů a procesů umožní snadněji a rychleji dodávat jednotlivé aplikace, a tím zajistit více prostoru pro nové nápady a inovace. Složka lidské práce je zde skutečně důležitá, protože celá “aplikační linka” v této softwarové továrně existuje jen pro to, aby lidem usnadnila práci a zajistila dostatek zdrojů a vhodné prostředí, které může sloužit jako inkubátor pro rychlé experimenty a inovace.
Softwarová továrna v praxi
Uvést softwarovou továrnu do praxe není až zas tak složité, jak by se mohlo na první pohled zdát. Na trhu působí řada ověřených technologických firem, které disponují konzultačními programy, jako například Red Hat Container Adoption Journey, které nás umí takovým procesem provést. Klíčový je jistý nadhled a zamyšlení se nad tím, jak má IT oddělení v daném podniku vypadat, co je požadovaným výstupem, jak dobře známe potřeby svých zákazníků a jaké metriky značí dosažení úspěchu. S ucelenou představou reflektující tuto interní analýzu pak přistoupíme ke zmapování aktuálního stavu našeho IT ekosystému a porovnáme ho s trendy, které jsou na trhu, přičemž inspirovat se můžeme u firem z řad poskytovatelů veřejného cloudu a důvěryhodných dodavatelů open source podnikových řešení. Fázi výběru není radno podcenit, protože výběr daného trendu nám určuje i rizika, která budeme podstupovat z hlediska bezpečnosti či závislosti na produktech a službách jednoho konkrétního dodavatele.
Ve chvíli, kdy jsme definovali náš cíl z hlediska dodávaných aplikací, způsobu jejich vývoje a zároveň známe trendy, které budou ovlivňovat naše směřování v dalších letech, je čas na výběr technologií. Na první pohled se zdá, že na výběr je nepřeberné množství možností, ale i tady stačí nahlédnout pod pokličku významných technologických firem, abychom zjistili, že situace není tak složitá. Klasické virtualizaci již odzvonilo a používáme ji jen jako dobrý a osvědčený nástroj pro zachování historických aplikací. Jasným trendem je kontejnerizace, kterou lze již považovat za standard sloužící jako základ pro různé nástroje např. pro aplikační vrstvu pro zpracování komunikace mezi službami Service Mesh, Serverless architekturu, či technologie, které umožňují odstraňovat přebytečný kód z aplikací, které jsou součástí platformy a není jim tak třeba všechny atributy znovu implementovat a individuálně je udržovat v každé aplikaci zvlášť.
Cílem tohoto konceptu je odlehčení podnikové IT infrastruktury odstraněním zastaralých nástrojů, zbavení se co nejvíce technologického dluhu a pomocí automatizace odstranění třecích ploch, které vznikají v důsledku neustále se opakujících činností spojených s údržbou současných systémů, jež spotřebovávají zdroje, které by se jinak daly využít na další rozvoj, vzdělávání a implementaci inovací. Koncept Softwarové továrny směřuje k identifikaci problémů a dílčích řešení, a jejich propojení do jediného celku, který je schopen IT celého podniku posunout kupředu. Stačí dodržet jen několik principů:
- Omezit komplexitu infrastruktury a vynechat nepotřebné vrstvy abstrakce v aplikační architektuře. Například existují řešení, která umožňují provozovat Kubernetes přímo na fyzickém hardware, s využitím technologií KubeVirt či OpenShift virtualization pak lze v rámci moderní platformy OpenShift provozovat i dnes již často překonané virtuální servery, a tím zastaralé IT spravovat moderním, plně automatizovatelným způsobem.
- Stavět technologie v rámci podniku jako službu. Takto jsme si například zvykli používat databáze v rámci datových skladů a podobný princip lze snadno aplikovat i na další oblasti, jako je CI/CD (kontinuální integrace / kontinuální dodání) přístup k vývoji aplikací, kdy všechny fáze jejich integrace, testování i nasazení mohou být vývojáři dodávány jako služba s minimální možností konfigurace.
- Nejdůležitějším, ne však posledním, předpokladem je jednoduché pravidlo, na kterém je založena automatizace, ale i pokročilejší přístupy, jako DevOps nebo SRE, – nic nedělat dvakrát. Jakmile se nějaká činnost opakuje, je třeba ji zautomatizovat, a tím mít i možnost ji pravidelně testovat.
David Bečvařík, Technology Lead pro Českou republiku a Slovensko, Red Hat