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

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

optim
December 02, 2021

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

optim

December 02, 2021
Tweet

More Decks by optim

Other Decks in Technology

Transcript

  1. Copyright © OPTiM Corp. All Right Reserved.
    新卒がアプリをEKSにデプロイした話
    発表日:2021.11.29
    株式会社オプティム 技術統括本部 SREユニット 岡田

    View Slide

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

    View Slide

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

    View Slide

  4. Copyright © OPTiM Corp. All Right Reserved. 4
    IT研修の中身と成果
    非情報系出身たちによるアプリ開発と、配属まで

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  8. Copyright © OPTiM Corp. All Right Reserved. 8
    配属後に行ったこと
    SREで使用するツールにまずは触れてみる

    View Slide

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

    View Slide

  10. Copyright © OPTiM Corp. All Right Reserved. 10
     論理構成図
    配属後に行ったこと

    View Slide

  11. Copyright © OPTiM Corp. All Right Reserved. 11
    チャットアプリをEKSへデプロイ
    効率的なコンテナの一括管理

    View Slide

  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

    View Slide

  13. Copyright © OPTiM Corp. All Right Reserved. 13
     論理構成図
    チャットアプリをEKSへデプロイ
    変更箇所

    View Slide

  14. Copyright © OPTiM Corp. All Right Reserved. 14
    TerraformでRDS構築
    再利用性の高いDB構築・構成管理

    View Slide

  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

    View Slide

  16. Copyright © OPTiM Corp. All Right Reserved. 16
     論理構成図
    TerraformでRDS構築
    変更箇所

    View Slide

  17. Copyright © OPTiM Corp. All Right Reserved. 17
    アプリケーションのHelm化
    アプリケーション管理を簡単に

    View Slide

  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

    View Slide

  19. Copyright © OPTiM Corp. All Right Reserved. 19
     論理構成図
    TerraformでRDS構築
    変更箇所

    View Slide

  20. Copyright © OPTiM Corp. All Right Reserved. 20
    おわりに
    入社半年で学んだこと

    View Slide

  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でも公開しております!

    View Slide

  22. Copyright © OPTiM Corp. All Right Reserved. 22

    View Slide