「連携を作った担当者が辞めてから、誰も直せないんです」
連携は、担当者が自分のユーザーで作ったものだった。退職でユーザーが無効になり、その日から連携が止まった。コードを開いても、どの値をどう変換しているのか誰にもわからない。連携は作った日がゴールではなく、何年も動かし続けるものです。そのための4つの論点を整理します。
シリーズ「システム連携の設計」3/3本目
変換:項目と値の対応は、コードの外の表で持つ
外国語の手紙には翻訳が要ります。システムも、同じものを別の名前・別の形で持っています。一方は「won」、もう一方は「受注」。日付の形も、タイムゾーンも、税込か税抜かも違います。
- 対応表をコードの外に持つ
- 項目と値の対応をスプレッドシートや設定で管理する。値を1つ追加するたびにコードを直さなくて済む
- 知らない値は、止めて知らせる
- 相手が新しい選択肢を追加したとき、その値のデータを静かに捨てない。数字が少し減るだけの「静かな失敗」になる
- 変えるときは事前に知らせる約束をする
- 相手システムの担当者と、項目や値を変えるときの連絡ルールを決める
認証と権限:連携専用の鍵を、必要な範囲だけ
マンションの合鍵を業者に渡すとき、全部屋の鍵ではなく、作業する部屋の鍵だけを渡します。連携にも、連携専用の鍵を、必要な範囲だけ渡します。
- 連携専用のユーザーで動かす
- 人のユーザーを使い回すと、その人の退職で止まり、誰の操作かも区別できない
- 最小限の権限にする
- 管理者の権限で動かすと、連携の不具合で全データが書き換わりうる
- 鍵はコードの外の安全な場所に置く
- コードに書くと漏れる。鍵を変えるたびにコードを直すことにもなる
- 鍵の期限と更新の担当を決める
- 期限切れで、ある日突然全件が失敗する事故を防ぐ
監視:動いていることを、毎日確かめる
水道管は普段誰も気にしませんが、漏れていても気づかなければ、ある日床が水浸しになります。連携も、動いていることを毎日確かめる仕組みがないと、止まっていることに数週間気づきません。
- 最後に正常に終わった日時
- 一定時間を過ぎても更新されなければ知らせる
- 処理した件数
- 普段と比べて急に増えた・減ったら知らせる。0件は失敗と同じくらい怪しい
- 連携ごとの持ち主
- 連携の一覧に、目的・持ち主・止まったときの影響を書く。通知が届いても、直す人が決まっていなければ誰も動かない
- 通知の重さ
- 止まった・全件失敗はすぐに、1件の失敗は日次でまとめて。多すぎる通知は誰も読まない
作るか買うか:壊れたら誰が直すかで選ぶ
- 専用のコネクタ
- 名刺・MA・会計など、よくある連携。早いが、細かい要件には合わないことがある
- iPaaS
- 複数の連携をまとめて画面で管理したいとき。月額の費用がかかる
- スクリプト(GASなど)
- 小さく特殊な連携。安いが、作った人しか直せない状態になりやすい
- 自作の連携基盤
- 大量・複雑・止まると困るもの。開発と保守の体制が要る
ここで先に反論しておきます。「スクリプトなら無料で作れるので、一番安い」と思うかもしれません。ですが、失敗の扱いと監視を入れずに作ったスクリプトは、止まったときの調査と復旧で、結局高くつきます。スクリプトで作るなら、失敗の退避・通知・持ち主・手順書を最初から入れておきます。実際に使っている形は無料実装テンプレート集で配布しています。
自己診断
- 項目と値の対応は、どこで管理されていますか?
- コードの中だけなら、値の追加のたびにエンジニアが要る
- 連携は、誰のユーザーで動いていますか?
- 人のユーザーなら、その人の退職で止まる
- 連携が止まったとき、どれくらいで気づきますか?
- 数日以上かかるなら、監視がない
- 社内の連携やスクリプトは何本あり、それぞれ誰が直せますか?
- 答えられなければ、作った人しか直せない連携がある
シリーズ:システム連携の設計
- 1.基本編:正・方向・キー
- 2.信頼性編:重複・失敗・制限
- 3.運用編:変換・認証・監視・選定(この記事)
6つのシリーズの全体像は仕組みの設計:6つの要素にまとめています。
問い
社内で一番古い連携を1つ思い出してください。それを作った人は、今も社内にいるでしょうか。いないなら、その連携は今日止まっても、明日直せる状態にあるでしょうか。
この内容を実際に試す
30分相談する →