Tarkistuslista verkkosovellusten luomiseen ja julkaisemiseen

Oman verkkosovelluksen luomiseen meidän aikanamme ei riitä, että pystyt kehittämään sitä. Tärkeä näkökohta on työkalujen määrittäminen sovellusten käyttöönottoon, seurantaan sekä ympäristön, jossa se toimii, hallintaan ja hallintaan. Kun manuaalisen käyttöönoton aikakausi hämärtyy, jopa pienissä projekteissa, automaatiotyökalut voivat tuoda konkreettisia etuja. "Käsin" käyttöönotossa voimme usein unohtaa siirtää jotain, ottaa huomioon tämän tai toisen vivahteen, suorittaa unohdetun testin, tätä listaa voi jatkaa melko pitkään.

Tämä artikkeli saattaa auttaa niitä, jotka ovat vasta oppimassa verkkosovellusten luomisen perusteita ja haluavat ymmärtää hieman perustermejä ja käytäntöjä.

Joten sovellusten rakentaminen voidaan silti jakaa kahteen osaan: kaikki, mikä liittyy sovelluskoodiin, ja kaikki, mikä liittyy ympäristöön, jossa tämä koodi suoritetaan. Sovelluskoodi puolestaan ​​on jaettu myös palvelinkoodiin (se, joka toimii palvelimella, usein: liiketoimintalogiikka, valtuutus, tiedon tallennus jne.) ja asiakaskoodiin (se, joka toimii käyttäjän koneella: usein käyttöliittymä ja siihen liittyvä logiikka).

Aloitetaan keskiviikosta.

Minkä tahansa koodin, järjestelmän tai ohjelmiston toiminnan perusta on käyttöjärjestelmä, joten alla tarkastellaan isännöintimarkkinoiden suosituimpia järjestelmiä ja annamme niistä lyhyen kuvauksen:

Windows Server - sama Windows, mutta palvelinmuunnelmassa. Joitakin Windowsin asiakasversiossa (tavallisessa) versiossa saatavilla olevia toimintoja ei ole täällä, esimerkiksi jotkin tilastojen keruupalvelut ja vastaavat ohjelmistot, mutta siellä on joukko apuohjelmia verkonhallintaan, perusohjelmisto palvelimien käyttöönottoon (web, ftp, ...). Yleisesti ottaen Windows Server näyttää tavalliselta Windowsilta, on kuin tavallinen Windows, mutta se maksaa 2 kertaa enemmän kuin tavallinen vastine. Ottaen kuitenkin huomioon, että otat sovelluksen käyttöön todennäköisesti omistetulla/virtuaalisella palvelimella, sinulle aiheutuvat lopulliset kustannukset eivät ole kriittisiä, vaikka ne saattavat noustakin. Koska Windows-alustalla on ylivoimainen paikka kuluttajakäyttöjärjestelmien markkinoilla, sen palvelinversio on tutuin useimmille käyttäjille.

unix- samanlainen järjestelmä. Perinteinen työ näissä järjestelmissä ei vaadi tuttua graafista käyttöliittymää, joka tarjoaa käyttäjälle vain konsolin ohjauselementiksi. Kokemattomalle käyttäjälle työskentely tässä muodossa voi olla vaikeaa, minkä verran datassa melko suositusta tekstieditorista poistuminen maksaa puhti, tähän liittyvä kysymys on saanut jo yli 6 miljoonaa katselukertaa kuudessa vuodessa. Tämän perheen tärkeimmät jakelut (versiot) ovat: Debian - suosittu jakelu, sen pakettiversiot keskittyvät pääasiassa LTS:ään (Pitkäaikainen tuki – tuki pitkään), mikä ilmenee järjestelmän ja pakettien melko korkeana luotettavuudessa ja vakaudessa; Ubuntu – sisältää kaikkien pakettien uusimpien versioiden jakelut, jotka voivat vaikuttaa vakauteen, mutta mahdollistavat uusien versioiden mukana tulevien toimintojen käytön; Red Hat Enterprise Linux – käyttöjärjestelmä, joka on sijoitettu kaupalliseen käyttöön, on maksullinen, mutta se sisältää ohjelmistotoimittajien tuen, joitain patentoituja paketteja ja ohjainpaketteja; CentOS - avoin lähdekoodi Red Hat Enterprise Linuxin muunnelma, jolle on ominaista patentoitujen pakettien ja tuen puuttuminen.

Niille, jotka ovat vasta alkaneet hallita tätä aluetta, suosittelen järjestelmiä Windows ServerTai Ubuntu. Jos tarkastelemme Windowsia, tämä on ensisijaisesti järjestelmän tuntemus, Ubuntu – enemmän sietokykyä päivityksiä kohtaan ja puolestaan ​​esimerkiksi vähemmän ongelmia käynnistettäessä uusia versioita vaativia teknologioita.

Joten, kun olet päättänyt käyttöjärjestelmästä, siirrytään joukkoon työkaluja, joiden avulla voit ottaa käyttöön (asentaa), päivittää ja seurata sovelluksen tai sen osien tilaa palvelimella.

Seuraava tärkeä päätös on sovelluksesi ja sen palvelimen sijoittaminen. Tällä hetkellä yleisimmät ovat 3 tapaa:

  • Palvelimen ylläpito (pitäminen) yksin on edullisin vaihtoehto, mutta joudut tilaamaan staattisen IP-osoitteen palveluntarjoajaltasi, jotta resurssi ei muuta osoitettaan ajan myötä.
  • Vuokraa oma palvelin (VDS) – ja hallinnoi sitä itsenäisesti ja skaalata kuormia
  • Maksa (usein ne antavat sinulle mahdollisuuden kokeilla alustan toimintoja ilmaiseksi) jonkin pilvipalvelun tilauksesta, jossa käytettyjen resurssien maksumalli on melko yleinen. Tämän suunnan näkyvimmät edustajat: Amazon AWS (he antavat ilmaisen vuoden palvelujen käyttöä, mutta kuukausirajalla), Google Cloud (he antavat tilille 300 dollaria, jonka voi käyttää vuoden aikana pilvihosting-palveluihin) , Yandex.Cloud (ne antavat 4000 ruplaa . 2 kuukaudeksi), Microsoft Azure (antaa ilmaisen pääsyn suosittuihin palveluihin vuoden ajan, + 12 500 ruplaa kaikista palveluista yhden kuukauden ajan). Voit siis kokeilla mitä tahansa näistä palveluntarjoajista kuluttamatta penniäkään, mutta saat likimääräisen mielipiteen tarjotun palvelun laadusta ja tasosta.

Valitusta polusta riippuen ainoa asia, joka muuttuu tulevaisuudessa, on se, kuka on suurelta osin vastuussa tästä tai toisesta hallinnon alueesta. Jos isännöit itsesi, sinun on ymmärrettävä, että kaikki sähkökatkokset, Internet, itse palvelin, siihen asennetut ohjelmistot - kaikki tämä on täysin sinun harteillasi. Tämä on kuitenkin enemmän kuin tarpeeksi koulutusta ja testausta varten.

Jos sinulla ei ole ylimääräistä konetta, joka voisi toimia palvelimena, sinun kannattaa käyttää toista tai kolmatta tapaa. Toinen tapaus on identtinen ensimmäisen kanssa sillä poikkeuksella, että siirrät vastuun palvelimen saatavuudesta ja sen tehosta isännöitsijän harteille. Palvelimen ja ohjelmiston hallinta on edelleen sinun hallinnassasi.

Ja lopuksi mahdollisuus vuokrata pilvipalveluntarjoajien kapasiteettia. Täällä voit määrittää lähes kaiken automaattisen ohjauksen menemättä liian suuriin teknisiin yksityiskohtiin. Lisäksi yhden koneen sijasta sinulla voi olla useita rinnakkain käynnissä olevia instansseja, jotka voivat esimerkiksi olla vastuussa sovelluksen eri osista, mutta eivät eroa kustannuksiltaan paljoa erillisen palvelimen omistamisesta. Ja lisäksi on työkaluja orkestrointiin, konteihin, automaattiseen käyttöönottoon, jatkuvaan integrointiin ja paljon muuta! Tarkastellaan joitain näistä asioista alla.

Yleisesti ottaen palvelininfrastruktuuri näyttää tältä: meillä on ns "orkesteri" ("orkesterointi" on useiden palvelininstanssien hallintaprosessi), joka hallitsee ympäristömuutoksia palvelinesiintymässä, virtualisointisäiliö (valinnainen, mutta melko usein käytetty), jonka avulla voit jakaa sovelluksen erillisiin loogisiin kerroksiin, ja jatkuvan integroinnin ohjelmiston, joka mahdollistaa isännöidyn koodin päivitykset "skriptien" avulla.

Orkestroinnin avulla voit siis nähdä palvelimien tilan, ottaa käyttöön tai palauttaa päivityksiä palvelinympäristöön ja niin edelleen. Aluksi tämä näkökohta ei todennäköisesti vaikuta sinuun, koska tarvitset useita palvelimia (sinulla voi olla yksi, mutta miksi se on tarpeen?), ja tarvitset niitä, jotta sinulla olisi useita palvelimia. Tämän suunnan työkaluista suosituin on Kubernetes, jonka on kehittänyt Google.

Seuraava askel on virtualisointi käyttöjärjestelmätasolla. Nykyään käsitteestä "telakka" on tullut laajalle levinnyt, mikä tulee työkalusta Satamatyöläinen, joka tarjoaa toisistaan ​​eristettyjen, mutta yhden käyttöjärjestelmän yhteydessä käynnistettyjen säiliöiden toiminnallisuuden. Mitä tämä tarkoittaa: jokaisessa näistä säilöistä voit suorittaa sovelluksen tai jopa joukon sovelluksia, jotka uskovat olevansa ainoita koko käyttöjärjestelmässä, edes epäilemättä jonkun muun olemassaoloa tällä koneella. Tämä toiminto on erittäin hyödyllinen eri versioiden samanlaisten sovellusten käynnistämiseen tai yksinkertaisesti ristiriitaisten sovellusten käynnistämiseen sekä sovelluksen osien jakamiseen kerroksiin. Tämä kerrosvalu voidaan myöhemmin kirjoittaa kuvaksi, jota voidaan käyttää esimerkiksi sovelluksen käyttöönottoon. Toisin sanoen asentamalla tämän kuvan ja ottamalla käyttöön sen sisältämät säilöt saat valmiin ympäristön sovelluksesi suorittamiseen! Ensimmäisessä vaiheessa voit käyttää tätä työkalua sekä tiedotustarkoituksiin että saada todella todellisia etuja jakamalla sovelluslogiikka eri kerroksiin. Mutta tässä on syytä sanoa, että kaikki eivät tarvitse telakointia, eivätkä aina. Telakointi on perusteltua tapauksissa, joissa sovellus on "fragmentoitu", jaettu pieniin osiin, joista jokainen vastaa omasta tehtävästään, niin sanotusta "mikropalveluarkkitehtuurista".

Lisäksi ympäristön tarjoamisen lisäksi meidän on varmistettava sovelluksen asiantunteva käyttöönotto, joka sisältää kaikenlaiset koodimuunnokset, sovelluksiin liittyvien kirjastojen ja pakettien asennuksen, testien suorittamisen, ilmoitukset näistä toiminnoista ja niin edelleen. Tässä meidän on kiinnitettävä huomiota sellaiseen käsitteeseen kuin "jatkuva integraatio" (CI – Jatkuva integrointi). Tärkeimmät työkalut tällä alueella tällä hetkellä ovat Jenkins (Javalla kirjoitettu CI-ohjelmisto saattaa aluksi tuntua hieman monimutkaiselta), Travis CI (kirjoitettu rubiinilla, subjektiivinen, hieman yksinkertaisempi Jenkinskuitenkin tarvitaan jonkin verran tietoa käyttöönoton konfiguroinnista), Gitlab CI (kirjoitettu Ruby ja Go).

Joten kun on puhuttu ympäristöstä, jossa sovelluksesi toimii, on aika vihdoin tarkastella, mitä työkaluja nykymaailma tarjoaa meille juuri näiden sovellusten luomiseen.

Aloitetaan perusasioista: taustaosa (backend) – palvelinosa. Kielen valinta, perustoimintojen joukko ja ennalta määrätty rakenne (kehys) määräytyvät pääasiassa henkilökohtaisten mieltymysten perusteella, mutta se on kuitenkin huomioimisen arvoinen (kirjoittajan mielipide kielistä on melko subjektiivinen, vaikkakin väitteen kera). puolueettomaan kuvaukseen):

  • Python on melko ystävällinen kieli kokemattomalle käyttäjälle, se antaa anteeksi joitakin virheitä, mutta se voi myös olla melko tiukka kehittäjälle, jotta hän ei tee mitään pahaa. Jo melko kypsä ja merkityksellinen kieli, joka ilmestyi vuonna 1991.
  • Go - Googlen kieli, on myös melko ystävällinen ja kätevä, se on melko helppo koota ja saada suoritettava tiedosto millä tahansa alustalla. Se voi olla yksinkertaista ja miellyttävää tai se voi olla monimutkaista ja vakavaa. Tuore ja nuori, ilmestyi suhteellisen äskettäin, vuonna 2009.
  • Rust on hieman vanhempi kuin edellinen, vuonna 2006 julkaistu kollegansa, mutta on vielä melko nuori verrattuihinsa. Tarkoitettu kokeneemmille kehittäjille, vaikka se yrittää silti ratkaista monia matalan tason tehtäviä ohjelmoijalle.
  • Java on kaupallisen kehityksen veteraani, joka esiteltiin vuonna 1995, ja se on yksi yleisimmin käytetyistä kielistä yrityssovelluskehityksessä nykyään. Peruskonseptien ja raskaan asennuksen ansiosta ajonaika voi olla varsin haastavaa aloittelijalle.
  • ASP.net on Microsoftin julkaisema sovelluskehitysalusta. Toimivuuden kirjoittamiseen käytetään pääasiassa vuonna 2000 ilmestynyttä C#-kieltä (lausutaan C Sharp). Sen monimutkaisuus on verrattavissa Javan ja Rustin väliseen tasoon.
  • PHP:n, jota alun perin käytettiin HTML-esikäsittelyyn, tällä hetkellä, vaikka sillä on ehdoton johtoasema kielimarkkinoilla, sen käyttö on laskemassa. Sillä on matala sisääntulokynnys ja koodin kirjoittamisen helppous, mutta samaan aikaan kun kehitetään melko suuria sovelluksia, kielen toimivuus ei välttämättä riitä.

No, sovelluksemme viimeinen osa - käyttäjän kannalta konkreettisin - Frontend (frontend) – on sovelluksesi kasvot; tämän osan kanssa käyttäjä on suoraan vuorovaikutuksessa.

Yksityiskohtiin menemättä moderni käyttöliittymä seisoo käyttöliittymien luomisessa kolmella pilarilla, viitekehyksellä (eikä niin paljoa). Näin ollen kolme suosituinta ovat:

  • ReactJS ei ole kehys, vaan kirjasto. Itse asiassa kehys eroaa ylpeästä nimestään vain siinä, että joitain toimintoja ei ole "pakkauksesta" ja tarve asentaa ne manuaalisesti. Siten tämän kirjaston "valmistelusta" on useita muunnelmia, jotka muodostavat ainutlaatuiset puitteet. Aloittelijalle se voi olla hieman vaikeaa joidenkin perusperiaatteiden ja rakennusympäristön melko aggressiivisen asennuksen vuoksi. Voit kuitenkin nopeasti aloittaa käyttämällä "create-react-app" -pakettia.
  • VueJS on kehys käyttöliittymien rakentamiseen. Tästä kolminaisuudesta se saa oikeutetusti käyttäjäystävällisimmän kehyksen tittelin; Vuen kehitykselle pääsyn este on alhaisempi kuin muilla mainituilla veljillä. Lisäksi hän on nuorin heistä.
  • Angular pidetään monimutkaisimpana näistä kehyksistä, ainoana, joka vaatii konekirjoitusteksti (lisäosa Javascript-kielelle). Käytetään usein suurten yrityssovellusten rakentamiseen.

Yhteenvetona edellä kirjoitetusta voimme päätellä, että nyt sovelluksen käyttöönotto eroaa radikaalisti siitä, miten tämä prosessi eteni aiemmin. Kukaan ei kuitenkaan estä sinua suorittamasta "käyttöönottoa" vanhanaikaisella tavalla. Mutta onko alussa säästetty vähän aikaa sen valtavan virhemäärän arvoinen, johon tämän tien valitsevan kehittäjän on astuttava? Uskon, että vastaus on ei. Viemällä hieman enemmän aikaa näihin työkaluihin tutustumiseen (etkä tarvitse enempää, koska sinun on ymmärrettävä, tarvitsetko niitä nykyisessä projektissasi vai et), voit pelata sen läpi vähentäen merkittävästi esim. , haamuvirhetapaukset ympäristöstä riippuen ja jotka näkyvät vain tuotantopalvelimella, öinen analyysi siitä, mikä johti palvelimen kaatumiseen ja miksi se ei käynnisty, ja paljon muuta.

Lähde: will.com

Lisää kommentti