夏の AWS Fargate & Amazon ECS/EKS 祭り に参加しました
初めてAWS新オフィスにお邪魔しました!
特にユーザ事例のお話はとてもためになって、すごく満足度が高い会でした。
特に、「理想状態への収束」というキーワードは、最近特に気にしていることで、
今の仕事にも積極的に活かそうと思いました。
Kintone on EKS Cybozu 野島さん
- Kintone:業務アプリケーションを業務ユーザが作るためのプラットフォーム
- US向けにサービス展開→AWSで展開
- メンバーは10人程度,2~3名のチームに分割
- 1アカウント、チーム分VPCを作っている
毎日夜8時に完全削除、毎朝5時に新規作成、すべてIaC - Ingress→Nginx→APのような構成、DBはAuroraでEKSの外側
- なぜEKSに乗せたか?
→「手順」ではなく「理想状態」を与えてデプロイできる
「理想状態への収束」
- いわゆる"手順"は差分的な考え方
→「現在の状態」と「理想の状態」の差分 - 差分を自動化で積み重ねていくと、結局ヒトがツールのために働かないといけなくなる
- ロバストな自動化のためには「理想状態への収束」を実現する必要がある
- DB/NW : CloudFormation , LB/AP : EKS
継続的インテグレーション
- 使われていない自動化は壊れていく
→常に自動構築を動かすことが非常に大事 - Git PushするたびにCIで変更を開発環境に適用する
- 一日一回CIでVPCを削除してゼロから再構築する
→ゼロから環境が作れることを保証 - Kubenetesの マニフェスト を用意して、 kubectl apply で適用する
→CloudFormation書いてdeployするイメージ - 初期データの作成などは、以前はSQLでべた書きしていたが、
今はサービスを管理するサービスを作って、RESTで初期化している
小ネタ
AWS FargateでElixirのコンテンツ配信システムを運用してみた エムスリー 野島さん
Fargate化してみて
- アプリケーションデプロイまでの時間が高速化された
20 -> 10min - プラットフォームの構成変更が楽になった
- ローカル環境でプラットフォーム自体のテストができるようになった
- Deploy hookなどが実機じゃないとテストできなかった
- デプロイパイプラインを管理しやすくなった
CodepipelineからECSへのデプロイが非常に楽、AWSで完結できるので非常にシンプル
従来のElasticBeanstakの構成と課題
- Beanstalkがネイティブでサポートしていないため、Erlangのビルドが必要だった
→ビルドに1時間ほどかかっていた、結果としてビルドしないために.ebextensionを使うように。
「インフラ管理の離別が発生してしまった」 - TerraformがElasticBeanstalkのカスタムプラットフォーム構築のための必須パラメータとなるPlatformARNがサポートされていなかった
→Terraformに手を入れていたが、Terraformのバージョンアップへの追随がつらくなってきた
エムスリーのシステムとElasticBeanstalkが合わなかった
Fargate化後の課題
EKS / Fargate コンテナの運用監視は今までと何が違うのか?よくある課題とその対策 Datadog 服部さん
EKS / Fargate ってどう監視したらいいんですか?
- データ収集・保存→可視化→アラート→問題分析→インシデント管理
- データを取る、そして使う
- コンテナ環境ではデータを取るプロセスに特徴あり
- モニタリングが特別すぎるわけではない
大前提:コンテナ化によるビジネスアジリティの享受
- 依存関係の地獄からの脱却
- 圧倒的なスケーラビリティの獲得
- 超軽量で高速なデプロイ
「導入したものの運用上これらを失うような状況に陥らないように。」
- 注意すべきポイント
- コンテナそのもののメトリックもとる
- スケーラビリティが出すぎて監視がスローダウンしないように
- デプロイしたばかりのコンテナイメージのアップデートを塩漬けにしない(≒既知のバグを踏まない)
コンテナを運用するとどうなるか?
「導入したとたんに急拡大する」
「ライフサイクルが異常に速くなり、集積度などが大きく変わってくる」
- モニタすべきメトリック・イベント・ログは激増する
- 今まで以上に物理的/論理的なレイヤーが増える
膨大で多層にスケールするシステムのモニタリングとは?
- 従来のサーバー監視:サーバーホスト中心
サーバーの登録・サーバの役割設定 - スケーラブルなモニタリング:サービス中心
タグやラベルによるクエリベースのモニタリング
#role:web,#nginx,5xx,#instance:c4-xlarge,#xxxxxxなど
"The Three Pillers of Ovservability"