Memindahkan portal web: dari monolit ke arsitektur layanan mikro

Kami berbagi pengalaman memodernisasi arsitektur portal web, yang memungkinkan produk ini nyaman, stabil, dan toleran terhadap kesalahan: lalu lintas meningkat dari 350 ribu menjadi 7 juta pengguna! Kisah ini akan bermanfaat bagi mereka yang berencana untuk memperluas produk mereka. Pertama, kita akan melihat faktor-faktor apa yang dapat mengganggu pekerjaan dan pengembangan portal web:

  • Usang. Pendekatan kegunaan, adaptasi ke perangkat yang berbeda, penampilan dasar dan struktur berhenti untuk memenuhi kebutuhan audiens dari waktu ke waktu.
  • Keusangan teknologi. Standar dan teknologi web terus berkembang. Perubahan memengaruhi kedua perangkat pengembang (misalnya, kerangka kerja, basis data, perangkat lunak lain), dan fondasi dasar web. Dari yang relatif baru - transisi besar-besaran dari http ke https dan pengabaian dukungan untuk DNS lawas.
  • Kesalahan dan kerusakan. Pengembang dapat secara tidak sempurna mengatasi tugas mereka dan membiarkan kekurangan. Sebagai akibatnya, pelanggaran situs dapat terjadi - dimulai dengan fakta bahwa tombol tidak berfungsi pertama kali, hingga sistem benar-benar gagal.

Kasing

Kami didekati oleh klien yang portal webnya membutuhkan pengembangan lebih lanjut. Pada titik tertentu, langit-langit 350 ribu pengunjung unik dicapai setiap bulan. Ini tampaknya tidak cukup - proyek ini jelas memiliki prospek, dan kami harus mencari tahu apa yang sebenarnya menghalangi peningkatan sumber daya.

Audit

Ternyata mesin Bitrix lama tidak disesuaikan dengan beban dan penskalaan. Setiap komponen tunggal dari sistem berpotongan erat dan saling bergantung. Memperbaiki bug secara konstan adalah tugas yang sangat menyebalkan sehingga kami mengusulkan arsitektur layanan mikro yang fleksibel dan dapat dipahami. Di dalamnya, setiap komponen cukup independen sehingga kesalahan di dalamnya tidak "melukai" elemen-elemen sistem yang tersisa.

Bitrix tetap menjadi dasar arsitektur - setidaknya, otorisasi terkait dengannya, tetapi jika memungkinkan dan menjanjikan efisiensi yang besar, kami mentransfer fungsionalitas ke layanan-layanan microsoft. Mereka menjadi landasan proyek.

Arsitektur gabungan yang baru telah memberi kami operasi sistem yang stabil dan lebih cepat serta hampir tidak ada kesalahan pada beberapa modul. Ini juga berfungsi sebagai dasar untuk pekerjaan pemasar yang efektif. Berkat arsitektur yang ditingkatkan, spesialis promosi berhasil meningkatkan kehadiran sumber daya sebanyak 20 kali.



Layanan microser

Dalam layanan microser yang berdiri sendiri, kami membedakan modul seperti pemuat file, pencarian, dan umpan berita. Selain hal-hal yang mudah digunakan dan jelas ini, banyak elemen fungsional lainnya diimplementasikan dalam bentuk layanan-mikro:

  • Bongkar, penyimpanan, dan pengelolaan data dari proyek sumber terbuka;
  • Penciptaan dinamis umpan RSS;
  • Penciptaan dinamis sistem blok, tata letak bahan dari layanan apa pun menjadi blok struktural;
  • Menambahkan data tambahan ke materi layanan;
  • Layanan dukungan teknis;
  • Katalog tunggal dari berbagai data.

Selain semua hal di atas, kami telah membuat banyak layanan microser untuk pekerjaan mudah dengan panel admin.



Setiap blok fungsional situs telah menjadi unit yang cukup otonom. Proses khusus digunakan untuk memuat dan merender, meminimalkan persimpangan dengan layanan lain.

Setuju, ketika pengguna melakukan pembayaran, ia tidak akan mau menunggu lama untuk memuat skrip yang bertanggung jawab untuk memutar video yang tidak diperlukannya di bagian lain halaman. Memang, inilah yang terjadi dalam sistem monolitik - fungsi samping kadang-kadang mengganggu pekerjaan komponen yang sangat penting.

Kami mengambil langkah pertama dan membuat hidup lebih mudah bagi pengguna dan pengembang, merilis lebih dari 20 layanan baru per tahun. Sebagai hasilnya:

  • Kami memecahkan masalah penskalaan.
  • Menerapkan proses pengembangan yang lebih efisien oleh tim yang didistribusikan.
  • Atur manajemen sumber daya yang dinamis untuk operasi sistem yang lancar dan cepat.


Peningkatan Teknologi Stack

Secara paralel, kami memperbarui tumpukan teknologi. Jika portal awalnya didasarkan pada php 5.6 dan MySQL 5.6, maka dalam proses meningkatkan mesin, kami beralih ke php 7.0 dan MySQL 5.7. Menerapkan kerangka kerja Yii2, menyediakan caching memcache.



Antrian tugas

Untuk membuat tugas paralel yang lebih baik, kami memindahkan pekerja web - penangan internal - ke antrian RabbitMQ. Ini mengoptimalkan urutan peristiwa pemicu, yang mengurangi beban pada sistem. Bekerja dengan situs telah menjadi jauh lebih cepat dan lebih nyaman.

Integrasi berkelanjutan

Proses pengembangan yang transparan dan mudah dikelola didukung menggunakan GitLab CI. Ini adalah pengembangan tanpa henti yang benar-benar berkelanjutan yang membuat programmer dan penguji lebih banyak waktu dengan pertanyaan-pertanyaan penting alih-alih menambal lubang.

Untuk meminimalkan kesalahan, kami memperkenalkan loop pengembangan tambahan. Rantai ini terdiri dari beberapa loop pengujian aplikasi dan infrastruktur: pra-rilis, tempat pengujian perakitan terbaru (pra-prod), pertempuran (prod), beberapa loop uji untuk menguji beberapa build sekaligus, serta loop untuk pengembang, diadakan.

Sistem perakitan

Pada tahap awal, build dibuat dari sumber proyek. Alih-alih seperangkat kelas, gaya, dan penangan yang berbeda, entitas gabungan digunakan - masing-masing dalam shell dari satu file yang dapat dieksekusi. Hanya konstruksi yang diperlukan ditempatkan di majelis untuk melakukan acara di halaman. Ini juga memberikan fleksibilitas dan kecepatan situs.

Pemantauan kesalahan

GitLab CI menyediakan fitur-fitur canggih untuk validasi kode dan pengujian otomatis. Pada perbedaan terkecil dari rakitan dengan parameter yang diberikan, sistem memberi tahu pengembang dan tidak mengizinkan untuk memulai proses implementasi komponen lebih lanjut sampai perbaikan bug. Selain itu, kami memasang Sentry, alat pemantauan kesalahan lengkap.



Optimalisasi proses

Untuk mempertahankan sistem dalam keadaan kinerja tinggi, kami secara konsisten mengoptimalkan proses dan infrastruktur bisnis. Pustaka bersama dan prototipe layanan menjadi dasar bagi implementasi cepat fungsi-fungsi baru - kami mengambil templat yang sudah jadi dan dalam waktu singkat kami mendapatkan produk yang berfungsi.

Pemantauan dan operasi

Semua proses dalam tampilan penuh. Memantau status setiap node yang kami sediakan Zabbix - sistem pelacakan komprehensif. Kami mendapat kesempatan untuk melihat inti dari struktur proyek dan melihatnya secara kompak.

Kami juga menghubungkan platform Grafana, yang mengubah data kering menjadi dasbor visual untuk kenyamanan karyawan pelanggan.

Stabilisasi dan refactoring

Seperti yang diperlukan, kami refactored sistem - kode disederhanakan dan menjadi ringkas. Pada saat yang sama, selalu ada ruang untuk tumbuh, karena doping sistem yang teratur mempercepat situs. Akibatnya, sumber daya menjadi lebih ramah bagi mesin pencari dan pengguna.

Arsitektur baru adalah dasar untuk pertumbuhan

Pada awal pekerjaan, sumber daya memiliki potensi promosi yang rendah dan tidak cukup nyaman bagi pelanggan, yang menghambat proses bisnis perusahaan. Untuk meningkatkan proses interaksi pengguna dengan situs, kami hampir sepenuhnya memperbarui arsitektur portal dan strukturnya, menciptakan mekanisme fleksibel yang terintegrasi dengan sejumlah besar layanan dan aplikasi, berkat API kami sendiri. Banyak layanan telah bekerja secara optimal selama lebih dari satu tahun, tanpa memerlukan intervensi - jumlah kesalahan dalam pekerjaan mereka telah menurun hingga hampir nol.

Situs baru adalah alat yang ampuh untuk pengembangan bisnis, dengan potensi untuk penskalaan lebih lanjut. Dengan menggunakan arsitektur aplikasi web yang diperbarui, pemasar proyek dapat mengimplementasikan berbagai kegiatan promosi mereka dan meningkatkan lalu lintas dari 350 ribu pengunjung unik per bulan menjadi lebih dari 7 juta. Apalagi, setelah beberapa kali peningkatan jumlah penonton, portal terus berfungsi dengan stabil.

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


All Articles