{"id":30874,"date":"2019-10-31T21:37:54","date_gmt":"2019-10-31T18:37:54","guid":{"rendered":"https:\/\/prohoster.info\/blog\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij\/"},"modified":"2019-10-31T21:37:54","modified_gmt":"2019-10-31T18:37:54","slug":"cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij","title":{"rendered":"Lista kontrolna tworzenia i publikacji aplikacji internetowych","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Aby stworzy\u0107 swoj\u0105 aplikacj\u0119 webow\u0105, wystarczy ju\u017c zna\u0107 jej rozw\u00f3j. Wa\u017cnym aspektem jest konfiguracja narz\u0119dzi do wdra\u017cania aplikacji, monitorowania i zarz\u0105dzania oraz administracji \u015brodowiskiem, w kt\u00f3rym dzia\u0142a. Era r\u0119cznego wdra\u017cania odchodzi w zapomnienie, nawet dla ma\u0142ych projekt\u00f3w narz\u0119dzia automatyzacji mog\u0105 przynie\u015b\u0107 znacz\u0105ce korzy\u015bci. Przy r\u0119cznym wdra\u017caniu cz\u0119sto zapominamy przenie\u015b\u0107 co\u015b, uwzgl\u0119dni\u0107 jaki\u015b szczeg\u00f3\u0142, uruchomi\u0107 zapomniany test \u2013 lista ta mo\u017ce by\u0107 d\u0142uga. <\/p>\n<p>Ten artyku\u0142 mo\u017ce pom\u00f3c tym, kt\u00f3rzy dopiero poznaj\u0105 podstawy tworzenia aplikacji webowych i chc\u0105 nieco zrozumie\u0107 podstawowe poj\u0119cia i konwencje.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nBudowanie aplikacji mo\u017cna podzieli\u0107 na 2 cz\u0119\u015bci: wszystkie aspekty zwi\u0105zane z kodem aplikacji oraz te zwi\u0105zane ze \u015brodowiskiem, w kt\u00f3rym ten kod si\u0119 wykonuje. Kod aplikacji dzieli si\u0119 z kolei na serwerowy (wykonywany na serwerze, cz\u0119sto: logika biznesowa, autoryzacja, przechowywanie danych itp.) i kliencki (wykonywany na maszynie u\u017cytkownika: cz\u0119sto interfejs i zwi\u0105zana z nim logika). <\/p>\n<p>Zacznijmy od \u015brodowiska. <\/p>\n<p>Podstaw\u0105 dzia\u0142ania ka\u017cdego kodu, systemu, oprogramowania jest system operacyjny, dlatego poni\u017cej om\u00f3wimy najpopularniejsze systemy obecne na rynku hostingowym i przedstawimy ich kr\u00f3tk\u0105 charakterystyk\u0119: <\/p>\n<p><i>Windows Server<\/i> \u2013 to ta sama Windows, ale w wersji serwerowej. Niekt\u00f3re funkcje dost\u0119pne w wersji klienta (zwyk\u0142ej) s\u0105 tutaj niedost\u0119pne, na przyk\u0142ad niekt\u00f3re us\u0142ugi zbierania statystyk i podobne oprogramowanie, jednak dost\u0119pny jest zestaw narz\u0119dzi do administracji sieci\u0105, podstawowe oprogramowanie do wdra\u017cania <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/server\/\"   title=\"serwer\u00f3w\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"1298\">serwer\u00f3w<\/a> (web, ftp, \u2026). Og\u00f3lnie rzecz bior\u0105c, Windows Server wygl\u0105da jak zwyk\u0142a Windows, dzia\u0142a jak zwyk\u0142a Windows, ale kosztuje 2 razy wi\u0119cej ni\u017c jej zwyk\u0142y odpowiednik. Jednak bior\u0105c pod uwag\u0119, \u017ce wdra\u017canie aplikacji b\u0119dziesz najprawdopodobniej robi\u0107 na serwerze dedykowanym\/wirtualnym, ostateczny koszt dla Ciebie mo\u017ce wzrosn\u0105\u0107, ale nie jest to krytyczne. Platforma Windows zajmuje dominuj\u0105c\u0105 pozycj\u0119 na rynku system\u00f3w operacyjnych dla u\u017cytkownik\u00f3w, wi\u0119c jej wersja serwerowa b\u0119dzie najbardziej znajoma dla wi\u0119kszo\u015bci u\u017cytkownik\u00f3w. <\/p>\n<p><i>Unix<\/i>-podobna systema. Tradycyjna praca w tych systemach nie przewiduje obecno\u015bci tradycyjnego interfejsu graficznego, oferuj\u0105c u\u017cytkownikowi jedynie konsol\u0119 jako element steruj\u0105cy. Dla niedo\u015bwiadczonego u\u017cytkownika praca w takim formacie mo\u017ce stanowi\u0107 trudno\u015b\u0107, co tylko wartym uwagi jest wyj\u015bcie z do\u015b\u0107 popularnego w tych edytorze tekstowym. <i>Vim<\/i>, pytanie zwi\u0105zane z tym w ci\u0105gu 6 lat zdoby\u0142o ju\u017c ponad 1,8 mln wy\u015bwietle\u0144. G\u0142\u00f3wnymi dystrybucjami (edycjami) tej rodziny s\u0105: Debian \u2014 popularna dystrybucja, wersje pakiet\u00f3w w niej s\u0105 g\u0142\u00f3wnie ukierunkowane na LTS (<i>Long Term Support <\/i>\u2013 wsparcie przez d\u0142ugi czas), co przejawia si\u0119 w ca\u0142kiem du\u017cej niezawodno\u015bci i stabilno\u015bci systemu oraz pakiet\u00f3w; <i>Ubuntu<\/i> \u2013 zawiera dystrybucje wszystkich pakiet\u00f3w w ich najnowszych wersjach, co mo\u017ce wp\u0142ywa\u0107 na stabilno\u015b\u0107, jednak pozwala korzysta\u0107 z funkcjonalno\u015bci dostarczanych z nowymi wersjami; <i>Red Hat Enterprise Linux \u2013 system operacyjny<\/i>, pozycjonowany do u\u017cytku komercyjnego, jest p\u0142atny, jednak zawiera wsparcie ze strony dostawc\u00f3w oprogramowania, niekt\u00f3re w\u0142asno\u015bciowe pakiety i pakiety sterownik\u00f3w; <i>CentOS \u2013 opensource <\/i>wariacja Red Hat Enterprise Linux, r\u00f3\u017cni si\u0119 brakiem w\u0142asno\u015bciowych pakiet\u00f3w oraz wsparcia. <\/p>\n<p>Dla tych, kt\u00f3rzy dopiero odkrywaj\u0105 t\u0119 dziedzin\u0119, moj\u0105 rekomendacj\u0105 b\u0119d\u0105 systemy <i>Windows Server<\/i>, albo <i>Ubuntu<\/i>. Je\u015bli rozwa\u017ca\u0107 Windows, to przede wszystkim znajomo\u015b\u0107 systemu, <i>Ubuntu<\/i> \u2013 wi\u0119ksza tolerancja na aktualizacje, i z drugiej strony, na przyk\u0142ad, mniej problem\u00f3w przy uruchamianiu projekt\u00f3w na technologiach wymagaj\u0105cych nowych wersji. <\/p>\n<p>A wi\u0119c, ustalaj\u0105c system operacyjny, przejd\u017amy do zestawu narz\u0119dzi, kt\u00f3re pozwol\u0105 na wdra\u017canie (instalowanie), aktualizowanie i monitorowanie stanu aplikacji lub jej cz\u0119\u015bci na serwerze. <\/p>\n<p>Nast\u0119pnym wa\u017cnym rozwi\u0105zaniem b\u0119dzie \u2013 umiejscowienie twojej aplikacji oraz serwera dla niej. Na chwil\u0119 obecn\u0105, najbardziej powszechne s\u0105 3 drogi: <\/p>\n<ul>\n<li>Hostowa\u0107 (trzyma\u0107) serwer u siebie, samodzielnie \u2014 najta\u0144sza opcja, ale trzeba zam\u00f3wi\u0107 u dostawcy statyczny IP, aby tw\u00f3j zas\u00f3b nie zmienia\u0142 swojego adresu w czasie. \n <\/li>\n<li>Wynaj\u0105\u0107 Serwer Dedykowany (VDS) \u2013 i samodzielnie zajmowa\u0107 si\u0119 jego administracj\u0105 oraz skalowaniem obci\u0105\u017ce\u0144. \n<\/li>\n<li>Op\u0142aci\u0107 (cz\u0119sto oferuj\u0105 r\u00f3wnie\u017c bezp\u0142atny okres pr\u00f3bny) subskrypcj\u0119 na kt\u00f3rej\u015b z platform chmurowych, gdzie powszechna jest model p\u0142atno\u015bci za wykorzystane zasoby. Najbardziej znane reprezentatywne us\u0142ugi w tym zakresie to: Amazon AWS (oferuj\u0105 bezp\u0142atny rok korzystania z us\u0142ug, ale z limitem miesi\u0119cznym), Google Cloud (oferuj\u0105 300$ na koncie, kt\u00f3re mo\u017cna wykorzysta\u0107 przez rok na us\u0142ugi chmurowe <a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/pl\/\"   title=\"hostingu\" data-wpil-keyword-link=\"linked\"  data-wpil-monitor-id=\"2392\">hostingu<\/a>), Yandex.Cloud (oferuj\u0105 4000 rubli na 2 miesi\u0105ce), Microsoft Azure (oferuj\u0105 bezp\u0142atny dost\u0119p do popularnych us\u0142ug na rok, + 12 500 rubli na dowolne us\u0142ugi przez jeden miesi\u0105c). Dzi\u0119ki temu mo\u017cna wypr\u00f3bowa\u0107 kt\u00f3regokolwiek z tych dostawc\u00f3w, nie wydaj\u0105c ani grosza, a jednocze\u015bnie zyskuj\u0105c przybli\u017cone zdanie o jako\u015bci i poziomie \u015bwiadczonych us\u0142ug. \n<\/li>\n<\/ul>\n<p>\nW zale\u017cno\u015bci od wybranej drogi, p\u00f3\u017aniej zmieni si\u0119 jedynie fakt, na kim, w wi\u0119kszo\u015bci, spoczywa odpowiedzialno\u015b\u0107 za dan\u0105 dziedzin\u0119 administracji. Je\u015bli hostujesz samodzielnie, musisz rozumie\u0107, \u017ce wszelkie przerwy w dostawie pr\u0105du, internetu, samego serwera, oprogramowania, kt\u00f3re na nim zainstalowano \u2013 to wszystko jest ca\u0142kowicie na Twoich barkach. Jednak\u017ce, do nauki i testowania, to wi\u0119cej ni\u017c wystarczaj\u0105co. <\/p>\n<p>Je\u015bli jednak nie masz dodatkowego komputera, kt\u00f3ry m\u00f3g\u0142by pe\u0142ni\u0107 rol\u0119 serwera, b\u0119dziesz chcia\u0142 skorzysta\u0107 z drugiej lub trzeciej drogi. Drugi przypadek jest identyczny z pierwszym, z t\u0105 r\u00f3\u017cnic\u0105, \u017ce przenosisz odpowiedzialno\u015b\u0107 za dost\u0119pno\u015b\u0107 serwera i jego moc na barki dostawcy hostingu. Administracja serwera i oprogramowania nadal pozostaje pod Twoj\u0105 kontrol\u0105. <\/p>\n<p>I w ko\u0144cu, opcja wynajmu mocy obliczeniowej od dostawc\u00f3w chmurowych. Tutaj mo\u017cesz skonfigurowa\u0107 automatyczne zarz\u0105dzanie niemal wszystkim, nie zag\u0142\u0119biaj\u0105c si\u0119 zbytnio w techniczne niuanse. Dodatkowo, zamiast jednego komputera, mo\u017cesz mie\u0107 kilka jednocze\u015bnie uruchomionych instancji, kt\u00f3re mog\u0105 odpowiada\u0107 za r\u00f3\u017cne cz\u0119\u015bci aplikacji, przy czym ich koszt nie r\u00f3\u017cni si\u0119 znacz\u0105co od posiadania dedykowanego serwera. A ponadto, dost\u0119pne s\u0105 tutaj narz\u0119dzia orkiestracji, konteneryzacji, automatycznego wdra\u017cania, ci\u0105g\u0142ej integracji i wiele innych! Niekt\u00f3re z tych rzeczy om\u00f3wimy poni\u017cej. <\/p>\n<p>Og\u00f3lnie rzecz bior\u0105c, infrastruktura serwera wygl\u0105da nast\u0119puj\u0105co: mamy tzw. \u201eorkiestrator\u201d (\u201eorkiestrowanie\u201d \u2013 proces zarz\u0105dzania wieloma instancjami serwer\u00f3w), kt\u00f3ry zarz\u0105dza zmianami w \u015brodowisku na instancji serwera, opcjonalny kontener wirtualizacji, kt\u00f3ry pozwala na podzia\u0142 aplikacji na izolowane warstwy logiczne, oraz oprogramowanie do Ci\u0105g\u0142ej Integracji \u2013 umo\u017cliwiaj\u0105ce aktualizacj\u0119 wdro\u017conego kodu za pomoc\u0105 \u201eskrypt\u00f3w\u201d. <\/p>\n<p>Zatem orkiestracja pozwala na monitorowanie status\u00f3w serwer\u00f3w, wykonywanie \u201enak\u0142adania\u201d lub \u201ewycofywania\u201d aktualizacji \u015brodowiska serwera itd. Na pocz\u0105tku ten aspekt raczej nie b\u0119dzie Ci\u0119 dotyczy\u0107, poniewa\u017c aby co\u015b orkiestrzy\u0107, potrzebujesz kilku serwer\u00f3w (mo\u017cna mie\u0107 tylko jeden, ale po co?). Aby mie\u0107 kilka serwer\u00f3w, musisz mie\u0107 potrzeb\u0119 ich posiadania. W tym zakresie na uszach jest g\u0142\u00f3wnie Kubernetes, opracowany <i>Google<\/i>. <\/p>\n<p>Nast\u0119pny krok to wirtualizacja na poziomie systemu operacyjnego. Obecnie szerokie zastosowanie ma poj\u0119cie \u201edockerizacji\u201d, kt\u00f3re pochodzi od narz\u0119dzia <i>Docker<\/i>, zapewniaj\u0105c funkcjonalno\u015b\u0107 izolowanych od siebie kontener\u00f3w, kt\u00f3re dzia\u0142aj\u0105 w kontek\u015bcie jednego systemu operacyjnego. Co to oznacza: w ka\u017cdym z takich kontener\u00f3w mo\u017cna uruchomi\u0107 aplikacj\u0119 lub nawet zestaw aplikacji, kt\u00f3re b\u0119d\u0105 my\u015ble\u0107, \u017ce s\u0105 jedyne w ca\u0142ym systemie, nawet nie podejrzewaj\u0105c o istnieniu kogo\u015b jeszcze na danej maszynie. Ta funkcja jest bardzo przydatna zar\u00f3wno do uruchamiania tych samych aplikacji w r\u00f3\u017cnych wersjach, jak i po prostu konfliktuj\u0105cych aplikacji, a tak\u017ce do dzielenia kawa\u0142k\u00f3w aplikacji na warstwy. Ten odcisk warstw mo\u017cna p\u00f3\u017aniej zapisa\u0107 w obrazie, kt\u00f3ry mo\u017cna wykorzysta\u0107 na przyk\u0142ad do wdro\u017cenia aplikacji. Oznacza to, \u017ce instaluj\u0105c ten obraz i uruchamiaj\u0105c kontenery, kt\u00f3re on zawiera, otrzymujesz gotowe \u015brodowisko do uruchomienia Twojej aplikacji! Na pierwszych krokach mo\u017cesz wykorzysta\u0107 to narz\u0119dzie zar\u00f3wno w celach zapoznawczych, jak i do uzyskania prawdziwych korzy\u015bci, rozdzielaj\u0105c logik\u0119 aplikacji na r\u00f3\u017cne warstwy. Jednak warto zauwa\u017cy\u0107, \u017ce dokeryzacja nie jest potrzebna wszystkim i nie zawsze. Dokeryzacja jest uzasadniona w przypadkach, gdy aplikacja jest \u201efragmentaryczna\u201d, podzielona na ma\u0142e cz\u0119\u015bci, z kt\u00f3rych ka\u017cda odpowiada za swoje zadanie, tzw. \u201earchitektura mikroserwisowa\u201d. <\/p>\n<p>Ponadto, opr\u00f3cz zapewnienia \u015brodowiska, musimy r\u00f3wnie\u017c zapewni\u0107 w\u0142a\u015bciwe wdro\u017cenie aplikacji, kt\u00f3re obejmuje r\u00f3\u017cne transformacje kodu, instalacje zwi\u0105zanych z aplikacj\u0105 bibliotek i pakiet\u00f3w, uruchamianie test\u00f3w, powiadomienia o tych operacjach i tak dalej. Tutaj musimy zwr\u00f3ci\u0107 uwag\u0119 na takie poj\u0119cie jak \u201eCi\u0105g\u0142a Integracja\u201d (<i>CI \u2013 Continuous Integration<\/i>). G\u0142\u00f3wne narz\u0119dzia w tej dziedzinie w tej chwili to Jenkins (oprogramowanie do CI, napisane w Javie, mo\u017ce wydawa\u0107 si\u0119 do\u015b\u0107 trudne na pocz\u0105tku), <i>Travis CI<\/i> (napisany w Ruby, subiektywnie, nieco prostszy ni\u017c <i>Jenkins\u2019a<\/i>, jednak wci\u0105\u017c wymaga pewnej wiedzy w zakresie konfiguracji wdro\u017cenia), <i>Gitlab CI<\/i> (napisany w <i>Ruby i Go<\/i>). <\/p>\n<p>Zatem, rozmawiaj\u0105c o \u015brodowisku, w kt\u00f3rym b\u0119dzie dzia\u0142a\u0107 Twoja aplikacja, nadszed\u0142 czas, aby wreszcie zobaczy\u0107, jakie narz\u0119dzia oferuje nam nowoczesny \u015bwiat do tworzenia tych aplikacji. <\/p>\n<p>Zacznijmy od podstaw:<i> Backend<\/i> (backend) \u2013 cz\u0119\u015b\u0107 serwerowa. Wyb\u00f3r j\u0119zyka, zestawu podstawowych funkcji i predefiniowanej struktury (frameworka) jest tutaj w g\u0142\u00f3wnym stopniu zdeterminowany przez osobiste preferencje, niemniej jednak warto to wspomnie\u0107 do rozwa\u017cenia (opinia autora na temat j\u0119zyk\u00f3w jest dosy\u0107 subiektywna, cho\u0107 aspiruje do obiektywnego opisu): <\/p>\n<ul>\n<li>Python \u2013 przyjazny j\u0119zyk dla pocz\u0105tkuj\u0105cego u\u017cytkownika, toleruje pewne b\u0142\u0119dy, ale mo\u017ce by\u0107 r\u00f3wnie\u017c do\u015b\u0107 rygorystyczny wobec programisty, aby nie pope\u0142ni\u0142 powa\u017cnych b\u0142\u0119d\u00f3w. Ju\u017c dojrza\u0142y i przemy\u015blany j\u0119zyk programowania, pojawi\u0142 si\u0119 w 1991 roku. \n<\/li>\n<li>Go \u2013 j\u0119zyk od firmy Google, r\u00f3wnie\u017c do\u015b\u0107 przyjazny i wygodny, \u0142atwo go skompilowa\u0107 i uzyska\u0107 plik wykonywalny na dowolnej platformie. Mo\u017ce by\u0107 prosty i przyjemny, a tak\u017ce skomplikowany i powa\u017cny. Nowy i \u015bwie\u017cy, pojawi\u0142 si\u0119 stosunkowo niedawno, w 2009 roku. <\/li>\n<li>Rust \u2013 nieco starszy od swojego poprzednika, pojawi\u0142 si\u0119 w 2006 roku, nadal jest do\u015b\u0107 m\u0142ody w por\u00f3wnaniu do swoich krewnych. Skierowany do bardziej do\u015bwiadczonych programist\u00f3w, cho\u0107 wci\u0105\u017c stara si\u0119 rozwi\u0105zywa\u0107 wiele niskopoziomowych zada\u0144 za programist\u0119.<\/li>\n<li>Java \u2013 weteran programowania komercyjnego, pojawi\u0142 si\u0119 w 1995 roku, jeden z najcz\u0119\u015bciej u\u017cywanych j\u0119zyk\u00f3w do tworzenia aplikacji korporacyjnych obecnie. Z jego podstawowymi koncepcjami i skomplikowan\u0105 konfiguracj\u0105 \u015brodowiska wykonawczego mo\u017ce by\u0107 do\u015b\u0107 skomplikowany dla nowicjusza. <\/li>\n<li>ASP.net \u2013 platforma do tworzenia aplikacji wydana przez firm\u0119 Microsoft. Do pisania funkcjonalno\u015bci g\u0142\u00f3wnie u\u017cywa si\u0119 j\u0119zyka C# (czytanego jako C si Sharp), kt\u00f3ry pojawi\u0142 si\u0119 w 2000 roku. Pod wzgl\u0119dem skomplikowania por\u00f3wnywalny z poziomem mi\u0119dzy Jav\u0105 a Rustem. <\/li>\n<li>PHP \u2013 pocz\u0105tkowo u\u017cywany do przetwarzania HTML, obecnie mimo utrzymywania absolutnej przewagi na rynku j\u0119zyk\u00f3w, mo\u017cna dostrzec tendencj\u0119 spadkow\u0105 jego u\u017cycia. Cechuje si\u0119 niskim progiem wej\u015bcia, prostot\u0105 w pisaniu kodu, ale w przypadku tworzenia do\u015b\u0107 du\u017cych aplikacji, funkcjonalno\u015b\u0107 j\u0119zyka mo\u017ce okaza\u0107 si\u0119 niewystarczaj\u0105ca. <\/li>\n<\/ul>\n<p>\nI ostatnia cz\u0119\u015b\u0107 naszej aplikacji \u2013 najbardziej namacalna dla u\u017cytkownika \u2013 <i>Frontend<\/i> (frontend) \u2013 jest twarz\u0105 Twojej aplikacji, to z t\u0105 cz\u0119\u015bci\u0105 u\u017cytkownik wchodzi w bezpo\u015bredni\u0105 interakcj\u0119. <\/p>\n<p>Nie wnikaj\u0105c w szczeg\u00f3\u0142y, nowoczesny frontend oparty jest na trzech filarach, frameworkach (i nie tylko), do tworzenia interfejs\u00f3w u\u017cytkownika. W zwi\u0105zku z tym, trzy najbardziej popularne to: <\/p>\n<ul>\n<li>ReactJS \u2013 to nie framework, a biblioteka. W\u0142a\u015bciwie, od dumnego tytu\u0142u frameworka r\u00f3\u017cni si\u0119 jedynie brakiem pewnych funkcji \u201ez pude\u0142ka\u201d i konieczno\u015bci\u0105 ich r\u0119cznego zainstalowania. W zwi\u0105zku z tym, istnieje kilka wariant\u00f3w \u201eprzygotowania\u201d tej biblioteki, tworz\u0105cych swoiste frameworki. Dla nowicjusza mo\u017ce by\u0107 to trudne, z powodu niekt\u00f3rych podstawowych zasad i do\u015b\u0107 agresywnej konfiguracji \u015brodowiska budowy. Jednak\u017ce, aby szybko zacz\u0105\u0107, mo\u017cna skorzysta\u0107 z pakietu \u201ecreate-react-app\u201d.<\/li>\n<li>VueJS \u2013 framework do budowania interfejs\u00f3w u\u017cytkownika. Z tej trojki z pewno\u015bci\u0105 zas\u0142uguje na miano najbardziej przyjaznego dla u\u017cytkownika frameworka, poniewa\u017c pr\u00f3g wej\u015bcia w rozw\u00f3j w Vue jest ni\u017cszy ni\u017c u pozosta\u0142ych wymienionych koleg\u00f3w. Ponadto, w\u015br\u00f3d nich jest najm\u0142odszy. <\/li>\n<li>Angular \u2013 uznawany za najbardziej skomplikowany z wymienionych framework\u00f3w, jedyny, kt\u00f3ry wymaga obecno\u015bci <i>TypeScript<\/i> (rozszerzenie j\u0119zyka Javascript). Cz\u0119sto stosowany do budowy du\u017cych aplikacji korporacyjnych. <\/li>\n<\/ul>\n<p>\nPodsumowuj\u0105c, mo\u017cna stwierdzi\u0107, \u017ce obecnie wdro\u017cenie aplikacji diametralnie r\u00f3\u017cni si\u0119 od tego, jak ten proces przebiega\u0142 wcze\u015bniej. Niemniej jednak, nikt nie przeszkadza w realizacji \u201edeploy\u201d w tradycyjny spos\u00f3b. Ale czy zaoszcz\u0119dzone troch\u0119 czasu na pocz\u0105tku jest warte ogromnej ilo\u015bci pu\u0142apek, na kt\u00f3re mo\u017ce natkn\u0105\u0107 si\u0119 programista, kt\u00f3ry wybra\u0142 t\u0119 drog\u0119? Uwa\u017cam, \u017ce odpowied\u017a brzmi \u201enie\u201d. Po\u015bwi\u0119caj\u0105c nieco wi\u0119cej czasu na zapoznanie si\u0119 z tymi narz\u0119dziami (a wi\u0119cej nie jest potrzebne, poniewa\u017c musisz zrozumie\u0107, czy s\u0105 one potrzebne w Twoim aktualnym projekcie, czy nie), mo\u017cesz zredukowa\u0107 czas sp\u0119dzony na przyk\u0142ady b\u0142\u0119d\u00f3w \u015brodowiskowych, kt\u00f3re pojawiaj\u0105 si\u0119 tylko na serwerze produkcyjnym, nocne rozkminy nad tym, co doprowadzi\u0142o do awarii serwera oraz dlaczego si\u0119 nie uruchamia, i wiele innych rzeczy.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/446642\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c. \u0412\u0430\u0436\u043d\u044b\u043c \u0430\u0441\u043f\u0435\u043a\u0442\u043e\u043c \u044f\u0432\u043b\u044f\u0435\u0442\u0441\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u043e\u0432 \u043f\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044e \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u044f, \u043c\u043e\u043d\u0438\u0442\u043e\u0440\u0438\u043d\u0433\u0443, \u0430 \u0442\u0430\u043a\u0436\u0435 \u0443\u043f\u0440\u0430\u0432\u043b\u0435\u043d\u0438\u0435 \u0438 \u0430\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0441\u0440\u0435\u0434\u044b, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u0439 \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442. \u042d\u0440\u0430 \u0440\u0443\u0447\u043d\u043e\u0433\u043e \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u044f \u0443\u0445\u043e\u0434\u0438\u0442 \u0432 \u0437\u0430\u0431\u0432\u0435\u043d\u0438\u0435, \u0434\u0430\u0436\u0435 \u0434\u043b\u044f \u043d\u0435\u0431\u043e\u043b\u044c\u0448\u0438\u0445 \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432, \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u0438 \u043c\u043e\u0433\u0443\u0442 \u043f\u0440\u0438\u043d\u0435\u0441\u0442\u0438 \u043e\u0449\u0443\u0442\u0438\u043c\u0443\u044e \u043f\u043e\u043b\u044c\u0437\u0443. \u041f\u0440\u0438 \u0440\u0430\u0437\u0432\u0435\u0440\u0442\u044b\u0432\u0430\u043d\u0438\u0438 \u00ab\u0440\u0443\u043a\u0430\u043c\u0438\u00bb, \u0437\u0430\u0447\u0430\u0441\u0442\u0443\u044e \u043c\u044b \u043c\u043e\u0436\u0435\u043c [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-30874","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-10-31T18:37:54+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:37:54+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Lista kontrolna do tworzenia i publikacji aplikacji webowych | ProHoster","description":"Aby stworzy\u0107 swoje aplikacje internetowe w dzisiejszych czasach, nie wystarczy umie\u0107 je rozwija\u0107.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0435\u043a\u043b\u0438\u0441\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0438 \u043f\u0443\u0431\u043b\u0438\u043a\u0430\u0446\u0438\u0438 \u0432\u0435\u0431-\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439 | ProHoster","og:description":"\u0414\u043b\u044f \u0442\u043e\u0433\u043e, \u0447\u0442\u043e\u0431\u044b \u0441\u043e\u0437\u0434\u0430\u0442\u044c \u0441\u0432\u043e\u0435 \u0432\u0435\u0431 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u0432 \u043d\u0430\u0448\u0435 \u0432\u0440\u0435\u043c\u044f \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u043e \u0443\u043c\u0435\u0442\u044c \u0435\u0433\u043e \u0440\u0430\u0437\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u0442\u044c.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/cheklist-dlya-sozdaniya-i-publikatsii-veb-prilozhenij","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-10-31T18:37:54+00:00","article:modified_time":"2019-10-31T18:37:54+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"30874","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-02-09 20:21:48","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:27:38","updated":"2026-02-09 20:21:48","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30874","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=30874"}],"version-history":[{"count":2,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30874\/revisions"}],"predecessor-version":[{"id":159642,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/30874\/revisions\/159642"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=30874"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=30874"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=30874"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}