Ingat hari-hari ketika tumpukan teknologi web itu sederhana? Kapan tingkat tumpukan ini dapat ditunjuk dalam bentuk pengurangan empat huruf seperti LAMP, LEMP atau LEPP? Ketika semua yang diperlukan untuk membuat dan memelihara situs dikurangi menjadi perangkat keras yang sepenuhnya biasa, untuk beberapa perangkat lunak open source, dan untuk bertahan dalam mencapai tujuan?
Situs sukses pertama saya, sekarang merupakan proyek lama tahun 1999, dibuat menggunakan teknologi yang dapat dihitung dengan satu tangan: HTML4, CSS2, JavaScript3 dan Apache 1.1. Semua ini berputar pada server dengan Linux 2.0. Situs ini mencakup 38.000 halaman. Dan hari ini, setelah 20 tahun,
dia masih menerbitkannya .

Sejak itu, semuanya telah berubah. Ini juga berlaku untuk tumpukan teknologi web. Sekarang mereka sama sekali tidak sama seperti sebelumnya.
Penulis artikel, terjemahan yang kami terbitkan hari ini, ingin berbicara tentang bagaimana ia pindah dari tumpukan penuh ke tumpukan 2020. Beberapa teknologi secara tak terduga menjadi favorit selama perjalanan ini, dan beberapa kehilangan daya tarik sebelumnya.
Stack Web 2020
2020 adalah awal dekade baru. Inilah saatnya untuk berbicara tentang tumpukan teknologi web baru.
Seperti apa bentuk tumpukan 2020? Saya harus mengatakan bahwa ini sangat dipengaruhi oleh apa yang coba dicapai oleh pengembang situs. Memilih level yang tepat sangat tergantung pada tingkat skalabilitas yang diperlukan untuk proyek.
Saya sangat tertarik pada situs web kecil. Mereka yang merasa nyaman di server virtual. Situs-situs ini tidak memerlukan load balancers atau penyimpanan data yang persisten. Ini adalah ceruk CMS yang telah lama ditempati WordPress. Tetapi pada intinya semua ini bukan semacam server minimalis. Sebaliknya, kita berbicara tentang suatu sistem yang dapat menahan arus lalu lintas yang konstan tanpa perlu secara otomatis meningkatkan kekuatannya selama jam sibuk.
Sekarang untuk pengembangan dan dukungan proyek di bidang yang saya minati, saya menggunakan tumpukan teknologi yang terdiri dari 12 level.
β1. Penyedia cloud
Basis tumpukan saya adalah penyedia cloud yang memperhitungkan kebutuhan mereka yang terbiasa mengatur lingkungan di mana proyek web mereka dijalankan. Saya menggunakan server saya sendiri sampai biaya dukungan mereka menjadi terlalu tinggi. Menyewa ruang di rak server, alamat IP khusus, memastikan bandwidth yang diperlukan ... Semua ini berkontribusi pada biaya bulanan server fisik. Tetapi ransomware yang sebenarnya adalah biaya listrik. Penyedia cloud jauh lebih murah daripada $ 1,25 per hari yang saya kirim ke pemasok listrik. Menolak pengeluaran seperti itu membuat saya bisa menghemat ratusan dolar setahun.
β2. Distribusi Fedora Linux dengan SELinux
Keamanan adalah hal yang benar-benar mengganggu kita semua. SELinux dapat dibandingkan dengan sistem keamanan yang kuat yang berjalan di Linux. Jika kita menambahkan iptables-firewall yang terkonfigurasi dengan baik, itu akan memungkinkan pemilik situs untuk tidur nyenyak di malam hari. Jika Anda tidak yakin perlu semua ini, lakukan percobaan berikut. Menyebarkan server baru di penyedia cloud favorit Anda dan menonton bagaimana itu akan diserang segera. Saya melihat bagaimana serangan brute force pada server baru dengan upaya masuk SSH dimulai kurang dari 10 menit setelah mereka dibuat.
β3. Layanan Baca Baca Server Server
Saya menggunakan server web Read Write Serve dengan sertifikat TLS dari LetsEncrypt. Saya dulu penggemar Apache, hanya butuh beberapa menit untuk membuat dan meluncurkan situs web baru. Tetapi karena saya beralih dari PHP ke JavaScript, saya harus melupakan Apache. Server Express bagi saya merupakan alat yang sangat sederhana, tetapi hanya sampai saya mencoba mereproduksi semua fungsi yang diberikan oleh Apache kepada saya. Kita berbicara tentang mekanisme koordinasi konten, tentang caching bersyarat, tentang kompresi data, tentang penulisan ulang URL untuk SEO, tentang CORS, tentang kebijakan perlindungan konten. Akibatnya, saya beralih ke server Read Write Serve, di mana semua fitur ini ada secara default.
β4. Aplikasi Runtime Node.js
Lingkungan Node.js bertanggung jawab atas logika aplikasi yang berjalan di server. Ada perasaan bahwa dalam ekosistem NPM ada paket untuk semua kesempatan. Oleh karena itu, tugas mengumpulkan dari paket yang tersedia apa yang saya butuhkan dengan tepat dan meluncurkan semua ini pada Baca Tulis Melayani ternyata sederhana dan jelas. Untuk mengatur pekerjaan semua yang diperlukan untuk proyek web modern, Anda tidak perlu melakukan upaya berlebihan. Ini mengirim email, bekerja dengan layanan pembayaran, mengakses database, dan yang lainnya, menyiratkan bekerja dengan API server.
β5. Database MariaDB
Saya menggunakan server database MariaDB. Ini adalah fork dari MySQL yang diberi nama baru dan dikuasai oleh komunitas open source. Ketika saya perlu menyimpan data JSON yang tidak terstruktur, saya menggunakan PostgreSQL. Faktanya adalah ini memungkinkan saya untuk mengeksekusi permintaan langsung pada properti JSON tertentu. Ini sedikit seperti MongoDB, tetapi berdasarkan sintaks SQL yang sudah dikenal.
β6. HTTP / 2
Saya mengandalkan kemampuan HTTP / 2 dengan koneksi terus-menerus dan stream multiplexing untuk berkomunikasi antar bagian aplikasi. Ini adalah dua tambahan pada protokol HTTP / 1.1 yang terhormat. mengubah pendekatan saya pada pembentukan dokumen. Pertama, masalah pemblokiran awal antrian telah hilang. Akibatnya, kebutuhan untuk daftar sprite telah menghilang bahkan jika saya memiliki puluhan gambar kecil. Kedua, sekarang tidak perlu mengoptimalkan file JavaScript dan CSS dengan menggabungkannya ke dalam bundel. Setelah koneksi client-server dibuat, semua file kecil ini ditransfer tanpa gangguan melalui koneksi ini.
β 7. Template HTML Menggunakan Frase Biru
Blue Phrase adalah sistem template yang memungkinkan Anda untuk secara akurat menggambarkan struktur HTML dalam bentuk yang ringkas. Bagi saya, waktu hash kode HTML yang tidak dapat dibaca dan perbedaan antara tag pembuka dan penutup telah berakhir. Dalam template, saya biasanya hanya menggunakan sejumlah kecil variabel (judul, deskripsi, kata kunci, data SEO, memuat layar, tanggal, dan sebagainya) dan menempatkannya dalam templat dengan gaya deklaratif.
β8. Menulis Kode Halaman Menggunakan Baca Tulis Doc
Ketika saya membuat halaman baru, saya fokus pada apa yang saya coba ekspresikan, bukan pada desain. Untuk mengatasi masalah ini, saya menggunakan Baca Tulis Doc. Alat ini membantu saya melakukan bisnis tanpa terganggu oleh apa pun. Saya menggunakannya bahkan ketika apa yang sedang saya kerjakan rencananya akan diterbitkan di Medium (dan ada editor WYSIWYG online yang sangat baik). Saya menganggap diri saya seorang veteran pengembang web, jadi saya terbiasa dengan font monospace, dan untuk memastikan bahwa tangan saya akan berada di keyboard, dan tidak terburu-buru antara keyboard dan mouse. Bagaimanapun, jika saya perlu melihat apa yang sedang saya kerjakan dengan CSS yang diterapkan padanya, saya bisa, menggunakan kombinasi tombol sederhana, beralih antara mode tampilan dan pengeditan.
β 9. Komponen web standar
Di bidang bekerja dengan komponen web, saya mematuhi standar W3C. Ini adalah bayangan DOM, elemen pengguna,
<template>
HTML, modul ECMAScript. Ini memungkinkan saya untuk sepenuhnya memasukkan semua yang saya butuhkan ke dalam paket yang saya distribusikan melalui NPM. Bagi saya, keuntungan terbesar dari semua ini adalah tingkat isolasi yang disediakan bayangan DOM. Ini memungkinkan kami untuk menyingkirkan kutukan CSS, dari mencemari ruang nama.
β 10. JavaScript untuk skrip klien
Untuk menulis skrip klien, saya menggunakan kode JavaScript berorientasi objek modular. Saya menerapkan fitur baru dari standar ECMAScript hanya ketika dukungan mereka muncul di rilis browser terbaru. Yaitu, saya memasukkan mereka ke dalam gudang senjata saya saat saya melihat bahwa semua peramban utama "
berubah menjadi hijau" di
caniuse.com . Saya menghindari polyfill.
β11. Penataan CSS
CSS adalah tipografi dan tata letak halaman. Tipografi dimulai dengan pemilihan font yang tepat. Yang paling penting bagi saya adalah keterbacaan teks yang baik. Baru-baru ini, saya membuat aturan untuk meng-host file font yang digunakan di server saya sendiri. Ini melindungi sumber daya saya dari kemungkinan pemblokiran yang disebabkan oleh bandwidth terbatas dari beberapa layanan pihak ketiga. Sebagai contoh, saya menggunakan kira-kira konstruksi berikut:
<link href='/fonts/source-serif-pro-400-latin.woff2' rel=preload as=font crossorigin />
Keuntungan tambahan dari pendekatan ini adalah ia benar-benar menyelamatkan saya dari masalah yang dikenal sebagai FOUT - (flash teks tanpa gaya, flash font biasa).
β 12. Mempersiapkan sumber daya grafis dengan GIMP dan InkScape
Dan akhirnya, untuk menyiapkan sumber daya grafis, saya menggunakan beberapa editor. Saya menyiapkan gambar bitmap PNG menggunakan GIMP, dan bahan-bahan vektor SVG menggunakan InkScape.
Teknologi yang telah kehilangan daya tarik sebelumnya
Beberapa alat yang benar-benar saya sukai sebelumnya, serta beberapa yang hanya saya sukai sebentar, tidak lagi termasuk dalam tumpukan teknologi web saya.
Teknologi yang telah menjadi favorit
Berikut ini adalah ikhtisar tingkat tumpukan teknologi saya yang sangat saya kagumi:
- Modul JavaScript. Modul telah membuktikan diri dalam kode JavaScript sisi server. Dan saya sangat senang akhirnya saya bisa menggunakannya di sisi klien.
- JavaScript Berorientasi Objek Berikut adalah lima aturan emas untuk pengembangan JavaScript berorientasi objek:
- Ganti objek anonim dengan kelas bernama.
- Deklarasikan dan inisialisasi semua properti objek dalam konstruktor.
- Lindungi objek dari perubahan segera setelah pembuatan.
- Nyatakan metode dengan tanda tangan abadi.
- Ikat
this
ke setiap panggilan balik.
- Frasa Biru Sistem ini memungkinkan saya untuk menggunakan pendekatan deklaratif saat membuat template dan menyiapkan berbagai bahan. Itu membuat menulis kode HTML yang berkualitas sangat menyenangkan.
Ringkasan
Sebelumnya, tumpukan teknologi web bisa mencakup hanya empat elemen. Tetapi dalam kondisi modern Anda tidak akan mengejutkan siapa pun dengan tumpukan dua belas level. Saya tidak ingin terlihat seperti orang yang menyuarakan kebenaran terkenal, tetapi, bagaimanapun, menyelesaikan materi ini, saya akan mengatakan bahwa setiap pengembang dapat memiliki tumpukan sendiri. Dan akan sangat menarik bagi saya untuk belajar tentang apa yang orang lain sebut sebagai "tumpukan ideal teknologi web tahun 2020".
Pembaca yang budiman! Dan apa milik Anda - tumpukan teknologi web Anda pada tahun 2020?
Penafian dari penerjemah: Blue Phrase, Read Write Serve dan Read Write Doc - teknologi yang dikembangkan oleh penulis artikel ini. Pengunduhan dan pemasangan adalah risiko Anda sendiri.