Senarai semak untuk mencipta dan menerbitkan aplikasi web

Untuk mencipta aplikasi web anda sendiri pada zaman kita, ia tidak mencukupi untuk dapat membangunkannya. Aspek penting ialah menyediakan alatan untuk penggunaan aplikasi, pemantauan, serta mengurus dan mentadbir persekitaran di mana ia beroperasi. Memandangkan era penggunaan manual semakin dilupakan, walaupun untuk projek kecil, alat automasi boleh membawa faedah yang ketara. Apabila menggunakan "dengan tangan", kita sering lupa untuk memindahkan sesuatu, mengambil kira nuansa ini atau itu, menjalankan ujian yang terlupa, senarai ini boleh diteruskan untuk masa yang agak lama.

Artikel ini mungkin membantu mereka yang baru mempelajari asas mencipta aplikasi web dan ingin memahami sedikit tentang terma dan konvensyen asas.

Jadi, membina aplikasi masih boleh dibahagikan kepada 2 bahagian: semua yang berkaitan dengan kod aplikasi dan semua yang berkaitan dengan persekitaran di mana kod ini dilaksanakan. Kod aplikasi, seterusnya, juga dibahagikan kepada kod pelayan (yang berjalan pada pelayan, selalunya: logik perniagaan, kebenaran, penyimpanan data, dll.), dan kod klien (yang berjalan pada mesin pengguna: selalunya antara muka, dan logik yang berkaitan dengannya).

Mari kita mulakan dengan hari Rabu.

Asas untuk pengendalian mana-mana kod, sistem atau perisian ialah Sistem Pengendalian, jadi di bawah ini kita akan melihat sistem yang paling popular di pasaran pengehosan dan memberi mereka penerangan ringkas:

Windows Server - Windows yang sama, tetapi dalam variasi pelayan. Beberapa fungsi yang tersedia dalam versi klien (biasa) Windows tidak terdapat di sini, sebagai contoh, beberapa perkhidmatan untuk mengumpul statistik dan perisian serupa, tetapi terdapat satu set utiliti untuk pentadbiran rangkaian, perisian asas untuk menggunakan pelayan (web, ftp, ...). Secara umum, Windows Server kelihatan seperti Windows biasa, cuak seperti Windows biasa, namun, kosnya 2 kali ganda lebih tinggi daripada rakan sejawatannya. Walau bagaimanapun, memandangkan kemungkinan besar anda akan menggunakan aplikasi pada pelayan khusus/maya, kos akhir untuk anda, walaupun mungkin meningkat, adalah tidak kritikal. Memandangkan platform Windows menduduki tempat yang menggalakkan dalam pasaran OS pengguna, edisi pelayannya akan menjadi yang paling biasa kepada kebanyakan pengguna.

Unix-sistem yang serupa. Kerja tradisional dalam sistem ini tidak memerlukan kehadiran antara muka grafik yang biasa, menawarkan pengguna hanya konsol sebagai elemen kawalan. Bagi pengguna yang tidak berpengalaman, bekerja dalam format ini boleh menjadi sukar, cuma berapa kos untuk keluar dari editor teks yang agak popular dalam data Vim, soalan yang berkaitan dengan ini telah menerima lebih daripada 6 juta tontonan dalam tempoh 1.8 tahun. Pengedaran (edisi) utama keluarga ini ialah: Debian - pengedaran popular, versi pakej di dalamnya tertumpu terutamanya pada LTS (Sokongan Jangka Panjang – sokongan untuk masa yang lama), yang dinyatakan dalam kebolehpercayaan dan kestabilan sistem dan pakej yang agak tinggi; Ubuntu – mengandungi pengedaran semua pakej dalam versi terbaharunya, yang mungkin menjejaskan kestabilan, tetapi membolehkan anda menggunakan fungsi yang disertakan dengan versi baharu; Red Hat Enterprise Linux – OS, diletakkan untuk kegunaan komersial, dibayar, walau bagaimanapun, termasuk sokongan daripada vendor perisian, beberapa pakej proprietari dan pakej pemacu; CentOS - sumber terbuka variasi Red Hat Enterprise Linux, dicirikan oleh ketiadaan pakej proprietari dan sokongan.

Bagi mereka yang baru mula menguasai bidang ini, cadangan saya ialah sistem Windows ServerAtau Ubuntu. Jika kita menganggap Windows, maka ini terutamanya kebiasaan sistem, Ubuntu – lebih bertolak ansur terhadap kemas kini, dan seterusnya, sebagai contoh, lebih sedikit masalah apabila melancarkan projek pada teknologi yang memerlukan versi baharu.

Oleh itu, setelah memutuskan OS, mari beralih kepada satu set alat yang membolehkan anda menggunakan (memasang), mengemas kini dan memantau keadaan aplikasi atau bahagiannya pada pelayan.

Keputusan penting seterusnya ialah penempatan aplikasi anda dan pelayan untuknya. Pada masa ini, yang paling biasa ialah 3 cara:

  • Mengehos (menyimpan) pelayan sendiri ialah pilihan yang paling mesra bajet, tetapi anda perlu memesan IP statik daripada pembekal anda supaya sumber anda tidak menukar alamatnya dari semasa ke semasa.
  • Sewa Pelayan Terdedikasi (VDS) – dan tadbirkannya secara bebas dan skalakan beban
  • Bayar (selalunya mereka memberi anda peluang untuk mencuba fungsi platform secara percuma) untuk langganan beberapa pengehosan awan, di mana model pembayaran untuk sumber yang digunakan agak biasa. Wakil yang paling menonjol dari arah ini: Amazon AWS (mereka memberikan tahun percuma untuk menggunakan perkhidmatan, tetapi dengan had bulanan), Google Cloud (mereka memberikan $300 kepada akaun, yang boleh dibelanjakan sepanjang tahun untuk perkhidmatan pengehosan awan) , Yandex.Cloud (mereka memberikan 4000 rubel . selama 2 bulan), Microsoft Azure (memberi akses percuma kepada perkhidmatan popular selama setahun, + 12 rubel untuk sebarang perkhidmatan selama satu bulan). Oleh itu, anda boleh mencuba mana-mana penyedia ini tanpa membelanjakan sesen pun, tetapi mendapatkan pendapat anggaran tentang kualiti dan tahap perkhidmatan yang disediakan.

Bergantung pada laluan yang dipilih, satu-satunya perkara yang akan berubah pada masa hadapan ialah siapa yang bertanggungjawab untuk ini atau kawasan pentadbiran itu. Jika anda menjadi tuan rumah sendiri, maka anda mesti memahami bahawa sebarang gangguan dalam elektrik, Internet, pelayan itu sendiri, perisian yang digunakan padanya - semua ini terletak sepenuhnya di bahu anda. Walau bagaimanapun, untuk latihan dan ujian, ini lebih daripada mencukupi.

Jika anda tidak mempunyai mesin tambahan yang boleh memainkan peranan sebagai pelayan, maka anda akan mahu menggunakan cara kedua atau ketiga. Kes kedua adalah sama dengan yang pertama, dengan pengecualian bahawa anda mengalihkan tanggungjawab untuk ketersediaan pelayan dan kuasanya ke bahu hoster. Pentadbiran pelayan dan perisian masih di bawah kawalan anda.

Dan akhirnya, pilihan untuk menyewa kapasiti pembekal awan. Di sini anda boleh menyediakan kawalan automatik ke atas hampir semua perkara tanpa menggunakan terlalu banyak butiran teknikal. Di samping itu, bukannya satu mesin, anda boleh mempunyai beberapa contoh berjalan selari, yang boleh, sebagai contoh, bertanggungjawab untuk bahagian aplikasi yang berlainan, sementara tidak banyak berbeza dalam kos daripada memiliki pelayan khusus. Dan juga, terdapat alat untuk orkestrasi, kontena, penggunaan automatik, penyepaduan berterusan dan banyak lagi! Kami akan melihat beberapa perkara ini di bawah.

Secara umum, infrastruktur pelayan kelihatan seperti ini: kami mempunyai apa yang dipanggil "pengatur" ("orkestrasi" ialah proses mengurus beberapa contoh pelayan), yang menguruskan perubahan persekitaran pada contoh pelayan, bekas virtualisasi (pilihan, tetapi agak sering digunakan), yang membolehkan anda membahagikan aplikasi kepada lapisan logik terpencil, dan perisian Integrasi Berterusanβ€”membenarkan kemas kini kepada kod yang dihoskan melalui "skrip."

Jadi, orkestrasi membolehkan anda melihat status pelayan, melancarkan atau melancarkan semula kemas kini kepada persekitaran pelayan dan sebagainya. Pada mulanya, aspek ini tidak mungkin menjejaskan anda, kerana untuk mengatur apa-apa, anda memerlukan beberapa pelayan (anda boleh memilikinya, tetapi mengapa ini perlu?), Dan untuk mempunyai beberapa pelayan, anda memerlukannya. Daripada alat ke arah ini, yang paling popular ialah Kubernetes, dibangunkan oleh Google.

Langkah seterusnya ialah virtualisasi di peringkat OS. Pada masa kini, konsep "dockerization" telah meluas, yang berasal dari alat tersebut buruh pelabuhan, yang menyediakan kefungsian bekas yang diasingkan antara satu sama lain, tetapi dilancarkan dalam konteks satu sistem pengendalian. Apakah maksud ini: dalam setiap bekas ini anda boleh menjalankan aplikasi, atau bahkan satu set aplikasi, yang akan percaya bahawa mereka adalah satu-satunya dalam keseluruhan OS, tanpa mengesyaki kewujudan orang lain pada mesin ini. Fungsi ini sangat berguna untuk melancarkan aplikasi yang serupa dengan versi yang berbeza, atau hanya aplikasi yang bercanggah, serta untuk membahagikan kepingan aplikasi kepada lapisan. Lapisan lapisan ini kemudiannya boleh ditulis ke dalam imej, yang boleh digunakan, sebagai contoh, untuk menggunakan aplikasi. Iaitu, dengan memasang imej ini dan menggunakan bekas yang terkandung di dalamnya, anda mendapat persekitaran sedia untuk menjalankan aplikasi anda! Dalam langkah pertama, anda boleh menggunakan alat ini untuk tujuan maklumat dan untuk mendapatkan faedah yang sangat nyata dengan membahagikan logik aplikasi kepada lapisan yang berbeza. Tetapi patut dikatakan di sini bahawa tidak semua orang memerlukan dockerization, dan tidak selalu. Dockerization adalah wajar dalam kes di mana aplikasi "berpecah", dibahagikan kepada bahagian kecil, masing-masing bertanggungjawab untuk tugasnya sendiri, yang dipanggil "seni bina perkhidmatan mikro".

Di samping itu, selain menyediakan persekitaran, kami perlu memastikan penggunaan aplikasi yang cekap, yang merangkumi semua jenis transformasi kod, pemasangan perpustakaan dan pakej yang berkaitan dengan aplikasi, menjalankan ujian, pemberitahuan tentang operasi ini dan sebagainya. Di sini kita perlu memberi perhatian kepada konsep seperti "Integrasi Berterusan" (CI – Integrasi Berterusan). Alat utama dalam bidang ini pada masa ini ialah Jenkins (perisian CI yang ditulis dalam Java mungkin kelihatan agak rumit pada mulanya), Travis CI (ditulis dalam Ruby, subjektif, agak mudah Jenkins, walau bagaimanapun, beberapa pengetahuan dalam bidang konfigurasi penempatan masih diperlukan), Gitlab CI (ditulis pada Ruby dan Pergi).

Jadi, setelah bercakap tentang persekitaran di mana aplikasi anda akan berfungsi, sudah tiba masanya untuk melihat alat yang ditawarkan oleh dunia moden kepada kami untuk mencipta aplikasi ini.

Mari kita mulakan dengan asas: Backend (bahagian belakang) – bahagian pelayan. Pilihan bahasa, set fungsi asas dan struktur (rangka kerja) yang telah ditetapkan di sini ditentukan terutamanya oleh keutamaan peribadi, tetapi bagaimanapun, ia patut disebut untuk dipertimbangkan (pendapat pengarang tentang bahasa agak subjektif, walaupun dengan tuntutan kepada huraian yang tidak berat sebelah):

  • Python adalah bahasa yang agak mesra untuk pengguna yang tidak berpengalaman, ia memaafkan beberapa kesilapan, tetapi ia juga boleh menjadi agak ketat dengan pembangun supaya dia tidak melakukan apa-apa yang buruk. Sudah menjadi bahasa yang cukup matang dan bermakna, yang muncul pada tahun 1991.
  • Go - bahasa daripada Google, juga agak mesra dan mudah, ia agak mudah untuk disusun dan mendapatkan fail boleh laku pada mana-mana platform. Ia boleh menjadi mudah dan menyenangkan, atau ia boleh menjadi rumit dan serius. Segar dan muda, muncul agak baru-baru ini, pada tahun 2009.
  • Rust lebih tua sedikit daripada rakan sekerjanya yang terdahulu, dikeluarkan pada tahun 2006, tetapi masih agak muda berbanding rakan sebayanya. Ditujukan kepada pembangun yang lebih berpengalaman, walaupun ia masih cuba menyelesaikan banyak tugas peringkat rendah untuk pengaturcara.
  • Java ialah seorang veteran pembangunan komersial, diperkenalkan pada tahun 1995, dan merupakan salah satu bahasa yang paling biasa digunakan dalam pembangunan aplikasi perusahaan hari ini. Dengan konsep asas dan persediaan beratnya, masa jalan boleh menjadi agak mencabar untuk pemula.
  • ASP.net ialah platform pembangunan aplikasi yang dikeluarkan oleh Microsoft. Untuk menulis kefungsian, bahasa C# (disebut C Sharp), yang muncul pada tahun 2000, digunakan terutamanya. Kerumitannya adalah setanding dengan tahap antara Java dan Rust.
  • PHP, pada asalnya digunakan untuk prapemprosesan HTML, pada masa ini, walaupun ia memegang kepimpinan mutlak dalam pasaran bahasa, terdapat trend ke arah penurunan penggunaan. Ia mempunyai ambang kemasukan yang rendah dan kemudahan menulis kod, tetapi pada masa yang sama, apabila membangunkan aplikasi yang agak besar, kefungsian bahasa mungkin tidak mencukupi.

Nah, bahagian akhir aplikasi kami - yang paling ketara untuk pengguna - Frontend (frontend) – ialah muka aplikasi anda; dengan bahagian inilah pengguna berinteraksi secara langsung.

Tanpa butiran terperinci, bahagian hadapan moden berdiri di atas tiga tiang, rangka kerja (dan tidak begitu banyak), untuk mencipta antara muka pengguna. Sehubungan itu, tiga yang paling popular ialah:

  • ReactJS bukan rangka kerja, tetapi perpustakaan. Sebenarnya, rangka kerja itu berbeza daripada tajuk yang dibanggakan hanya dengan ketiadaan beberapa fungsi "di luar kotak" dan keperluan untuk memasangnya secara manual. Oleh itu, terdapat beberapa variasi "penyediaan" perpustakaan ini, membentuk rangka kerja yang unik. Ia boleh menjadi sedikit sukar untuk pemula, disebabkan oleh beberapa prinsip asas, dan persediaan persekitaran binaan yang agak agresif. Walau bagaimanapun, untuk permulaan yang pantas, anda boleh menggunakan pakej "create-react-app".
  • VueJS ialah rangka kerja untuk membina antara muka pengguna. Daripada triniti ini, ia berhak mengambil tajuk rangka kerja yang paling mesra pengguna; untuk pembangunan di Vue, halangan untuk masuk adalah lebih rendah daripada saudara-saudara lain yang disebutkan. Lebih-lebih lagi, dia adalah yang paling muda di antara mereka.
  • Sudut dianggap paling kompleks daripada rangka kerja ini, satu-satunya yang memerlukan TypeScript (tambahan untuk bahasa Javascript). Selalunya digunakan untuk membina aplikasi perusahaan besar.

Merumuskan apa yang telah ditulis di atas, kita boleh membuat kesimpulan bahawa kini menggunakan aplikasi adalah berbeza secara radikal daripada cara proses ini berjalan sebelum ini. Walau bagaimanapun, tiada siapa yang menghalang anda daripada melakukan "pengerahan" dengan cara lama. Tetapi adakah sedikit masa yang disimpan pada permulaan berbaloi dengan banyaknya kesilapan yang perlu dilalui oleh pembangun yang memilih laluan ini? Saya percaya jawapannya tidak. Dengan meluangkan sedikit masa lagi membiasakan diri anda dengan alatan ini (dan anda tidak memerlukan lebih daripada itu, kerana anda perlu memahami sama ada anda memerlukannya dalam projek semasa anda atau tidak), anda boleh memainkannya, mengurangkan dengan ketara, contohnya , kes ralat hantu bergantung pada persekitaran dan yang hanya muncul pada pelayan pengeluaran, analisis setiap malam tentang perkara yang membawa kepada ranap pelayan dan sebab ia tidak akan bermula, dan banyak lagi.

Sumber: www.habr.com

Tambah komen