Daftar periksa untuk membuat dan menerbitkan aplikasi web

Untuk membuat aplikasi web Anda sendiri di zaman kita, kemampuan mengembangkannya saja tidak cukup. Aspek penting adalah menyiapkan alat untuk penerapan aplikasi, pemantauan, serta pengelolaan dan administrasi lingkungan di mana ia beroperasi. Ketika era penerapan manual mulai terlupakan, bahkan untuk proyek kecil, alat otomatisasi dapat membawa manfaat nyata. Saat menerapkan “dengan tangan”, kita sering lupa untuk memindahkan sesuatu, memperhitungkan nuansa ini atau itu, menjalankan tes yang terlupakan, daftar ini dapat dilanjutkan untuk waktu yang cukup lama.

Artikel ini dapat membantu mereka yang baru mempelajari dasar-dasar pembuatan aplikasi web dan ingin memahami sedikit tentang istilah dan konvensi dasar.

Jadi, membangun aplikasi masih dapat dibagi menjadi 2 bagian: segala sesuatu yang berhubungan dengan kode aplikasi, dan segala sesuatu yang berhubungan dengan lingkungan di mana kode tersebut dijalankan. Kode aplikasi, pada gilirannya, juga dibagi menjadi kode server (yang sering berjalan di server: logika bisnis, otorisasi, penyimpanan data, dll.), dan kode klien (yang sering berjalan di mesin pengguna: sering antarmuka, dan logika terkait dengannya).

Mari kita mulai dengan hari Rabu.

Dasar pengoperasian kode, sistem, atau perangkat lunak apa pun adalah Sistem Operasi, jadi di bawah ini kita akan melihat sistem paling populer di pasar hosting dan memberikan penjelasan singkatnya:

Windows Server - Windows yang sama, tetapi dalam variasi server. Beberapa fungsi yang tersedia di Windows versi klien (biasa) tidak ada di sini, misalnya, beberapa layanan untuk mengumpulkan statistik dan perangkat lunak serupa, tetapi ada seperangkat utilitas untuk administrasi jaringan, perangkat lunak dasar untuk menyebarkan server (web, ftp, ...). Secara umum, Windows Server terlihat seperti Windows biasa, berfungsi seperti Windows biasa, namun harganya 2 kali lebih mahal daripada Windows biasa. Namun, mengingat kemungkinan besar Anda akan menyebarkan aplikasi pada server khusus/virtual, biaya akhir untuk Anda, meskipun mungkin meningkat, tidak terlalu penting. Karena platform Windows menempati posisi yang sangat besar di pasar OS konsumen, edisi servernya akan menjadi yang paling familiar bagi sebagian besar pengguna.

Unix-sistem serupa. Pekerjaan tradisional dalam sistem ini tidak memerlukan antarmuka grafis yang familiar, hanya menawarkan konsol sebagai elemen kontrol kepada pengguna. Untuk pengguna yang belum berpengalaman, bekerja dalam format ini bisa jadi sulit, tapi berapa biaya untuk keluar dari editor teks yang cukup populer di bidang data? semangat, pertanyaan terkait ini telah ditonton lebih dari 6 juta kali dalam 1.8 tahun. Distribusi (edisi) utama dari keluarga ini adalah: Debian - distribusi populer, versi paket di dalamnya difokuskan terutama pada LTS (Dukungan Jangka Panjang – dukungan untuk waktu yang lama), yang dinyatakan dalam keandalan dan stabilitas sistem dan paket yang cukup tinggi; Ubuntu – berisi distribusi semua paket dalam versi terbarunya, yang mungkin mempengaruhi stabilitas, namun memungkinkan Anda untuk menggunakan fungsionalitas yang disertakan dengan versi baru; Red Hat Enterprise Linux – sistem operasi, diposisikan untuk penggunaan komersial, berbayar, namun mencakup dukungan dari vendor perangkat lunak, beberapa paket kepemilikan, dan paket driver; CentOS - sumber terbuka variasi dari Red Hat Enterprise Linux, ditandai dengan tidak adanya paket dan dukungan berpemilik.

Bagi mereka yang baru mulai menguasai bidang ini, rekomendasi saya adalah sistem Windows ServerAtau Ubuntu. Jika kita mempertimbangkan Windows, maka ini terutama adalah keakraban sistem, Ubuntu – lebih banyak toleransi terhadap pembaruan, dan pada gilirannya, misalnya, lebih sedikit masalah saat meluncurkan proyek pada teknologi yang memerlukan versi baru.

Jadi, setelah memutuskan OS, mari beralih ke seperangkat alat yang memungkinkan Anda menerapkan (menginstal), memperbarui, dan memantau status aplikasi atau bagian-bagiannya di server.

Keputusan penting berikutnya adalah penempatan aplikasi Anda dan servernya. Saat ini, yang paling umum adalah 3 cara:

  • Hosting (menjaga) server Anda sendiri adalah opsi yang paling hemat anggaran, tetapi Anda harus memesan IP statis dari penyedia Anda agar sumber daya Anda tidak mengubah alamatnya seiring waktu.
  • Sewa Server Khusus (VDS) – dan kelola secara mandiri serta skalakan beban
  • Bayar (sering kali mereka memberi Anda kesempatan untuk mencoba fungsionalitas platform secara gratis) untuk berlangganan beberapa cloud hosting, di mana model pembayaran untuk sumber daya yang digunakan cukup umum. Perwakilan paling menonjol dari arah ini: Amazon AWS (mereka memberikan satu tahun gratis untuk menggunakan layanan, tetapi dengan batas bulanan), Google Cloud (mereka memberikan $300 ke akun, yang dapat dibelanjakan sepanjang tahun pada layanan cloud hosting) , Yandex.Cloud (mereka memberikan 4000 rubel selama 2 bulan), Microsoft Azure (memberikan akses gratis ke layanan populer selama setahun, + 12 rubel untuk layanan apa pun selama satu bulan). Dengan demikian, Anda dapat mencoba salah satu penyedia ini tanpa mengeluarkan uang sepeser pun, namun mendapatkan gambaran perkiraan tentang kualitas dan tingkat layanan yang diberikan.

Tergantung pada jalur yang dipilih, satu-satunya hal yang akan berubah di masa depan adalah siapa yang paling bertanggung jawab atas bidang administrasi ini atau itu. Jika Anda menghosting sendiri, maka Anda harus memahami bahwa segala gangguan pada listrik, Internet, server itu sendiri, perangkat lunak yang digunakan di dalamnya - semua ini sepenuhnya berada di pundak Anda. Namun untuk pelatihan dan pengujian, ini sudah lebih dari cukup.

Jika Anda tidak memiliki mesin tambahan yang dapat berperan sebagai server, maka Anda sebaiknya menggunakan cara kedua atau ketiga. Kasus kedua identik dengan kasus pertama, dengan pengecualian Anda mengalihkan tanggung jawab atas ketersediaan server dan kekuatannya ke pundak hoster. Administrasi server dan software masih dalam kendali Anda.

Dan terakhir, opsi menyewa kapasitas dari penyedia cloud. Di sini Anda dapat mengatur kontrol otomatis atas hampir semua hal tanpa membahas terlalu banyak detail teknis. Selain itu, alih-alih satu mesin, Anda dapat memiliki beberapa mesin yang berjalan secara paralel, yang dapat, misalnya, bertanggung jawab atas berbagai bagian aplikasi, namun biayanya tidak jauh berbeda dengan memiliki server khusus. Dan juga, ada alat untuk orkestrasi, containerisasi, penerapan otomatis, integrasi berkelanjutan, dan banyak lagi! Kita akan melihat beberapa hal tersebut di bawah.

Secara umum, infrastruktur server terlihat seperti ini: kami memiliki apa yang disebut "orchestrator" ("orkestrasi" adalah proses mengelola beberapa instance server), yang mengelola perubahan lingkungan pada instance server, wadah virtualisasi (opsional, tetapi cukup sering digunakan), yang memungkinkan Anda membagi aplikasi ke dalam lapisan logis yang terisolasi, dan perangkat lunak Integrasi Berkelanjutan—memungkinkan pembaruan pada kode yang dihosting melalui “skrip.”

Jadi, orkestrasi memungkinkan Anda melihat status server, meluncurkan atau mengembalikan pembaruan ke lingkungan server, dan sebagainya. Pada awalnya, aspek ini tidak akan mempengaruhi Anda, karena untuk mengatur apa pun, Anda memerlukan beberapa server (Anda dapat memiliki satu, tapi mengapa ini perlu?), dan untuk memiliki beberapa server, Anda memerlukannya. Di antara alat-alat ke arah ini, yang paling populer adalah Kubernetes, yang dikembangkan oleh Google.

Langkah selanjutnya adalah virtualisasi di level OS. Saat ini, konsep “dockerization” telah tersebar luas, yang berasal dari alat tersebut Buruh pelabuhan, yang menyediakan fungsionalitas wadah yang diisolasi satu sama lain, tetapi diluncurkan dalam konteks sistem operasi yang sama. Artinya: di masing-masing wadah ini Anda dapat menjalankan aplikasi, atau bahkan sekumpulan aplikasi, yang akan percaya bahwa aplikasi tersebut adalah satu-satunya di seluruh OS, bahkan tanpa mencurigai keberadaan orang lain di mesin ini. Fungsi ini sangat berguna untuk meluncurkan aplikasi identik dengan versi berbeda, atau sekadar aplikasi yang bertentangan, serta untuk membagi bagian aplikasi menjadi beberapa lapisan. Pemeran lapisan ini nantinya dapat ditulis ke dalam gambar, yang dapat digunakan, misalnya, untuk menyebarkan aplikasi. Artinya, dengan menginstal image ini dan menerapkan container yang ada di dalamnya, Anda mendapatkan lingkungan siap pakai untuk menjalankan aplikasi Anda! Pada langkah pertama, Anda dapat menggunakan alat ini baik untuk tujuan informasi maupun untuk mendapatkan manfaat nyata dengan membagi logika aplikasi ke dalam beberapa lapisan. Namun perlu dikatakan di sini bahwa tidak semua orang memerlukan dockerisasi, dan tidak selalu. Dockerisasi dibenarkan dalam kasus di mana aplikasi “terfragmentasi”, dibagi menjadi bagian-bagian kecil, masing-masing bertanggung jawab atas tugasnya sendiri, yang disebut “arsitektur layanan mikro”.

Selain itu, selain menyediakan lingkungan, kita perlu memastikan penerapan aplikasi yang kompeten, yang mencakup semua jenis transformasi kode, instalasi pustaka dan paket terkait aplikasi, menjalankan pengujian, pemberitahuan tentang operasi ini, dan sebagainya. Di sini kita perlu memperhatikan konsep seperti “Integrasi Berkelanjutan” (CI – Integrasi Berkelanjutan). Alat utama di bidang ini saat ini adalah Jenkins (perangkat lunak CI yang ditulis dalam Java mungkin tampak sedikit rumit pada awalnya), Travis CI (ditulis dalam Ruby, subjektif, agak lebih sederhana Jenkins, namun, beberapa pengetahuan di bidang konfigurasi penerapan masih diperlukan), Gitlab CI (ditulis pada Ruby dan Pergi).

Jadi, setelah membicarakan tentang lingkungan di mana aplikasi Anda akan bekerja, sekarang saatnya untuk melihat alat apa yang ditawarkan dunia modern kepada kita untuk membuat aplikasi ini.

Mari kita mulai dengan dasar-dasarnya: Backend (backend) – bagian server. Pilihan bahasa, serangkaian fungsi dasar, dan struktur (kerangka) yang telah ditentukan sebelumnya di sini ditentukan terutama oleh preferensi pribadi, namun demikian, patut disebutkan untuk dipertimbangkan (pendapat penulis tentang bahasa cukup subjektif, meskipun dengan klaim untuk deskripsi yang tidak memihak):

  • Python adalah bahasa yang cukup ramah untuk pengguna yang belum berpengalaman, ia memaafkan beberapa kesalahan, tetapi juga bisa sangat ketat terhadap pengembangnya sehingga ia tidak melakukan hal buruk. Sudah menjadi bahasa yang cukup matang dan penuh makna, yang muncul pada tahun 1991.
  • Go - bahasa dari Google, juga cukup ramah dan nyaman, cukup mudah untuk mengkompilasi dan mendapatkan file yang dapat dieksekusi di platform apa pun. Ini bisa sederhana dan menyenangkan, atau bisa juga rumit dan serius. Segar dan muda, muncul relatif baru, pada tahun 2009.
  • Rust sedikit lebih tua dari rekan sebelumnya, dirilis pada tahun 2006, namun masih cukup muda dibandingkan rekan-rekannya. Ditujukan untuk pengembang yang lebih berpengalaman, meskipun masih mencoba menyelesaikan banyak tugas tingkat rendah untuk pemrogram.
  • Java adalah bahasa veteran dalam pengembangan komersial, diperkenalkan pada tahun 1995, dan merupakan salah satu bahasa yang paling umum digunakan dalam pengembangan aplikasi perusahaan saat ini. Dengan konsep dasar dan pengaturan yang berat, runtime bisa menjadi cukup menantang bagi pemula.
  • ASP.net adalah platform pengembangan aplikasi yang dirilis oleh Microsoft. Untuk menulis fungsionalitas, bahasa C# (diucapkan C Sharp), yang muncul pada tahun 2000, terutama digunakan. Kompleksitasnya sebanding dengan tingkat antara Java dan Rust.
  • PHP, awalnya digunakan untuk pra-pemrosesan HTML, saat ini, meskipun memegang kepemimpinan mutlak di pasar bahasa, terdapat kecenderungan penurunan penggunaan. Ini memiliki ambang masuk yang rendah dan kemudahan penulisan kode, tetapi pada saat yang sama, ketika mengembangkan aplikasi yang cukup besar, fungsionalitas bahasanya mungkin tidak cukup.

Nah, bagian terakhir dari aplikasi kita - yang paling nyata bagi pengguna - Frontend (frontend) – adalah wajah aplikasi Anda; dengan bagian inilah pengguna berinteraksi secara langsung.

Tanpa menjelaskan secara detail, frontend modern berdiri di atas tiga pilar, kerangka kerja (dan tidak terlalu banyak), untuk membuat antarmuka pengguna. Oleh karena itu, tiga yang paling populer adalah:

  • ReactJS bukanlah sebuah framework, melainkan sebuah perpustakaan. Sebenarnya, framework ini berbeda dari judul kebanggaannya hanya karena tidak adanya beberapa fungsi “out of the box” dan kebutuhan untuk menginstalnya secara manual. Dengan demikian, ada beberapa variasi “persiapan” perpustakaan ini sehingga membentuk kerangka yang unik. Ini mungkin sedikit sulit bagi pemula, karena beberapa prinsip dasar, dan pengaturan lingkungan build yang cukup agresif. Namun, untuk memulai dengan cepat, Anda dapat menggunakan paket “buat-reaksi-aplikasi”.
  • VueJS adalah kerangka kerja untuk membangun antarmuka pengguna. Dari trinitas ini, ia berhak menyandang gelar kerangka kerja yang paling mudah digunakan; untuk pengembangan di Vue, hambatan untuk masuk lebih rendah dibandingkan dengan saudara-saudara lainnya yang disebutkan di atas. Apalagi dia yang termuda di antara mereka.
  • Angular dianggap sebagai kerangka kerja yang paling rumit, satu-satunya yang memerlukan TypeScript (tambahan untuk bahasa Javascript). Sering digunakan untuk membangun aplikasi perusahaan besar.

Meringkas apa yang tertulis di atas, kita dapat menyimpulkan bahwa penerapan aplikasi saat ini sangat berbeda dari proses yang berlangsung sebelumnya. Namun, tidak ada yang menghentikan Anda melakukan “penempatan” dengan cara lama. Namun apakah sedikit waktu yang dihemat di awal sebanding dengan banyaknya kesalahan yang harus dilakukan oleh pengembang yang memilih jalur ini? Saya yakin jawabannya adalah tidak. Dengan meluangkan lebih banyak waktu untuk membiasakan diri dengan alat-alat ini (dan Anda tidak memerlukan lebih dari itu, karena Anda perlu memahami apakah Anda memerlukannya dalam proyek Anda saat ini atau tidak), Anda dapat memainkannya, mengurangi secara signifikan, misalnya , kasus kesalahan hantu tergantung pada lingkungan dan hanya muncul di server produksi, analisis setiap malam tentang apa yang menyebabkan server mogok dan mengapa server tidak dapat dimulai, dan banyak lagi.

Sumber: www.habr.com

Tambah komentar