Slide 1

Slide 1 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. © 2023, Amazon Web Services, Inc. or its affiliates. Spring と AWS サービスを活⽤して実現する安全な デプロイメント S P R I N G F E S T 2 0 2 3 Masatoshi Hayashi Specialist Solutions Architect, Containers AWS Japan Masao Kanamori Specialist Solutions Architect, DevAx AWS Japan

Slide 2

Slide 2 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. ⾃⼰紹介 SIer フリーランス Java/Ruby 開発者 Kubernetesインフラ設計 (Web 企業) Containers SA, Support Engineer (クラウド製品ベンダー) AWS Japan Containers SA 林 政利, @literalice Specialist Solutions Architect, Containers / AWS Japan 2

Slide 3

Slide 3 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. ⾃⼰紹介 Amazon Elastic Container Service AWS Step Functions AWS Fault Injection Simulator ⾦森 政雄 Ø 所属/役職 : DevAx(Developer Acceleration) チーム ソリューションアーキテクト Ø 好きなサービス

Slide 4

Slide 4 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. アジェンダ 安全に機能リリースするとは? Continuous Configuration (CC) AWS 上でコンテナ化したアプリケーションを動かす選択肢 アプリケーションを安全にリリースする仕組みをどう組み込むか︖ デモ 4

Slide 5

Slide 5 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. アジェンダ 安全に機能リリースするとは? Continuous Configuration (CC) AWS 上でコンテナ化したアプリケーションを動かす選択肢 アプリケーションを安全にリリースする仕組みをどう組み込むか︖ デモ 5

Slide 6

Slide 6 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. CI/CD はやってますよね? Source Build Test Production

Slide 7

Slide 7 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. ⾃動化は確かに価値がある コンパイル ユニットテスト ビルド ⾃動受け⼊れ テスト 本番環境への デプロイ 簡単なパイプラインの例 ⼿作業のミス : 減 デプロイの頻度 : 増

Slide 8

Slide 8 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. でもデプロイはゴールではない 本番環境への デプロイ デプロイの後に起こること めっちゃ⼈気でた!! 負荷が急増した... めっちゃ不評だった… セキュリティインシデント!! アプリケーションの挙動を変えるために毎回デプロイする?? etc…

Slide 9

Slide 9 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. デプロイは機能リリースと同義? 9 本番環境への デプロイ = 新しい機能をリリースする ソースコードの変更を対象の 環境に反映する or

Slide 10

Slide 10 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. 機能リリースのしがらみ 機能リリースで考慮したいことの例 • 決められた⽇時からその機能をオープンにしたい 例) TV 番組と連動したキャンペーン、AWS の新サービス発表etc • ⼀部の⼈にのみ先⾏して機能を提供したい 例) Private Beta 、A/B テスト etc • ⼀度出した機能を⼀時的に取り下げたい 例) 想定以上のトラフィック、⼀部の機能不具合 etc 10

Slide 11

Slide 11 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. デプロイと機能リリースを分ける 11 本番環境への デプロイ = 新しい機能をリリースする ソースコードの変更を対象の 環境に反映する or

Slide 12

Slide 12 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. デプロイと機能リリースを分ける 12 本番環境への デプロイ = 新しい機能をリリースする ソースコードの変更を対象の 環境に反映する その後、任意のタイミングで

Slide 13

Slide 13 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. アジェンダ 安全に機能リリースするとは? Continuous Configuration (CC) AWS 上でコンテナ化したアプリケーションを動かす選択肢 アプリケーションを安全にリリースする仕組みをどう組み込むか︖ デモ 13

Slide 14

Slide 14 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. Continuous Configuration (CC) 14 Continuous Integration – ⻑期ブランチをなくす Continuous Delivery – 顧客への価値提供の加速 Continuous Configuration 新しいコードをデプロイしたり、ソフトウェアを再起動せずに、 CI/CD の後にソフトウェアの振る舞いを継続的に更新する

Slide 15

Slide 15 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. “Continuous Configuration を使⽤し、リアルタイムで 変化に対応することで、 機会が訪れたときに対応で きる能⼒を構築できます。 ひょっとしたら、将来的に は、イベントが発⽣する前 に対応できるようになるか もしれません” -Dr. Werner Vogels, CTO of Amazon

Slide 16

Slide 16 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. Continuous Configuration (CC) のユースケース Feature flags – 安全なローンチのために機能をon/off する Flag variants – データによって顧客体験を最適化する Operational levers – スロットリング、ロギング、負荷分散 etc 16

Slide 17

Slide 17 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. © 2023, Amazon Web Services, Inc. or its affiliates. ⼤いなる⼒には、 ⼤いなる責任が伴う 17

Slide 18

Slide 18 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. Continuous Configuration の落とし⽳ • typo しやすく、それが障害につながる ->バリデーションが必要 • ⼀気に全てのお客様に展開したり、早すぎる展開は危険 -> Blast radius をコントロールする • 問題があるときにロールバックできる仕組みが重要

Slide 19

Slide 19 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. © 2023, Amazon Web Services, Inc. or its affiliates. AWS AppConfig 19

Slide 20

Slide 20 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AWS AppConfig とは フルマネージドなAWSソリューション 資本投資を最⼩化 アマゾンでの4,000チーム以上におよぶ 利⽤のベストプラクティス Amazon Echo、プライムビデオ、Amazon.com アプリケーションのダウンタイムと 停⽌期間を最⼩化 顧客への影響を最⼩化 アプリケーションの設定を作成、管理、デプロイするサービス

Slide 21

Slide 21 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AppConfig の利⽤の流れ 21 AppConfigアプリケーションの作成 アルファ、ベータ、ガンマなどの環境を構築 Step 1

Slide 22

Slide 22 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AppConfig の利⽤の流れ 22 Step 2 設定プロファイルを作成 2つのタイプをサポート • Feature flag︓新しい機能を有効化/無効化 • Freeform︓⾃由フォーマットでの設定定義

Slide 23

Slide 23 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AppConfig の利⽤の流れ 23 エラーを防ぐために設定情報を検証 JSONスキーマによる⽂法的な検証 AWS Lambda関数による意味的な検証 Step 3

Slide 24

Slide 24 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AppConfig の利⽤の流れ 24 実⾏中のターゲットに対して設定をデプロイ CloudWatchとの統合によるエラーのモニタリング エラー時に⾃動化されたロールバック Step 4

Slide 25

Slide 25 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. 安全のための制御:段階的なロールアウト • 変更の影響を制限する: 1%に対してリリース, 次に 2%, 10%... (即時反映も可能)

Slide 26

Slide 26 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. AppConfigのデプロイ戦略 デプロイのタイプ Linear: デプロイ全体で均等な成⻑係数の増分でデプロイを処理。 たとえば、 Step %に20 を使⽤するリニアなデプロイでは、最初にターゲットの 20% が設 定を使⽤できるようになる。 デプロイ時間の 1/5 が経過すると、システムは パーセンテージを 40% に更新し、以降100% になるまで続く。 Exponential: G*(2^N) という式を使⽤して指数関数的にデプロイを処理。 この 式で、G はユーザーが指定したステップ %で、N は設定がすべてのターゲット にデプロイされるまでのステップ数。 たとえば、成⻑係数 2 を指定すると、 ターゲットの 2%、ターゲットの 4%、ターゲットの 8% で、設定がすべての ターゲットにデプロイされるまで続く。 ステップ%(成⻑係数) デプロイの各ステップで対象とする割合を指定 デプロイ時間 ホストにデプロイする時間を指定。 タイムアウト値ではない。 デプロイが間隔 を置いて処理されるタイムウィンドウ。 ベイクタイム 設定がターゲットの 100% にデプロイされた後、デプロイが完了したと⾒なす 前に、AWS AppConfig が Amazon CloudWatch アラームを監視する時間を指定。 この間にアラームがトリガーされると、AWS AppConfig はデプロイをロール バックする。

Slide 27

Slide 27 text

Spring Fest 2023 © 2023, Amazon Web Services, Inc. or its affiliates. 事前定義されたデプロイ戦略 • AppConfigが事前定義されたデプロイ戦略を提供 – ニーズにマッチする場合はそのまま利⽤ – AppConfig.AllAtOnce – AppConfig.Linear50PercentEvery30Seconds – AppConfig.Canary10Percent20Minutes • 独⾃の戦略を作成することも可能 – 最⼤20個まで作成可能