Halaman produk menyatakan ia mempunyai API, dan mesyuarat integrasi terhenti pada soalan kedua. Operasi apa, pada objek apa, dipanggil oleh siapa, dan apa yang dikira sebagai kejayaan? Menjawab keempat-empatnya sebelum membandingkan produk biasanya menyingkirkan separuh calon. Ia juga menjadikan perbandingan yang tinggal sesuatu yang boleh diputuskan oleh ujian.

Gantikan dakwaan mempunyai API dengan satu operasi

API ialah pengangkutan, bukan keupayaan. Titik akhir REST, soket tempatan dan pembalut baris arahan semuanya boleh dipanggil API, dan ia tidak menawarkan operasi yang setara.

Tulis operasi itu sebagai ayat sebelum membuka dokumentasi.

Memulakan sambungan tempatan ialah tindakan sebelah klien dengan pengguna di hadapannya. Mengeluarkan profil peranti ialah tindakan peruntukan dengan inventori di belakangnya. Melumpuhkan akses pengguna ialah tindakan pentadbiran dengan jejak audit. Ketiga-tiganya biasanya hidup dalam komponen berbeza, dimiliki pasukan berbeza, dengan kuasa berbeza.

Empat medan yang menjadikan kontrak boleh diuji

Isi empat medan bagi setiap operasi: objek, tindakan, pemanggil dan syarat kejayaan. Kontrak yang kehilangan satu medan hanyalah hasrat.

Jadual itu ialah keseluruhan helaian 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 kejayaan ialah medan yang orang melangkau, dan ia yang menentukan sama ada integrasi berfungsi. Tetapan yang disimpan bukan terowong aktif, dan akaun yang dilumpuhkan bukan sesi yang tamat.

Jika dua operasi memerlukan pemanggil berbeza, ia dua integrasi. Menggabungkannya dalam satu akaun perkhidmatan biasanya bermakna memberi kuasa lebih daripada yang diperlukan oleh mana-mana satu.

Padankan antara muka dengan lapisan sebenarnya

Antara muka pengurusan komuniti OpenVPN bercakap dengan daemon melalui TCP atau soket Unix. Arahannya termasuk pemerhatian keadaan dan isyarat kepada daemon.

Itu menjadikannya saluran kawalan daemon, bukan API langganan yang dihoskan atau perkhidmatan pendaftaran pengguna. Membaca dokumentasinya dengan teliti mengelakkan anda membina terhadap lapisan yang tidak memiliki objek itu.

Dokumentasi itu juga menyatakan protokol tidak membawa penyulitan sendiri. Sesiapa yang boleh mencapai soket boleh mengawal daemon, jadi anggap ia kawalan sensitif dan bukan suapan metrik. Ikatkannya pada loopback atau soket Unix, dan letakkan di belakang susunan terhad jika pemanggil jauh memerlukannya. Mendedahkannya ke internet atas sebab kemudahan mengubah saluran kawalan menjadi insiden.

Nyatakan tingkah laku selepas panggilan

Penerimaan bukan sama dengan penyempurnaan. Daemon mungkin kembali sebelum terowong naik, jadi tunggu peristiwa penyempurnaan atau kegagalan yang didokumenkan dan kaitkan dengan permintaan yang dihantar.

Putuskan apa yang pemanggil lakukan jika respons hilang. Mengulang penciptaan atau sambungan semula secara buta bukan sama dengan memeriksa sama ada permintaan pertama sudah berkesan.

Penyingkiran akses ialah sekurang-kurangnya tiga tindakan berbeza: menyekat log masuk masa depan, menamatkan sesi aktif, dan membatalkan kelayakan. Minta yang benar-benar dikehendaki oleh dasar, dan nyatakan dalam kontrak yang mana satu. Jangan labelkan satu kemas kini akaun yang berjaya sebagai pembatalan penuh tanpa bukti. Perbezaannya penting semasa insiden, apabila jam berjalan.

Uji kontrak dengan perintis

Perintis kecil yang diluluskan harus meliputi kejayaan, penolakan, gangguan dan percubaan semula, diikuti operasi aplikasi yang sepatutnya dibenarkan atau dinafikan.

Untuk antara muka pada peringkat daemon, dua arahan melatih pemerhatian dan isyarat:

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

Berikan hanya kuasa yang diperlukan oleh operasi. Jauhkan rahsia daripada log rutin, dan log butiran peribadi yang cukup untuk menyatakan sasaran mana terjejas dan bagaimana ia berakhir.

Tulis laluan pemulihan untuk kes apabila API kawalan itu sendiri tidak berfungsi. Pilih antara muka yang memiliki objek dan kitaran hayatnya; dakwaan automasi pada halaman produk bukan pengganti.

Artikel berkaitan