Ringkasan Direktori Layanan

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.

Direktori Layanan tanpa load balancer (klik untuk memperbesar)
Layanan perubahan yang berbeda (klik untuk memperbesar)

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.

Direktori Layanan dengan load balancer (klik untuk memperbesar)
Service Directory dengan load balancer (klik untuk memperbesar)

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Menggunakan Cloud DNS dengan Direktori Layanan (klik untuk memperbesar)
Menggunakan Cloud DNS dengan Service Directory (klik untuk memperbesar)

Ringkasan setiap komponen:

  1. Endpoint didaftarkan langsung ke Direktori Layanan dengan menggunakan Service Directory API. Anda dapat mendaftarkan layanan Google Cloud dan non-Google Cloud dengan Direktori Layanan.
  2. Klien eksternal dan internal dapat mencari layanan tersebut di: https://servicedirectory.googleapis.com
  3. Untuk mengaktifkan permintaan DNS, buat zona Direktori Layanan di Cloud DNS yang dikaitkan dengan namespace Direktori Layanan.
  4. 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.

Mengekspos layanan melalui DNS (klik untuk memperbesar)
Mengekspos layanan melalui DNS (klik untuk memperbesar)

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.