3-shake Advent Calendar 2023 の24日目です。
AWSにて割と新しめのサービスであるVPC Latticeに触れる機会があったので、サービスのコンセプトや使う上での考え方やユースケースについて感じたことをまとめてみます。
あるあるなユースケースで使えそうだなという印象を持ったので、選択肢のストックとして蓄えておく意味でも少し役に立つかなと思います。
サービス概要
VPC Latticeはアプリケーションレイヤーにおけるネットワーキングサービスで、いわゆるサービスメッシュを提供するようなプロダクトです。
以下のような機能を提供してくれます。
- アクセスログの収集などのロギング
- サービス間のモニタリング
- サービス間のアクセス制御(IAMベース)
- 通信における暗号化
ユースケース
サービスメッシュにおける各サービスがVPC単位であるときに、これらを集約して疎通性を確保・アクセス制御したい時に使うことになると思います。AWSアカウント跨ぎも然りです。
これにより以下のようなメリットがあると考えます。
- VPC(AWSアカウント)単位で開発組織・運用組織を綺麗に分割できる
- これらの複数開発組織に横断したインフラ部隊が中央集権的に管理しガバナンスを効かせることが出来る
登場人物
まずLattice特有の登場人物についてです。
- Latticeサービスネットワーク: サービスメッシュのコントロールプレーンに当たるリソース
- Latticeサービス: サービスメッシュの各々のサービスに当たるリソース
- この人に向けてリクエストが流されていく
- Latticeターゲットグループ: Latticeサービスのバックエンドに当たるリソース
- ほぼELBのターゲットグループと同じ概念
- EC2インスタンス・ALB・Lambda・IPがターゲットとして選べる
- VPC
- とVPCに作られた各々のシステム
引用: https://docs.aws.amazon.com/ja_jp/vpc-lattice/latest/ug/what-is-vpc-lattice.html
俺の考えた基本的な設計方針
VPC Latticeを使う場合、おそらくベースとなる構成はこんな感じなんだろうなというのを図示してみました。
いわゆるサービスメッシュのコントロールプレーンに該当するLatticeサービスネットワークは別アカウントとして切り出します。これは共有リソースと言うこともできると思うので、こういった形にしました。
また、これはインフラ部隊のような組織横断チームが管理するとして、Latticeサービスの繋ぎ込みに関する仕事やアクセス制御のも担う形を想定しています。
これであれば、ClientやServerのAWSアカウントで開発している方々は自分たちの持っているシステムの開発に集中できて責任分界も綺麗であると考えています。
所感
一言で言うと選択肢として持っておけるといいなと思っています。
定量性は私の中でもまだないですが、ある程度大きなシステム規模を将来的に見据えている、すでに規模が大きくて煩雑であるというシチュエーションでこそ効果を発揮する気がします。そんな観点も踏まえて技術選定を行なっていくのが良いのかもしれないという今のところの感想です。