
Perusahaan Zfort Group telah memutuskan untuk tidak memperpanjang langganan perusahaan ke Habré.
Tapi ada kabar baik:
Kami ingin mengumumkan peluncuran situs yang diperbarui zfort.com.ua , berbicara secara singkat tentang beberapa fitur teknis pembuatan situs, dan juga menginformasikan tentang keputusan untuk mentransfer publikasi cerna dari Habr ke blog situs baru. Di blog situs baru kami, kami akan terus menerbitkan intisari, artikel, dan mengumumkan pertemuan profesional. Anda dapat berlangganan semua pembaruan dan publikasi untuk tetap mendapat informasi dan tidak ketinggalan apa pun.
Versi singkat dari pencernaan juga akan tetap di Habré, tetapi tidak akan dipublikasikan di blog perusahaan Zfort Group, tetapi di akun alexzfort .
Salah satu tujuan yang kami tetapkan untuk diri sendiri adalah memperbarui situs kami yang ditujukan untuk audiens lokal, agar cepat dan mudah. Melengkapi situs dengan bagian-bagian untuk menampilkan berita perusahaan terbaru, pengumuman acara yang sedang berlangsung dan mempublikasikan intisari / artikel dalam waktu singkat dengan fleksibilitas maksimum dan kemampuan untuk berkembang.
Dan sekarang lebih lanjut tentang detail membuat situs yang diperbarui zfort.com.ua
Awalnya, tiga bidang utama pengembangan situs yang diperbarui dipertimbangkan:
- Buat situs berdasarkan WordPress;
- Kembangkan situs dari awal pada tumpukan LAMP berdasarkan pengalaman kami sendiri;
- Menerapkan situs berdasarkan pendekatan JAMstack tidak konvensional. Ini adalah pendekatan alternatif yang menawarkan banyak alat untuk dipilih untuk membuat situs statis, tetapi dengan konten yang ditambahkan dan dikelola secara dinamis. Opsi ini menyiratkan pengembangan situs berdasarkan penggunaan layanan yang ada, digabungkan menjadi satu ekosistem tunggal untuk mengelola dan menerbitkan konten.
Setelah mempertimbangkan kemungkinan opsi, diputuskan untuk pergi ke jalan ketiga dan meninggalkan sisi server kustom pada Symfony atau WordPress yang mendukung teknologi Serverless, yang akan memungkinkan untuk mendapatkan keuntungan berikut:
- mengurangi waktu untuk pengembangan, pengujian, dukungan lebih lanjut dan memperbaiki kesalahan;
- mengurangi waktu untuk penyebaran lingkungan, konfigurasi dan dukungan server;
- Dapatkan infrastruktur proyek yang berasal dari cloud, alih-alih memiliki solusi lokal / mandiri;
- untuk membangun seluruh proyek dalam bentuk ekosistem yang berinteraksi dengan Microsoft, alih-alih arsitektur monolitik klasik;
- Dapatkan sistem manajemen konten yang fleksibel, dapat membuat struktur konten, port konten ke sistem lain, dan sebagainya.
Versi terpilih dari pengembangan situs zfort.com.ua menyiratkan kemungkinan maksimum (dengan beberapa batasan) menghindari server web tradisional, dan sebagai gantinya, membangun seluruh sistem berdasarkan pada teknologi Serverless, yang melibatkan beberapa layanan yang saling berinteraksi.
Juga, selama perencanaan dan pengembangan, kami mengejar tujuan - untuk mendapatkan solusi di mana frontend akan diikat secara maksimal dari backend situs.
Komponen utama yang mendasari situs:
- CMS berbasis API Headless (SaaS) untuk mengelola konten situs;
- Generator situs statis;
- Layanan atau fungsionalitas penanganan formulir;
- Repositori kode sumber dan sistem kontrol versi;
- Platform penyebaran dan hosting - platform yang mampu mendengarkan notifikasi webhook, mulai membangun, dan menyebarkan situs ke produksi;
- Platform pengiriman email.
Sesuai dengan masing-masing komponen, diputuskan untuk menggunakan:
- Contentful.com - sebagai CMS berbasis Headless API
- GatsbyJS - sebagai kerangka kerja untuk menghasilkan halaman situs HTML statis;
- Fungsi kustom PHP (Symfony) sebagai penangan formulir situs;
- GitLab sebagai repositori kode sumber proyek dan sistem kontrol versi;
- Rackspace - sebagai penyedia hosting;
- SendGrid - sebagai sistem untuk mengirim email, serta sistem untuk menyimpan dan mengelola template email.
Juga, pengelolaan lowongan yang ditampilkan pada halaman situs dilakukan langsung dalam sistem Perekrutan Zoho.
Layanan yang dipilih sebagai alternatif untuk pengembangan kustom bagian admin dari manajemen konten untuk zfort.com.ua adalah ontentful.com . Produk ini adalah platform manajemen konten dengan panel adminnya. Sesuatu seperti cloud CMS, tetapi tanpa antarmuka pengguna. Hanya ada panel admin.


Memperoleh konten untuk ditampilkan pada halaman-halaman situs dilakukan melalui API Contentful. Dalam kasus kami, kami menggunakan plugin gatsby-source-contentful untuk mendapatkan jenis konten, entri, dan aset di Gatsby dari ruang Contentful.
Selain infrastruktur manajemen konten, Contentful memberikan kemampuan untuk mengubah ukuran, memotong, dan memampatkan gambar melalui API Gambar.
Kelebihan dari pendekatan yang dipilih:
Performa dan kecepatan menampilkan situs di browser. Sebagai hasil dari pembuatan halaman runtime tidak terjadi, HTML di-cache dan ditampilkan kepada pengguna hampir secara instan. Selain itu, dimungkinkan untuk mentransfer situs sepenuhnya ke CDN, yang, pada gilirannya, selain meningkatkan kecepatan kerja, memungkinkan Anda untuk menskalakannya dengan alat CDN;
Arsitektur terdistribusi yang memungkinkan Anda untuk mengganti komponen situs kapan saja dengan upaya yang relatif minimal. Semua layanan dipisahkan satu sama lain, di mana setiap layanan adalah aplikasi dengan logikanya sendiri. Logikanya tidak tercampur, tim pengembangan masing-masing modul dapat bekerja hampir secara independen satu sama lain;
Keamanan Bahkan, sebuah situs adalah kumpulan file statis pra-dihasilkan. Secara umum, semua fungsi dinamis situs dialokasikan ke layanan pihak ketiga yang terpisah, interaksi yang terjadi melalui API dan hanya pada saat menghasilkan atau memperbarui konten. Akibatnya, tidak ada plugin di mana Anda dapat menemukan kerentanannya. Pendekatan ini juga mengurangi risiko diretas melalui injeksi SQL;
Portabilitas fenomenal . Persyaratan hosting untuk situs yang dihasilkan minimal. Situs statis dapat di-host di salah satu situs hosting yang memungkinkan penyimpanan file statis;
Kecepatan pengembangan dan kurangnya kebutuhan akan dukungan kode yang konstan. Semua file konfigurasi yang diperlukan untuk menghasilkan halaman situs, serta template untuk menghasilkan halaman HTML, disimpan di GitLab. Didasarkan pada kesempatan untuk menggunakan kembali solusi yang sudah jadi karena beberapa layanan mikro yang saling berinteraksi. Seperti disebutkan di atas, sebagai bagian admin untuk mengisi konten, kami menggunakan Contentful, pekerjaan dengan lowongan dilakukan dalam sistem Perekrutan Zoho.
Namun, ada beberapa kesulitan dengan pendekatan ini:
Kompleksitas sinkronisasi dan pembaruan konten situs dari sistem pihak ketiga. Masalahnya dipecahkan dengan menyiapkan webhook dengan benar, serta penggunaan, dan penanganannya dengan cermat;
Mungkin ada masalah menghubungkan pustaka JS pihak ketiga saat server menghasilkan halaman HTML di situs. Masalah ini diselesaikan, meskipun dengan beberapa nuansa;
Kurangnya sisi server tradisional memperkenalkan kesulitannya sendiri dan memaksakan pembatasan dalam kasus di mana, misalnya, perlu untuk menerapkan pencarian. Namun, masalah pencarian juga dapat diselesaikan menggunakan layanan pihak ketiga seperti Algolia, dll.
Diagram di bawah ini secara skematis menunjukkan arsitektur situs zfort.com.ua , serta interaksi komponen utama.

GatsbyJS bekerja dengan data menggunakan protokol GraphQL - saat membangun, kami mendapatkan data dari API layanan pihak ketiga dan membuat basis lokal dari simpul GraphQL.
Selanjutnya, permintaan GraphQL ditulis dalam komponen untuk mendapatkan data yang dibutuhkan di tempat tertentu dan HTML dibangun berdasarkan template jsx.
Untuk bekerja dengan Zoho Recruit, plugin Gatsby khusus ditulis, yang menerima data dengan API dan menambahkan data yang diperlukan ke basis data GraphQL.
Secara umum, jika perlu, Anda dapat menolak untuk menggunakan sistem manajemen konten dan mengelola konten situs dengan mengubah file .md yang terletak langsung di folder situs di hosting file statis. Semua data awalnya ditambahkan ke GraphQL, dan sebagai hasilnya, Anda dapat mencari, mengurutkan, dan sebagian besar operasi pengumpulan dan pencarian paling sederhana lainnya.
Untuk memproses permintaan dari formulir, layanan kustom terpisah dibuat menggunakan Symfony 4. Untuk dapat melihat data yang diterima dari beberapa formulir situs, aplikasi dibuat menggunakan Symfony 4 (SonataAdminBundle).
Segera, situs ini akan menyajikan bagian terbaru pada ZDay - serangkaian pertemuan profesional reguler berdasarkan perusahaan Grup Zfort.
Banyak terima kasih kepada semua orang yang telah bersama kami di Habré selama bertahun-tahun, untuk semua yang membaca, berkomentar aktif, mengajukan pertanyaan.
Kunjungi situs kami untuk terus menerima konten segar yang biasa Anda gunakan, serta berlangganan email nawala di area yang Anda minati.