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

新卒がアプリをEKSにデプロイした話 / sre-newcomer-deploy-app-to-eks

5c097a7b75c8802b073774faa7276503?s=47 optim
December 02, 2021

新卒がアプリをEKSにデプロイした話 / sre-newcomer-deploy-app-to-eks

5c097a7b75c8802b073774faa7276503?s=128

optim

December 02, 2021
Tweet

Transcript

  1. Copyright © OPTiM Corp. All Right Reserved. 新卒がアプリをEKSにデプロイした話 発表日:2021.11.29 株式会社オプティム

    技術統括本部 SREユニット 岡田
  2. Copyright © OPTiM Corp. All Right Reserved. 2  岡田

     神奈川県生まれ  東北大学・大学院 • 工学研究科土木工学 出身 • リモートセンシング技術を用いた浸水建物把握  21新卒 • 入社後は3ヶ月間、IT人財教育プログラム(IT研修)に参加 • グループでチャットアプリを開発  SREチーム • 社内サービスの品質管理・改善を担当  趣味は野球・料理(リュウジのバズレシピ) 自己紹介
  3. Copyright © OPTiM Corp. All Right Reserved. 3  IT研修の中身と成果

     配属後に行ったこと  チャットアプリをEKSへデプロイ  TerraformでRDS構築  アプリケーションのHelm化  おわりに 目次
  4. Copyright © OPTiM Corp. All Right Reserved. 4 IT研修の中身と成果 非情報系出身たちによるアプリ開発と、配属まで

  5. Copyright © OPTiM Corp. All Right Reserved. 5  概要

    • 対象者は非情報(工学)系出身者 • 目標 • オプティムで定義しているエンジニアの スキルレベルに到達すること、あるいは そのポテンシャルを獲得すること • 講義と実習(プログラミング研修)を3か月間行う • 2021年度は個人開発・チーム開発を実施 IT研修とは
  6. Copyright © OPTiM Corp. All Right Reserved. 6  個人開発

    • ブロック崩しゲーム • メモ帳・Todoリスト • JavaScript  チーム開発 • チャットアプリ • Go / Vue.js / SQL Boiler / PostgreSQL • Webサーバをlocalhostに構築 • Gitlabで共同開発 • Redmineでタスク管理 IT研修の中身と成果 okada
  7. Copyright © OPTiM Corp. All Right Reserved. 7  配属後に活きたこと

    • プログラミング・開発の基礎 • Dockerを使ったコンテナ管理 • チケットベースでのタスク管理  配属後にわからなかったこと • AWS…? • Kubernetes…? • Terraform…? • とにかく、SREで日常的に使用するツールが全く分かりませんでした IT研修の中身と成果
  8. Copyright © OPTiM Corp. All Right Reserved. 8 配属後に行ったこと SREで使用するツールにまずは触れてみる

  9. Copyright © OPTiM Corp. All Right Reserved. 9  SREチームで頻繁に触れる技術スタックの理解を深める

    • IT研修で作成したチャットアプリをEKSにデプロイする • TerraformでRDSを構築する • デプロイしたチャットアプリをHelm化する -> 運用の観点から、再利用性を高くした構成管理を心がけた 配属後に行ったこと  論理構成図 • 次ページへ
  10. Copyright © OPTiM Corp. All Right Reserved. 10  論理構成図

    配属後に行ったこと
  11. Copyright © OPTiM Corp. All Right Reserved. 11 チャットアプリをEKSへデプロイ 効率的なコンテナの一括管理

  12. Copyright © OPTiM Corp. All Right Reserved. 12  EKSを使用する目的

    • コンテナの一括管理を効率よく行うため • 信頼性を高める・可用性を高める・スケーラブルにするためにKubernetesが広く使われている • 他のAWSサービスとの統合が簡単 • ALB/ECR/RDSなどのAWSのサービスとすぐに統合できる  設定した内容 • Manifestの作成 • Deployment(Front, Back)/Service(Front, Back)/Ingress(Front)/Job(DB Migration) • 研修時にdocker-compose.yamlや.envファイルで設定した環境変数も設定 • Dockerfileを作成し、ECRに追加 • Frontのコンテナは起動時にyarn serve, Backのコンテナは起動時に実行 チャットアプリをEKSへデプロイ kubectl apply –f frontend-deployment.yaml docker build -> docker push
  13. Copyright © OPTiM Corp. All Right Reserved. 13  論理構成図

    チャットアプリをEKSへデプロイ 変更箇所
  14. Copyright © OPTiM Corp. All Right Reserved. 14 TerraformでRDS構築 再利用性の高いDB構築・構成管理

  15. Copyright © OPTiM Corp. All Right Reserved. 15  RDSを使用する目的

    • 可用性とスケーラビリティが高いDBを構築するため • PodでのDB運用時には、Podを再作成した時にデータを消失する構成だった • RDSならデータの冗長化・バックアップなど永続化にかんする 責任をAWSに任せられる  Terraformを使用する目的 • 同じ構成を素早く構築可能な、再利用性が高い構成管理を行うため • バージョンの管理を行なって履歴を追跡可能にしたり、災害時の復旧が可能になる • 環境差分を.tfvarsファイルで管理すれば、同じ構成の環境を簡単に構築できる  設定した内容 • Aurora PostgreSQLを管理するための環境変数をterraform.tfvarsに書き出し • 低コスト・速度が十分・耐久性が高いことからAurora PostgreSQLを選択 • ルートモジュールから、今回のチャットアプリ用Aurora PostgreSQLのサブモジュールを参照するよう な構成を適用 TerraformでRDS構築 terraform apply
  16. Copyright © OPTiM Corp. All Right Reserved. 16  論理構成図

    TerraformでRDS構築 変更箇所
  17. Copyright © OPTiM Corp. All Right Reserved. 17 アプリケーションのHelm化 アプリケーション管理を簡単に

  18. Copyright © OPTiM Corp. All Right Reserved. 18  Helmを使う目的

    • デプロイしたアプリケーションの管理を簡単にするため • 内容の更新を、設定ファイル(Chart)として管理する • パラメータを切り出したvalues.yamlとKubernetes manifestをHelm chartとしてパッケージ ングすることで、アプリケーション構成の再利用が可能になる  設定した内容 • Helmの構成を作成、内部のtemplatesディレクトリに、Manifestsを追加 • values.yamlにデフォルトパラメータを記述 values.yamlの中をみて、変更を加えればアプリケーションの更新ができるようになった アプリケーションのHelm化 helm create helm install
  19. Copyright © OPTiM Corp. All Right Reserved. 19  論理構成図

    TerraformでRDS構築 変更箇所
  20. Copyright © OPTiM Corp. All Right Reserved. 20 おわりに 入社半年で学んだこと

  21. Copyright © OPTiM Corp. All Right Reserved. 21  IT研修で作ったチャットアプリ

    • 信頼性・可用性・スケーラビリティの高いサービスへと更新することができた • RDSの変更 -> terraform.tfvarsファイルを更新 • EKSの設定を変更 -> values.yamlを参考にしてパラメータを書き換え • チャットアプリ自体(Front / Back)の変更 -> ECRにDocker imageをpush, これを参照するように変更 • WebサーバをlocalhostではなくAWSで構築したため、複数人が同時にアクセス可能に  IT研修 ~ SRE配属後の半年間で学んだこと • 可能な限りヒューマンエラーを取り除くこと • 環境構築はコマンド1つで再現できるようにする • 面倒な管理はマネージドサービスに任せること • 全てを自社サービスでやっていては限界がある • プログラミングは開発だけではない • 効率化するという運用の面白さをどんどん感じていきたい おわりに 本日お話しした内容は 弊社TECH BLOGでも公開しております!
  22. Copyright © OPTiM Corp. All Right Reserved. 22