Mais conteúdo relacionado
Semelhante a JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました (20)
JAWS-UG コンテナ支部 #15 - Amazon ECSの開発環境を動的に管理するツールを作ってみました
- 2. ⾃⼰紹介
• 2018年 サイバーエージェント新卒⼊社
• Cloud Technologies Advisor =
(SA+SRE+DevOps+Infra) /
• AWA、REQU、タップル誕⽣、
CROSSMEなど担当
• 好きなもの: Terraform、Python、
Elasticsearch、Serverless ❤
• 好きなAWSのサービス: ECSTorgayev Tamirlan
@prog
- 13. 理想
• A/B testing (Feature Flags)、microservices、、etc.
• ⼤きなアーキテクチャ変更...
• いきなり導⼊するの難しい 😢
- 23. devxx ⽅式のデメリット
• 「あっ、dev は私が使ってるから触らないで」のような
原始的コミュニケーション
• チャットベースなどの管理
• 「dev環境全部割り当て表」
• 環境増減is⼿動
• 1環境 = ALB + ECS Service + Route レコード
• 特にALBは、作成に時間もかかり、いるだけでprovisioningで課⾦される
• 増減作業の⼿間
• お⾦がかかる
• サーバシャットダウン忘れ、だるいからあえてシャットダウンしないなど
• サーバ以外のリソース(LB、etc.)
- 28. eden概要
• create/deleteの2コマンドのみ
• 既存の環境へのcreateはTask Definitionの作成とdeployのみ
• REST⾵ APIとCLIがあります
• REST⾵ != RESTful
• Reference (参照)となるECS Serviceを指定するとそれをパクってくれる
• dev 的reference serviceはIaaC(Terraformなど)で管理想定
• 環境を作成するたびにDescribeを⾏う
• dev を変更すれば、それ以降に作成された動的環境が新しい設定で作成される
• 既存の環境を更新したければ、⼀旦delete
- 29. edenがつくるもの
. ECS Task Definition
. ALB Target Group
. ECS Service
. ALB Listener Rule(共通ALBにHostHeaderルール追加のみ)
. Route CNAME record(共通ALBを指すだけ)
. Configファイルの更新(後述)
(環境削除は逆順)
- 30. Configファイル is 何
• 開発アプリケーション(Web or Native)に、
どんな環境があるかを知らせるためのJSONファイル
• 隠しメニューを出すとJSONから⽣成された環境⼀覧が出る
• 環境が切り替えられる
- 32. {
"environments": [
{
"env": "dev", // 固定、NativeでのAPNS等、外部APIのdev/stg/prd切り替え用
"name": "dev-dynamic-test",
"api_endpoint": "api-test.dev.example.com"
}
]
}
// 同一環境で複数のendpointもできます…
// api_endpointのキー名が変えられます…
Configファイル
static
prefix
branch
name
動的環境専用Zone
branch
name
static
prefix
- 36. eden導⼊ - CLI
• まずはCLIから
• 環境作成3秒、削除2秒ぐらい
• なお、既存の環境へのcreateはdeployするだけになるのでチョッパヤ
• Task⼊れ替えはまた別の話…
- 37. eden導⼊ - API
• eden REST API をデプロイした
• ALB、Lambda、Python . + Flask、全部で1300⾏ぐらい
• CIで、ビルドとECRへのpushが終わった直後に条件分岐追加
• commit: GET eden.example.com/v /create?branch=foo&image_uri=xxxxxx
• merge: GET eden.example.com/v /delete?branch=foo
• Native devアプリの環境選択メニュー変更
• Configファイルの中⾝を元に⽣成するよう変更
• dev (パクり元)/stg/prdはedenで管理されないので、⼿でConfigファイルに記述
- 38. eden導⼊ - 開発者の声
• 感想
• 「⾃動デプロイでlead timeが短縮できる」
• 「Terraformのdev 以外のdevが消せる」
• 「利⽤が終わったdev環境にmaster流し直すとかしなくてもよくなった」
• Feedback
• staleなPRの環境が⾃動的に削除されてほしい
• どんな環境があるかの⼀覧がほしい
- 43. Baikonur Project
• Terraform Moduleや各種ツールの共通化、OSS化プロジェクト
• https://github.com/baikonur-oss/docs
• PR⼤歓迎!コントリビュータ募集中!
• Terraform Moduleも随時募集中
• 相談やお問い合わせは、
各レポジトリの Issue か@prog まで
edenつくるの誰か⼿伝って…
- 48. Baikonur eden
• aws-eden-core
• APIとCLIの共通部分
• aws-eden-cli
• CLIツール
• pip install aws-eden-cliでインストールできる
• インストール後 eden で実⾏できる
• eden API
• Lambda + Terraform module