Halaman produk menyatakan ada API, dan rapat integrasi terhenti pada pertanyaan kedua. Operasi apa, pada objek apa, dipanggil oleh siapa, dan apa yang dihitung sebagai keberhasilan? Menjawab keempatnya sebelum membandingkan produk biasanya menyingkirkan separuh kandidat. Ini juga mengubah perbandingan yang tersisa menjadi sesuatu yang bisa diputuskan oleh pengujian.

Ganti pernyataan punya API dengan satu operasi

API adalah transportasi, bukan kemampuan. Endpoint REST, soket lokal, dan pembungkus baris perintah semuanya bisa disebut API, dan semuanya tidak menawarkan operasi yang setara.

Tuliskan operasinya sebagai kalimat sebelum membuka dokumentasi.

Memulai koneksi lokal adalah tindakan sisi klien dengan pengguna di depannya. Menerbitkan profil perangkat adalah tindakan penyediaan dengan inventaris di belakangnya. Menonaktifkan akses pengguna adalah tindakan administratif dengan jejak audit. Ketiganya biasanya hidup di komponen berbeda, dimiliki tim berbeda, dengan kewenangan berbeda.

Empat bidang yang membuat kontrak dapat diuji

Isi empat bidang untuk setiap operasi: objek, tindakan, pemanggil, dan syarat keberhasilan. Kontrak yang kehilangan satu bidang hanyalah keinginan.

Tabel adalah seluruh lembar kerja:

FieldQuestionExample
ObjectWhat is being acted on?One enrolled device
ActionObserve, create, change, start, stop, or revoke?Revoke
CallerWhich identity calls it?Deployment service
SuccessWhat observable state proves it?Future sign-in denied

Syarat keberhasilan adalah bidang yang dilewati orang, dan bidang itulah yang menentukan apakah integrasi berfungsi. Pengaturan tersimpan bukan terowongan aktif, dan akun yang dinonaktifkan bukan sesi yang berakhir.

Jika dua operasi membutuhkan pemanggil berbeda, itu dua integrasi. Menggabungkannya dalam satu akun layanan biasanya berarti memberi kewenangan lebih dari yang dibutuhkan keduanya.

Cocokkan antarmuka dengan lapisan sebenarnya

Antarmuka manajemen komunitas OpenVPN berbicara dengan daemon melalui TCP atau soket Unix. Perintahnya mencakup pengamatan status dan sinyal ke daemon.

Itu menjadikannya kanal kendali daemon, bukan API langganan terkelola atau layanan pendaftaran pengguna. Membaca dokumentasinya dengan cermat menghindarkan Anda membangun terhadap lapisan yang tidak memiliki objek tersebut.

Dokumentasi itu juga menyatakan protokol tidak membawa enkripsi sendiri. Siapa pun yang dapat mencapai soket dapat mengendalikan daemon, jadi perlakukan sebagai kendali sensitif, bukan sebagai aliran metrik. Ikat ke loopback atau soket Unix, dan letakkan di belakang pengaturan terbatas jika pemanggil jarak jauh membutuhkannya. Menampakkannya ke internet demi kenyamanan mengubah kanal kendali menjadi insiden.

Tentukan perilaku setelah pemanggilan

Penerimaan tidak sama dengan penyelesaian. Daemon dapat kembali sebelum terowongan menyala, jadi tunggu peristiwa penyelesaian atau kegagalan yang didokumentasikan dan kaitkan dengan permintaan yang dikirim.

Putuskan apa yang dilakukan pemanggil jika respons hilang. Mengulang pembuatan atau penyambungan ulang secara buta tidak sama dengan memeriksa apakah permintaan pertama sudah berlaku.

Penghapusan akses setidaknya tiga tindakan berbeda: memblokir masuk berikutnya, mengakhiri sesi aktif, dan mencabut kredensial. Minta yang benar-benar disyaratkan kebijakan, dan nyatakan dalam kontrak mana yang mana. Jangan menyebut satu pembaruan akun berhasil sebagai pencabutan penuh tanpa bukti. Perbedaannya penting saat insiden, ketika waktu terus berjalan.

Uji kontrak dengan pilot

Pilot kecil yang disetujui harus mencakup keberhasilan, penolakan, gangguan, dan percobaan ulang, lalu operasi aplikasi yang seharusnya diizinkan atau ditolak.

Untuk antarmuka pada tingkat daemon, dua perintah melatih pengamatan dan satu sinyal:

echo state | nc -w 2 127.0.0.1 7505
echo signal SIGTERM | nc -w 2 127.0.0.1 7505

Berikan hanya kewenangan yang dibutuhkan operasi. Jauhkan rahasia dari log rutin, dan catat cukup detail privat untuk menyatakan target mana yang terdampak dan bagaimana akhirnya.

Tuliskan jalur pemulihan untuk kasus API kendali itu sendiri sedang mati. Pilih antarmuka yang memiliki objek dan siklus hidupnya; klaim otomasi di halaman produk bukan pengganti.

Artikel terkait