Veb proqramları yaratmaq və dərc etmək üçün yoxlama siyahısı

Bizim dövrümüzdə öz veb proqramınızı yaratmaq üçün onu inkişaf etdirə bilmək kifayət deyil. Əhəmiyyətli bir cəhət tətbiqin yerləşdirilməsi, monitorinqi, eləcə də onun fəaliyyət göstərdiyi mühitin idarə edilməsi və idarə edilməsi üçün alətlərin qurulmasıdır. Əllə tətbiqetmə dövrü unudulmağa doğru getdikcə, hətta kiçik layihələr üçün də avtomatlaşdırma alətləri nəzərəçarpacaq faydalar gətirə bilər. "Əl ilə" yerləşdirərkən, biz tez-tez nəyisə köçürməyi, bu və ya digər nüansı nəzərə almağı, unudulmuş bir test keçirməyi unuda bilərik, bu siyahı kifayət qədər uzun müddət davam edə bilər.

Bu məqalə veb proqramlar yaratmağın əsaslarını yenicə öyrənən və əsas şərtlər və konvensiyalar haqqında bir az başa düşmək istəyənlərə kömək edə bilər.

Beləliklə, proqramların qurulması hələ də 2 hissəyə bölünə bilər: tətbiq koduna aid olan hər şey və bu kodun icra olunduğu mühitə aid olan hər şey. Tətbiq kodu da öz növbəsində server koduna (serverdə işləyən, tez-tez: ​​biznes məntiqi, avtorizasiya, məlumatların saxlanması və s.) və müştəri koduna (istifadəçinin maşınında işləyən: tez-tez) bölünür. interfeys və onunla əlaqəli məntiq).

Çərşənbə ilə başlayaq.

İstənilən kodun, sistemin və ya proqram təminatının işləməsi üçün əsas əməliyyat sistemidir, ona görə də aşağıda biz hosting bazarında ən populyar sistemlərə baxacaq və onlara qısa təsvir verəcəyik:

Windows Server - eyni Windows, lakin server variasiyasında. Windows-un müştəri (adi) versiyasında mövcud olan bəzi funksionallıq burada mövcud deyil, məsələn, statistika toplamaq üçün bəzi xidmətlər və oxşar proqram təminatı, lakin şəbəkənin idarə edilməsi üçün bir sıra kommunal proqramlar, serverlərin yerləşdirilməsi üçün əsas proqram təminatı (web, ftp, ...). Ümumiyyətlə, Windows Server adi Windows-a bənzəyir, adi Windows-a bənzəyir, lakin adi həmkarından 2 dəfə bahadır. Bununla belə, tətbiqi çox güman ki, xüsusi/virtual serverdə yerləşdirəcəyinizi nəzərə alsaq, sizin üçün son xərc arta bilsə də, kritik deyil. Windows platforması istehlakçı ƏS bazarında böyük yer tutduğundan, onun server nəşri əksər istifadəçilər üçün ən tanış olacaq.

Unix- oxşar sistem. Bu sistemlərdə ənənəvi iş istifadəçiyə idarəetmə elementi kimi yalnız konsol təklif edən tanış qrafik interfeysin olmasını tələb etmir. Təcrübəsiz istifadəçi üçün bu formatda işləmək çətin ola bilər, sadəcə olaraq verilənlərdə kifayət qədər populyar olan mətn redaktorundan çıxmağın qiyməti nə qədərdir cəldlik, bununla bağlı suala artıq 6 il ərzində 1.8 milyondan çox baxış olub. Bu ailənin əsas paylamaları (nəşrləri) bunlardır: Debian - populyar paylama, onun paket versiyaları əsasən LTS (Uzunmüddətli dəstək – sistemin və paketlərin kifayət qədər yüksək etibarlılığı və sabitliyi ilə ifadə olunan uzun müddətə dəstək; Ubuntu – sabitliyə təsir edə bilən, lakin yeni versiyalarla gələn funksionallıqdan istifadə etməyə imkan verən ən son versiyalarında bütün paketlərin paylamalarını ehtiva edir; Red Hat Enterprise Linux – ƏS, kommersiya istifadəsi üçün yerləşdirilmiş, ödənişlidir, lakin proqram təminatçıları tərəfindən dəstək, bəzi mülkiyyət paketləri və sürücü paketləri daxildir; CentOS - açıq mənbə mülkiyyət paketlərinin və dəstəyin olmaması ilə xarakterizə olunan Red Hat Enterprise Linux variasiyası.

Bu sahəni yenicə mənimsəməyə başlayanlar üçün tövsiyəm sistemlər olardı Windows ServerVə ya Ubuntu. Windows-u düşünsək, bu, ilk növbədə sistemin tanışlığıdır, Ubuntu – yeniləmələrə daha çox dözümlülük və öz növbəsində, məsələn, yeni versiyalar tələb edən texnologiyalar üzrə layihələrin işə salınması zamanı daha az problemlər.

Beləliklə, OS haqqında qərar verərək, tətbiqin və ya onun hissələrinin serverdə yerləşdirilməsi (quraşdırılması), yeniləməsi və vəziyyətini izləmək imkanı verən alətlər dəstinə keçək.

Növbəti vacib qərar tətbiqinizin və onun üçün serverin yerləşdirilməsi olacaq. Hal-hazırda ən çox yayılmış 3 yoldur:

  • Bir serveri öz başınıza yerləşdirmək (saxlamaq) ən büdcəli seçimdir, lakin resursunuzun zamanla ünvanını dəyişməməsi üçün provayderinizdən statik IP sifariş etməli olacaqsınız.
  • Xüsusi Server (VDS) icarəyə götürün və müstəqil olaraq onu idarə edin və yükləri ölçün
  • İstifadə olunan resurslar üçün ödəniş modelinin olduqca yaygın olduğu bəzi bulud hostinqinə abunə üçün ödəyin (çox vaxt onlar sizə platformanın funksionallığını pulsuz sınaqdan keçirmək şansı verirlər). Bu istiqamətin ən görkəmli nümayəndələri: Amazon AWS (xidmətlərdən istifadə üçün pulsuz bir il verirlər, lakin aylıq limitlə), Google Cloud (hesab üçün 300 dollar verirlər, il ərzində bulud hostinq xidmətlərinə xərclənə bilər) , Yandex.Cloud (4000 ay ərzində 2 rubl verirlər), Microsoft Azure (bir il ərzində populyar xidmətlərə pulsuz giriş imkanı, bir ay ərzində hər hansı xidmət üçün + 12 rubl). Beləliklə, bir qəpik xərcləmədən, lakin göstərilən xidmətin keyfiyyəti və səviyyəsi haqqında təxmini rəy əldə edərək, bu provayderlərdən hər hansı birini sınaya bilərsiniz.

Seçilmiş yoldan asılı olaraq, gələcəkdə dəyişəcək yeganə şey bu və ya digər idarəetmə sahəsi üçün kimin məsuliyyət daşımasıdır. Əgər siz özünüzə ev sahibliyi edirsinizsə, o zaman başa düşməlisiniz ki, elektrik enerjisində, İnternetdə, serverin özündə, orada yerləşdirilən proqram təminatında hər hansı fasilələr - bütün bunlar tamamilə sizin çiyninizdədir. Bununla belə, təlim və sınaq üçün bu, artıq kifayətdir.

Əgər server rolunu oynaya biləcək əlavə maşınınız yoxdursa, ikinci və ya üçüncü yoldan istifadə etmək istəyəcəksiniz. İkinci hal birincisi ilə eynidir, istisna olmaqla, serverin mövcudluğu və onun gücünə görə məsuliyyəti hosterin çiyninə keçirsiniz. Serverin və proqram təminatının idarə edilməsi hələ də sizin nəzarətinizdədir.

Və nəhayət, bulud provayderlərinin tutumunu icarəyə götürmək imkanı. Burada çox texniki detallara varmadan demək olar ki, hər şeyə avtomatlaşdırılmış nəzarət qura bilərsiniz. Bundan əlavə, bir maşın əvəzinə bir neçə paralel işləyən nümunəyə sahib ola bilərsiniz, məsələn, proqramın müxtəlif hissələrinə cavabdeh ola bilər, eyni zamanda xüsusi serverə sahib olmaqdan çox fərqlənmir. Həm də orkestrləşdirmə, konteynerləşdirmə, avtomatik yerləşdirmə, davamlı inteqrasiya və daha çox şey üçün alətlər var! Bu şeylərdən bəzilərinə aşağıda baxacağıq.

Ümumiyyətlə, server infrastrukturu belə görünür: bizdə “orkestrator” (“orkestrasiya” bir neçə server instansiyasının idarə edilməsi prosesidir) adlanan bir server nümunəsində, virtualizasiya konteynerində (isteğe bağlı, lakin kifayət qədər) ətraf mühitdəki dəyişiklikləri idarə edir. tez-tez istifadə olunur), tətbiqi təcrid olunmuş məntiqi təbəqələrə bölməyə imkan verir və Davamlı İnteqrasiya proqramı - “skriptlər” vasitəsilə hosted kodu yeniləmələrinə imkan verir.

Beləliklə, orkestrləşdirmə serverlərin vəziyyətini görməyə, server mühitinə yeniləmələri yaymağa və ya geri qaytarmağa və s. imkan verir. Əvvəlcə bu aspektin sizə təsir etməsi ehtimalı azdır, çünki nəyisə təşkil etmək üçün sizə bir neçə server lazımdır (biriniz ola bilər, amma bu nə üçün lazımdır?) və bir neçə serverə sahib olmaq üçün onlara ehtiyacınız var. Bu istiqamətdə alətlər arasında ən populyarı Kubernetes tərəfindən hazırlanmışdır google.

Növbəti addım OS səviyyəsində virtuallaşdırmadır. Hal-hazırda, alətdən gələn "dokerləşdirmə" anlayışı geniş yayılmışdır yükvuran, bir-birindən təcrid olunmuş, lakin bir əməliyyat sistemi kontekstində işə salınan konteynerlərin funksionallığını təmin edir. Bu nə deməkdir: bu konteynerlərin hər birində siz bu maşında başqasının mövcudluğundan şübhələnmədən bütün OS-də yeganə olduqlarına inanacaq bir proqram və ya hətta bir sıra proqramlar işlədə bilərsiniz. Bu funksiya müxtəlif versiyaların eyni proqramlarını və ya sadəcə bir-birinə zidd olan tətbiqləri işə salmaq, həmçinin proqram hissələrini təbəqələrə bölmək üçün çox faydalıdır. Bu qat cast daha sonra, məsələn, tətbiqi yerləşdirmək üçün istifadə edilə bilən bir şəkilə yazıla bilər. Yəni, bu şəkli quraşdıraraq və içindəki konteynerləri yerləşdirərək, tətbiqinizi işə salmaq üçün hazır mühit əldə edirsiniz! İlk addımlarda siz bu alətdən həm məlumat məqsədləri üçün, həm də tətbiq məntiqini müxtəlif təbəqələrə bölməklə çox real fayda əldə etmək üçün istifadə edə bilərsiniz. Ancaq burada deməyə dəyər ki, hər kəsin dokerləşdirməyə ehtiyacı yoxdur və həmişə deyil. Dokerləşdirmə tətbiqin "parçalanmış", kiçik hissələrə bölündüyü, hər biri "mikroservis arxitekturası" adlanan öz vəzifəsinə cavabdeh olduğu hallarda əsaslandırılır.

Bundan əlavə, ətraf mühiti təmin etməklə yanaşı, hər cür kod çevrilmələrini, tətbiqlərlə əlaqəli kitabxanaların və paketlərin quraşdırılmasını, sınaqların aparılmasını, bu əməliyyatlar haqqında bildirişləri və s. daxil olan tətbiqin səlahiyyətli yerləşdirilməsini təmin etməliyik. Burada “Davamlı İnteqrasiya” kimi bir anlayışa diqqət yetirməliyik (CI – Davamlı İnteqrasiya). Hazırda bu sahədə əsas vasitələr Jenkins-dir (Java-da yazılmış CI proqramı başlanğıcda bir az mürəkkəb görünə bilər), Travis C.I. (Ruby dilində yazılmış, subyektiv, bir qədər sadə JenkinsBununla belə, yerləşdirmə konfiqurasiyası sahəsində bəzi biliklər hələ də tələb olunur), Gitlab CI (yazılmışdır Ruby və Go).

Beləliklə, tətbiqinizin işləyəcəyi mühitdən danışdıqdan sonra, nəhayət, müasir dünyanın bu proqramları yaratmaq üçün bizə hansı alətlər təklif etdiyinə baxmaq vaxtı gəldi.

Əsaslardan başlayaq: Arxa (backend) – server hissəsi. Burada dil seçimi, əsas funksiyalar dəsti və əvvəlcədən müəyyən edilmiş struktur (çərçivə) əsasən şəxsi üstünlüklərlə müəyyən edilir, lakin buna baxmayaraq, nəzərdən keçirmək üçün qeyd etmək lazımdır (müəllifin dillər haqqında fikri iddia ilə olsa da, olduqca subyektivdir). qərəzsiz təsvirə):

  • Python təcrübəsiz bir istifadəçi üçün kifayət qədər dostluq dilidir, bəzi səhvləri bağışlayır, lakin o, pis bir şey etməməsi üçün tərtibatçı ilə də kifayət qədər sərt ola bilər. Artıq 1991-ci ildə ortaya çıxan kifayət qədər yetkin və mənalı bir dildir.
  • Go - Google-dan bir dil, həm də olduqca rahat və rahatdır, istənilən platformada icra olunan faylı tərtib etmək və əldə etmək olduqca asandır. Sadə və xoş ola bilər, ya da mürəkkəb və ciddi ola bilər. Təzə və gənc, nisbətən yaxınlarda, 2009-cu ildə ortaya çıxdı.
  • Rust 2006-cı ildə buraxılan əvvəlki həmkarından bir qədər yaşlıdır, lakin yaşıdları ilə müqayisədə hələ də kifayət qədər gəncdir. Daha təcrübəli tərtibatçılara yönəldilmişdir, baxmayaraq ki, hələ də proqramçı üçün bir çox aşağı səviyyəli vəzifələri həll etməyə çalışır.
  • Java 1995-ci ildə təqdim edilmiş kommersiya inkişafının veteranıdır və bu gün müəssisə proqramlarının hazırlanmasında ən çox istifadə olunan dillərdən biridir. Əsas anlayışları və ağır quraşdırma ilə işləmə müddəti bir başlanğıc üçün olduqca çətin ola bilər.
  • ASP.net Microsoft tərəfindən buraxılmış proqram inkişaf platformasıdır. Funksionallığı yazmaq üçün əsasən 2000-ci ildə ortaya çıxan C# dilindən (C Sharp tələffüz olunur) istifadə olunur. Onun mürəkkəbliyi Java və Rust arasındakı səviyyə ilə müqayisə edilə bilər.
  • PHP, ilkin olaraq HTML ön işləməsi üçün istifadə olunur, hazırda dil bazarında mütləq liderliyə malik olsa da, istifadənin azalması tendensiyası müşahidə olunur. Aşağı giriş həddi və kodu yazmaq asanlığı var, lakin eyni zamanda kifayət qədər böyük proqramlar hazırlayarkən dilin funksionallığı kifayət etməyə bilər.

Yaxşı, tətbiqimizin son hissəsi - istifadəçi üçün ən nəzərəçarpacaq hissəsi - Ön (frontend) – tətbiqinizin üzüdür; istifadəçinin birbaşa qarşılıqlı əlaqədə olduğu bu hissə ilə.

Təfərrüatlara varmadan, müasir frontend istifadəçi interfeysləri yaratmaq üçün üç sütun, çərçivələr (və o qədər də çox deyil) üzərində dayanır. Müvafiq olaraq, üç ən populyardır:

  • ReactJS çərçivə deyil, kitabxanadır. Əslində, çərçivə qürurlu adından yalnız "qutudan kənar" bəzi funksiyaların olmaması və onları əl ilə quraşdırmaq ehtiyacı ilə fərqlənir. Beləliklə, bu kitabxananın "hazırlanmasının" bir neçə variantı var, unikal çərçivələr təşkil edir. Bəzi əsas prinsiplər və tikinti mühitinin kifayət qədər aqressiv qurulması səbəbindən yeni başlayanlar üçün bir az çətin ola bilər. Bununla belə, sürətli bir başlanğıc üçün "reaksiya yarat" paketindən istifadə edə bilərsiniz.
  • VueJS istifadəçi interfeyslərinin qurulması üçün çərçivədir. Bu üçlükdən o, haqlı olaraq ən istifadəçi dostu çərçivə adını alır; Vue-da inkişaf üçün giriş maneəsi digər adı çəkilən qardaşlardan daha aşağıdır. Üstəlik, o, onların arasında ən gəncidir.
  • Angular bu çərçivələrin ən mürəkkəbi hesab olunur, yeganə tələb olunur TypeScript (Javascript dili üçün əlavə). Çox vaxt böyük müəssisə proqramları yaratmaq üçün istifadə olunur.

Yuxarıda yazılanları ümumiləşdirərək belə nəticəyə gələ bilərik ki, indi bir tətbiqin yerləşdirilməsi bu prosesin əvvəllər necə getdiyindən köklü şəkildə fərqlənir. Bununla belə, heç kim sizə köhnə üsulla “yerləşdirməni” dayandırmır. Bəs başlanğıcda qənaət edilən az vaxt bu yolu seçən bir tərtibatçının addım atmalı olacağı çoxlu sayda səhvlərə dəyərmi? Cavabın yox olduğuna inanıram. Bu alətlərlə tanış olmaq üçün bir az daha çox vaxt sərf etməklə (və bundan artıq ehtiyacınız yoxdur, çünki onlara cari layihənizdə ehtiyacınız olub-olmadığını başa düşməlisiniz), məsələn, əhəmiyyətli dərəcədə azalda bilərsiniz. , mühitdən asılı olaraq yalnız istehsal serverində görünən xəyal xətaları, serverin qəzaya uğramasına nəyin səbəb olduğunu və niyə başlamamasının gecə təhlili və s.

Mənbə: www.habr.com

Добавить комментарий