Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

Copyright © OPTiM Corp. All Right Reserved. 22