Di halaman ini
Bayangkan dua bisnis pelanggan sama-sama memiliki kolom bernama “aktif”. Bagi bisnis pertama, artinya pelanggan pernah membeli dalam setahun terakhir. Bagi bisnis kedua, artinya perjanjian layanan masih berlaku. Konektor bersama dapat memindahkan kedua kolom itu dengan benar. Aturan bersama yang memperlakukan keduanya sebagai keadaan bisnis yang sama dapat salah bagi salah satunya. Ini contoh ilustratif, bukan laporan penerapan.
Sebuah pembahasan platform bersama dan penerapan lokal menggambarkan perusahaan yang menggunakan ulang banyak infrastrukturnya tetapi tetap melakukan pekerjaan besar di lingkungan setiap pelanggan. Persentase yang disebutkan khusus untuk perusahaan itu. Pertanyaan arsitektur yang lebih umum adalah di mana mekanisme bersama berakhir dan makna lokal dimulai.
Pisahkan kontrak pengiriman dari kontrak bisnis
Kontrak pengiriman dapat menyatakan: autentikasi ke sumber, baca catatan yang berubah, pertahankan pengenal, coba ulang dengan aman, dan tampilkan kegagalan. Perilaku itu dapat diimplementasikan sekali dan diuji berulang kali. Nilainya besar karena setiap integrasi memerlukan jalur data yang dapat dipercaya.
Kontrak bisnis menyatakan catatan mana yang berwenang, apa arti status, kapan tindakan diizinkan, dan siapa yang dapat memperbaiki kesalahan.
- Pengiriman bersama identitas · ulangi · ID peristiwa
mengirim peristiwa yang valid
- Kebijakan lokal makna · persetujuan · waktu
memutuskan apakah tindakan diizinkan
- Tindakan yang diizinkan tulis · audit
mencatat hasil
Kontrak bisnis itu bergantung pada alur kerjanya. Sumber dan tujuannya mungkin sama dengan pelanggan lain, tetapi jawabannya tetap berbeda.
Pertimbangkan koneksi toko ke platform email. Platform dapat menyediakan penerimaan peristiwa, penghapusan duplikat, dan jejak audit. Penanggung jawab alur kerja harus menentukan apakah “berlangganan” berarti izin untuk tujuan pemasaran tertentu, apakah pembelian menghentikan pengingat keranjang, dan bagaimana perubahan persetujuan memengaruhi pesan yang sudah masuk antrean. Hal-hal ini bukan fitur konektor yang boleh ditebak dari nama kolom.
Ilustrasi pemetaan Tajo di bawah menyalin tiga bidang secara langsung. Tak satu pun baris menentukan izin pemasaran. Menggunakan ulang jalur pengiriman menghemat kerja, tetapi pemilik alur harus menentukan status mana yang mengizinkan tindakan tertentu. Pemetaan rapi dapat menunjukkan celah itu, bukan menutupnya.
Tinjau sinkronisasi sebelum berjalan
Sinkronkan pembaruan pelanggan ke platform email saya.
Sinkronisasi pelanggan
| Bidang sumber | Bidang tujuan | Aturan |
|---|---|---|
email | EMAIL | Langsung |
first_name | FIRSTNAME | Langsung |
last_name | LASTNAME | Langsung |
Pratinjau sintetis berhasil
3 bidang dipetakan · Tidak ada penulisan ke tujuan
Tata letak ilustratif berdasarkan alat pemetaan Tajo. Pratinjau sintetis dan draf tersimpan tidak mengaktifkan sinkronisasi.
| Lapisan bersama | Lapisan lokal |
|---|---|
| Autentikasi dan pembaruan token | Identitas mana yang boleh mengakses alur kerja ini |
| Pengiriman peristiwa dan percobaan ulang | Peristiwa mana yang dihitung sebagai perubahan keadaan bisnis |
| Pengenal stabil dan penghapusan duplikat | Catatan mana yang merujuk pada pelanggan nyata yang sama |
| Pencatatan dan mekanisme pemulihan | Siapa yang menyelesaikan status yang disengketakan dan bagaimana |
| Validasi kontrak | Apa arti nilai kolom dan kapan nilainya boleh memicu tindakan |
Tabel ini menggambarkan batas desain, bukan klaim bahwa semua implementasi dapat dipisahkan serapi ini.
Penggunaan ulang gagal ketika menyembunyikan perbedaan
Platform umum sering menambah satu kolom konfigurasi untuk setiap pengecualian. Awalnya, ini tampak menjaga penggunaan ulang. Lama-kelamaan, tidak ada yang tahu apakah suatu pengaturan adalah pilihan teknis, batas hukum, atau keputusan bisnis. Inti bersama berubah menjadi panel pengendali bagi keputusan yang tidak berada dalam kewenangannya.
Carilah ketentuan yang stabil. “Jangan terapkan peristiwa sumber yang sama dua kali pada catatan tujuan yang sama” dapat hidup dalam mesin bersama. “Kirim diskon ketika pelanggan menjadi aktif” belum dapat dibagikan sampai “aktif”, audiens yang diizinkan, dan kebijakan penawaran memiliki penanggung jawab. Mesin dapat menjalankan kebijakan yang disetujui, tetapi tidak boleh menciptakannya.
Pemisahan ini juga membantu pemeliharaan. Jika API berubah, tim platform dapat memperbarui adaptor dan pengujiannya. Jika definisi pelanggan yang memenuhi syarat berubah, penanggung jawab bisnis dapat memperbarui kebijakan dan contoh uji tanpa menunggu penulisan ulang mekanisme pengiriman. Batas yang jelas membawa setiap perubahan kepada pihak yang berwenang atasnya.
Gunakan ulang mekanisme tanpa meratakan makna
Sebagian aturan lokal memang menambah biaya. Platform tanpa kontrak yang dapat digunakan ulang menjadi kumpulan skrip khusus. Jawabannya adalah mencari mekanisme berulang sebelum mengabstraksikan makna yang tampak berulang. Komponen bersama yang dirancang baik mungkin menerima predikat bertipe, waktu peristiwa, dan batas tindakan, sambil membiarkan definisi bisnis predikat itu tetap lokal.
Uji batas tersebut dengan kasus nyata. Ambil satu peristiwa normal, satu duplikat, satu koreksi terlambat, dan satu izin yang dicabut. Tanyakan lapisan mana yang bertanggung jawab atas setiap respons. Jika suatu kegagalan tidak dapat ditugaskan, abstraksinya menyembunyikan kepemilikan. Jika pelanggan baru memaksa enum “aktif” bersama menampung beberapa tafsir yang tidak terkait, tipe bersama itu terlalu luas.
Artikel pendamping tentang penerapan memeriksa apakah suatu kemampuan bekerja di dalam alur kerja langsung. Artikel ini menanyakan apa yang dapat dibangun sekali tanpa menghapus arti alur kerja tersebut.
Antarmuka antar-lapisan perlu cukup jelas untuk menolak asumsi yang buruk. Mesin bersama dapat mensyaratkan ID peristiwa, waktu sumber, pelaku, dan tujuan yang dinyatakan sebelum menerima permintaan tindakan. Alur kerja lokal memasok kebijakan yang memutuskan apakah tindakan itu diizinkan. Jika tujuan tidak ada, mesin perlu menolak permintaan; jika kebijakan ambigu, penanggung jawab lokal harus menyelesaikannya. Ini cara praktis menjaga penggunaan ulang tanpa menyerahkan otoritas bisnis kepada kode umum. Dokumentasikan kontrak dengan satu contoh yang diterima dan satu yang ditolak, lalu uji keduanya setiap kali salah satu lapisan berubah.
Konektor yang dapat digunakan ulang seharusnya mempermudah pernyataan makna lokal dan membuat pelaksanaannya lebih aman. Konektor tidak boleh membuat dua janji berbeda tampak sama hanya karena nama kolomnya sama.
Pertanyaan yang sering diajukan
Apa yang biasanya perlu digunakan ulang oleh platform integrasi?
Mekanisme stabil seperti pola autentikasi, pengiriman data, idempotensi, percobaan ulang, pencatatan, dan pemeriksaan kontrak sering dapat dibagikan ketika persyaratan dasarnya sama.
Apa yang harus tetap khusus untuk bisnis tertentu?
Makna kolom, otoritas sumber, aturan persetujuan, kebutuhan waktu, dan siapa yang boleh bertindak berdasarkan suatu status harus ditetapkan untuk bisnis serta alur kerja tersebut.
Bagaimana tim dapat menguji batasnya?
Cobalah menyatakan alur kerja baru dengan komponen yang sudah ada. Jika itu mengubah makna bisnis atau menyembunyikan pengecualian dalam konfigurasi umum, pertahankan logika tersebut secara lokal dan nyatakan antarmukanya dengan jelas.