Checklista för att skapa och publicera webbapplikationer

För att skapa en egen webbapplikation i vår tid räcker det inte med att kunna utveckla den. En viktig aspekt är att sätta upp verktyg för applikationsdistribution, övervakning samt hantering och administrering av miljön där den verkar. När den manuella driftsättningens era försvinner i glömska, även för små projekt, kan automationsverktyg ge påtagliga fördelar. När vi distribuerar "för hand", kan vi ofta glömma att flytta något, ta hänsyn till den eller den nyansen, köra ett glömt test, den här listan kan fortsätta under ganska lång tid.

Den här artikeln kan hjälpa dem som bara lär sig grunderna i att skapa webbapplikationer och vill förstå lite om de grundläggande termerna och konventionerna.

Så, byggnadsapplikationer kan fortfarande delas in i två delar: allt som relaterar till applikationskoden och allt som relaterar till miljön där denna kod exekveras. Applikationskoden är i sin tur också uppdelad i serverkod (den som körs på servern, ofta: affärslogik, auktorisering, datalagring etc.), och klientkod (den som körs på användarens maskin: ofta gränssnittet och tillhörande logik med det).

Låt oss börja med onsdag.

Grunden för driften av någon kod, system eller programvara är operativsystemet, så nedan kommer vi att titta på de mest populära systemen på värdmarknaden och ge dem en kort beskrivning:

Windows Server - samma Windows, men i en servervariant. Vissa funktioner som är tillgängliga i klientversionen (vanliga) av Windows finns inte här, till exempel vissa tjänster för att samla in statistik och liknande programvara, men det finns en uppsättning verktyg för nätverksadministration, grundläggande programvara för att distribuera servrar (webb, ftp, ...). I allmänhet ser Windows Server ut som vanligt Windows, kvacksalvare som vanligt Windows, dock kostar det 2 gånger mer än sin vanliga motsvarighet. Men med tanke på att du med största sannolikhet kommer att distribuera programmet på en dedikerad/virtuell server, är den slutliga kostnaden för dig, även om den kan öka, inte kritisk. Eftersom Windows-plattformen har en överväldigande plats på marknaden för konsumentoperativsystem, kommer dess serverutgåva att vara den mest bekanta för de flesta användare.

Unix-liknande system. Traditionellt arbete i dessa system kräver inte närvaron av ett välbekant grafiskt gränssnitt, som erbjuder användaren endast en konsol som ett kontrollelement. För en oerfaren användare kan det vara svårt att arbeta i det här formatet, bara vad kostar det att lämna en textredigerare som är ganska populär i data vim, en fråga relaterad till detta har redan fått mer än 6 miljoner visningar på 1.8 år. Huvuddistributionerna (utgåvorna) av denna familj är: Debian - en populär distribution, paketversioner i den är huvudsakligen fokuserade på LTS (Långsiktig support – stöd under lång tid), vilket uttrycks i ganska hög tillförlitlighet och stabilitet hos systemet och paketen; ubuntu – innehåller distributioner av alla paket i deras senaste versioner, vilket kan påverka stabiliteten, men låter dig använda den funktionalitet som kommer med nya versioner; Red Hat Enterprise Linux – OS, placerad för kommersiellt bruk, betalas, men inkluderar stöd från mjukvaruleverantörer, vissa proprietära paket och drivrutinspaket; CentOS - öppen källkod en variant av Red Hat Enterprise Linux, kännetecknad av frånvaron av proprietära paket och support.

För dem som precis har börjat bemästra detta område skulle min rekommendation vara system Windows ServerEller ubuntu. Om vi ​​betraktar Windows, så är detta i första hand systemets förtrogenhet, ubuntu – mer tolerans mot uppdateringar, och i sin tur till exempel färre problem vid lansering av projekt om teknologier som kräver nya versioner.

Så, efter att ha bestämt oss för operativsystemet, låt oss gå vidare till en uppsättning verktyg som låter dig distribuera (installera), uppdatera och övervaka tillståndet för applikationen eller dess delar på servern.

Nästa viktiga beslut blir placeringen av din applikation och servern för den. För närvarande är de vanligaste tre sätten:

  • Att vara värd för (behålla) en server på egen hand är det mest budgetvänliga alternativet, men du måste beställa en statisk IP från din leverantör så att din resurs inte ändrar sin adress med tiden.
  • Hyr en dedikerad server (VDS) – och administrera den självständigt och skala laddningar
  • Betala (ofta ger de dig en chans att prova plattformens funktionalitet gratis) för ett abonnemang på något molnvärd, där betalningsmodellen för de resurser som används är ganska vanlig. De mest framstående representanterna för denna riktning: Amazon AWS (de ger ett gratis år att använda tjänsterna, men med en månatlig gräns), Google Cloud (de ger $300 till kontot, som kan spenderas under året på molnvärdtjänster) , Yandex.Cloud (de ger 4000 rubel . för 2 månader), Microsoft Azure (ger gratis tillgång till populära tjänster i ett år, + 12 500 rubel för alla tjänster i en månad). Således kan du prova någon av dessa leverantörer utan att spendera ett öre, men att få en ungefärlig åsikt om kvaliteten och nivån på den tillhandahållna tjänsten.

Beroende på den valda vägen är det enda som kommer att förändras i framtiden vem som är till stor del ansvarig för detta eller det administrativa området. Om du är värd för dig själv måste du förstå att alla avbrott i elektricitet, Internet, själva servern, programvaran som är installerad på den - allt detta ligger helt och hållet på dina axlar. Men för träning och testning är detta mer än tillräckligt.

Om du inte har en extra maskin som kan spela rollen som en server, kommer du att vilja använda det andra eller tredje sättet. Det andra fallet är identiskt med det första, med undantaget att du flyttar ansvaret för serverns tillgänglighet och dess makt till hostarens axlar. Administrationen av servern och programvaran är fortfarande under din kontroll.

Och slutligen, möjligheten att hyra kapaciteten hos molnleverantörer. Här kan du ställa in automatiserad kontroll av nästan vad som helst utan att gå in på för mycket tekniska detaljer. Dessutom kan du istället för en maskin ha flera parallellkörande instanser, som till exempel kan stå för olika delar av applikationen, samtidigt som det inte skiljer sig mycket i kostnad från att äga en dedikerad server. Dessutom finns det verktyg för orkestrering, containerisering, automatisk distribution, kontinuerlig integration och mycket mer! Vi ska titta på några av dessa saker nedan.

Generellt sett ser serverinfrastrukturen ut så här: vi har en så kallad "orkestrator" ("orkestrering" är processen att hantera flera serverinstanser), som hanterar miljöförändringar på en serverinstans, en virtualiseringsbehållare (valfritt, men ganska används ofta), som låter dig dela upp applikationen i isolerade logiska lager, och programvara för kontinuerlig integration – som tillåter uppdateringar av värdkod genom "skript".

Så, orkestrering låter dig se status för servrar, rulla ut eller återställa uppdateringar till servermiljön och så vidare. Till en början är det osannolikt att denna aspekt kommer att påverka dig, eftersom du behöver flera servrar (du kan ha en, men varför är det nödvändigt?), för att kunna orkestrera något, och för att ha flera servrar behöver du dem. Bland verktygen i denna riktning är det mest populära Kubernetes, utvecklat av Google.

Nästa steg är virtualisering på OS-nivå. Nuförtiden har begreppet "dockerisering" blivit utbrett, vilket kommer från verktyget Hamnarbetare, som tillhandahåller funktionaliteten hos behållare isolerade från varandra, men som lanseras i ett operativsystems sammanhang. Vad betyder detta: i var och en av dessa behållare kan du köra en applikation, eller till och med en uppsättning applikationer, som kommer att tro att de är de enda i hela operativsystemet, utan att ens misstänka att det finns någon annan på den här maskinen. Denna funktion är mycket användbar för att starta identiska applikationer av olika versioner, eller helt enkelt motstridiga applikationer, såväl som för att dela upp delar av en applikation i lager. Denna lageravgjutning kan senare skrivas in i en bild, som till exempel kan användas för att distribuera en applikation. Det vill säga, genom att installera den här avbildningen och distribuera behållarna den innehåller får du en färdig miljö för att köra din applikation! I de första stegen kan du använda det här verktyget både i informationssyfte och för att få mycket verkliga fördelar genom att dela upp applikationslogiken i olika lager. Men det är värt att säga här att inte alla behöver dockerisering, och inte alltid. Dockerisering är motiverad i de fall applikationen är ”fragmenterad”, uppdelad i små delar, var och en ansvarig för sin egen uppgift, den så kallade ”microservice-arkitekturen”.

Utöver att tillhandahålla miljön måste vi dessutom säkerställa en kompetent distribution av applikationen, som inkluderar alla typer av kodtransformationer, installation av applikationsrelaterade bibliotek och paket, körning av tester, aviseringar om dessa operationer och så vidare. Här måste vi uppmärksamma ett sådant koncept som "Kontinuerlig Integration" (CI – Kontinuerlig integration). De viktigaste verktygen inom detta område för tillfället är Jenkins (CI-programvara skriven i Java kan verka lite komplicerad i början), Travis CI (skrivet i Ruby, subjektivt, något enklare Jenkinsviss kunskap inom området för distributionskonfiguration krävs dock fortfarande), Gitlab CI (skrivet på Ruby och Go).

Så efter att ha pratat om miljön där din applikation kommer att fungera, är det dags att äntligen titta på vilka verktyg den moderna världen erbjuder oss för att skapa just dessa applikationer.

Låt oss börja med grunderna: backend (backend) – serverdel. Valet av språk, uppsättning grundläggande funktioner och fördefinierad struktur (ramverk) här bestäms huvudsakligen av personliga preferenser, men ändå är det värt att nämna för övervägande (författarens åsikt om språk är ganska subjektiv, men med ett påstående till en opartisk beskrivning):

  • Python är ett ganska vänligt språk för en oerfaren användare, det förlåter vissa misstag, men det kan också vara ganska strikt med utvecklaren så att han inte gör något dåligt. Redan ett ganska moget och meningsfullt språk, som dök upp 1991.
  • Go - ett språk från Google, är också ganska vänligt och bekvämt, det är ganska lätt att kompilera och få en körbar fil på vilken plattform som helst. Det kan vara enkelt och trevligt, eller det kan vara komplext och allvarligt. Fräsch och ung, dök upp relativt nyligen, 2009.
  • Rust är lite äldre än sin tidigare kollega, släpptes 2006, men är fortfarande ganska ung jämfört med sina kamrater. Riktar sig till mer erfarna utvecklare, även om den fortfarande försöker lösa många lågnivåuppgifter för programmeraren.
  • Java är en veteran inom kommersiell utveckling, introducerades 1995, och är ett av de mest använda språken inom företagsapplikationsutveckling idag. Med sina grundläggande koncept och tunga installationer kan körtiden bli ganska utmanande för en nybörjare.
  • ASP.net är en applikationsutvecklingsplattform släppt av Microsoft. För att skriva funktionalitet används främst C#-språket (uttalas C Sharp), som dök upp år 2000. Dess komplexitet är jämförbar med nivån mellan Java och Rust.
  • PHP, som ursprungligen användes för HTML-förbearbetning, finns för närvarande, även om det har den absoluta ledningen på språkmarknaden, en trend mot en minskning av användningen. Det har en låg ingångströskel och lätt att skriva kod, men samtidigt, när man utvecklar ganska stora applikationer, kanske språkets funktionalitet inte räcker till.

Tja, den sista delen av vår ansökan - den mest påtagliga för användaren - Frontend (frontend) – är ansiktet på din applikation; det är med denna del som användaren interagerar direkt.

Utan att gå in på detaljer står den moderna frontend på tre pelare, ramar (och inte så mycket), för att skapa användargränssnitt. Följaktligen är de tre mest populära:

  • ReactJS är inte ett ramverk, utan ett bibliotek. Faktum är att ramverket skiljer sig från sin stolta titel endast i avsaknad av vissa funktioner "out of the box" och behovet av att installera dem manuellt. Således finns det flera varianter av "förberedelserna" av detta bibliotek, som bildar unika ramar. Det kan vara lite svårt för en nybörjare, på grund av vissa grundläggande principer och ganska aggressiv uppställning av byggmiljön. Men för en snabb start kan du använda paketet "skapa-reagera-app".
  • VueJS är ett ramverk för att bygga användargränssnitt. Av denna treenighet tar den med rätta titeln som det mest användarvänliga ramverket; för utveckling i Vue är inträdesbarriären lägre än för de andra nämnda bröderna. Dessutom är han den yngsta bland dem.
  • Angular anses vara den mest komplexa av dessa ramverk, den enda som kräver MASKINSKRIVEN (tillägg för Javascript-språk). Används ofta för att bygga stora företagsapplikationer.

Genom att sammanfatta det som skrevs ovan kan vi dra slutsatsen att nu är implementeringen av en applikation radikalt annorlunda än hur denna process gick till tidigare. Men ingen hindrar dig från att göra "distributionen" på gammaldags sätt. Men är den lilla tid som sparas i början värt det enorma antalet misstag som en utvecklare som väljer den här vägen måste kliva på? Jag tror att svaret är nej. Genom att lägga lite mer tid på att bekanta dig med dessa verktyg (och du behöver inte mer än så, eftersom du måste förstå om du behöver dem i ditt nuvarande projekt eller inte), kan du spela ut det, avsevärt minska t.ex. , fall av spökfel beroende på miljön och som endast visas på produktionsservern, nattlig analys av vad som ledde till att serverkraschen och varför den inte startar, och mycket mer.

Källa: will.com

Lägg en kommentar