こいつを解説します。
凄そうな新機能ですが、AWS re:Invent 2022 2日目のキーノート終了後にしれっとアップされたのみで正体不明!
一言で
3行で
- 基本的には「ALBの集合体+それらをまとめるハブ」みたいなもの。
- コンピュート系リソース同士をアプリケーション層で相互通信&ルーティング&アクセス制御できる。
- 複数のAWSアカウントやVPCから相互乗り入れできる。
解説
Latticeは「格子」という意味だそうです。
マイクロサービス間通信などの文脈で使われる「Mesh」に近い命名なのかも知れませんね。
上記のAWS News Blogを読み解き、ポンチ絵を描いてみました。
仕組み
- HTTP/S、gRPCプロトコルで接続が提供される
- Latticeのコンポーネントとして「サービスネットワーク」の配下に「サービス」を作って使う
- サービスネットワーク:複数のサービスを束ねるゲートウェイのようなもの
- サービス:簡単に言うとELBのようなもの。以下の構成要素がある
- リスナー
- ルール
- ターゲットグループ
サービスネットワーク
- ここに紐づけられたVPCは、DNSでそのサービスネットワーク内のサービスを自動検出できるようになり、すべてのアプリケーション間通信がLattice経由になる
- Lattice経由で通信してよいAWSアカウント、VPC、アプリケーションをResource Access Managerで制御できる
サービス
- ソフトウェアの機能の単位。独立してデプロイ可能なもの。
- 任意のアカウント or VPCに配置できる
- コンピュートリソースの組み合わせからなる(EC2、ECS、Lambda等)
サービスの構成要素
リスナー(2つまで)
- 流入するトラフィックのポート&プロトコルを定義する。
- 対応プロトコル:HTTP/S(1.1&2)、gRPC
ルール
- 種別
- デフォルトルール
- (追加の)ルール
- 構成要素
- 適用条件:ルールを適用するタイミングを定義
- アクション:トラフィックをターゲットグループに転送する
ターゲットグループ
- 宛先となるコンピュートリソースの集まりのこと
- 指定可能なもの
- EC2インスタンス
- IPアドレス
- Lambda関数
- Kubernetes Pod(Gateway Controller for Kubernetes経由で指定可能)
その他の機能
- アクセスポリシー:これをIAMリソースポリシーでサービスネットワークやサービスに紐づけることで、アクセス制御が可能。
- サービスディレクトリ:自アカウント&紐づけ済みAWSアカウントに含まれるサービスをまとめて確認できる。
Latticeの利用者(管理者)として、ざっくり以下の2ロールを想定しているようです。
- ネットワーク管理者
- サービスネットワークを作成し、全体のアクセス許可・監視を設定する
- 他のAWSアカウントを紐づける
- サービスオーナー
- サービスを作成し、固有のアクセス許可・監視を設定する
- ルーティングを定義する(=リスナー&ルールの設定)
- サービスをサービスネットワークに紐づける
どういうときに使えるの?
今までなかった切り口の新機能なので、アイディア次第で色々ありそうです。
- 社内の複数システム間の通信をシンプルにまとめたい場合
- これまではVPCピアリングやトランジットGWでVPC同士を繋ぎ、さらにその中でELB+コンピュートリソースを配置したり、ルーティング設計したりアカウントまたぎでエンドポイント張ったり…とインフラレイヤーの対応がそこそこ大変でしたが、1アカウントにLatticeを配置し、各「アプリケーション」間の通信インフラをお手軽にまとめる(L7のルーティングだけを考える)ような使い方ができそうです。
まとめ
現在Latticeはプライベートプレビュー中なのでまだサクッと触るのは難しいですが、公式ブログを読みながら手元で絵を描いてみるだけでもかなり理解が深まりました。
日々発表される抽象度の高いサービスは、こうやって理解してアウトプットしていこうと思いました。
今のところ、他に出ている貴重な日本語記事はクラメソさんのブログぐらいです。
こちらも大変勉強になるのでぜひご覧ください!
2023/4/1 追記
とうとうGAしたので超速で触ってみました!