Daftar periksa untuk membuat dan menerbitkan aplikasi web

Untuk membuat aplikasi web Anda sendiri akhir-akhir ini, tidak cukup untuk bisa mengembangkannya. Aspek penting adalah menyiapkan alat untuk penyebaran aplikasi, pemantauan, dan manajemen dan administrasi lingkungan di mana ia beroperasi. Era penyebaran manual jatuh ke terlupakan, bahkan untuk proyek-proyek kecil, alat otomatisasi dapat membawa manfaat nyata. Ketika digunakan "dengan tangan", kita sering lupa untuk mentransfer sesuatu, mempertimbangkan nuansa satu atau yang lain, menjalankan tes yang terlupakan, daftar ini dapat dilanjutkan untuk beberapa waktu.

Artikel ini dapat membantu mereka yang hanya memahami dasar-dasar pembuatan aplikasi web, dan ingin memahami sedikit tentang ketentuan dan konvensi dasar.

Jadi, konstruksi aplikasi masih dapat dibagi menjadi 2 bagian, ini semua yang berkaitan dengan kode aplikasi, dan semua yang berkaitan dengan lingkungan di mana kode ini dieksekusi. Kode aplikasi, pada gilirannya, juga dibagi menjadi server (yang berjalan di server, sering: logika bisnis, otorisasi, penyimpanan data, dll.), Dan klien (yang berjalan di mesin pengguna: sering antarmuka, dan terkait dengan itu logika).

Mari kita mulai hari Rabu.

Dasar untuk pengoperasian semua kode, sistem, perangkat lunak adalah Sistem Operasi, jadi di bawah ini kita akan melihat sistem yang paling populer di pasar hosting dan memberi mereka gambaran singkat:

Windows Server adalah Windows yang sama, tetapi dalam variasi server. Beberapa fungsi yang tersedia di versi Windows klien (reguler) tidak ada di sini, misalnya, beberapa layanan pengumpulan statistik, dan perangkat lunak serupa, tetapi ada satu set utilitas untuk administrasi jaringan, perangkat lunak dasar untuk penyebaran server (web, ftp, ...). Secara umum, Windows Server terlihat seperti Windows biasa, dukun seperti Windows biasa, namun biayanya 2 kali lebih banyak dari rekan biasanya. Namun, mengingat bahwa Anda kemungkinan besar akan menyebarkan aplikasi pada dedicated / server virtual, biaya akhir untuk Anda, meskipun mungkin meningkat, tidak kritis. Karena platform Windows menempati tempat yang luar biasa di pasar OS pengguna, edisi servernya akan menjadi yang paling akrab bagi sebagian besar pengguna.

Sistem seperti- unix . Pekerjaan tradisional dalam sistem ini tidak menyiratkan antarmuka grafis yang akrab, menawarkan pengguna hanya konsol sebagai elemen kontrol. Untuk pengguna yang tidak berpengalaman, bekerja dalam format seperti itu bisa sulit, yang hanya berarti keluar dari editor teks Vim , yang cukup populer dalam data, pertanyaan yang terkait dengan ini telah memperoleh lebih dari 1,8 juta tampilan selama 6 tahun. Distribusi utama (edisi) keluarga ini adalah: Debian - distribusi populer, versi paket di dalamnya terutama berfokus pada LTS ( Dukungan Jangka Panjang - dukungan untuk waktu yang lama), yang tercermin dalam keandalan dan stabilitas sistem dan paket yang agak tinggi; Ubuntu - berisi distribusi semua paket dalam versi terbarunya, yang dapat memengaruhi stabilitas, tetapi memungkinkan Anda untuk menggunakan fungsionalitas yang menyertai versi baru; Red Hat Enterprise Linux - sebuah OS yang dipasarkan untuk penggunaan komersial dibayar, namun, itu termasuk dukungan dari penyedia perangkat lunak, beberapa paket milik dan driver; CentOS - variasi sumber terbuka dari Red Hat Enterprise Linux, ditandai dengan kurangnya paket dan dukungan eksklusif.

Bagi mereka yang hanya memahami pengembangan area ini, rekomendasi saya adalah Windows Server atau Ubuntu . Jika kita mempertimbangkan Windows, maka ini terutama merupakan kebiasaan sistem, Ubuntu - lebih banyak toleransi terhadap pembaruan, dan pada gilirannya, misalnya, lebih sedikit masalah ketika memulai proyek pada teknologi yang membutuhkan versi baru.

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

Keputusan penting berikutnya adalah meng-host aplikasi dan server Anda untuk itu. Saat ini, yang paling umum adalah 3 cara:

  • Hosting (menjaga) server sendiri adalah opsi yang paling murah, tetapi Anda harus memesan IP statis dari penyedia Anda sehingga sumber daya Anda tidak mengubah alamatnya seiring waktu.
  • Sewa Server Terdedikasi (VDS) - dan kelola secara mandiri administrasi dan pemuatan skala
  • Bayar (seringkali pada saat yang sama mereka memberikan fungsionalitas platform gratis) berlangganan pada beberapa cloud hosting, di mana model pembayaran untuk sumber daya yang digunakan cukup umum. Perwakilan yang paling menonjol dari arah ini: Amazon AWS (beri tahun gratis penggunaan layanan, tetapi dengan batas bulanan), Google Cloud (beri $ 300 ke akun yang bisa dihabiskan sepanjang tahun untuk layanan hosting awan), Yandex. Cloud (beri 4000 rubel . selama 2 bulan), Microsoft Azure (memberikan akses gratis ke layanan populer selama setahun, +12.500 rubel untuk layanan apa pun selama satu bulan). Dengan demikian, Anda dapat mencoba salah satu penyedia ini tanpa mengeluarkan sepeser pun, tetapi mendapatkan perkiraan pendapat tentang kualitas dan tingkat layanan.

Tergantung pada jalur yang dipilih, di masa depan hanya fakta yang akan berubah, pada siapa, sebagian besar, adalah tanggung jawab untuk bidang administrasi tertentu. Jika Anda meng-host diri Anda sendiri, maka Anda harus memahami bahwa gangguan listrik, Internet, server itu sendiri, perangkat lunak yang digunakan - 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 memainkan peran server, maka Anda ingin menggunakan cara kedua atau ketiga. Kasus kedua identik dengan yang pertama, dengan pengecualian bahwa Anda mengalihkan tanggung jawab untuk ketersediaan server, dan kekuatannya ke bahu tuan rumah. Administrasi server dan perangkat lunak masih di bawah kendali Anda.

Dan akhirnya, opsi menyewa kapasitas penyedia cloud. Di sini Anda dapat mengonfigurasi kontrol otomatis hampir apa saja, tanpa banyak nuansa teknis. Selain itu, alih-alih satu mesin, Anda dapat memiliki beberapa instance (instance) yang berjalan secara paralel, yang, misalnya, dapat bertanggung jawab untuk bagian aplikasi yang berbeda, sementara tidak banyak berbeda dalam biaya dari kepemilikan server khusus. Dan juga, ada instrumen orkestrasi, wadah, penyebaran otomatis, integrasi berkelanjutan dan banyak lagi! Beberapa hal ini akan kami pertimbangkan di bawah ini.

Secara umum, infrastruktur server adalah sebagai berikut: kami memiliki apa yang disebut "orkestra" ("orkestrasi" - proses mengelola beberapa contoh server) yang mengelola perubahan lingkungan pada instance server, wadah virtualisasi (opsional, tetapi sering digunakan) yang memungkinkan Anda untuk membagi aplikasi pada lapisan logis terisolasi, dan perangkat lunak untuk Integrasi Berkelanjutan - yang memungkinkan memperbarui kode yang dihosting melalui "skrip".

Jadi, orkestrasi memungkinkan Anda untuk melihat status server, memutar, atau memutar kembali pembaruan lingkungan server, dan sebagainya. Pada awalnya, aspek ini tidak akan membuat Anda khawatir, karena untuk mengatur sesuatu, Anda memerlukan beberapa server (dapatkah satu, tetapi mengapa Anda membutuhkannya?), Dan untuk memiliki beberapa server, Anda memerlukannya. Dari alat-alat di area ini, sebagian besar adalah Kubernetes, yang dikembangkan oleh Google , yang didengar.

Langkah selanjutnya adalah virtualisasi tingkat OS. Sekarang konsep "buruh pelabuhan" tersebar luas, yang berasal dari alat Docker , yang menyediakan fungsionalitas wadah terisolasi satu sama lain, tetapi diluncurkan dalam konteks sistem operasi yang sama. Apa artinya ini: di masing-masing wadah ini Anda dapat menjalankan aplikasi, atau bahkan satu set aplikasi yang akan menganggap bahwa mereka adalah satu-satunya di seluruh OS, tanpa tahu tentang keberadaan orang lain di mesin ini. Fungsi ini sangat berguna baik untuk meluncurkan aplikasi yang sama dari versi yang berbeda, atau hanya aplikasi yang saling bertentangan, serta untuk membagi potongan aplikasi menjadi beberapa lapisan. Lapisan-lapisan ini selanjutnya dapat ditulis ke gambar yang dapat digunakan, misalnya, untuk menggunakan aplikasi. Yaitu, memasang gambar ini, dan memperluas wadah yang dikandungnya, Anda mendapatkan lingkungan yang siap pakai untuk meluncurkan aplikasi Anda! Pada langkah pertama, Anda dapat menggunakan alat ini baik untuk tujuan pendidikan dan untuk mendapatkan manfaat yang sangat nyata dengan menyebarkan logika aplikasi ke berbagai lapisan. Tapi, ada baiknya mengatakan di sini bahwa tidak semua orang membutuhkan buruh pelabuhan, dan tidak selalu. Docking dibenarkan dalam kasus di mana aplikasi "terfragmentasi", dibagi menjadi beberapa bagian kecil, masing-masing bertanggung jawab atas tugasnya sendiri, yang disebut "arsitektur layanan mikro".

Selain menyediakan lingkungan, kita juga perlu menyediakan penyebaran aplikasi yang kompeten, yang mencakup semua jenis transformasi kode, pemasangan perpustakaan dan paket yang terkait dengan aplikasi, tes yang sedang berjalan, pemberitahuan tentang operasi ini, dan sebagainya. Di sini kita perlu memperhatikan konsep seperti "Continuous Integration" ( CI - Continuous Integration ). Alat utama dalam bidang ini saat ini adalah Jenkins (perangkat lunak untuk CI yang ditulis di Jawa mungkin tampak agak rumit pada awalnya), Travis CI (ditulis dalam Ruby, secara subyektif, agak lebih sederhana daripada Jenkins , namun, beberapa pengetahuan dalam area konfigurasi penggunaan), Gitlab CI (ditulis dalam Ruby dan Go ).

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

Mari kita mulai dengan dasar-dasar: Backend (backend) - sisi server. Pilihan bahasa, seperangkat fungsi dasar dan struktur (kerangka kerja) yang telah ditentukan di sini ditentukan terutama oleh preferensi pribadi, namun demikian, perlu disebutkan untuk dipertimbangkan (pendapat penulis tentang bahasa cukup subyektif, meskipun dengan klaim deskripsi yang tidak bias):

  • Python adalah bahasa yang cukup ramah untuk pengguna yang tidak berpengalaman, memaafkan beberapa kesalahan, tetapi juga bisa sangat ketat dengan pengembang sehingga ia tidak melakukan hal buruk. Sudah cukup dewasa dan bermakna PL, yang muncul pada 1991.
  • Go adalah bahasa dari Google, juga cukup ramah dan nyaman, cukup mudah untuk mengompilasi dan mendapatkan file yang dapat dieksekusi pada platform apa pun. Itu bisa sederhana dan menyenangkan, atau bisa sulit dan serius. Segar dan muda, muncul relatif baru, pada tahun 2009.
  • Rust - sedikit lebih tua dari kolega sebelumnya, dirilis pada 2006, masih cukup muda sehubungan dengan saudara-saudaranya. Ini ditujukan untuk pengembang yang lebih berpengalaman, meskipun masih mencoba untuk menyelesaikan banyak tugas tingkat rendah untuk programmer.
  • Java adalah veteran pengembang komersial yang muncul pada tahun 1995, salah satu bahasa yang paling umum digunakan dalam pengembangan aplikasi perusahaan saat ini. Dengan konsep dasar dan penyetelan berat dari lingkungan runtime, ini bisa menjadi sangat rumit untuk pemula.
  • ASP.net adalah platform pengembangan aplikasi yang dirilis oleh Microsoft. Untuk menulis fungsionalitas, bahasa C # (diucapkan C Sharp) terutama digunakan, yang muncul pada tahun 2000. Kompleksitasnya sebanding dengan tingkat antara Jawa dan Karat.
  • PHP - awalnya digunakan untuk preprocessing HTML, pada saat ini, meskipun tetap mempertahankan kepemimpinan absolut di pasar bahasa, ada kecenderungan untuk menurun dalam penggunaannya. Ini fitur ambang masuk yang rendah, kemudahan penulisan kode, tetapi pada saat yang sama, ketika mengembangkan aplikasi yang cukup besar, fungsi bahasa mungkin tidak cukup.

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

Tanpa merinci, frontend modern berdiri di atas tiga pilar, kerangka kerja (dan tidak terlalu banyak), untuk membuat antarmuka pengguna. Dengan demikian, tiga yang paling populer adalah:

  • ReactJS bukan kerangka kerja, tetapi perpustakaan. Sebenarnya, kerangka kerjanya berbeda dari judul bangga hanya dengan tidak adanya beberapa fungsi "di luar kotak", dan kebutuhan untuk menginstalnya secara manual. Dengan demikian, ada beberapa variasi "persiapan" perpustakaan ini, membentuk semacam kerangka kerja. Untuk seorang pemula, ini bisa rumit, karena beberapa prinsip dasar, dan pengaturan lingkungan perakitan yang cukup agresif. Namun, untuk memulai lebih cepat, Anda dapat menggunakan paket "create-react-app".
  • VueJS adalah kerangka kerja untuk membangun antarmuka khusus. Dari trinitas ini, ia berhak mengambil judul kerangka kerja yang paling user-friendly, untuk pengembangan di Vue ambang masuk lebih rendah daripada saudara-saudara lain yang dikutip. Selain itu, di antara mereka dia adalah yang termuda.
  • Angular - dianggap sebagai kerangka paling rumit yang diberikan, satu-satunya kerangka kerja yang membutuhkan TypeScript (tambahan untuk bahasa Javascript). Sering digunakan untuk membangun aplikasi perusahaan besar.

Meringkas hal di atas, kita dapat menyimpulkan bahwa sekarang penyebaran aplikasi pada dasarnya berbeda dari cara proses ini berlangsung. Namun, tidak ada yang mengganggu untuk melakukan "penyebaran" dengan cara kuno. Tetapi apakah itu sepadan dengan sedikit waktu yang dihemat di awal - sejumlah besar penggaruk yang harus diinjak pengembang? Saya percaya jawabannya tidak. Setelah menghabiskan sedikit lebih banyak waktu untuk berkenalan dengan alat-alat ini (dan Anda tidak membutuhkan lebih banyak, karena Anda perlu memahami apakah Anda membutuhkannya dalam proyek saat ini atau tidak), Anda dapat memainkannya, secara signifikan mengurangi, misalnya, kasus kesalahan hantu yang bergantung pada lingkungan dan memanifestasikan hanya pada server produksi, penguraian malam hari, yang menyebabkan server mogok dan mengapa tidak dimulai, dan banyak lagi.

Source: https://habr.com/ru/post/id446642/


All Articles