Daptar pariksa pikeun nyieun sareng nyebarkeun aplikasi wéb

Dina raraga nyieun aplikasi wéb anjeun sorangan dina jaman urang, teu cukup pikeun bisa ngamekarkeun eta. Aspék penting nyaéta nyetél alat pikeun panyebaran aplikasi, ngawaskeun, ogé ngatur sareng ngatur lingkungan dimana éta beroperasi. Salaku jaman deployment manual fades kana oblivion, sanajan keur proyék leutik, parabot automation bisa mawa kauntungan nyata. Nalika nyebarkeun "ku leungeun", urang mindeng bisa poho pikeun mindahkeun hiji hal, tumut kana akun ieu atawa nuansa éta, ngajalankeun test poho, daptar ieu bisa dituluykeun pikeun lila.

Tulisan ieu tiasa ngabantosan jalma anu nembé diajar dasar-dasar nyiptakeun aplikasi wéb sareng hoyong ngartos sakedik ngeunaan istilah sareng konvénsi dasar.

Ku kituna, wangunan aplikasi masih bisa dibagi jadi 2 bagian: sagalana nu patali jeung kode aplikasi, sarta sagalana nu relates to lingkungan dimana kode ieu dieksekusi. Kode aplikasi, kahareupna ogé dibagi kana kode server (anu dijalankeun dina server, mindeng: logika bisnis, otorisasina, neundeun data, jsb), sarta kode klien (hiji nu dijalankeun dina mesin pamaké: mindeng. panganteur, jeung logika patali jeung eta).

Hayu urang mimitian ku Rebo.

Dasar pikeun operasi kode, sistem, atanapi parangkat lunak naon waé nyaéta Sistem Operasi, janten di handap ieu urang bakal ningali sistem anu pang populerna di pasar hosting sareng masihan aranjeunna pedaran ringkes:

server Windows - Windows sarua, tapi dina variasi server. Sababaraha pungsionalitas sadia dina klien (biasa) versi Windows teu hadir di dieu, contona, sababaraha layanan pikeun ngumpulkeun statistik jeung software sarupa, tapi aya susunan Utiliti pikeun administrasi jaringan, software dasar pikeun deploying server (web, ftp, ...). Sacara umum, Windows Server Sigana mah Windows biasa, quacks kawas Windows biasa, kumaha oge, hargana 2 kali leuwih ti tara biasa na. Sanajan kitu, nunjukkeun yen Anjeun paling dipikaresep bakal nyebarkeun aplikasi dina dedicated / server virtual, biaya final pikeun anjeun, sanajan bisa ningkat, teu kritis. Kusabab platform Windows nempatan tempat anu luar biasa di pasar OS konsumen, édisi server na bakal paling akrab pikeun kalolobaan pangguna.

Unix-sistem sarupa. Karya tradisional dina sistem ieu teu merlukeun ayana panganteur grafis akrab, nawarkeun pamaké ngan konsol salaku unsur kontrol. Pikeun pangguna anu teu ngalaman, damel dina format ieu tiasa sesah, ngan sabaraha biaya kaluar tina pangropéa téksu anu cukup populer di data. Vim, patarosan anu aya hubunganana sareng ieu parantos nampi langkung ti 6 juta pintonan dina 1.8 taun. Distribusi utama (édisi) kulawarga ieu nyaéta: Debian - distribusi anu populér, versi pakét di jerona difokuskeun utamina dina LTS (Dukungan Istilah Lila - dukungan pikeun lila), anu dinyatakeun dina reliabiliti anu cukup luhur sareng stabilitas sistem sareng bungkusan; Ubuntu - ngandung distribusi sadaya bungkusan dina vérsi pangénggalna, anu tiasa mangaruhan stabilitas, tapi ngamungkinkeun anjeun ngagunakeun pungsionalitas anu aya dina versi énggal; Red Hat Enterprise Linux - OS, diposisikan pikeun pamakéan komérsial, dibayar, kumaha oge, ngawengku rojongan ti ngical paralatan software, sababaraha pakét proprietary jeung bungkusan supir; CentOS - open source variasi tina Red Hat Enterprise Linux, dicirikeun ku henteuna paket proprietary sareng dukungan.

Pikeun anu nembé mimiti ngawasaan daérah ieu, rekomendasi kuring nyaéta sistem server Windowsatawa Ubuntu. Upami urang nganggap Windows, maka ieu mangrupikeun familiarity sistem, Ubuntu - langkung toleransi kana apdet, sareng kahareupna, contona, langkung seueur masalah nalika ngaluncurkeun proyék dina téknologi anu peryogi versi énggal.

Janten, saatos mutuskeun dina OS, hayu urang angkat ka sakumpulan alat anu ngamungkinkeun anjeun nyebarkeun (pasang), ngapdet sareng ngawas kaayaan aplikasi atanapi bagian-bagianna dina server.

Kaputusan penting salajengna nyaéta panempatan aplikasi anjeun sareng server pikeun éta. Ayeuna, anu paling umum nyaéta 3 cara:

  • Hosting (ngajaga) server sorangan mangrupikeun pilihan anu paling ramah-anggaran, tapi anjeun kedah mesen IP statik ti panyadia anjeun supados sumber anjeun henteu ngarobih alamatna kana waktosna.
  • Nyéwa Server Dedicated (VDS) - sareng ngatur sacara mandiri sareng beban skala
  • Mayar (sering aranjeunna masihan anjeun kasempetan pikeun nyobaan pungsionalitas platform haratis) pikeun langganan kana sababaraha awan hosting, dimana model pamayaran pikeun sumberdaya dipaké cukup umum. Perwakilan anu paling menonjol pikeun arah ieu: Amazon AWS (aranjeunna masihan taun gratis pikeun ngagunakeun jasa, tapi kalayan wates bulanan), Google Cloud (aranjeunna masihan $ 300 kana akun, anu tiasa dibalanjakeun salami sataun dina jasa hosting awan) , Yandex.Cloud (aranjeunna masihan 4000 rubles. salami 2 bulan), Microsoft Azure (masihan aksés gratis kana jasa populér salami sataun, + 12 rubles pikeun jasa naon waé salami sabulan). Janten, anjeun tiasa nyobian salah sahiji panyadia ieu tanpa ngaluarkeun artos, tapi kéngingkeun pendapat perkiraan ngeunaan kualitas sareng tingkat jasa anu disayogikeun.

Gumantung kana jalur anu dipilih, hiji-hijina hal anu bakal robih di hareup nyaéta saha anu tanggung jawab pikeun ieu atanapi éta daérah administrasi. Upami anjeun janten tuan rumah, maka anjeun kedah ngartos yén gangguan listrik, Internét, server sorangan, parangkat lunak anu dipasang di dinya - sadayana ieu aya dina taktak anjeun. Nanging, pikeun latihan sareng uji, ieu langkung ti cukup.

Upami anjeun teu gaduh mesin tambahan anu tiasa maénkeun peran server, anjeun bakal hoyong nganggo cara kadua atanapi katilu. Kasus kadua idéntik jeung kahiji, iwal nu mindahkeun tanggung jawab kasadiaan server jeung kakuatan na kana taktak hoster nu. Administrasi server sareng parangkat lunak masih aya dina kadali anjeun.

Sarta pamustunganana, pilihan renting kapasitas panyadia awan. Di dieu anjeun tiasa nyetél kontrol otomatis tina ampir naon waé tanpa seueur rinci téknis. Sajaba ti éta, tinimbang hiji mesin, anjeun tiasa gaduh sababaraha instansi ngajalankeun paralel, nu bisa, contona, nanggungjawaban kanggo bagian béda tina aplikasi, bari teu béda jauh dina biaya ti owning dedicated server. Sareng ogé, aya alat pikeun orkestra, wadahisasi, panyebaran otomatis, integrasi kontinyu sareng seueur deui! Urang bakal ningali sababaraha hal ieu di handap.

Sacara umum, prasarana server sapertos kieu: urang gaduh anu disebut "orchestrator" ("orkestrasi" mangrupikeun prosés ngatur sababaraha instansi server), anu ngatur parobahan lingkungan dina conto server, wadah virtualisasi (opsional, tapi lumayan. sering dianggo), anu ngamungkinkeun anjeun ngabagi aplikasi kana lapisan logis anu terasing, sareng parangkat lunak Integrasi Kontinyu - ngamungkinkeun apdet pikeun kode anu di-host ku "skrip".

Janten, orkestra ngamungkinkeun anjeun ningali status server, gulung atanapi gulung deui apdet kana lingkungan server, sareng saterasna. Dina awalna, aspék ieu saperti teu mirip mangaruhan anjeun, saprak dina urutan pikeun orchestrate nanaon, anjeun peryogi sababaraha server (anjeun tiasa gaduh hiji, tapi naha ieu diperlukeun?), Sarta dina raraga mibanda sababaraha server, anjeun peryogi aranjeunna. Di antara alat anu arah ieu, anu pang populerna nyaéta Kubernetes, dikembangkeun ku Google.

Lengkah saterusna nyaéta virtualisasi di tingkat OS. Kiwari, konsep "dockerization" geus jadi nyebar, nu asalna tina alat Docker, nu nyadiakeun pungsionalitas peti terasing ti silih, tapi dibuka dina konteks hiji sistem operasi. Naon hartosna: dina unggal wadah ieu anjeun tiasa ngajalankeun aplikasi, atanapi bahkan sakumpulan aplikasi, anu bakal yakin yén aranjeunna hiji-hijina dina sakabéh OS, tanpa nyangka ayana batur dina mesin ieu. Pungsi ieu mangpaat pisan pikeun ngaluncurkeun aplikasi idéntik tina vérsi anu béda, atanapi ngan saukur aplikasi anu bertentangan, ogé pikeun ngabagi potongan aplikasi kana lapisan. Lapisan matak ieu engké bisa ditulis kana hiji gambar, nu bisa dipaké, contona, pikeun nyebarkeun hiji aplikasi. Nyaéta, ku masang gambar ieu sareng nyebarkeun wadahna, anjeun kéngingkeun lingkungan anu siap pikeun ngajalankeun aplikasi anjeun! Dina léngkah munggaran, anjeun tiasa nganggo alat ieu pikeun tujuan inpormasi sareng pikeun kéngingkeun kauntungan anu nyata ku ngabagi logika aplikasi kana lapisan anu béda. Tapi éta patut nyebutkeun didieu yén teu sadaya jelema perlu dockerization, sarta teu salawasna. Dockerization diyakinkeun dina kasus dimana aplikasi ieu "fragmented", dibagi kana bagian leutik, unggal jawab tugas sorangan, nu disebut "arsitéktur microservice".

Salaku tambahan, salian nyayogikeun lingkungan, urang kedah mastikeun panyebaran aplikasi anu kompeten, anu kalebet sagala jinis transformasi kode, pamasangan perpustakaan sareng bungkusan anu aya hubunganana, tés ngajalankeun, béwara ngeunaan operasi ieu, sareng saterasna. Di dieu urang kedah nengetan konsép sapertos "Continuous Integration" (CI - Integrasi Kontinyu). Parabot utama di daérah ieu ayeuna nyaéta Jenkins (parangkat lunak CI anu ditulis dina Java sigana rada rumit dina mimitina), Travis C.I. (ditulis dina Ruby, subjektif, rada basajan Jenkins, kumaha oge, sababaraha pangaweruh dina widang konfigurasi deployment masih diperlukeun), Gitlab CI (ditulis dina Ruby jeung Go).

Janten, saatos nyarioskeun lingkungan dimana aplikasi anjeun bakal jalan, waktosna pikeun tungtungna ningali alat naon anu ditawarkeun ku dunya modéren pikeun nyiptakeun aplikasi ieu.

Hayu urang mimitian ku dasar: Backend (backend) - bagian server. Pilihan basa, susunan fungsi dasar jeung struktur tos siap (kerangka) dieu ditangtukeun utamana ku preferensi pribadi, tapi sanajan kitu, eta sia mentioning pikeun tinimbangan (pendapat pangarang ngeunaan basa rada subjektif, sanajan kalawan klaim. ka pedaran anu teu bias):

  • Python mangrupakeun basa anu cukup ramah pikeun pamaké inexperienced, eta ngahampura sababaraha kasalahan, tapi ogé bisa jadi rada ketat ku pamekar ku kituna manéhna teu ngalakukeun nanaon goréng. Geus basa anu cukup dewasa sarta bermakna, anu muncul dina 1991.
  • Go - basa ti Google, oge rada ramah tur merenah, éta cukup gampang pikeun compile tur meunangkeun file laksana dina platform nanaon. Éta tiasa saderhana sareng pikaresepeun, atanapi tiasa rumit sareng serius. Seger jeung ngora, mucunghul rélatif anyar, dina 2009.
  • Rust nyaéta saeutik heubeul ti batur sapagawean na saméméhna, dirilis dina 2006, tapi masih rada ngora dibandingkeun peers na. Ditujukeun pikeun pamekar anu langkung berpengalaman, sanaos éta masih nyobian ngabéréskeun seueur tugas tingkat rendah pikeun programer.
  • Java mangrupikeun Samaun pangembangan komérsial, diwanohkeun dina taun 1995, sareng mangrupikeun salah sahiji basa anu paling sering dianggo dina pamekaran aplikasi perusahaan ayeuna. Kalayan konsép dasarna sareng pangaturan beurat, waktos jalanna tiasa janten tantangan pikeun pamula.
  • ASP.net mangrupikeun platform pangembangan aplikasi anu dikaluarkeun ku Microsoft. Pikeun nulis fungsionalitas, basa C# (dibaca C Sharp), nu mucunghul taun 2000, utamana dipaké. Kompleksitasna tiasa dibandingkeun sareng tingkat antara Java sareng Rust.
  • PHP, mimitina dipaké pikeun HTML preprocessing, ayeuna, sanajan nyekel kapamimpinan mutlak dina pasar basa, aya trend nuju turunna dina pamakéan. Éta ngagaduhan ambang éntri anu rendah sareng betah nyerat kode, tapi dina waktos anu sami, nalika ngembangkeun aplikasi anu lumayan ageung, fungsionalitas basa tiasa henteu cekap.

Nya, bagian ahir aplikasi kami - anu paling nyata pikeun pangguna - Tungtung payun (frontend) - nyaéta nyanghareupan aplikasi anjeun; éta sareng bagian ieu pangguna langsung berinteraksi.

Tanpa bade ka detil, frontend modern nangtung dina tilu pilar, frameworks (jeung teu jadi loba), pikeun nyieun interfaces pamaké. Sasuai, tilu anu pang populerna nyaéta:

  • ReactJS sanes kerangka, tapi perpustakaan. Sabenerna, kerangka béda ti judul reueus na ngan dina henteuna sababaraha fungsi "out of the box" jeung kudu masang aranjeunna sacara manual. Ku kituna, aya sababaraha variasi tina "persiapan" perpustakaan ieu, ngabentuk frameworks unik. Éta tiasa rada sesah pikeun pamula, kusabab sababaraha prinsip dasar, sareng pangaturan lingkungan anu rada agrésif. Nanging, pikeun ngamimitian gancang, anjeun tiasa nganggo pakét "create-react-app".
  • VueJS mangrupakeun kerangka pikeun ngawangun interfaces pamaké. Tina trinitas ieu, leres-leres nyandak judul kerangka anu paling ramah-pamaké; pikeun pangwangunan di Vue, halangan pikeun asupna langkung handap tibatan baraya anu disebatkeun. Leuwih ti éta, anjeunna bungsu diantara aranjeunna.
  • Angular dianggap paling kompleks tina kerangka ieu, ngan hiji-hijina anu peryogi Typekrip (tambahan pikeun basa Javascript). Sering dianggo pikeun ngawangun aplikasi perusahaan ageung.

Nyimpulkeun naon anu diserat di luhur, urang tiasa nyimpulkeun yén ayeuna nyebarkeun aplikasi sacara radikal béda ti kumaha prosés ieu lumangsung sateuacanna. Nanging, teu aya anu ngahalangan anjeun pikeun ngalakukeun "penyebaran" ku cara baheula. Tapi naha sakedik waktos anu disimpen dina mimiti patut seueur kasalahan anu kedah dilakukeun ku pamekar anu milih jalur ieu? Kuring yakin jawabanna henteu. Ku nyéépkeun waktos sakedik pikeun familiarize diri sareng alat-alat ieu (sareng anjeun henteu peryogi langkung ti éta, sabab anjeun kedah ngartos naha anjeun peryogi éta dina proyék anjeun ayeuna atanapi henteu), anjeun tiasa maénkeun éta, ngirangan sacara signifikan, contona. , Kasus kasalahan hantu gumantung kana lingkungan jeung nu mucunghul ngan dina server produksi, analisis nightly naon ngarah ka kacilakaan server na naha éta moal ngamimitian, sarta leuwih.

sumber: www.habr.com

Tambahkeun komentar