Pola hybrid bertingkat

Last reviewed 2023-12-14 UTC

Komponen arsitektur aplikasi dapat dikategorikan sebagai frontend atau backend. Dalam beberapa skenario, komponen ini dapat dihosting untuk beroperasi dari lingkungan komputasi yang berbeda. Sebagai bagian dari pola arsitektur hybrid bertingkat, lingkungan komputasi berada di lingkungan komputasi pribadi di infrastruktur lokal dan di Google Cloud.

Komponen aplikasi frontend secara langsung diekspos ke pengguna atau perangkat akhir. Akibatnya, aplikasi ini sering kali sensitif terhadap performa. Untuk mengembangkan fitur dan peningkatan baru, update software dapat dilakukan secara rutin. Karena aplikasi frontend biasanya mengandalkan aplikasi backend untuk menyimpan dan mengelola data—dan mungkin logika bisnis serta pemrosesan input pengguna—aplikasi tersebut sering kali stateless atau hanya mengelola volume data yang terbatas.

Agar dapat diakses dan digunakan, Anda dapat mem-build aplikasi frontend dengan berbagai framework dan teknologi. Beberapa faktor utama untuk aplikasi frontend yang berhasil mencakup performa aplikasi, kecepatan respons, dan kompatibilitas browser.

Komponen aplikasi backend biasanya berfokus pada penyimpanan dan pengelolaan data. Dalam beberapa arsitektur, logika bisnis dapat digabungkan dalam komponen backend. Rilis baru aplikasi backend cenderung lebih jarang dibandingkan rilis untuk aplikasi frontend. Aplikasi backend memiliki tantangan berikut untuk dikelola:

  • Menangani permintaan dalam jumlah besar
  • Menangani volume data yang besar
  • Mengamankan data
  • Mempertahankan data terbaru dan yang diperbarui di semua replika sistem

Arsitektur aplikasi tiga tingkat adalah salah satu implementasi yang paling populer untuk membuat aplikasi web bisnis, seperti situs e-commerce yang berisi berbagai komponen aplikasi. Arsitektur ini berisi tingkatan berikut. Setiap tingkat beroperasi secara independen, tetapi saling terkait erat dan semuanya berfungsi bersama.

  • Tingkat presentasi dan frontend web
  • Tingkat aplikasi
  • Akses data atau tingkat backend

Menempatkan lapisan ini ke dalam penampung akan memisahkan kebutuhan teknisnya, seperti persyaratan penskalaan, dan membantu memigrasikannya dalam pendekatan bertahap. Selain itu, layanan ini memungkinkan Anda men-deploynya di layanan cloud yang tidak bergantung pada platform yang dapat di-porting di seluruh lingkungan, menggunakan pengelolaan otomatis, dan diskalakan dengan platform terkelola cloud, seperti Cloud Run atau edisi Enterprise Google Kubernetes Engine (GKE). Selain itu, database terkelola Google Cloud seperti Cloud SQL membantu menyediakan backend sebagai lapisan database.

Pola arsitektur hybrid bertingkat berfokus pada deployment komponen aplikasi frontend yang ada ke cloud publik. Dalam pola ini, Anda menyimpan komponen aplikasi backend yang ada di lingkungan komputasi pribadinya. Bergantung pada skala dan desain spesifik aplikasi, Anda dapat memigrasikan komponen aplikasi frontend 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 batas arsitektur saat ini. Misalnya, seiring aplikasi Anda diskalakan dan permintaan terhadap performa dan keandalannya meningkat, Anda harus mulai mengevaluasi apakah bagian aplikasi harus difaktorkan ulang atau dipindahkan ke arsitektur yang berbeda dan lebih optimal. Pola arsitektur hybrid bertingkat memungkinkan Anda memindahkan beberapa beban kerja dan komponen aplikasi ke cloud sebelum melakukan transisi lengkap. Anda juga harus mempertimbangkan biaya, waktu, dan risiko yang terlibat dalam migrasi tersebut.

Diagram berikut menunjukkan pola arsitektur hybrid bertingkat yang umum.

Alur data dari frontend aplikasi lokal, ke frontend aplikasi di Google Cloud. Data kemudian mengalir kembali ke lingkungan lokal.

Pada diagram sebelumnya, permintaan klien dikirim ke frontend aplikasi yang dihosting di Google Cloud. Sebagai gantinya, frontend aplikasi mengirim data kembali ke lingkungan lokal tempat backend aplikasi dihosting (idealnya melalui gateway API).

Dengan pola arsitektur bertingkat hybrid, Anda dapat memanfaatkan infrastruktur dan layanan global Google Cloud, seperti yang ditunjukkan dalam contoh arsitektur dalam diagram berikut. Frontend aplikasi dapat dijangkau melalui Google Cloud. Hal ini juga dapat menambahkan elastisitas ke frontend dengan menggunakan penskalaan otomatis untuk merespons permintaan penskalaan secara dinamis dan efisien tanpa kelebihan penyediaan infrastruktur. Ada berbagai arsitektur yang dapat Anda gunakan untuk mem-build dan menjalankan aplikasi web skalabel di Google Cloud. Setiap arsitektur memiliki kelebihan dan kekurangan untuk persyaratan yang berbeda.

Untuk 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 commerce digital di Google Cloud.

Data mengalir dari pengguna ke server database lokal melalui Cloud Load Balancing dan Compute Engine.

Pada diagram sebelumnya, frontend aplikasi dihosting di Google Cloud untuk memberikan pengalaman pengguna multi-regional dan yang dioptimalkan secara global yang menggunakan load balancing, autoscaling, dan perlindungan DDoS global melalui Google Cloud Armor.

Seiring waktu, jumlah aplikasi yang Anda deploy ke cloud publik mungkin akan meningkat hingga Anda dapat mempertimbangkan untuk memindahkan komponen aplikasi backend ke cloud publik. Jika Anda memperkirakan akan melayani traffic yang berat, memilih layanan yang dikelola cloud dapat membantu Anda menghemat upaya engineering saat mengelola infrastruktur Anda sendiri. Pertimbangkan opsi ini kecuali jika batasan atau persyaratan mewajibkan hosting komponen aplikasi backend di infrastruktur lokal. Misalnya, jika data backend Anda tunduk pada pembatasan peraturan, Anda mungkin perlu menyimpan data tersebut di lokal. Namun, jika berlaku dan mematuhi kebijakan, menggunakan kemampuan Perlindungan Data Sensitif seperti teknik de-identifikasi, dapat membantu Anda memindahkan data tersebut jika diperlukan.

Dalam pola arsitektur hybrid bertingkat, Anda juga dapat menggunakan Google Distributed Cloud dalam beberapa skenario. Distributed Cloud memungkinkan Anda menjalankan cluster Google Kubernetes Engine di hardware khusus yang disediakan dan dikelola oleh Google serta terpisah dari pusat data Google Cloud. Untuk memastikan bahwa Distributed Cloud memenuhi persyaratan saat ini dan mendatang, ketahui batasan Distributed Cloud jika dibandingkan dengan zona GKE berbasis cloud konvensional.

Kelebihan

Berfokus pada aplikasi frontend terlebih dahulu 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 terlalu rumit dibandingkan memigrasikan aplikasi backend.
  • Aplikasi frontend sering kali bersifat stateless atau tidak mengelola datanya sendiri, maka aplikasi tersebut cenderung tidak terlalu sulit untuk dimigrasikan dibandingkan backend.

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/deployment berkelanjutan (CI/CD). Anda dapat menggunakan CI/CD untuk mengirim update secara efisien dan otomatis. Untuk informasi selengkapnya, lihat CI/CD di Google Cloud.
  • Frontend yang sensitif terhadap performa dengan beban traffic yang bervariasi dapat sangat diuntungkan dari load balancing, deployment multi-regional, caching Cloud CDN, serverless, dan kemampuan penskalaan otomatis yang didukung oleh deployment berbasis cloud (idealnya dengan arsitektur stateless).
  • Dengan mengadopsi microservice dengan penampung 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 memerlukan pendekatan iteratif dan pemeliharaan berkelanjutan. Beberapa keuntungan menggunakan microfrontend adalah sebagai berikut:

    • Aplikasi ini dapat dibuat menjadi modul microservice independen untuk pengembangan, pengujian, dan deployment.
    • Hal ini memberikan pemisahan tempat setiap tim pengembangan dapat memilih teknologi dan kode pilihan mereka.
    • Hal ini dapat mendorong siklus pengembangan dan deployment yang cepat tanpa memengaruhi komponen frontend lainnya yang mungkin dikelola oleh tim lain.
  • Baik mengimplementasikan antarmuka pengguna atau API, maupun menangani penyerapan data Internet of Things (IoT), aplikasi frontend dapat memanfaatkan kemampuan layanan cloud seperti Firebase, Pub/Sub, Apigee, Cloud CDN, App Engine, atau Cloud Run.

  • Proxy API yang dikelola cloud membantu:

    • Pisahkan API yang ditampilkan ke aplikasi dari layanan backend Anda, seperti microservice.
    • Melindungi aplikasi dari perubahan kode backend.
    • Mendukung arsitektur frontend berbasis API yang ada, seperti backend untuk frontend (BFF), microfrontend, dan lainnya.
    • Ekspos API Anda di Google Cloud atau lingkungan lainnya dengan menerapkan proxy API di Apigee.

Anda juga dapat menerapkan pola hybrid bertingkat secara terbalik, dengan men-deploy backend di cloud sambil menjaga frontend di lingkungan komputasi pribadi. Meskipun kurang umum, pendekatan ini paling cocok diterapkan saat Anda menangani frontend yang berat dan monolitik. Dalam kasus seperti itu, 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 mengaktifkan arsitektur tersebut. Apigee hybrid membantu sebagai platform untuk mem-build dan mengelola proxy API dalam model deployment hybrid. Untuk mengetahui informasi selengkapnya, lihat Arsitektur yang terikat longgar, termasuk arsitektur monolitik dan microservice bertingkat.

Praktik terbaik

Gunakan informasi di bagian ini saat Anda merencanakan arsitektur hybrid bertingkat.

Praktik terbaik untuk mengurangi kompleksitas

Saat Anda menerapkan pola arsitektur hybrid bertingkat, pertimbangkan praktik terbaik berikut yang dapat membantu mengurangi kompleksitas deployment dan operasional secara keseluruhan:

  • 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 berlatensi rendah di antara sistem tersebut sangatlah penting. Untuk memenuhi ekspektasi ketersediaan dan performa, Anda harus mendesain untuk ketersediaan tinggi, latensi rendah, dan level 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 Egress berpagar.

  • Untuk meminimalkan latensi komunikasi antarlingkungan, pilih region Google Cloud yang secara geografis dekat dengan lingkungan komputasi pribadi tempat komponen backend aplikasi Anda dihosting. Untuk informasi selengkapnya, lihat Praktik terbaik untuk pemilihan region Compute Engine.
  • Minimalkan dependensi tinggi antara sistem yang berjalan di lingkungan berbeda, terutama saat komunikasi ditangani secara sinkron. Dependensi ini dapat memperlambat performa, mengurangi ketersediaan secara keseluruhan, dan berpotensi menimbulkan biaya transfer data keluar tambahan.
  • Dengan pola arsitektur hybrid 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. Namun, Anda harus mengetahui volume transfer data keluar yang diperkirakan akan meninggalkan Google Cloud. Jika Anda berencana 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 mungkin mengurangi tagihan transfer data keluar untuk traffic yang memenuhi kondisi tertentu. Untuk mengetahui informasi selengkapnya, lihat Harga Cloud Interconnect.
  • Untuk melindungi informasi sensitif, sebaiknya enkripsi semua komunikasi saat dalam pengiriman. Jika enkripsi diperlukan di lapisan konektivitas, Anda dapat menggunakan tunnel VPN, VPN dengan ketersediaan tinggi (HA) melalui Cloud Interconnect, dan MACsec untuk Cloud Interconnect.
  • Untuk mengatasi inkonsistensi dalam protokol, API, dan mekanisme autentikasi di berbagai backend, sebaiknya, jika memungkinkan, deploy gateway API atau proxy sebagai facade pemersatu. Gateway atau proxy ini berfungsi sebagai titik kontrol terpusat dan melakukan langkah-langkah berikut:

    • Menerapkan langkah keamanan tambahan.
    • Melindungi aplikasi klien dan layanan lainnya dari perubahan kode backend.
    • Memfasilitasi pelacakan audit untuk komunikasi antara semua aplikasi lintas lingkungan dan komponen yang dipisahkan.
    • Berfungsi sebagai lapisan komunikasi perantara antara layanan lama dan layanan 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 pembuatan penyiapan hybrid, gunakan Cloud Load Balancing dengan konektivitas hybrid. Artinya, Anda dapat memperluas manfaat load balancing cloud ke layanan yang dihosting di lingkungan komputasi lokal. Pendekatan ini memungkinkan migrasi workload bertahap ke Google Cloud dengan gangguan layanan minimal atau tanpa gangguan, sehingga memastikan transisi yang lancar untuk layanan terdistribusi. Untuk mengetahui informasi selengkapnya, lihat Ringkasan grup endpoint jaringan konektivitas hybrid.

  • Terkadang, menggunakan gateway API, atau proxy dan Application Load Balancer 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 hal berikut:

  • Gunakan pengelolaan API dan mesh layanan untuk mengamankan dan mengontrol komunikasi dan eksposur layanan 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 antar-layanan.
    • Gunakan platform pengelolaan API seperti Apigee yang memungkinkan organisasi dan entitas eksternal Anda menggunakan layanan tersebut dengan mengeksposnya sebagai API.
  • Bangun identitas bersama antarlingkungan agar sistem dapat melakukan autentikasi dengan aman di seluruh batas lingkungan.

  • Men-deploy sistem CI/CD dan 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 arsitektur aplikasi dan workload individual

  • Meskipun fokusnya terletak pada aplikasi frontend dalam pola ini, Anda harus tetap memperhatikan kebutuhan untuk memodernisasi aplikasi backend. 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, berbagai opsi tersedia, termasuk arsitektur monolitik, serverless, berbasis peristiwa, dan microservice. Untuk memilih arsitektur yang paling cocok, 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, 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 hibrida bertingkat, Anda dapat menjalankannya dalam salah satu skenario berikut:

    • Di kedua lingkungan (Google Cloud dan lingkungan lokal Anda).

      • Saat menggunakan container dan Kubernetes di seluruh lingkungan, Anda memiliki fleksibilitas untuk memodernisasi workload, lalu bermigrasi ke Google Cloud pada waktu yang berbeda. Hal ini membantu saat workload sangat bergantung pada workload lain dan tidak dapat dimigrasikan secara terpisah, atau untuk menggunakan portabilitas workload hybrid guna menggunakan resource terbaik yang tersedia di setiap lingkungan. Dalam semua kasus, GKE Enterprise dapat menjadi teknologi utama yang memungkinkan. 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 lokal yang tidak memiliki dukungan containerisasi atau memerlukan waktu dan resource yang signifikan untuk dimodernisasi dalam jangka pendek.

      Untuk informasi selengkapnya tentang cara mendesain dan memfaktorkan ulang aplikasi monolitik menjadi arsitektur microservice guna memodernisasi arsitektur aplikasi web Anda, lihat Pengantar microservice.

  • Anda dapat menggabungkan teknologi penyimpanan data bergantung pada kebutuhan aplikasi web Anda. Menggunakan Cloud SQL untuk data terstruktur dan Cloud Storage untuk file media adalah pendekatan umum untuk memenuhi berbagai kebutuhan penyimpanan data. Meskipun demikian, pilihannya sangat bergantung pada kasus penggunaan Anda. Untuk mengetahui informasi selengkapnya tentang opsi penyimpanan data untuk backend aplikasi yang berbasis konten dan modalitas yang efektif, lihat Opsi Penyimpanan Data untuk Aplikasi Web yang Berbasis Konten. Selain itu, lihat Opsi database Google Cloud Anda, secara mendetail