SPN
SPNはAPI Gateway とマイクロサービスの間およびマイクロサービス間の通信において、高いセキュリティと配置の柔軟性を提供します。
セキュリティ
一般的にはサービスはコンテナクラスタの中で通信を行い、コンテナ間の通信はそのクラスタの仮想ネットワークに閉じているため、平文での通信やIPアドレスでの特定で十分とされています。 しかし、以下のようなケースを考えると、サービスでも仮想ネットワークを超えて接続したい場合があります。
- 開発途上のサービスを一時的に接続してシステムテストを実施したい
- データベースサービスをコンテナクラスタとは別にリソースを確保することで処理性能やデータ容量を確保したい
- 稼働中のシステムに一時的にリソースを追加してスケールアウトしたい
マイクロサービス認証局
Chip-in に参画するマイクロサービスは必ずマイクロサービス認証局の認証を得なければなりません。 運用者はこの認証局の CP/CPS を定義する必要があります。 マイクロサービス証明書の発行は SCEP プロトコルにより、行われます。 SCEP サービスはCSRの内容が事前に承認された証明書の属性に一致した場合のみマイクロサービス証明書を発行します。
サービスディスカバリ
多くの高可用性システム、負荷分散システムはサービスの場所、死活を特定するために DNS や TCP Connect のポーリングを行なっています。 しかし、ポーリングは間隔を開けて行われるため、レイテンシを避けることができません。また、失敗した時にはその原因が不明であるため、障害検知、復旧検知を難しくてしています。 Chip-in は逆接続アーキテクチャにより、ZPSD(Zero Polling Service Discovery)を実現しています。 サービスを実装するインスタンス側から接続するため、SPN Hub はポーリングを行わずにサービスの起動を検出します。
SPN Hub
SPN の中心となる SPN Hub はコアサービスのサイドカーコンテナとして実装されます。
接続方式
Chip-in では SPN Hub を中心として多数のマイクロサービス(Micro Service)をハブ状に接続する構成を取ります。 マイクロサービスが SPN Hub に接続するために以下のいずれかの方法を取る必要があります。
方式 | 説明 |
---|---|
直接接続方式 | マイクロサービスの実装プログラムから直接サービスバスに接続する。接続には serviceConsumer モードと serviceProvider モードの2種類がある |
エージェント方式 | マイクロサービスを実装するコンテナでサイドカーとしてエージェント(Agent)を起動し、実装プログラムはエージェントとの間でTCP通信を行う。TCP通信にはエージェント側が listen する serviceConsumer モードとエージェントからアプリケーションに接続する serviceProvider モードがある。 |
クラスタマネージャ
Chip-in はクラスタマネージャにより、マイクロサービスインスタンスの起動・停止を行います。 SPN Hub はクラスタマネージャを経由して以下の機能を提供します。
- 日次スケジュールに従って営業時間帯のみインスタンスを常駐させる
- サービスにアクセスがあった時点でインスタンスを起動する
API Gateway はクラスタマネージャんを経由して以下の機能を提供します。
- トップページ表示時に関連するサービスが不在の場合は揃うまで待つソーリーページを返す。