Lista de verificare pentru crearea și publicarea aplicațiilor web

Pentru a-ți crea propria aplicație web în epoca noastră, nu este suficient să o poți dezvolta. Un aspect important este configurarea instrumentelor pentru implementarea, monitorizarea aplicației, precum și gestionarea și administrarea mediului în care operează. Pe măsură ce epoca implementării manuale trece în uitare, chiar și pentru proiectele mici, instrumentele de automatizare pot aduce beneficii tangibile. Când desfășurăm „de mână”, de multe ori putem uita să mutăm ceva, să luăm în considerare această sau acea nuanță, să rulăm un test uitat, această listă poate fi continuată destul de mult timp.

Acest articol îi poate ajuta pe cei care tocmai învață elementele de bază ale creării de aplicații web și doresc să înțeleagă puțin despre termenii și convențiile de bază.

Deci, construirea aplicațiilor poate fi încă împărțită în 2 părți: tot ceea ce se referă la codul aplicației și tot ceea ce se referă la mediul în care este executat acest cod. Codul aplicației, la rândul său, este împărțit și în cod de server (cel care rulează pe server, adesea: logica de afaceri, autorizare, stocarea datelor etc.), și cod de client (cel care rulează pe mașina utilizatorului: adesea interfața și logica aferentă acesteia).

Să începem cu miercuri.

Baza pentru funcționarea oricărui cod, sistem sau software este sistemul de operare, așa că mai jos ne vom uita la cele mai populare sisteme de pe piața de găzduire și le vom oferi o scurtă descriere:

Windows Server - același Windows, dar într-o variantă de server. Unele funcționalități disponibile în versiunea client (obișnuită) de Windows nu sunt prezente aici, de exemplu, unele servicii pentru colectarea de statistici și software similar, dar există un set de utilități pentru administrarea rețelei, software de bază pentru implementarea serverelor (web, ftp, ...). În general, Windows Server arată ca Windows obișnuit, șarlatan ca Windows obișnuit, cu toate acestea, costă de 2 ori mai mult decât omologul său obișnuit. Totuși, având în vedere că cel mai probabil vei implementa aplicația pe un server dedicat/virtual, costul final pentru tine, deși poate crește, nu este critic. Întrucât platforma Windows ocupă un loc copleșitor pe piața sistemelor de operare pentru consumatori, ediția sa de server va fi cea mai familiară pentru majoritatea utilizatorilor.

Unix-sistem similar. Munca tradițională în aceste sisteme nu necesită prezența unei interfețe grafice familiare, oferind utilizatorului doar o consolă ca element de control. Pentru un utilizator neexperimentat, lucrul în acest format poate fi dificil, exact care este costul ieșirii dintr-un editor de text care este destul de popular în date sevă, o întrebare legată de asta a primit deja peste 6 milioane de vizualizări în 1.8 ani. Principalele distribuții (ediții) ale acestei familii sunt: ​​Debian - o distribuție populară, versiunile de pachete din ea sunt concentrate în principal pe LTS (Suport pe termen lung – suport pentru o lungă perioadă de timp), care se exprimă în fiabilitatea și stabilitatea destul de ridicată a sistemului și a pachetelor; Ubuntu – conține distribuții ale tuturor pachetelor în cele mai recente versiuni, ceea ce poate afecta stabilitatea, dar vă permite să utilizați funcționalitatea care vine cu noile versiuni; Red Hat Enterprise Linux – OS, poziționat pentru uz comercial, este plătit, cu toate acestea, include suport de la furnizorii de software, unele pachete proprietare și pachete de drivere; CentOS - sursă deschisă o variantă a Red Hat Enterprise Linux, caracterizată prin absența pachetelor proprietare și a suportului.

Pentru cei care abia încep să stăpânească acest domeniu, recomandarea mea ar fi sistemele Windows ServerSau Ubuntu. Dacă luăm în considerare Windows, atunci aceasta este în primul rând familiaritatea sistemului, Ubuntu – mai multă toleranță la actualizări și, la rândul lor, de exemplu, mai puține probleme la lansarea proiectelor pe tehnologii care necesită versiuni noi.

Deci, după ce ne-am hotărât asupra sistemului de operare, să trecem la un set de instrumente care vă permit să implementați (instalați), actualizați și monitorizați starea aplicației sau a părților sale pe server.

Următoarea decizie importantă va fi plasarea aplicației dvs. și a serverului pentru aceasta. În prezent, cele mai comune sunt 3 moduri:

  • Găzduirea (păstrarea) unui server pe cont propriu este cea mai economică opțiune, dar va trebui să comandați un IP static de la furnizorul dvs., astfel încât resursa dvs. să nu-și schimbe adresa în timp.
  • Închiriază un server dedicat (VDS) – și administrează-l independent și scala încărcările
  • Plătește (de multe ori îți oferă șansa de a încerca gratuit funcționalitatea platformei) pentru un abonament la o găzduire în cloud, unde modelul de plată pentru resursele folosite este destul de comun. Cei mai marcanți reprezentanți ai acestei direcții: Amazon AWS (aceștia oferă un an gratuit de utilizare a serviciilor, dar cu o limită lunară), Google Cloud (dau 300 de dolari contului, care pot fi cheltuiți pe parcursul anului pe servicii de găzduire în cloud) , Yandex.Cloud (dau 4000 de ruble . timp de 2 luni), Microsoft Azure (oferă acces gratuit la serviciile populare timp de un an, + 12 de ruble pentru orice serviciu timp de o lună). Astfel, puteți încerca oricare dintre acești furnizori fără a cheltui un ban, dar obțineți o opinie aproximativă despre calitatea și nivelul serviciului oferit.

În funcție de calea aleasă, singurul lucru care se va schimba în viitor este cine este în mare măsură responsabil pentru cutare sau cutare domeniu de administrație. Dacă vă găzduiți, atunci trebuie să înțelegeți că orice întrerupere a energiei electrice, a internetului, a serverului în sine, a software-ului instalat pe acesta - toate acestea se află în întregime pe umerii dumneavoastră. Cu toate acestea, pentru antrenament și testare, acest lucru este mai mult decât suficient.

Dacă nu aveți o mașină suplimentară care să poată juca rolul unui server, atunci veți dori să utilizați a doua sau a treia cale. Al doilea caz este identic cu primul, cu excepția faptului că transferați responsabilitatea pentru disponibilitatea serverului și puterea acestuia pe umerii hosterului. Administrarea serverului și a software-ului este încă sub controlul dumneavoastră.

Și în sfârșit, opțiunea de închiriere a capacității furnizorilor de cloud. Aici puteți configura controlul automat al aproape orice, fără a intra în prea multe detalii tehnice. În plus, în loc de o singură mașină, puteți avea mai multe instanțe care rulează în paralel, care pot fi, de exemplu, responsabile pentru diferite părți ale aplicației, fără a diferi în același timp mult ca cost de deținerea unui server dedicat. Și, de asemenea, există instrumente pentru orchestrare, containerizare, implementare automată, integrare continuă și multe altele! Ne vom uita la unele dintre aceste lucruri mai jos.

În general, infrastructura serverului arată astfel: avem un așa-numit „orchestrator” („orchestrarea” este procesul de gestionare a mai multor instanțe de server), care gestionează schimbările de mediu pe o instanță de server, un container de virtualizare (opțional, dar destul de folosit adesea), care vă permite să împărțiți aplicația în straturi logice izolate și software de integrare continuă - permițând actualizări ale codului găzduit prin „scripturi”.

Deci, orchestrarea vă permite să vedeți starea serverelor, să lansați sau să anulați actualizările în mediul serverului și așa mai departe. La început, este puțin probabil să te afecteze acest aspect, deoarece pentru a orchestra ceva ai nevoie de mai multe servere (poți avea unul, dar de ce este necesar?), iar pentru a avea mai multe servere ai nevoie de ele. Dintre instrumentele în această direcție, cel mai popular este Kubernetes, dezvoltat de Google.

Următorul pas este virtualizarea la nivelul sistemului de operare. În zilele noastre, conceptul de „dockerizare” a devenit larg răspândit, care provine din instrument Docher, care oferă funcționalitatea containerelor izolate unele de altele, dar lansate în contextul unui sistem de operare. Ce înseamnă asta: în fiecare dintre aceste containere poți rula o aplicație, sau chiar un set de aplicații, care vor crede că sunt singurele din întregul OS, fără să bănuiești măcar existența altcuiva pe această mașină. Această funcție este foarte utilă pentru lansarea de aplicații identice de versiuni diferite, sau pur și simplu aplicații conflictuale, precum și pentru împărțirea părților unei aplicații în straturi. Acest strat turnat poate fi scris ulterior într-o imagine, care poate fi folosită, de exemplu, pentru a implementa o aplicație. Adică, instalând această imagine și implementând containerele pe care le conține, obțineți un mediu gata făcut pentru rularea aplicației dvs.! În primii pași, puteți utiliza acest instrument atât în ​​scop informațional, cât și pentru a obține beneficii foarte reale prin împărțirea logicii aplicației în diferite straturi. Dar merită să spunem aici că nu toată lumea are nevoie de dockerizare și nu întotdeauna. Dockerizarea este justificată în cazurile în care aplicația este „fragmentată”, împărțită în părți mici, fiecare responsabilă de propria sarcină, așa-numita „arhitectură de microservicii”.

În plus, pe lângă furnizarea mediului, trebuie să asigurăm o implementare competentă a aplicației, care include tot felul de transformări de cod, instalarea de biblioteci și pachete legate de aplicație, rularea testelor, notificări despre aceste operațiuni și așa mai departe. Aici trebuie să acordăm atenție unui astfel de concept precum „integrarea continuă” (CI – Integrare continuă). Principalele instrumente în acest domeniu în acest moment sunt Jenkins (software-ul CI scris în Java poate părea puțin complicat la început), Travis C.I. (scris în Ruby, subiectiv, ceva mai simplu Jenkins, cu toate acestea, unele cunoștințe în domeniul configurației de implementare sunt încă necesare), Gitlab CI (scris pe Ruby și Go).

Deci, după ce am vorbit despre mediul în care va funcționa aplicația dvs., este timpul să ne uităm în sfârșit la ce instrumente ne oferă lumea modernă pentru a crea chiar aceste aplicații.

Să începem cu elementele de bază: Backend (backend) – partea de server. Alegerea limbajului, setul de funcții de bază și structura predefinită (cadru) aici este determinată în principal de preferințele personale, dar cu toate acestea, merită menționată pentru a fi luată în considerare (opinia autorului despre limbi este destul de subiectivă, deși cu o afirmație la o descriere imparțială):

  • Python este un limbaj destul de prietenos pentru un utilizator neexperimentat, iartă unele greșeli, dar poate fi și destul de strict cu dezvoltatorul pentru ca acesta să nu facă nimic rău. Deja un limbaj destul de matur și semnificativ, care a apărut în 1991.
  • Go, un limbaj de la Google, este, de asemenea, destul de prietenos și convenabil, este destul de ușor să compilați și să obțineți un fișier executabil pe orice platformă. Poate fi simplu și plăcut, sau poate fi complex și serios. Proaspăt și tânăr, a apărut relativ recent, în 2009.
  • Rust este puțin mai în vârstă decât colegul său precedent, lansat în 2006, dar este încă destul de tânăr în comparație cu colegii săi. Destinat dezvoltatorilor mai experimentați, deși încă încearcă să rezolve multe sarcini de nivel scăzut pentru programator.
  • Java este un veteran al dezvoltării comerciale, introdus în 1995 și este unul dintre cele mai frecvent utilizate limbaje în dezvoltarea de aplicații pentru întreprinderi astăzi. Cu conceptele sale de bază și configurarea grea, timpul de rulare poate deveni destul de provocator pentru un începător.
  • ASP.net este o platformă de dezvoltare de aplicații lansată de Microsoft. Pentru a scrie funcționalitatea, se folosește în principal limbajul C# (pronunțat C Sharp), care a apărut în 2000. Complexitatea sa este comparabilă cu nivelul dintre Java și Rust.
  • PHP, folosit inițial pentru preprocesarea HTML, în prezent, deși deține liderul absolut pe piața limbilor, există o tendință de scădere a utilizării. Are un prag de intrare scăzut și ușurință în scrierea codului, dar, în același timp, atunci când se dezvoltă aplicații destul de mari, funcționalitatea limbajului poate să nu fie suficientă.

Ei bine, partea finală a aplicației noastre - cea mai tangibilă pentru utilizator - Frontend (frontend) – este fața aplicației dvs.; cu această parte utilizatorul interacționează direct.

Fără a intra în detalii, frontend-ul modern se bazează pe trei piloni, cadre (și nu atât), pentru crearea de interfețe cu utilizatorul. Prin urmare, cele mai populare trei sunt:

  • ReactJS nu este un cadru, ci o bibliotecă. De fapt, cadrul diferă de titlul său mândru doar prin absența unor funcții „din cutie” și necesitatea instalării lor manual. Astfel, există mai multe variante ale „pregătirii” acestei biblioteci, formând cadre unice. Poate fi puțin dificil pentru un începător, din cauza unor principii de bază și a configurației destul de agresive a mediului de construcție. Cu toate acestea, pentru o pornire rapidă, puteți utiliza pachetul „create-react-app”.
  • VueJS este un cadru pentru construirea de interfețe cu utilizatorul. Din această trinitate, ia pe bună dreptate titlul celui mai ușor de utilizat cadru; pentru dezvoltarea în Vue, bariera de intrare este mai mică decât cea a celorlalți frați menționați. Mai mult, el este cel mai tânăr dintre ei.
  • Angular este considerat cel mai complex dintre aceste cadre, singurul care necesită manuscris dactilografiat (supliment pentru limbajul Javascript). Adesea folosit pentru a construi aplicații pentru întreprinderi mari.

Rezumând ceea ce a fost scris mai sus, putem concluziona că acum implementarea unei aplicații este radical diferită de modul în care a procedat înainte acest proces. Cu toate acestea, nimeni nu vă împiedică să faceți „desfășurarea” în mod vechi. Dar puținul timp economisit la început merită numărul imens de greșeli pe care va trebui să calce un dezvoltator care alege această cale? Cred că răspunsul este nu. Petrecând puțin mai mult timp familiarizându-vă cu aceste instrumente (și nu aveți nevoie de mai mult decât atât, pentru că trebuie să înțelegeți dacă aveți nevoie de ele în proiectul dvs. actual sau nu), puteți juca, reducând semnificativ, de exemplu , cazuri de erori fantomă în funcție de mediu și care apar doar pe serverul de producție, analize nocturne a ceea ce a dus la blocarea serverului și de ce nu pornește și multe altele.

Sursa: www.habr.com

Adauga un comentariu