Komponen arsitektur aplikasi dapat dikategorikan sebagai frontend atau backend. Dalam beberapa skenario, komponen ini dapat dihosting untuk dioperasikan dari lingkungan komputasi yang berbeda. Sebagai bagian dari pola arsitektur hibrida bertingkat, lingkungan komputasi berada di lingkungan komputasi pribadi lokal dan di Google Cloud.
Komponen aplikasi frontend terekspos secara langsung ke pengguna akhir atau perangkat. Akibatnya, aplikasi ini sering kali sensitif terhadap performa. Untuk mengembangkan fitur dan peningkatan baru, update software dapat sering dilakukan. Karena aplikasi frontend biasanya mengandalkan aplikasi backend untuk menyimpan dan mengelola data, serta mungkin logika bisnis dan pemrosesan input pengguna, aplikasi tersebut sering kali bersifat stateless atau hanya mengelola volume data terbatas.
Agar dapat diakses dan digunakan, Anda dapat membangun aplikasi frontend dengan berbagai framework dan teknologi. Beberapa faktor utama untuk keberhasilan aplikasi frontend meliputi performa aplikasi, kecepatan respons, dan kompatibilitas browser.
Komponen aplikasi backend biasanya fokus pada penyimpanan dan pengelolaan data. Dalam beberapa arsitektur, logika bisnis mungkin disertakan dalam komponen backend. Rilis baru aplikasi backend cenderung lebih jarang daripada rilis untuk aplikasi frontend. Aplikasi backend memiliki tantangan berikut yang harus dikelola:
- Menangani permintaan dalam jumlah besar
- Menangani data dalam jumlah besar
- Mengamankan data
- Mempertahankan data saat ini dan yang diperbarui di semua replika sistem
Arsitektur aplikasi tiga tingkat adalah salah satu penerapan paling populer untuk membangun aplikasi web bisnis, seperti situs e-commerce yang berisi komponen aplikasi berbeda. Arsitektur ini berisi tingkat berikut. Setiap tingkat beroperasi secara independen, tetapi terkait erat dan semuanya berfungsi bersama-sama.
- Tingkat presentasi dan frontend web
- Tingkat aplikasi
- Tingkat backend atau akses data
Menempatkan lapisan ini ke dalam container akan memisahkan kebutuhan teknis mereka, seperti persyaratan penskalaan, dan membantu memigrasikannya dalam pendekatan bertahap. Selain itu, Anda dapat men-deploy-nya di layanan cloud agnostik platform yang dapat portable di seluruh lingkungan, menggunakan pengelolaan otomatis, dan melakukan penskalaan dengan platform yang dikelola cloud, seperti Cloud Run atau edisi Google Kubernetes Engine (GKE) Enterprise. Selain itu, database yang dikelola Google Cloud seperti Cloud SQL membantu menyediakan backend sebagai lapisan database.
Pola arsitektur hybrid bertingkat berfokus pada men-deploy komponen aplikasi frontend yang ada ke cloud publik. Dalam pola ini, Anda menyimpan komponen aplikasi backend yang ada di lingkungan komputasi pribadi. Bergantung pada skala dan desain spesifik aplikasi, Anda dapat memigrasikan komponen aplikasi frontend berdasarkan kasus per kasus. Untuk mengetahui informasi selengkapnya, lihat Bermigrasi ke Google Cloud.
Jika Anda sudah memiliki aplikasi dengan komponen backend dan frontend yang dihosting di lingkungan lokal, pertimbangkan batasan arsitektur Anda saat ini. Misalnya, saat aplikasi Anda diskalakan dan permintaan pada performa dan keandalannya meningkat, Anda harus mulai mengevaluasi apakah bagian dari aplikasi Anda harus difaktorkan ulang atau dipindahkan ke arsitektur yang berbeda dan lebih optimal. Dengan pola arsitektur hibrida bertingkat, Anda dapat mengalihkan beberapa workload dan komponen aplikasi ke cloud sebelum melakukan transisi lengkap. Sangat penting untuk mempertimbangkan biaya, waktu, dan risiko yang terlibat dalam migrasi tersebut.
Diagram berikut menunjukkan pola arsitektur hibrida bertingkat standar.
Dalam diagram sebelumnya, permintaan klien dikirim ke frontend aplikasi yang dihosting di Google Cloud. Selanjutnya, frontend aplikasi akan mengirimkan data kembali ke lingkungan lokal tempat backend aplikasi dihosting (idealnya melalui gateway API).
Dengan pola arsitektur hibrida bertingkat, Anda dapat memanfaatkan infrastruktur Google Cloud dan layanan global, seperti ditunjukkan dalam contoh arsitektur dalam diagram berikut. Frontend aplikasi dapat dijangkau melalui Google Cloud. Platform ini juga dapat menambahkan elastisitas ke frontend dengan menggunakan penskalaan otomatis untuk merespons permintaan penskalaan secara dinamis dan efisien tanpa menyediakan infrastruktur yang berlebihan. Ada berbagai arsitektur yang dapat digunakan untuk membangun dan menjalankan aplikasi web skalabel di Google Cloud. Setiap arsitektur memiliki kelebihan dan kekurangan untuk persyaratan yang berbeda.
Untuk mengetahui informasi selengkapnya, tonton Tiga cara menjalankan aplikasi web skalabel di Google Cloud di YouTube. Untuk mempelajari lebih lanjut berbagai cara memodernisasi platform e-commerce Anda di Google Cloud, lihat Cara membangun platform perdagangan digital di Google Cloud.
Dalam diagram sebelumnya, frontend aplikasi dihosting di Google Cloud untuk memberikan pengalaman pengguna multiregional dan yang dioptimalkan secara global yang menggunakan load balancing, penskalaan otomatis, dan perlindungan dari DDoS global melalui Google Cloud Armor.
Seiring waktu, jumlah aplikasi yang Anda deploy ke cloud publik dapat meningkat ke titik di mana Anda dapat mempertimbangkan untuk memindahkan komponen aplikasi backend ke cloud publik. Jika Anda memperkirakan akan melayani traffic yang tinggi, memilih layanan yang dikelola cloud dapat membantu menghemat upaya engineering saat mengelola infrastruktur Anda sendiri. Pertimbangkan opsi ini kecuali jika ada batasan atau persyaratan yang mewajibkan hosting komponen aplikasi backend secara lokal. Misalnya, jika data backend Anda tunduk pada pembatasan peraturan, Anda mungkin harus menyimpan data tersebut secara lokal. Namun, jika berlaku dan mematuhi kebijakan, penggunaan kemampuan Sensitive Data Protection seperti teknik de-identifikasi dapat membantu Anda memindahkan data tersebut jika diperlukan.
Dalam pola arsitektur hybrid bertingkat, Anda juga dapat menggunakan Google Distributed Cloud di beberapa skenario. Dengan Cloud Terdistribusi, Anda dapat menjalankan cluster Google Kubernetes Engine pada hardware khusus yang disediakan dan dikelola oleh Google serta terpisah dari pusat data Google Cloud. Untuk memastikan bahwa Cloud Terdistribusi memenuhi persyaratan Anda saat ini dan di masa mendatang, ketahui batasan Cloud Terdistribusi jika dibandingkan dengan zona GKE berbasis cloud konvensional.
Kelebihan
Berfokus pada aplikasi frontend terlebih dahulu akan memiliki beberapa keuntungan, termasuk hal berikut:
- Komponen frontend bergantung pada resource backend dan terkadang pada komponen frontend lainnya.
- Komponen backend tidak bergantung pada komponen frontend. Oleh karena itu, mengisolasi dan memigrasikan aplikasi frontend cenderung tidak begitu kompleks dibandingkan memigrasikan aplikasi backend.
- Karena aplikasi frontend sering kali bersifat stateless atau tidak mengelola data sendiri, aplikasi tersebut cenderung tidak terlalu sulit untuk dimigrasikan dibandingkan backend.
- Komponen frontend dapat dioptimalkan sebagai bagian dari migrasi untuk menggunakan arsitektur stateless. Untuk mengetahui informasi selengkapnya, tonton Cara mem-port aplikasi web stateful ke Cloud Run di YouTube.
Men-deploy aplikasi frontend yang sudah ada atau yang baru dikembangkan ke cloud publik menawarkan beberapa keuntungan:
- Banyak aplikasi frontend yang sering mengalami perubahan. Menjalankan aplikasi ini di cloud publik akan menyederhanakan penyiapan proses continuous integration/continuous deployment (CI/CD). Anda dapat menggunakan CI/CD untuk mengirim update dengan cara yang efisien dan otomatis. Untuk mengetahui informasi lebih lanjut, lihat CI/CD di Google Cloud.
- Frontend yang sensitif terhadap performa dengan beban traffic yang beragam dapat memanfaatkan load balancing, deployment multi-regional, penyimpanan cache Cloud CDN, serverless, dan penskalaan otomatis yang dimungkinkan oleh deployment berbasis cloud (idealnya dengan arsitektur stateless).
Dengan mengadopsi microservice dengan container menggunakan platform yang dikelola cloud, seperti GKE, Anda dapat menggunakan arsitektur modern seperti microfrontend, yang memperluas microservice ke komponen frontend.
Memperluas microservice biasanya digunakan dengan frontend yang melibatkan beberapa tim yang berkolaborasi pada aplikasi yang sama. Struktur tim semacam itu membutuhkan pendekatan berulang dan pemeliharaan berkelanjutan. Beberapa keuntungan menggunakan microfrontend adalah sebagai berikut:
- Library ini dapat dibuat menjadi modul microservice independen untuk pengembangan, pengujian, dan deployment.
- Opsi ini menyediakan pemisahan saat setiap tim pengembangan dapat memilih teknologi dan kode pilihan mereka.
- Platform ini dapat mendorong siklus pengembangan dan deployment yang cepat tanpa memengaruhi komponen frontend lainnya yang mungkin dikelola oleh tim lain.
Baik Anda mengimplementasikan antarmuka pengguna atau API, maupun menangani penyerapan data Internet of Things (IoT), aplikasi frontend dapat memanfaatkan kapabilitas layanan cloud seperti Firebase, Pub/Sub, Apigee, Cloud CDN, App Engine, atau Cloud Run.
Proxy API yang dikelola Cloud membantu:
- Pisahkan API yang ditampilkan kepada aplikasi dari layanan backend Anda, seperti microservice.
- Melindungi aplikasi dari perubahan kode backend.
- Dukung arsitektur frontend berbasis API yang sudah ada, seperti backend untuk frontend (BFF), microfrontend, dan lainnya.
- Ekspos API Anda di Google Cloud atau lingkungan lain dengan mengimplementasikan proxy API di Apigee.
Anda juga dapat menerapkan pola hibrida bertingkat secara terbalik, dengan men-deploy backend di cloud, sekaligus mempertahankan frontend di lingkungan komputasi pribadi. Meskipun kurang umum, pendekatan ini paling baik diterapkan saat Anda menangani frontend monolitik dan kelas berat. Dalam kasus tersebut, mungkin akan lebih mudah untuk mengekstrak fungsi backend secara iteratif dan men-deploy backend baru ini di cloud.
Bagian ketiga dari seri ini membahas kemungkinan pola jaringan untuk memungkinkan arsitektur semacam itu. Apigee Hybrid berguna sebagai platform untuk membangun dan mengelola proxy API dalam model deployment hybrid. Untuk mengetahui informasi selengkapnya, lihat Arsitektur yang dikaitkan secara longgar, termasuk arsitektur monolitik dan microservice bertingkat.
Praktik terbaik
Gunakan informasi di bagian ini saat Anda merencanakan arsitektur hybrid bertingkat.
Praktik terbaik untuk mengurangi kerumitan
Saat Anda menerapkan pola arsitektur hibrida bertingkat, pertimbangkan praktik terbaik berikut yang dapat membantu mengurangi keseluruhan deployment dan kompleksitas operasionalnya:
- Berdasarkan penilaian model komunikasi aplikasi yang diidentifikasi, pilih solusi komunikasi yang paling efisien dan efektif untuk aplikasi tersebut.
Karena sebagian besar interaksi pengguna melibatkan sistem yang terhubung di beberapa lingkungan komputasi, konektivitas yang cepat dan latensi rendah antara sistem tersebut penting. Untuk memenuhi ekspektasi ketersediaan dan performa, Anda harus mendesain untuk ketersediaan tinggi, latensi rendah, dan tingkat throughput yang sesuai. Dari sudut pandang keamanan, komunikasi harus terperinci dan terkontrol. Idealnya, Anda harus mengekspos komponen aplikasi menggunakan API yang aman. Untuk mengetahui informasi selengkapnya, lihat Traffic keluar dengan gerbang.
- Untuk meminimalkan latensi komunikasi antar-lingkungan, pilih region Google Cloud yang secara geografis dekat dengan lingkungan komputasi pribadi tempat komponen backend aplikasi Anda dihosting. Untuk mengetahui informasi selengkapnya, baca Praktik terbaik untuk pemilihan region Compute Engine.
- Minimalkan dependensi tinggi antarsistem yang berjalan di lingkungan berbeda, terutama jika komunikasi ditangani secara sinkron. Dependensi ini dapat memperlambat performa, menurunkan ketersediaan keseluruhan, dan berpotensi menimbulkan biaya transfer data keluar tambahan.
- Dengan pola arsitektur hibrida bertingkat, Anda mungkin memiliki volume traffic masuk yang lebih besar dari lingkungan lokal yang masuk ke Google Cloud dibandingkan dengan traffic keluar yang keluar dari Google Cloud. Meskipun demikian, Anda harus mengetahui perkiraan volume transfer data keluar yang akan keluar dari Google Cloud. Jika ingin menggunakan arsitektur ini dalam jangka panjang dengan volume transfer data keluar yang tinggi, pertimbangkan untuk menggunakan Cloud Interconnect. Cloud Interconnect dapat membantu mengoptimalkan performa konektivitas dan dapat mengurangi biaya transfer data keluar untuk traffic yang memenuhi kondisi tertentu. Untuk mengetahui informasi selengkapnya, lihat harga Cloud Interconnect.
- Untuk melindungi informasi sensitif, sebaiknya Anda mengenkripsi semua komunikasi saat dalam pengiriman. Jika enkripsi diperlukan pada lapisan konektivitas, Anda dapat menggunakan tunnel VPN, VPN HA melalui Cloud Interconnect, dan MACsec untuk Cloud Interconnect.
Untuk mengatasi inkonsistensi dalam protokol, API, dan mekanisme autentikasi di berbagai backend, sebaiknya, jika memungkinkan, untuk men-deploy gateway atau proxy API sebagai faade penggabungan. Gateway atau proxy ini bertindak sebagai titik kontrol terpusat dan melakukan tindakan berikut:
- Menerapkan langkah-langkah keamanan tambahan.
- Melindungi aplikasi klien dan layanan lainnya dari perubahan kode backend.
- Memfasilitasi jejak audit untuk komunikasi antara semua aplikasi lintas lingkungan dan komponen yang dipisahkan.
- Bertindak sebagai
lapisan komunikasi perantara
antara layanan lama dan yang dimodernisasi.
- Apigee dan Apigee hybrid memungkinkan Anda menghosting dan mengelola gateway hybrid dan tingkat perusahaan di seluruh lingkungan lokal, edge, cloud lainnya, dan lingkungan Google Cloud.
Untuk memfasilitasi pembentukan konfigurasi hybrid, gunakan Cloud Load Balancing dengan konektivitas hybrid. Artinya, Anda dapat memperluas manfaat load balancing cloud ke layanan yang dihosting di lingkungan komputasi lokal Anda. Pendekatan ini memungkinkan migrasi workload bertahap ke Google Cloud dengan minimal atau tanpa gangguan layanan, sehingga memastikan transisi yang lancar untuk layanan terdistribusi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan grup endpoint jaringan konektivitas hybrid.
Terkadang, penggunaan gateway API, atau proxy dan Load Balancer Aplikasi secara bersamaan dapat memberikan solusi yang lebih andal untuk mengelola, mengamankan, dan mendistribusikan traffic API dalam skala besar. Dengan menggunakan Cloud Load Balancing dengan gateway API, Anda dapat melakukan beberapa hal berikut:
- Sediakan API berperforma tinggi dengan Apigee dan Cloud CDN untuk mengurangi latensi, menghosting API secara global, dan meningkatkan ketersediaan di musim puncak traffic. Untuk informasi selengkapnya, tonton Menghadirkan API berperforma tinggi dengan Apigee dan Cloud CDN di YouTube.
- Terapkan pengelolaan traffic lanjutan.
- Gunakan Google Cloud Armor sebagai perlindungan terhadap DDoS dan layanan keamanan jaringan untuk melindungi API Anda.
- Kelola load balancing yang efisien di berbagai gateway di berbagai region. Untuk mengetahui informasi lebih lanjut, tonton Securing API dan Menerapkan failover multi-region dengan Private Service Connect dan Apigee di YouTube.
Gunakan pengelolaan API dan mesh layanan untuk mengamankan dan mengontrol komunikasi layanan serta eksposur dengan arsitektur microservice.
- Gunakan Cloud Service Mesh untuk memungkinkan komunikasi layanan-ke-layanan yang mempertahankan kualitas layanan dalam sistem yang terdiri dari layanan terdistribusi tempat Anda dapat mengelola autentikasi, otorisasi, dan enkripsi antarlayanan.
- Gunakan platform pengelolaan API seperti Apigee, yang memungkinkan organisasi dan entitas eksternal Anda menggunakan layanan tersebut dengan mengeksposnya sebagai API.
Tetapkan identitas umum antarlingkungan sehingga sistem dapat melakukan autentikasi dengan aman di seluruh batas lingkungan.
Men-deploy CI/CD dan sistem manajemen konfigurasi di cloud publik. Untuk mengetahui informasi selengkapnya, lihat Pola arsitektur jaringan yang dicerminkan.
Untuk membantu meningkatkan efisiensi operasional, gunakan alat dan pipeline CI/CD yang konsisten di seluruh lingkungan.
Praktik terbaik untuk workload individual dan arsitektur aplikasi
- Meskipun fokusnya terletak pada aplikasi frontend dalam pola ini, tetaplah mengetahui kebutuhan untuk memodernisasi aplikasi backend Anda. Jika kecepatan pengembangan aplikasi backend jauh lebih lambat daripada aplikasi frontend, perbedaannya dapat menyebabkan kompleksitas tambahan.
- Memperlakukan API sebagai antarmuka backend akan menyederhanakan integrasi, pengembangan frontend, interaksi layanan, dan menyembunyikan kompleksitas sistem backend. Untuk mengatasi tantangan ini, Apigee memfasilitasi pengembangan dan pengelolaan gateway/proxy API untuk deployment hybrid dan multicloud.
- Pilih pendekatan rendering untuk aplikasi web frontend Anda berdasarkan konten (statis versus dinamis), performa pengoptimalan mesin telusur, dan ekspektasi tentang kecepatan pemuatan halaman.
- Saat memilih arsitektur untuk aplikasi web berbasis konten, tersedia berbagai opsi, termasuk arsitektur monolitik, serverless, berbasis peristiwa, dan microservice. Untuk memilih arsitektur yang paling sesuai, nilai opsi ini secara menyeluruh berdasarkan persyaratan aplikasi Anda saat ini dan mendatang. Untuk membantu Anda membuat keputusan arsitektur yang selaras dengan tujuan bisnis dan teknis Anda, lihat Perbandingan berbagai arsitektur untuk backend aplikasi web berbasis konten, dan Pertimbangan Utama untuk backend web.
Dengan arsitektur microservice, Anda dapat menggunakan aplikasi dalam container dengan Kubernetes sebagai lapisan runtime umum. Dengan pola arsitektur hybrid bertingkat, Anda dapat menjalankannya dalam salah satu skenario berikut:
Di kedua lingkungan (Google Cloud dan lingkungan lokal Anda).
- Saat menggunakan container dan Kubernetes di berbagai lingkungan, Anda memiliki fleksibilitas untuk memodernisasi workload lalu bermigrasi ke Google Cloud pada waktu yang berbeda. Hal ini dapat membantu ketika beban kerja sangat bergantung pada hal lain dan tidak dapat dimigrasikan satu per satu, atau menggunakan portabilitas workload hybrid untuk menggunakan resource terbaik yang tersedia di setiap lingkungan. Dalam semua kasus, GKE Enterprise dapat menjadi teknologi pendukung yang penting. Untuk mengetahui informasi selengkapnya, lihat lingkungan hybrid GKE Enterprise.
Di lingkungan Google Cloud untuk komponen aplikasi yang dimigrasikan dan dimodernisasi.
- Gunakan pendekatan ini jika Anda memiliki backend lama di infrastruktur lokal yang tidak memiliki dukungan containerization atau memerlukan waktu dan resource yang signifikan untuk melakukan modernisasi dalam jangka pendek.
Untuk mengetahui informasi selengkapnya tentang mendesain dan memfaktorkan ulang aplikasi monolitik ke arsitektur microservice untuk memodernisasi arsitektur aplikasi web, lihat Pengantar microservice.
Anda dapat menggabungkan teknologi penyimpanan data, bergantung pada kebutuhan aplikasi web Anda. Penggunaan Cloud SQL untuk data terstruktur dan Cloud Storage untuk file media merupakan pendekatan umum untuk memenuhi beragam kebutuhan penyimpanan data. Meskipun demikian, pilihannya sangat bergantung pada kasus penggunaan Anda. Untuk informasi selengkapnya tentang opsi penyimpanan data bagi backend aplikasi berbasis konten dan modalitas yang efektif, lihat Opsi Penyimpanan Data untuk Aplikasi Web Berbasis Konten. Selain itu, lihat Opsi database Google Cloud Anda, secara mendetail