Ringkasan Direktori Layanan

Service Directory adalah layanan yang tercakup dalam kewajiban Google sebagaimana ditetapkan dalam Adendum Pemrosesan Data Cloud.

Direktori Layanan adalah satu tempat untuk memublikasikan, menemukan, dan menghubungkan ke layanan secara konsisten dan andal, terlepas dari lingkungannya. Service Directory mendukung layanan di lingkungan Google Cloud, multi-cloud, dan lokal, serta dapat diskalakan hingga ribuan layanan dan endpoint untuk satu project.

Service Directory memiliki fitur berikut:

  • Registration and Lookup API untuk membuat dan menyelesaikan namespace, layanan, dan endpoint
  • Integrasi dengan Cloud DNS. Zona Service Directory memungkinkan layanan tersedia di Virtual Private Cloud (VPC).
  • Integrasi IAM untuk menetapkan dan mengontrol visibilitas dan izin layanan
  • Google Cloud CLI bawaan dan dukungan Google Cloud console untuk berinteraksi dengan Service Directory
  • Integrasi Cloud Monitoring dan Cloud Logging untuk memantau, mengaudit, dan men-debug operasi Service Directory

Alasan menggunakan Service Directory

Seiring aplikasi mengadopsi layanan, kemampuan untuk menyelesaikan lokasi layanan menjadi lebih sulit karena endpoint layanan tersebut berubah. Layanan yang di-deploy di seluruh lingkungan hybrid menimbulkan hambatan tambahan karena keduanya mungkin tidak menggunakan sistem penamaan yang sama, sehingga menyulitkan penyelesaian dan koneksi layanan. Untuk mengilustrasikan masalah ini, perhatikan hal berikut.

Bayangkan Anda sedang membangun API sederhana dan kode Anda perlu memanggil beberapa aplikasi lain. Jika informasi endpoint tetap statis, Anda dapat meng-hardcode lokasi ini ke dalam kode atau menyimpannya dalam file konfigurasi kecil. Namun, dengan microservice dan multi-cloud, masalah ini menjadi jauh lebih sulit diatasi karena instance, layanan, dan lingkungan semuanya dapat berubah.

Service Directory tanpa load balancer (klik untuk memperbesar)
Layanan pengubahan yang berbeda (klik untuk memperbesar)

Dengan Direktori Layanan, Anda dapat mendaftarkan semua layanan di satu tempat dan menyelesaikannya menggunakan HTTP, gRPC, dan DNS.

Mari kita lihat kembali diagram sebelumnya, tetapi kali ini dengan menambahkan Service Directory. Dalam diagram berikut, setiap instance layanan didaftarkan ke Service Directory. Pendaftaran ini langsung tercermin dalam DNS dan dapat dikueri menggunakan HTTP/gRPC terlepas dari penerapan dan lingkungannya.

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

Anda dapat membuat nama layanan universal yang berfungsi di berbagai produk, seperti App Engine dan GKE. Google CloudAnda dapat menyediakan layanan ini melalui DNS. Anda dapat menerapkan kontrol akses ke layanan berdasarkan jaringan, project, dan peran IAM dari akun layanan.

Direktori Layanan memecahkan masalah berikut:

  1. Interoperabilitas: Service Directory 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 menyelesaikan endpoint.
  2. Pengelolaan layanan: Service Directory adalah layanan terkelola. Organisasi Anda tidak perlu mengkhawatirkan ketersediaan tinggi, redundansi, penskalaan, atau pemeliharaan saat mempertahankan pendaftaran layanan Anda sendiri.
  3. Kontrol Akses: Dengan Service Directory, Anda dapat mengontrol siapa yang dapat mendaftarkan dan menyelesaikan layanan Anda menggunakan IAM. Tetapkan peran Service Directory ke tim, akun layanan, dan organisasi.
  4. Batasan DNS murni: Resolver DNS dapat menjadi tidak andal dalam hal mematuhi TTL dan caching, tidak dapat menangani ukuran data yang lebih besar, dan tidak menawarkan cara mudah untuk menyajikan metadata kepada pengguna. Selain dukungan DNS, Service Directory menawarkan API HTTP dan gRPC untuk mengkueri dan menyelesaikan layanan.

Menggunakan Cloud DNS dengan Service Directory

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 diGoogle Cloud. Zona DNS pribadi memungkinkan Anda memberi nama instance virtual machine (VM), load balancer, atau resource lain secara internal. Kueri DNS untuk zona DNS pribadi tersebut dibatasi untuk jaringan pribadi Anda.

Diagram berikut menggambarkan cara menggunakan zona Direktori Layanan untuk membuat nama layanan tersedia 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 dengan Direktori Layanan 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 terkait 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 menyelesaikan nama layanan.

Contoh konfigurasi

Cara mengekspos layanan melalui DNS

Diagram berikut menggambarkan cara arsitektur microservice dimodelkan di Service Directory dan tersedia menggunakan DNS. Perhatikan bahwa Direktori Layanan memelihara 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 catatan SRV untuk nama domain _payments._tcp.payments.example.com, yang di-resolve ke nomor port dan catatan alamat untuk endpoint layanan pembayaran.

Langkah berikutnya