Antipattern: Mengelola resource tanpa menggunakan pengelolaan kontrol sumber

Anda sedang melihat dokumentasi Apigee dan Apigee Hybrid.
Lihat dokumentasi Apigee Edge.

Apigee menyediakan berbagai jenis resource, dan masing-masing memiliki fungsi yang berbeda. Ada beberapa resource tertentu yang dapat dikonfigurasi (yaitu dibuat, diperbarui, dan/atau dihapus) hanya melalui UI Apigee, API Apigee, atau alat yang menggunakan API, dan oleh pengguna dengan peran dan izin prasyarat. Misalnya, hanya admin org yang termasuk dalam organisasi tertentu yang dapat mengonfigurasi resource ini. Artinya, resource ini tidak dapat dikonfigurasi oleh pengguna akhir melalui portal developer, atau dengan cara lain. Referensi ini mencakup:

  • Proxy API
  • Alur bersama
  • Produk API
  • Cache
  • KVM
  • Keystore dan truststore
  • Host virtual
  • Server target
  • File resource

Meskipun resource ini memiliki akses terbatas, jika ada modifikasi yang dilakukan bahkan oleh pengguna yang diotorisasi, data historis akan ditimpa dengan data baru. Hal ini disebabkan karena resource ini hanya disimpan di Apigee sesuai statusnya saat ini. Pengecualian utama untuk aturan ini adalah proxy API dan alur bersama.

Proxy API dan Alur Bersama di bagian Kontrol Revisi

Proxy API dan alur bersama dikelola -- dengan kata lain, dibuat, diperbarui, dan di-deploy -- melalui revisi. Revisi diberi nomor secara berurutan, sehingga Anda dapat menambahkan perubahan baru dan menyimpannya sebagai revisi baru atau mengembalikan perubahan dengan men-deploy revisi sebelumnya dari alur bersama/proxy API. Kapan saja, hanya boleh ada satu revisi proxy/alur bersama API yang di-deploy di lingkungan, kecuali jika revisi memiliki jalur dasar yang berbeda.

Meskipun proxy API dan alur bersama dikelola melalui revisi, jika modifikasi dilakukan pada revisi yang ada, tidak ada cara untuk melakukan roll back karena perubahan lama hanya ditimpa.

Audit dan Histori

Apigee menyediakan fitur Audit yang dapat membantu dalam skenario pemecahan masalah. Fitur ini memungkinkan Anda melihat informasi seperti siapa yang melakukan operasi tertentu (membuat, membaca, mengupdate, menghapus, men-deploy, dan membatalkan deployment) serta kapan operasi dilakukan di resource Apigee. Namun, jika operasi pembaruan atau penghapusan dilakukan pada resource Apigee, audit tidak dapat memberikan data lama kepada Anda.

Antipola

Mengelola resource Apigee (tercantum di atas) langsung melalui UI atau API Apigee tanpa menggunakan sistem kontrol sumber

Ada kesalahpahaman bahwa Apigee akan dapat memulihkan resource ke status sebelumnya setelah perubahan atau penghapusan. Namun, Apigee tidak menyediakan pemulihan resource ke status sebelumnya. Oleh karena itu, pengguna bertanggung jawab untuk memastikan bahwa semua data yang terkait dengan resource Apigee dikelola melalui pengelolaan kontrol sumber, sehingga data lama dapat dipulihkan kembali dengan cepat jika terjadi penghapusan yang tidak disengaja atau situasi ketika setiap perubahan perlu di-roll back. Hal ini khususnya penting untuk lingkungan produksi yang memerlukan data untuk traffic runtime.

Mari kita jelaskan hal ini dengan bantuan beberapa contoh dan dampak yang dapat ditimbulkan jika data tidak dikelola melalui sistem kontrol sumber dan dimodifikasi/dihapus secara sadar atau tidak disadari:

Contoh 1: Penghapusan atau modifikasi proxy API

Saat proxy API dihapus, atau perubahan di-deploy pada revisi yang sudah ada, kode sebelumnya tidak dapat dipulihkan. Jika proxy API berisi kode Java, JavaScript, atau Python yang tidak dikelola dalam sistem pengelolaan kontrol sumber (SCM) di luar Apigee, banyak pekerjaan dan upaya pengembangan yang bisa hilang.

Contoh 2: Penentuan proxy API menggunakan host virtual tertentu

Masa berlaku sertifikat host virtual akan berakhir dan host virtual tersebut perlu diupdate. Mengidentifikasi proxy API mana yang menggunakan host virtual tersebut untuk tujuan pengujian mungkin sulit jika ada banyak proxy API. Jika proxy API dikelola dalam sistem SCM di luar Apigee, akan mudah untuk menelusuri repositori.

Contoh 3: Penghapusan keystore/truststore

Jika keystore/truststore yang digunakan oleh host virtual atau konfigurasi server target dihapus, keystore/truststore tidak akan dapat dipulihkan kembali kecuali jika detail konfigurasi keystore/truststore, termasuk sertifikat dan/atau kunci pribadi, disimpan dalam kontrol sumber.

Dampak

  • Jika salah satu resource Apigee dihapus, resource dan isinya tidak akan dapat dipulihkan dari Apigee.
  • Permintaan API mungkin gagal dengan error tidak terduga yang menyebabkan pemadaman layanan hingga resource dipulihkan kembali ke status sebelumnya.
  • Sulit untuk menelusuri antar-dependensi antara proxy API dan resource lainnya di Apigee.

Praktik Terbaik

  • Gunakan SCM standar apa pun yang digabungkan dengan pipeline continuous integration dan continuous deployment (CICD) untuk mengelola proxy API dan alur bersama.
  • Gunakan SCM standar apa pun untuk mengelola resource Apigee lainnya, termasuk produk API, cache, KVM, server target, host virtual, dan keystore.
    • Jika sudah ada resource Apigee, gunakan Apigee API untuk mendapatkan detail konfigurasinya sebagai payload JSON/XML dan simpan dalam pengelolaan kontrol sumber.
    • Kelola update baru apa pun pada resource ini di pengelolaan kontrol sumber.
    • Jika perlu untuk membuat resource Apigee baru atau mengupdate resource yang ada, gunakan payload JSON/XML yang sesuai dan disimpan di pengelolaan kontrol sumber, lalu perbarui konfigurasi di Apigee menggunakan API.

* KVM terenkripsi tidak dapat diekspor dalam teks biasa dari API. Pengguna bertanggung jawab untuk mencatat nilai apa yang dimasukkan ke dalam KVM terenkripsi.

Bacaan lebih lanjut