Kontrolní seznam pro vytváření a publikování webových aplikací

K vytvoření vlastní webové aplikace v naší době nestačí umět ji vyvíjet. Důležitým aspektem je nastavení nástrojů pro nasazení aplikace, monitoring, ale i správu a administraci prostředí, ve kterém působí. S tím, jak éra ručního nasazování upadá v zapomnění, mohou automatizační nástroje přinést hmatatelné výhody i pro malé projekty. Při nasazení „ručně“ můžeme často zapomenout něco přesunout, vzít v úvahu tu či onu nuanci, spustit zapomenutý test, v tomto seznamu lze pokračovat poměrně dlouho.

Tento článek může pomoci těm, kteří se teprve učí základy tvorby webových aplikací a chtějí trochu porozumět základním termínům a konvencím.

Vytváření aplikací lze tedy stále rozdělit na 2 části: vše, co souvisí s kódem aplikace, a vše, co souvisí s prostředím, ve kterém je tento kód spouštěn. Kód aplikace se dále dělí na kód serveru (ten, který běží na serveru, často: obchodní logika, autorizace, úložiště dat atd.) a klientský kód (ten, který běží na počítači uživatele: často rozhraní as ním související logika).

Začněme středou.

Základem pro fungování jakéhokoli kódu, systému nebo softwaru je Operační systém, proto se níže podíváme na nejoblíbenější systémy na hostingovém trhu a stručně je popíšeme:

Windows Server - stejné Windows, ale v serverové variantě. Některé funkce dostupné v klientské (běžné) verzi Windows zde nejsou přítomny, například některé služby pro sběr statistik a podobný software, ale existuje sada utilit pro správu sítě, základní software pro nasazení serverů (web, ftp, ...). Obecně platí, že Windows Server vypadá jako běžný Windows, kváká jako běžný Windows, ale stojí 2krát více než jeho běžný protějšek. Vzhledem k tomu, že aplikaci s největší pravděpodobností nasadíte na vyhrazený/virtuální server, nejsou konečné náklady pro vás kritické, i když se mohou zvýšit. Vzhledem k tomu, že platforma Windows zaujímá drtivé místo na trhu spotřebitelských OS, bude její serverová edice většině uživatelů nejznámější.

Unix-podobný systém. Tradiční práce v těchto systémech nevyžaduje přítomnost známého grafického rozhraní, nabízí uživateli pouze konzoli jako ovládací prvek. Pro nezkušeného uživatele může být práce v tomto formátu obtížná, jen kolik stojí ukončení textového editoru, který je v datech poměrně oblíbený Elán, otázka s tím související má za 6 let již více než 1.8 milionu zhlédnutí. Hlavní distribuce (edice) této rodiny jsou: Debian - oblíbená distribuce, verze balíčků v ní jsou zaměřeny hlavně na LTS (Dlouhodobá podpora – podpora po dlouhou dobu), což se projevuje poměrně vysokou spolehlivostí a stabilitou systému a balíčků; ubuntu – obsahuje distribuce všech balíčků v jejich nejnovějších verzích, což může ovlivnit stabilitu, ale umožňuje vám používat funkce, které přicházejí s novými verzemi; Red Hat Enterprise Linux – OS, umístěný pro komerční použití, je placený, nicméně zahrnuje podporu od dodavatelů softwaru, některé proprietární balíčky a balíčky ovladačů; CentOS - open source varianta Red Hat Enterprise Linux, charakterizovaná absencí proprietárních balíčků a podpory.

Pro ty, kteří tuto oblast teprve začínají ovládat, bych doporučil systémy Windows ServerNebo ubuntu. Pokud vezmeme v úvahu Windows, pak jde především o známost systému, ubuntu – větší tolerance vůči aktualizacím a následně například méně problémů při spouštění projektů na technologiích, které vyžadují nové verze.

Když jsme se tedy rozhodli pro OS, přejděme k sadě nástrojů, které vám umožní nasadit (instalovat), aktualizovat a sledovat stav aplikace nebo jejích částí na serveru.

Dalším důležitým rozhodnutím bude umístění vaší aplikace a jejího serveru. V současné době jsou nejběžnější 3 způsoby:

  • Hostování (udržování) serveru na vlastní pěst je finančně nejpříznivější možností, ale budete si muset u svého poskytovatele objednat statickou IP, aby váš zdroj časem nezměnil svou adresu.
  • Pronajměte si dedikovaný server (VDS) – a nezávisle jej spravujte a škálujte zatížení
  • Zaplaťte (často vám dávají možnost vyzkoušet funkčnost platformy zdarma) za předplatné nějakého cloudového hostingu, kde je platební model za použité zdroje zcela běžný. Nejvýraznější představitelé tohoto směru: Amazon AWS (poskytují bezplatný rok používání služeb, ale s měsíčním limitem), Google Cloud (na účet dávají 300 $, které lze během roku utratit za cloudové hostingové služby) , Yandex.Cloud (poskytují 4000 2 rublů po dobu 12 měsíců), Microsoft Azure (poskytují bezplatný přístup k oblíbeným službám na rok, + 500 XNUMX rublů za jakékoli služby po dobu jednoho měsíce). Můžete tedy vyzkoušet kteréhokoli z těchto poskytovatelů, aniž byste utratili korunu, ale získali přibližný názor na kvalitu a úroveň poskytovaných služeb.

V závislosti na zvolené cestě se v budoucnu změní pouze to, kdo je z velké části zodpovědný za tu či onu oblast správy. Pokud hostujete sami sebe, musíte pochopit, že jakékoli přerušení elektřiny, internetu, samotného serveru, softwaru na něm nasazeného – to vše leží výhradně na vašich bedrech. Pro trénink a testování je to však více než dostatečné.

Pokud nemáte další stroj, který může hrát roli serveru, budete chtít použít druhý nebo třetí způsob. Druhý případ je totožný s prvním, s tou výjimkou, že zodpovědnost za dostupnost serveru a jeho výkon přenesete na bedra hostitele. Správa serveru a softwaru je stále pod vaší kontrolou.

A nakonec možnost pronájmu kapacity cloudových poskytovatelů. Zde můžete nastavit automatické ovládání téměř čehokoli, aniž byste zacházeli do přílišných technických detailů. Navíc místo jednoho stroje můžete mít několik paralelně běžících instancí, které mohou například zodpovídat za různé části aplikace, přičemž se cenově příliš neliší od vlastnictví dedikovaného serveru. A také existují nástroje pro orchestraci, kontejnerizaci, automatické nasazení, nepřetržitou integraci a mnoho dalšího! Na některé z těchto věcí se podíváme níže.

Serverová infrastruktura obecně vypadá takto: máme takzvaného „orchestrátora“ („orchestrace“ je proces správy několika instancí serveru), který spravuje změny prostředí na instanci serveru, virtualizačním kontejneru (volitelné, ale docela často používané), což umožňuje rozdělit aplikaci na izolované logické vrstvy a software pro kontinuální integraci – umožňující aktualizace hostovaného kódu prostřednictvím „skriptů“.

Orchestrace vám tedy umožňuje vidět stav serverů, zavádět nebo vrátit aktualizace prostředí serveru a tak dále. Zpočátku je nepravděpodobné, že vás tento aspekt ovlivní, protože k tomu, abyste mohli cokoli zorganizovat, potřebujete několik serverů (můžete mít jeden, ale proč je to nutné?), a abyste měli několik serverů, potřebujete je. Mezi nástroji v tomto směru je nejoblíbenější Kubernetes, vyvinutý společností Google.

Dalším krokem je virtualizace na úrovni OS. V dnešní době se rozšířil pojem „dockerizace“, který pochází z nástroje přístavní dělník, který poskytuje funkčnost kontejnerů izolovaných od sebe, ale spouštěných v kontextu jednoho operačního systému. Co to znamená: v každém z těchto kontejnerů můžete spustit aplikaci nebo dokonce sadu aplikací, které budou věřit, že jsou jediné v celém OS, aniž by tušily existenci někoho jiného na tomto stroji. Tato funkce je velmi užitečná pro spouštění identických aplikací různých verzí nebo jednoduše konfliktních aplikací, stejně jako pro rozdělování částí aplikace do vrstev. Toto přetypování vrstvy lze později zapsat do obrázku, který lze použít například k nasazení aplikace. To znamená, že instalací tohoto obrazu a nasazením kontejnerů, které obsahuje, získáte připravené prostředí pro provoz vaší aplikace! V prvních krocích můžete tento nástroj použít jak pro informační účely, tak pro získání velmi reálných výhod rozdělením aplikační logiky do různých vrstev. Zde však stojí za to říci, že ne každý potřebuje dockerizaci a ne vždy. Dockerizace je opodstatněná v případech, kdy je aplikace „fragmentovaná“, rozdělená na malé části, z nichž každá odpovídá za svůj vlastní úkol, tzv. „architekturu mikroslužeb“.

Navíc kromě zajištění prostředí musíme zajistit kompetentní nasazení aplikace, které zahrnuje všechny druhy transformací kódu, instalaci knihoven a balíčků souvisejících s aplikací, spouštění testů, upozornění na tyto operace a tak dále. Zde musíme věnovat pozornost takovému konceptu, jako je „nepřetržitá integrace“ (CI – Průběžná integrace). Hlavními nástroji v této oblasti jsou v současnosti Jenkins (software CI napsaný v Javě se může na začátku zdát trochu komplikovaný), Travis CI (psáno v Ruby, subjektivní, poněkud jednodušší Jenkinsjsou však stále vyžadovány určité znalosti v oblasti konfigurace nasazení), Gitlab CI (napsáno na Ruby a běž).

Když už jsme tedy mluvili o prostředí, ve kterém bude vaše aplikace fungovat, je na čase se konečně podívat na to, jaké nástroje nám moderní svět nabízí pro vytváření právě těchto aplikací.

Začněme základy: backend (backend) – serverová část. Volba jazyka, sady základních funkcí a předdefinovaná struktura (rámec) je zde dána především osobními preferencemi, přesto stojí za zmínku za zvážení (názor autora na jazyky je značně subjektivní, i když s nárokem k nezaujatému popisu):

  • Python je pro nezkušeného uživatele celkem přívětivý jazyk, některé chyby odpustí, ale umí být i dost přísný na vývojáře, aby neudělal nic špatného. Již poměrně vyzrálý a smysluplný jazyk, který se objevil v roce 1991.
  • Go - jazyk od Google, je také docela přátelský a pohodlný, je docela snadné jej zkompilovat a získat spustitelný soubor na jakékoli platformě. Může být jednoduchý a příjemný, nebo může být složitý a vážný. Čerstvý a mladý, objevil se relativně nedávno, v roce 2009.
  • Rust je o něco starší než jeho předchozí kolega, vydaný v roce 2006, ale ve srovnání se svými vrstevníky je stále docela mladý. Zaměřeno na zkušenější vývojáře, i když se stále snaží vyřešit mnoho nízkoúrovňových úloh pro programátora.
  • Java je veteránem komerčního vývoje, který byl představen v roce 1995 a je dnes jedním z nejčastěji používaných jazyků ve vývoji podnikových aplikací. Se svými základními koncepty a náročným nastavením může být běh pro začátečníka docela náročný.
  • ASP.net je platforma pro vývoj aplikací vydaná společností Microsoft. K zápisu funkčnosti se používá především jazyk C# (vyslov C Sharp), který se objevil v roce 2000. Jeho složitost je srovnatelná s úrovní mezi Javou a Rustem.
  • PHP, původně používané pro předzpracování HTML, v současnosti, i když si drží absolutní prvenství na jazykovém trhu, existuje trend k poklesu používání. Má nízký vstupní práh a snadnost psaní kódu, ale zároveň při vývoji poměrně velkých aplikací nemusí funkce jazyka stačit.

No, závěrečná část naší aplikace - nejhmatatelnější pro uživatele - Frontend (frontend) – je tváří vaší aplikace, s touto částí uživatel přímo komunikuje.

Aniž bychom zacházeli do detailů, moderní frontend stojí na třech pilířích, rámcích (a ne tolik), pro vytváření uživatelských rozhraní. V souladu s tím jsou tři nejoblíbenější:

  • ReactJS není framework, ale knihovna. Ve skutečnosti se framework od svého hrdého titulu liší pouze absencí některých funkcí „z krabice“ a nutností jejich ruční instalace. Existuje tedy několik variant „přípravy“ této knihovny, které tvoří jedinečné rámce. Pro začátečníka to může být trochu obtížné kvůli některým základním principům a poměrně agresivnímu nastavení prostředí sestavení. Pro rychlý začátek však můžete použít balíček „create-react-app“.
  • VueJS je framework pro vytváření uživatelských rozhraní. Z této trojice si právem bere titul uživatelsky nejpřívětivějšího frameworku, pro vývoj ve Vue je bariéra vstupu nižší než u ostatních zmíněných bratrů. Navíc je mezi nimi nejmladší.
  • Angular je považován za nejsložitější z těchto rámců, jediný, který vyžaduje TypeScript (doplněk pro jazyk Javascript). Často se používá k vytváření velkých podnikových aplikací.

Shrneme-li to, co bylo napsáno výše, můžeme dojít k závěru, že nyní se nasazení aplikace radikálně liší od toho, jak tento proces probíhal dříve. Nikdo vám však nebrání provést „rozmístění“ staromódním způsobem. Stojí ale ta trocha ušetřeného času na startu za to obrovské množství chyb, které bude muset vývojář, který si zvolí tuto cestu, vykročit? Věřím, že odpověď je ne. Tím, že strávíte trochu více času seznamováním se s těmito nástroji (a nepotřebujete více než to, protože musíte pochopit, zda je potřebujete ve svém aktuálním projektu, nebo ne), můžete si to zahrát a výrazně snížit např. , případy chyb typu duch v závislosti na prostředí a objevující se pouze na produkčním serveru, noční analýza toho, co vedlo k pádu serveru a proč se nespustí, a mnoho dalšího.

Zdroj: www.habr.com

Přidat komentář