Direktori Layanan adalah layanan yang tercakup dalam kewajiban Google yang ditetapkan dalam Adendum Pemrosesan Data Cloud.
Direktori Layanan adalah satu tempat untuk memublikasikan, menemukan, dan terhubung ke layanan dengan cara yang konsisten dan andal, terlepas dari lingkungannya. Direktori Layanan mendukung layanan di lingkungan Google Cloud, multi-cloud, dan lokal, serta dapat diskalakan hingga ribuan layanan dan endpoint untuk satu project.
Direktori Layanan memiliki fitur berikut:
- Registration and Lookup API untuk membuat dan me-resolve namespace, layanan, dan endpoint
- Integrasi dengan Cloud DNS. Zona Direktori Layanan memungkinkan layanan tersedia di Virtual Private Cloud (VPC).
- Integrasi IAM untuk menetapkan dan mengontrol visibilitas dan izin layanan
- Dukungan Google Cloud CLI dan Konsol Google Cloud bawaan untuk berinteraksi dengan Service Directory
- Integrasi Cloud Monitoring dan Cloud Logging untuk memantau, mengaudit, dan men-debug operasi Service Directory
Alasan Direktori Layanan
Saat aplikasi mengadopsi layanan, kemampuan untuk me-resolve lokasi layanan menjadi lebih sulit karena endpoint layanan tersebut berubah. Layanan yang di-deploy di seluruh lingkungan hybrid menghadirkan hambatan tambahan karena keduanya mungkin tidak memiliki sistem penamaan yang sama, sehingga me-resolve dan menghubungkan layanan menjadi sulit. Untuk mengilustrasikan masalah ini, pertimbangkan hal berikut.
Bayangkan Anda membuat API sederhana dan kode Anda perlu memanggil beberapa aplikasi lain. Jika informasi endpoint tetap statis, Anda dapat melakukan hard code lokasi ini ke dalam kode atau menyimpannya dalam file konfigurasi kecil. Namun, dengan microservice dan multi-cloud, masalah ini menjadi jauh lebih sulit dipecahkan karena instance, layanan, dan lingkungan semuanya dapat berubah.
Dengan Direktori Layanan, Anda dapat mendaftarkan semua layanan di satu tempat dan me-resolve-nya menggunakan HTTP, gRPC, dan DNS.
Mari kita lihat kembali diagram sebelumnya, tetapi kali ini dengan menambahkan Direktori Layanan. Dalam diagram berikut, setiap instance layanan didaftarkan ke Direktori Layanan. Pendaftaran ini langsung ditampilkan di DNS dan dapat dikueri menggunakan HTTP/gRPC, terlepas dari penerapan dan lingkungannya.
Anda dapat membuat nama layanan universal yang berfungsi di seluruh produk Google Cloud, seperti App Engine dan GKE. Anda dapat menyediakan layanan ini melalui DNS. Anda dapat menerapkan kontrol akses ke layanan berdasarkan peran IAM, project, dan jaringan akun layanan.
Direktori Layanan mengatasi masalah berikut:
- Interoperabilitas: Direktori Layanan adalah layanan penamaan universal yang berfungsi di seluruh Google Cloud, multi-cloud, dan lokal. Anda dapat memigrasikan layanan di antara lingkungan ini dan tetap menggunakan nama layanan yang sama untuk mendaftarkan dan me-resolve endpoint.
- Pengelolaan layanan: Direktori Layanan adalah layanan terkelola. Organisasi Anda tidak perlu khawatir tentang ketersediaan tinggi, redundansi, penskalaan, atau masalah pemeliharaan dalam mengelola registry layanan Anda sendiri.
- Kontrol Akses: Dengan Direktori Layanan, Anda dapat mengontrol siapa yang dapat mendaftarkan dan me-resolve layanan Anda menggunakan IAM. Tetapkan peran Direktori Layanan ke tim, akun layanan, dan organisasi.
- Batasan DNS murni: DNS resolver dapat tidak dapat diandalkan dalam hal mematuhi TTL dan caching, tidak dapat menangani ukuran data yang lebih besar, dan tidak menawarkan cara mudah untuk menayangkan metadata kepada pengguna. Selain dukungan DNS, Direktori Layanan menawarkan HTTP dan gRPC API untuk membuat kueri dan me-resolve layanan.
Menggunakan Cloud DNS dengan Direktori Layanan
Cloud DNS adalah layanan Domain Name System (DNS) yang cepat, skalabel, dan andal, yang berjalan di infrastruktur Google.
Selain zona DNS publik, Cloud DNS juga menyediakan solusi DNS internal terkelola untuk jaringan pribadi di Google Cloud. Zona DNS pribadi memungkinkan Anda memberi nama instance virtual machine (VM), load balancer, atau resource lainnya secara internal. Kueri DNS untuk zona DNS pribadi tersebut dibatasi untuk jaringan pribadi Anda.
Diagram berikut mengilustrasikan cara menggunakan zona Direktori Layanan untuk menyediakan nama layanan menggunakan pencarian DNS.
Ringkasan setiap komponen:
- Endpoint didaftarkan langsung ke Direktori Layanan dengan menggunakan Service Directory API. Anda dapat mendaftarkan layanan Google Cloud dan non-Google Cloud dengan Direktori Layanan.
- Klien eksternal dan internal dapat mencari layanan tersebut di: https://servicedirectory.googleapis.com
- Untuk mengaktifkan permintaan DNS, buat zona Direktori Layanan di Cloud DNS yang dikaitkan dengan namespace Direktori Layanan.
- Klien internal dapat me-resolve layanan ini menggunakan DNS, HTTP, dan gRPC. Klien eksternal (klien yang tidak berada di jaringan pribadi) harus menggunakan HTTP atau gRPC untuk me-resolve nama layanan.
Contoh konfigurasi
Cara mengekspos layanan melalui DNS
Diagram berikut menggambarkan cara arsitektur microservice dimodelkan di Service Directory dan disediakan menggunakan DNS. Perhatikan bahwa Direktori Layanan mengelola layanan dan endpoint sepenuhnya, tetapi zona pribadi berada di Cloud DNS.
Dalam diagram ini (sisi kiri), layanan payments terdaftar ke
namespace dengan nama backend-namespace
, region us-east1
, dan
project gcp-project
. Namespace ditautkan ke zona pribadi example.com
.
Untuk melakukan pencarian DNS, klien meminta
data SRV
untuk nama domain _payments._tcp.payments.example.com
, yang
di-resolve ke nomor port dan data alamat untuk endpoint
layanan pembayaran.
Langkah selanjutnya
- Untuk mempelajari cara menyiapkan namespace Direktori Layanan, membuat layanan di namespace, dan menetapkan endpoint ke layanan, lihat Mengonfigurasi Direktori Layanan.
- Untuk mempelajari cara membuat zona Direktori Layanan yang memanfaatkan namespace yang ada, lihat Mengonfigurasi zona DNS Direktori Layanan.
- Untuk mempelajari cara membuat kueri ke zona Direktori Layanan yang ada menggunakan DNS, lihat Kueri menggunakan DNS.
- Untuk menemukan solusi atas masalah umum yang mungkin Anda alami saat menggunakan Service Directory, lihat Pemecahan masalah.