Upgrade to Pro — share decks privately, control downloads, hide ads and more …

クラウドネイティブ化への第一歩/excitech-20211018

tanuki
October 18, 2021

 クラウドネイティブ化への第一歩/excitech-20211018

tanuki

October 18, 2021
Tweet

More Decks by tanuki

Other Decks in Technology

Transcript

  1. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. クラウドネイティブ化への第⼀歩

    〜 前へ進むための新しい取り組み 〜 エキサイト株式会社 宮⻄隼⼈
  2. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. ⾃⼰紹介

    1989年 ⼭⼝県⽣まれ ⽂学部 => SIer => エキサイト 好きな⾔語 TypeScript / PHP / Python / C++ / C# 好きなAWSサービス CloudFormation / ECS / ELB 宮⻄ 隼⼈ @_ht_mn_
  3. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. ⽬次

    • マイグレーション前夜 ◦ 当時抱えていた課題は何か︖ • クラウドネイティブ化とは︖ • 課題を解決するためにやったこと ◦ コンテナ化とCI/CD整備の結果 • おわりに ◦ さらに前へ進むために
  4. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. オンプレミスの状況を振り返る

    現状構成の洗い出し • VM数 100以上 • APIエンドポイント総数 400以上 • GitHubリポジトリ数 70以上 • OracleとMySQL * 2 DBオブジェクト総数 1500以上 • 忘れ去られた外部連携仕様 多数 まぁまぁのボリュームだけど • タイムリミットは1年と2ヶ⽉ • 普段の業務も並⾏しながら作業をする • メインで担当するのは2⼈だけ
  5. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 「贅沢は敵だ」

    限られたリソースの中で欲張りはじめる • 移⾏にかかる作業コストは最⼩限にしたい => 最⼩限のコストで、最速の完了を⽬指さなければ • 移⾏後の運⽤コストも最⼩限にしたい => 後で地獄を⾒ないためにも、今から頑張っておきたい • 将来的な拡張性も担保したい => わかるけど、ちょっと欲張り • AWSコストを削減したい => 欲張りすぎ
  6. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. どうやって解決していくか

    移⾏戦略毎に分類 考え得るいくつかの解決策 • 頑張ってリソースを投⼊する => 根本的な解決ではない︖ • クラウドのメリットを活かしたアーキテクチャに変更する => クラウドのメリットとは︖クラウドネイティブ化︖ リタイア リホスト リプラットフォーム リアーキテクチャ 不要なアプリケーションは削除 / 廃 ⽌する。 既存のアプリケーションをそのまま 移⾏する。 ⼀部をクラウドに最適化して移⾏す る。 例えば、オンプレのOracleからRDS for Oracleへの移行など。 クラウドネイティブの機能を使⽤で きるように、アプリケーションの再 設計してリビルドする。
  7. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. クラウドネイティブ技術は、パブリッククラウド、プライベートクラウ

    ド、ハイブリッドクラウドなどの近代的でダイナミックな環境において、 スケーラブルなアプリケーションを構築および実⾏するための能⼒を組 織にもたらします。 このアプローチの代表例に、コンテナ、サービスメ ッシュ、マイクロサービス、イミュータブルインフラストラクチャ、お よび宣⾔型APIがあります。 これらの⼿法により、回復性、管理⼒、および可観測性のある疎結合シ ステムが実現します。 これらを堅牢な⾃動化と組み合わせることで、エ ンジニアはインパクトのある変更を最⼩限の労⼒で頻繁かつ予測どおり に⾏うことができます。 https://github.com/cncf/toc/blob/main/DEFINITION.md
  8. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. ⼀部抜粋

    スケーラブルなアプリケーションを構築および実⾏ 例えば・・・負荷の状況に合わせて⾃動でスケーリングできる 回復性、管理⼒、および可観測性のある疎結合システムが実現 例えば・・・障害発⽣時の即時復旧、⾃動回復ができる インパクトのある変更を最⼩限の労⼒で頻繁かつ予測どおりに⾏う 例えば・・・安全に、簡単に、迅速にデプロイできる
  9. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. クラウドネイティブ化の主な要素

    ① コンテナ化 ② CI/CD ③ オーケストレーションと アプリケーション定義 ④ 可観測性と分析 https://github.com/cncf/trailmap
  10. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 困っていたこと

    - EC2の運⽤コスト EC2の運⽤がつらい • EBS(ストレージ)の容量枯渇 • 各種エージェントの突然死 ◦ デプロイ失敗など副作⽤が発⽣ • 構成管理していない古いインスタンス ◦ 怖くて変更を加えられない ◦ 環境毎に構成が異なるという状況が発⽣
  11. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 困っていたこと

    - OS管理が⾯倒 サーバOSやミドルウェアの更新作業 ミドルウェアの更新や脆弱性の対応に時間が掛かりがち ⼀度変更してしまうと、元に戻すのが⼤変になってしまう
  12. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. AWSがもたらしてくれたもの

    AWS責任共有モデル 管理すべき対象は 減ったけど https://aws.amazon.com/jp/compliance/shared-responsibility-model/
  13. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. けど、もっと楽をしたい(欲張り)

    AWS責任共有モデル ここの負担も 減らしていきたい https://aws.amazon.com/jp/compliance/shared-responsibility-model/
  14. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. ECS

    on Fargateで解決 Amazon ECS 完全マネージドなオーケストレーションサービス コンテナのデプロイ、管理、スケールをECSに全て任せる AWS Fargate コンテナ向けサーバレスコンピューティング サーバやクラスタ管理をせず、アプリケーション開発に専念 ECS on Fargateなら、やりたいことが実現できそうだ︕
  15. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 結果

    ポータビリティが向上 LinuxでもWindowsでもMacでも、環境は問わない 問題発⽣時の迅速な復旧が可能に スケールアップ/ダウン、スケールイン/アウトも⼿軽に インフラに依存しない構成 アプリケーションのデプロイと同じ感覚でインフラリソースをデプロイ
  16. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 困っていたこと

    - 無駄が多い テストを書いてもテストをしない(怪奇現象) テストを書いた⼈が、書いたときに実⾏して終わり => 書いた本⼈にすら忘れられるので、誰もメンテしなくなる デプロイが⾯倒臭い 1. main ブランチにマージして、 2. デプロイサーバにSSHログインして、 3. rsyncコマンドやシェルスクリプトを実⾏ => ⼿順書が必須、作業者への各種権限付与も必須
  17. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. GitHub

    Actionsで⼀⽯⼆⿃ テストもデプロイの設定も アプリケーションのリポジトリで管理 AWS公式アクションを活⽤ 安⼼と信頼の公式アクション Blue/Greenにも対応(CodeDeployを利⽤)
  18. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. Blue/Greenデプロイについて(おさらい)

    ① デプロイ前の状態 => お客様も管理者も、Blue Targetのア プリケーションにアクセス ② Green Targetに最新のアプリケーショ ンをデプロイ => Test ListenerのターゲットをGreen Targetに切り替え ③ Green Targetの正常性を確認後 => Production Listenerのターゲットを Green Targetに切り替え
  19. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. GitHub

    Actionsがより安全に使える︖ OIDC連携で、IAMユーザが不要に︕︖ ※10⽉現在はまだβ版 https://github.com/github/roadmap/issues/249
  20. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 結果

    デプロイまでのスピードが向上 mainブランチにマージすれば9割終了 (Blue/Greenのターゲット切替え作業のみ⼿動) 誰でも簡単にデプロイできる 必要なのはGitHubアカウントだけ 余計な権限付与をしなくてもOK
  21. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. 困っていたこと

    - ログの調査・分析 ⽞⼈にしかできないログ分析 • オンプレVMにSSHでログイン ◦ HA構成の場合は各VMにログイン ◦ screenやtmuxなどターミナルマルチプレクサを駆使 • findして、xargsして、sedして、awkして・・・ ◦ シェル芸は必須科⽬ ◦ 職⼈芸のようなワンライナー地獄
  22. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. FireLensとFluent

    Bitの利活⽤ App => FireLens => Fluent Bit サイドカーのFluent Bitコンテナに、アプリケーションからログを転送 アプリケーション側は、標準出⼒することだけを意識すれば良い
  23. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. Firehoseでデータを収集

    誰でもデータを分析できる環境へ Fluent BitはKinesis Data Firehoseにデータを集約させる FirehoseはAOSSやS3に転送し、適切で⼿段でデータ分析をおこなう
  24. Copyright © 2021 Excite Japan Co.,Ltd. All Rights Reserved. なぜ前へ進むのか

    • 前へ進まないと⾒えない景⾊がある ◦ コンテナの本番運⽤ ◦ サーバレス ◦ CI/CD • リスクは⼤きいけど、ベネフィットも⼤きい ◦ 本来の⽬的はビジネスを成⻑させること ◦ 社会の変化に、システムも追随する必要がある • 臆せず、前へ進もう