Kontrolný zoznam pre vytváranie a publikovanie webových aplikácií

Na vytvorenie vlastnej webovej aplikácie v dnešnej dobe nestačí vedieť ju vyvinúť. Dôležitým aspektom je nastavenie nástrojov pre nasadzovanie aplikácie, monitoring, ako aj riadenie a administráciu prostredia, v ktorom pôsobí. Keďže éra manuálneho nasadzovania upadá do zabudnutia, aj pre malé projekty môžu automatizačné nástroje priniesť hmatateľné výhody. Pri nasadzovaní „ručne“ môžeme často zabudnúť niečo pohnúť, vziať do úvahy tú či onú nuanciu, spustiť zabudnutý test, v tomto zozname sa dá pokračovať pomerne dlho.

Tento článok môže pomôcť tým, ktorí sa len učia základy tvorby webových aplikácií a chcú trochu porozumieť základným pojmom a konvenciám.

Budovanie aplikácií je teda možné rozdeliť na 2 časti: všetko, čo sa týka kódu aplikácie, a všetko, čo súvisí s prostredím, v ktorom sa tento kód spúšťa. Kód aplikácie je tiež rozdelený na kód servera (ten, ktorý beží na serveri, často: obchodná logika, autorizácia, ukladanie údajov atď.) a klientsky kód (ten, ktorý beží na počítači používateľa: často rozhranie a s ním súvisiaca logika).

Začnime stredou.

Základom fungovania akéhokoľvek kódu, systému alebo softvéru je Operačný systém, preto sa nižšie pozrieme na najpopulárnejšie systémy na hostingovom trhu a stručne ich popíšeme:

Windows Server - rovnaký Windows, ale v serverovej variácii. Niektoré funkcie dostupné v klientskej (bežnej) verzii Windows tu nie sú, napríklad niektoré služby na zhromažďovanie štatistík a podobný softvér, ale existuje sada nástrojov na správu siete, základný softvér na nasadenie serverov (web, ftp, ...). Vo všeobecnosti Windows Server vyzerá ako bežný Windows, kváka ako bežný Windows, avšak stojí 2-krát viac ako jeho bežný náprotivok. Avšak vzhľadom na to, že s najväčšou pravdepodobnosťou nasadíte aplikáciu na dedikovaný/virtuálny server, konečné náklady pre vás, aj keď sa môžu zvýšiť, nie sú rozhodujúce. Keďže platforma Windows zaberá na trhu spotrebiteľských OS prevažujúce miesto, jej serverová edícia bude väčšine používateľov najznámejšia.

unix-podobný systém. Tradičná práca v týchto systémoch nevyžaduje prítomnosť známeho grafického rozhrania, ktoré používateľovi ponúka iba konzolu ako ovládací prvok. Pre neskúseného používateľa môže byť práca v tomto formáte náročná, aká je cena za ukončenie textového editora, ktorý je pomerne populárny v oblasti údajov elán, otázka s tým súvisiaca má za 6 rokov už viac ako 1.8 milióna videní. Hlavné distribúcie (edície) tejto rodiny sú: Debian – populárna distribúcia, verzie balíkov v nej sú zamerané hlavne na LTS (Dlhodobá podpora – podpora na dlhú dobu), čo sa prejavuje pomerne vysokou spoľahlivosťou a stabilitou systému a balíkov; ubuntu – obsahuje distribúcie všetkých balíkov v ich najnovších verziách, čo môže ovplyvniť stabilitu, ale umožňuje vám využívať funkcie, ktoré prichádzajú s novými verziami; Red Hat Enterprise Linux – OS, umiestnený na komerčné použitie, je platený, zahŕňa však podporu od dodávateľov softvéru, niektoré proprietárne balíky a balíky ovládačov; CentOS - open source variácia Red Hat Enterprise Linux, charakterizovaná absenciou proprietárnych balíkov a podpory.

Pre tých, ktorí práve začínajú ovládať túto oblasť, by som odporučil systémy Windows ServerAlebo ubuntu. Ak vezmeme do úvahy Windows, potom ide predovšetkým o známosť systému, ubuntu – väčšia tolerancia voči aktualizáciám a následne napríklad menej problémov pri spúšťaní projektov na technológiách, ktoré vyžadujú nové verzie.

Keď sa teda rozhodneme pre OS, prejdime k sade nástrojov, ktoré vám umožnia nasadiť (inštalovať), aktualizovať a monitorovať stav aplikácie alebo jej častí na serveri.

Ďalším dôležitým rozhodnutím bude umiestnenie vašej aplikácie a jej servera. V súčasnosti sú najbežnejšie 3 spôsoby:

  • Hostenie (udržiavanie) servera na vlastnú päsť je cenovo najvýhodnejšou možnosťou, ale budete si musieť objednať statickú IP od svojho poskytovateľa, aby váš zdroj časom nezmenil svoju adresu.
  • Prenajmite si dedikovaný server (VDS) – a nezávisle ho spravujte a škálujte zaťaženie
  • Zaplaťte (často vám dávajú možnosť vyskúšať si funkčnosť platformy zadarmo) za predplatné nejakého cloudového hostingu, kde je platobný model za použité zdroje celkom bežný. Najvýznamnejší predstavitelia tohto smeru: Amazon AWS (poskytujú bezplatný rok používania služieb, ale s mesačným limitom), Google Cloud (na účet dávajú 300 dolárov, ktoré je možné minúť počas roka na cloudové hostingové služby) , Yandex.Cloud (poskytujú 4000 2 rubľov . na 12 mesiace), Microsoft Azure (poskytujú bezplatný prístup k obľúbeným službám na rok, + 500 XNUMX rubľov za akékoľvek služby na jeden mesiac). Môžete teda vyskúšať ktoréhokoľvek z týchto poskytovateľov bez toho, aby ste minuli cent, ale získali približný názor na kvalitu a úroveň poskytovaných služieb.

V závislosti od zvolenej cesty sa v budúcnosti zmení iba to, kto je vo veľkej miere zodpovedný za túto alebo tú oblasť správy. Ak sa hosťujete, musíte pochopiť, že akékoľvek prerušenia elektriny, internetu, samotného servera, softvéru na ňom nasadeného - to všetko leží výlučne na vašich pleciach. Na tréning a testovanie je to však viac než dosť.

Ak nemáte ďalší stroj, ktorý môže hrať úlohu servera, budete chcieť použiť druhý alebo tretí spôsob. Druhý prípad je identický s prvým, s tým rozdielom, že zodpovednosť za dostupnosť servera a jeho výkon presúvate na plecia hostiteľa. Správa servera a softvéru je stále pod vašou kontrolou.

A nakoniec možnosť prenájmu kapacity cloudových poskytovateľov. Tu si môžete nastaviť automatizované ovládanie takmer čohokoľvek bez toho, aby ste zachádzali do prílišných technických detailov. Navyše namiesto jedného stroja môžete mať niekoľko paralelne bežiacich inštancií, ktoré môžu byť napríklad zodpovedné za rôzne časti aplikácie, pričom sa cenovo príliš nelíšia od vlastníctva dedikovaného servera. A tiež existujú nástroje na orchestráciu, kontajnerizáciu, automatické nasadenie, nepretržitú integráciu a oveľa viac! Na niektoré z týchto vecí sa pozrieme nižšie.

Infraštruktúra servera vo všeobecnosti vyzerá takto: máme takzvaného „orchestrátora“ („orchestrácia“ je proces správy niekoľkých inštancií servera), ktorý spravuje zmeny prostredia na inštancii servera, virtualizačnom kontajneri (voliteľné, ale celkom často používané), čo vám umožňuje rozdeliť aplikáciu na izolované logické vrstvy a softvér Continuous Integration – umožňujúci aktualizácie hosťovaného kódu prostredníctvom „skriptov“.

Takže orchestrácia vám umožňuje vidieť stav serverov, zaviesť alebo vrátiť aktualizácie do prostredia servera atď. Spočiatku vás tento aspekt pravdepodobne neovplyvní, pretože na to, aby ste čokoľvek zorganizovali, potrebujete niekoľko serverov (jeden môžete mať, ale prečo je to potrebné?), a ak chcete mať niekoľko serverov, potrebujete ich. Medzi nástrojmi v tomto smere je najobľúbenejší Kubernetes, vyvinutý spoločnosťou Google.

Ďalším krokom je virtualizácia na úrovni OS. V súčasnosti sa rozšíril pojem „dockerizácia“, ktorý vychádza z tohto nástroja prístavný robotník, ktorý poskytuje funkčnosť kontajnerov izolovaných od seba, ale spúšťaných v kontexte jedného operačného systému. Čo to znamená: v každom z týchto kontajnerov môžete spustiť aplikáciu alebo dokonca sadu aplikácií, ktoré budú veriť, že sú jediné v celom OS, bez toho, aby ste mali podozrenie, že na tomto počítači existuje niekto iný. Táto funkcia je veľmi užitočná pri spúšťaní rovnakých aplikácií rôznych verzií alebo jednoducho konfliktných aplikácií, ako aj pri rozdeľovaní častí aplikácie do vrstiev. Tento obsadenie vrstvy je možné neskôr zapísať do obrázku, ktorý sa dá použiť napríklad na nasadenie aplikácie. To znamená, že inštaláciou tohto obrazu a nasadením kontajnerov, ktoré obsahuje, získate pripravené prostredie na spustenie vašej aplikácie! V prvých krokoch môžete tento nástroj použiť tak na informačné účely, ako aj na získanie veľmi reálnych výhod rozdelením aplikačnej logiky do rôznych vrstiev. Tu však stojí za to povedať, že nie každý potrebuje dockerizáciu a nie vždy. Dockerizácia je opodstatnená v prípadoch, keď je aplikácia „fragmentovaná“, rozdelená na malé časti, z ktorých každá zodpovedá za svoju vlastnú úlohu, takzvanú „architektúru mikroslužieb“.

Okrem toho, okrem zabezpečenia prostredia, musíme zabezpečiť kompetentné nasadenie aplikácie, ktoré zahŕňa všetky druhy transformácií kódu, inštaláciu knižníc a balíkov súvisiacich s aplikáciou, spustenie testov, upozornenia na tieto operácie atď. Tu musíme venovať pozornosť takému konceptu ako „Nepretržitá integrácia“ (CI – Priebežná integrácia). Hlavnými nástrojmi v tejto oblasti sú v súčasnosti Jenkins (softvér CI napísaný v jazyku Java sa môže zdať na začiatku trochu komplikovaný), Travis C.I. (napísané v Ruby, subjektívne, trochu jednoduchšie Jenkinsstále sú však potrebné určité znalosti v oblasti konfigurácie nasadenia), Gitlab CI (napísané ďalej Ruby and Go).

Keď už sme teda hovorili o prostredí, v ktorom bude vaša aplikácia fungovať, je čas konečne sa pozrieť na to, aké nástroje nám ponúka moderný svet na vytváranie práve týchto aplikácií.

Začnime základmi: backend (backend) – serverová časť. Voľba jazyka, množiny základných funkcií a preddefinovaná štruktúra (rámec) je tu daná najmä osobnými preferenciami, no napriek tomu stojí za zváženie (názor autora na jazyky je dosť subjektívny, aj keď s nárokom na nezaujatý popis):

  • Python je pre neskúseného používateľa pomerne prívetivý jazyk, odpúšťa niektoré chyby, no vie byť aj dosť prísny na vývojára, aby nespravil nič zlé. Už pomerne zrelý a zmysluplný jazyk, ktorý sa objavil v roku 1991.
  • Go - jazyk od Google, je tiež celkom priateľský a pohodlný, je celkom ľahké ho skompilovať a získať spustiteľný súbor na akejkoľvek platforme. Môže byť jednoduchý a príjemný, alebo môže byť zložitý a vážny. Čerstvý a mladý, objavil sa relatívne nedávno, v roku 2009.
  • Rust je o niečo starší ako jeho predchádzajúci kolega, vydaný v roku 2006, no v porovnaní so svojimi rovesníkmi je stále dosť mladý. Zamerané na skúsenejších vývojárov, aj keď sa stále snaží vyriešiť veľa úloh na nízkej úrovni pre programátora.
  • Java je veterán komerčného vývoja, predstavený v roku 1995 a dnes je jedným z najbežnejšie používaných jazykov vo vývoji podnikových aplikácií. S jeho základnými konceptmi a náročným nastavením môže byť runtime pre začiatočníkov dosť náročné.
  • ASP.net je platforma na vývoj aplikácií vydaná spoločnosťou Microsoft. Na písanie funkčnosti sa používa hlavne jazyk C# (vyslov C Sharp), ktorý sa objavil v roku 2000. Jeho komplexnosť je porovnateľná s úrovňou medzi Javou a Rustom.
  • PHP, pôvodne používané na predspracovanie HTML, v súčasnosti, aj keď si drží absolútne prvenstvo na jazykovom trhu, existuje trend smerom k poklesu používania. Má nízky vstupný prah a ľahké písanie kódu, ale zároveň pri vývoji pomerne veľkých aplikácií nemusí funkcionalita jazyka stačiť.

No, posledná časť našej aplikácie - najhmatateľnejšia pre používateľa - Frontend (frontend) – je tvárou vašej aplikácie; práve s touto časťou používateľ priamo interaguje.

Bez toho, aby sme zachádzali do detailov, moderný frontend stojí na troch pilieroch, rámcoch (a nie až tak), na vytváranie používateľských rozhraní. V súlade s tým sú tri najobľúbenejšie:

  • ReactJS nie je framework, ale knižnica. V skutočnosti sa framework líši od svojho hrdého titulu iba absenciou niektorých funkcií „out of the box“ a potrebou ich ručnej inštalácie. Existuje teda niekoľko variácií „prípravy“ tejto knižnice, ktoré tvoria jedinečné rámce. Pre začiatočníka to môže byť trochu ťažké kvôli niektorým základným princípom a dosť agresívnemu nastaveniu prostredia na zostavenie. Na rýchly začiatok však môžete použiť balík „create-react-app“.
  • VueJS je rámec na vytváranie používateľských rozhraní. Z tejto trojice právom berie titul užívateľsky najprívetivejšieho rámca, pre vývoj vo Vue je bariéra vstupu nižšia ako u ostatných spomínaných bratov. Navyše je z nich najmladší.
  • Angular je považovaný za najkomplexnejší z týchto rámcov, jediný, ktorý to vyžaduje strojopisom (doplnok pre jazyk Javascript). Často sa používa na vytváranie veľkých podnikových aplikácií.

Zhrnutím toho, čo bolo napísané vyššie, môžeme konštatovať, že teraz sa nasadenie aplikácie radikálne líši od toho, ako tento proces prebiehal predtým. Nikto vám však nebráni v tom, aby ste urobili „nasadenie“ staromódnym spôsobom. Stojí však to málo ušetreného času na začiatku za obrovské množstvo chýb, ktoré bude musieť vývojár, ktorý sa vyberie touto cestou, vykročiť? Verím, že odpoveď je nie. Tým, že strávite trochu viac času oboznámením sa s týmito nástrojmi (a nepotrebujete viac, pretože musíte pochopiť, či ich potrebujete vo svojom aktuálnom projekte alebo nie), môžete to rozohrať a výrazne znížiť napr. , prípady duchovných chýb v závislosti od prostredia, ktoré sa objavujú iba na produkčnom serveri, nočná analýza toho, čo viedlo k zlyhaniu servera a prečo sa nespustí, a mnoho ďalšieho.

Zdroj: hab.com

Pridať komentár