はじめに

これは ドリコム Advent Calendar 2024 の20日目です。

こんにちは、SREソリューション部のハヤブサです。
今回はSREソリューション部で自社の基盤システムの開発・運用を行なっていて助かった事項へのTipsとしての共有をさせていただきます。

現状の共有

現在、私は社内システムが使用する基盤システムの開発・運用を行なっております。
基盤システムであるため、社内の各種システムからのアクセスがあり、また社外へのシステムへアクセスするハブとなっております。

各種システムのアクセス図

上記の図のように各種社内のシステムはハブである基盤システムのみに集中できるようにし、社外へのシステムへのアクセスはハブである基盤システムが吸収するようになっております。
これにより社内のシステムは外部のシステムを気にすることなく開発が行えるようになります。

しかし、外部のシステムを気にする必要がなくなるため、外部システムの挙動を知っているのは基盤システムのみとなり繋ぎ込みの際にデータが足りないなどでエラーとなってしまうという問題も発生してしまいます。

アクセスをパラメータで管理する

そこで、社外システムにアクセスするAPIの通信のパラメータに skip_flag を追加してみましょう。これにより社外システムへのアクセスはスキップされ、社外のシステムからは正常に動作したことを前提に動作を行えるようになります。

スキップフラグの追加

これにより開発は先に進みやすくなりますが、しかしこれは本番環境などでも skip_flag が true になっていた場合は社外のシステムにアクセスせずに成功してしまうなどの問題が発生してしまいます。
開発の利便性は良くなりましたが潜在的なバグとなる問題が内包されてしまいます。

設定によりアクセスを管理する

パラメータの管理のみでは、社内システム側で何かあり skip_flag が true になった場合に対処ができません。
そこで管理画面からシステムごとにアクセスを制御できるように設定を追加します。
skip_flag が true であり、アクセス管理設定が true である場合には、スキップ処理を実施し、どちらか片方でも false であればスキップはしないようにすることで安全性を高めます。

設定での管理を追加

これで、問題はなくなったかのように思えます。

負荷試験

2重でのアクセス制限を行いましたので、本番環境は安心することができます。
しかし次の問題の芽が見えてきました。それは負荷試験です。

負荷試験では多くのアクセスが発生し、また社外システム側へは本番環境ではなく開発環境にデータを流すことになります。
一般的に開発環境は開発動作を確認する環境であるため大きな負荷をかけてしまうと多大なる迷惑をかけてしまいます。

また負荷試験はかけるタイミングもあり、その度に設定がどうであったかなどを思い出したり、確認をするのは人的なミスが発生しやすいです。

そこで負荷試験環境のシステムに関してはインフラの制御により、どのような設定でもモックへと流すように対応をしました。

設定での管理を追加

これにより、開発環境での負荷試験でのアクセスによる社外へのシステムへの影響をなくすことができました。

最後に

如何だったでしょうか?
これが最良のやり方ではないとは思いますが、基盤システムとして周りのシステムに影響が発生しないように、そして開発や運用がしやすいように考えていく思考の一助にはなりましたでしょうか?

年末も近づいており、システムの保守は24時間続きますので皆様の何かの参考になれば幸いです。