Successfully reported this slideshow.
Your SlideShare is downloading. ×

Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Loading in …3
×

Check these out next

1 of 20 Ad

More Related Content

Slideshows for you (20)

Similar to Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス (20)

Advertisement

Recently uploaded (20)

Real Tech Night #3 システムをEC2からFargateへ安全にリプレイス

  1. 1. Copyright © 2018 Classi Corp. All Rights Reserved. システムをEC2から Fargateへ安全にリプレイス 高田 佳樹 Classi株式会社 Real Tech Night #3
  2. 2. 自己紹介 ハンドルネーム: spin13 Twitter: @spinning13 ・基本的には(Web)アプリケーションエンジニア ・インフラも開発もどっちも好き
  3. 3. 概要 現在動いている既存システムの機能の一部を新しい環境に 安全にリプレイス EC2上で動いている既存システムをECSのFargateに移行 安全に移行する方法を紹介
  4. 4. Fargateって? ECSの起動タイプの2つのうちの1つ 起動タイプ EC2 Fargate こっち
  5. 5. ECSって何? Elastic Container Service すごく簡単な概要は... AWSがDockerコンテナをサポート AWSがDockerコンテナの実行環境を用意
  6. 6. 2つの起動タイプ EC2 Fargate 用意したEC2インスタンスに ECSでコンテナをデプロイ えっ? ・EC2インスタンスへのコンテナ配置の設定 ・EC2インスタンスのプロビジョニング等の管理 は必要 ・スケーリングする時はEC2インスタンスも増え る コンテナの実行環境はAWSが用意 ・コンテナを動かすマシンの管理が不要 ・使用したいCPUとメモリの要件を指定 ・スケーリングにインスタンスを気にする必要なし 期待していたコンテナ実行環境に近い ※SubnetのIPは消費するので注意
  7. 7. なぜFargateを選ぶか マイクロサービスアーキテクチャで アプリケーションの種類が多いケース 例えば9種類 起動モードEC2 アプリケーションD アプリケーションE アプリケーションF アプリケーションG アプリケーションH アプリケーションI アプリケーションA アプリケーションB アプリケーションC これだけのコンテナを動かす インスタンスを用意 または インスタンス毎のコンテナの配 置を考える 管理コストが高い
  8. 8. 起動モードFargate アプリケーションA アプリケーションA アプリケーションA アプリケーションB アプリケーションC アプリケーションC アプリケーションD アプリケーションE アプリケーションF アプリケーションG アプリケーションH アプリケーションI アプリケーションAが3台 アプリケーションCが2台 他は1台ずつ Fargateであればインスタンスの管 理をする必要がない! こういう構成はEC2だと面倒
  9. 9. リプレイス戦略 いくつかの条件... ・既存の環境のシステムと相互に切り替えが可能なこと ・切り替えが容易であること
  10. 10. リプレイス戦略 既存環境 リクエスト ロードバランサー LBで受けてEC2インスタンスに振り分ける DB
  11. 11. リプレイス中 リクエスト 新環境の ロードバランサー Fargate nginx Fargate アプリケーション サーバ アプリケーション サーバ 新環境の internal ALB 既存環境の ロードバランサー 赤色が新環境で追加した経路 青色が既存環境の経路 DB バックエンドのDBは 同じ
  12. 12. リクエスト 新環境の ロードバランサー Fargate nginx Fargate アプリケーション サーバ アプリケーション サーバ 新環境の internal ALB 完全にリプレイスすると既存環境の青い経路の部分がなくなる リプレイス完了後
  13. 13. 既存環境のみに戻したい場合 最初にリクエストを受けるロードバランサーの設 定DNS名を変えるだけで戻せる
  14. 14. 新環境と既存環境の振り分け方法 新環境のNginxにmrubyを組み込む または OpenRestyを使って proxy_pass先を新・既存環境で振り分けるロジックを入れる Classiの場合... Openrestyを採用 ngx_mrubyと比べてビルトインされている機能が豊富
  15. 15. Redisに学校IDと新環境に振り分けるかのフラグのペアを格納 OpenRestyでCookieから学校IDを取得してRedisを参照 返ってきた値がTrueだったら新環境 そうでなければ既存環境
  16. 16. リクエスト 新環境の ロードバランサー openresty 学校ID: 99999 の値を見に行く 学校ID: 99999 のフラグを返す Cookieから 学校IDを取得
  17. 17. Fargateの罠 ECSはコンテナイメージをECR等のコンテナイメージのリポ ジトリからPullする ECRへのアクセスにはインスタンスからVPC内だけでなく インターネット へもアクセスできる必要がある
  18. 18. 起動タイプが... EC2 Fargate EC2モードでは EC2インスタンスがインターネットにつながってればイメージをPullできる Fargateでは VPCでNat Gateway等を使ってインターネットアクセスをできる状態でない とPullできない VPCのネットワーク構成によってはハマるので注意!
  19. 19. 余談 ECSは2017年11月くらいまでは EC2 Container Service と呼ばれていた
  20. 20. EOF

×