話そうとしない2つのシステム。話させ、話し続けさせます。
APIミドルウェア、スケジュール同期、Webhookパイプライン、そしてジョブの失敗を同僚より先に知らせる監視。
システム
データがすでにある場所
- Bullhorn
- REST APIを通じて、候補者、連絡先、求人のレコードを採用サイトやレポートと同期。
- Salesforce
- アカウント、商談、カスタムオブジェクトを請求やデリバリーと同期。
- ServiceNow
- チケット、リクエスト、CMDBレコードを手で打ち直すのではなく、仕事が始まる場所で作成。
- UKG
- 従業員、組織、勤怠のデータを人事とそれに依存するシステムの間で移動。
- カスタム・レガシーシステム
- 自社アプリ、10年分のローカル改修が入ったERP、SFTPへのファイル投入、SQLビュー、SOAPエンドポイント、業務を支えているスプレッドシート。
採用
CRM
サービス管理
人事・労務
そのほかすべて
私たちは独立したエンジニアリングチームであり、これらのベンダーのリセラーでも認定パートナーでもありません。公式APIに対して、貴社が発行し取り消せる認証情報で構築します。
よく見つかるもの
今ある連携は、人です
- システム間の手作業のコピー&ペースト
- エクスポートし、整形し、貼り付ける。その人が休暇に入るまでは動き、プロセスの速度に上限をかけます。
- ずれ始めた重複データ
- 3つのシステム、3つの真実、どれが勝つかのルールなし。レポートは数字ではなく議論になります。
- フロー自体に持ち主がいない
- どのシステムにも持ち主がいますが、その間の空間には誰もいません。辞めた人のスクリプトが、誰も再起動したくないマシンで動いています。
- 観測できないプロセス
- 同期が止まっても、何も知らせてくれません。数日後に気づき、何が失われたかを再構成するログもありません。
01
02
03
04
2つのシステムと、動かすべきレコードの名前を教えてください。
インターフェース、障害点、そして私たちが最初に作るものをお返しします。
構築するもの
見て、記録して、止められる層
- APIミドルウェア
- テスト済みのひとつのサービスが認証、フィールドマッピング、検証、ビジネスルールを担います。
- スケジュール同期
- 増分ジョブが変更分だけを動かし、ウォーターマークで再開位置を保持。より遅い完全照合がずれを捕まえます。
- Webhookとイベントパイプライン
- 署名検証、遅いコンシューマーが配信を落とさないためのエンドポイント背後のキュー、保存したペイロードからのリプレイ。
- 管理ダッシュボード
- 最後の成功実行、入出力レコード数、現在の失敗、そして私たちへのチケットなしで押せるリトライボタン。
障害時の振る舞い
何かがうまくいかないとき、システムは何をするか
連携は日曜の午前2時に壊れます。503、形の変わったペイロード、重複した配信。ここが、私たちが最初に設計する部分です。
バックオフ付きリトライ
タイムアウト、429、5xxは、ジッター付きの指数スケジュールと上限付きの試行回数でリトライされます。苦しんでいる相手システムを、私たち自身のトラフィックで叩き続けることはありません。
冪等性
書き込みは安定したビジネス識別子、または相手が対応していれば冪等キーをキーにします。メッセージを2回リプレイしても、レコードはひとつ。それが、リトライとリプレイを安全にするものです。
デッドレターキュー
リトライ後も失敗するメッセージは、元のペイロード、エラー、相関IDとともに退避されます。黙って捨てられるものはなく、修正済みのバッチをリプレイできます。
人に届くアラート
失敗した実行、しきい値を超えたデッドレター、まったく動かなかったジョブは、チームがすでに見ているチャネルに通知されます。ハートビートの欠落も失敗として扱います。
ロールバックと切り替えの安全性
デプロイはバージョン管理され、元に戻せます。機能スイッチでリリースなしにフローを一時停止し、修正を準備する間は以前の振る舞いに戻します。
監査可能性
各レコードはログを通して相関IDを持ち運ぶので、「この値はどこから、いつ来たか」は調査ではなくクエリになります。
開いて確かめられる事例
何も壊さずに停止された連携。
私たちの仕事の大半は守秘義務契約の下にあります。これはそうではなく、オンラインで見られます。
対象: Automobili Zupi の公開カタログは、イタリアのディーラーがSubito.itに掲載を出すために使うバックオフィス、Multigestionale Motoriと毎時同期していました。更新されるのは変更のあった車両だけ、在庫リストから消えた車は削除ではなくアーカイブ、画像はローカルに取り込みつつ、ショールームで手作業でアップロードされたものを決して上書きしませんでした。
プロバイダーがAPIアクセスを制限したとき、同期はコマンドひとつで止められました。カタログは表示されたまま、手入力のデータは無傷、失われたレコードはゼロ。障害時の振る舞いを最初に設計する理由がこれです。止められることもそのケースのひとつで、それは必ず来ます。
アーキテクチャとセキュリティ
どう作られ、誰が何を見られるか
認証情報
貴社が発行し、連携に必要な範囲に限定したサービスアカウント。シークレットマネージャーに保管し、コード変更なしにローテーション可能。共有の個人ログインはありません。
転送中と保存時のデータ
すべてTLS、暗号化ストレージ、機微と指定されたフィールドを除去したログ。保持期間とホスティング地域は、実データを処理する前に合意します。
環境
開発とステージングはベンダーのサンドボックス上で動き、デフォルトでは本番データを使いません。昇格は毎回同じ自動化された経路です。
監視
ヘルスチェック、実行履歴、スループット、エラー率。貴社のダッシュボードと、すでに運用中の可観測性ツールの両方で。
進め方
フローの整理から、動く連携まで
フローを整理する
どのレコードが、どの方向に、何をきっかけに動き、各フィールドの持ち主は誰か。
インターフェースを確認する
権限、レート制限、そしてプロセスに必要なことにAPIが届かない箇所。スライドではなくサンドボックスで検証します。
最も狭い有用なスライスを作る
一方向、ひとつのレコード種別、端から端まで。最初のコミットからログとリトライ付きで。
並行稼働させ、それから切り替える
新しいフローは古いものと並行して動き、照合され、数字が一致して初めて引き継ぎます。
操作を引き渡す
ダッシュボード、アラート、ランブック、コードをあなたの手に。システムが進化する間、私たちを残すかどうかは自由です。
まだ連携を作る価値があるか分からない?
フローを送ってください。答えがすでにお持ちのツールの設定変更なら、そう申し上げます。
よくいただく質問
送信する前に
どのシステムを連携できますか?
API、Webhook、読み取りを許可されたデータベース、またはスケジュールされたファイル交換があるものなら何でも。Bullhorn、Salesforce、ServiceNow、UKG、そして社内・カスタムシステム。必要なことに対して使えるインターフェースが製品にない場合は、その周りに壊れやすいものを作る代わりに、ディスカバリーの段階でそう申し上げます。
それらのプラットフォームの公式パートナーやリセラーですか?
いいえ。私たちは独立したエンジニアリングチームで、貴社がすでにライセンスを持つエディションの公開APIに対して、貴社の管理者が発行し取り消せる認証情報で構築します。パートナー限定の機能やアドオンは、貴社とベンダーの間の判断のままです。
稼働後、連携は誰のものですか?
あなたのものです。コード、リポジトリ、インフラ定義、ランブック。私たちが運用を続けることも、ウォークスルー付きで引き渡すことも、その両方を順に行うこともできます。私たちだけがアクセスできるアカウントの裏に閉じ込められるものはありません。
ベンダーがAPIを変更したらどうなりますか?
コントラクトは境界で検証されるので、変更または欠落したフィールドは、下流に不正なデータを書き込む代わりに、既知の場所で大きな音を立てて失敗します。バージョン固定、サンドボックスのステージング環境、スキーマとエラー率の変化に対するアラートは、追加販売ではなく構築の一部です。
誰も文書化しなかったシステムでも対応できますか?
それが仕事の大半です。スプレッドシートや手作業のステップも含めて今日実際に動いているものを整理し、コードを書く前に、その仕事をしている人と私たちの読みを検証します。
お問い合わせ
連携フローを整理しましょう。
2つのシステム、動かすべきレコード、そして今日何が壊れているかを教えてください。
- 拠点
- イタリア · チェコ · 日本