Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ローカル開発環境をAWSへ移行して爆速にした
Search
yuu26
September 12, 2022
Technology
14
11k
ローカル開発環境をAWSへ移行して爆速にした
Kyash TechTalk #4
の登壇資料です。
登壇時の動画は
YouTube
から閲覧できます。
yuu26
September 12, 2022
Tweet
Share
More Decks by yuu26
See All by yuu26
Datadog 関数クイズ (初級編)
yuu26
0
36
バクラクにおける可観測性向上の取り組み
yuu26
4
1.5k
AWS アーキテクチャクイズ
yuu26
3
1.2k
EMになって半年でやったこと
yuu26
1
2.7k
AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用
yuu26
2
4.5k
Other Decks in Technology
See All in Technology
プロダクトエンジニア構想を立ち上げ、プロダクト志向な組織への成長を続けている話 / grow into a product-oriented organization
hiro_torii
1
200
目の前の仕事と向き合うことで成長できる - 仕事とスキルを広げる / Every little bit counts
soudai
24
7.2k
Developers Summit 2025 浅野卓也(13-B-7 LegalOn Technologies)
legalontechnologies
PRO
0
720
アジャイル開発とスクラム
araihara
0
170
飲食店予約台帳を支えるインタラクティブ UI 設計と実装
siropaca
7
1.8k
なぜ私は自分が使わないサービスを作るのか? / Why would I create a service that I would not use?
aiandrox
0
740
RSNA2024振り返り
nanachi
0
580
オブザーバビリティの観点でみるAWS / AWS from observability perspective
ymotongpoo
8
1.5k
TAMとre:Capセキュリティ編 〜拡張脅威検出デモを添えて〜
fujiihda
2
250
SA Night #2 FinatextのSA思想/SA Night #2 Finatext session
satoshiimai
1
140
レビューを増やしつつ 高評価維持するテクニック
tsuzuki817
1
720
エンジニアが加速させるプロダクトディスカバリー 〜最速で価値ある機能を見つける方法〜 / product discovery accelerated by engineers
rince
4
350
Featured
See All Featured
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.2k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
21
2.5k
GraphQLの誤解/rethinking-graphql
sonatard
68
10k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
49k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
7
630
Embracing the Ebb and Flow
colly
84
4.6k
Designing Experiences People Love
moore
140
23k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Become a Pro
speakerdeck
PRO
26
5.1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
33
2.8k
Transcript
©2022 Kyash Inc. ©2022 Kyash Inc. ローカル開発環境を AWSへ移行して爆速にした 2022/09/12 Kyash
TechTalk #4
©2022 Kyash Inc. 自己紹介 株式会社Kyash SREチーム (Engineering Manager, Tech Lead) SIerでオンプレミスのインフラ構築を経験後、
Webサービス企業2社でのSREを経てKyashへ入社。 副業でECサイトのSREやチャットボット開発など。 最近はスプラトゥーン3で色塗り業をしています。 Kyash: @yuu26 Twitter: @m_on_yu GitHub: @yuu26jp 上原 佑介 2
©2022 Kyash Inc. 3 目 次 1. ローカル開発環境の課題 2. AWS開発環境の整備
3. 構築を自動化する 4. 今後の取り組み 5. まとめ Table of contents
©2022 Kyash Inc. ©2022 Kyash Inc. 1. ローカル開発環境の課題 4 4
©2022 Kyash Inc. 1. ローカル開発環境の課題 マイクロサービス構成でサービス数は30前後 アプリAPI用と決済ネットワーク用でシステムの入口が主に2つある インフラはAWS、コンテナはECS + Fargate
環境は主に以下の4つ • AWS本番環境 • AWS検証環境 x2 • Mac上のローカル開発環境 Kyashのシステム構成 5
©2022 Kyash Inc. 1. ローカル開発環境の課題 MacのDocker上で各マイクロサービスのコンテナを起動 一通りの機能を試すには13個ほどのサービス起動が必要 CPUが張り付いたりI/O遅い問題で重すぎる状態に…… さらにiOSやAndroidのシミュレータも起動すると非常につらい ⇒開発に支障が出るため対策を検討することに
ローカル開発環境における課題 6 Service A Service B Service C ・ ・ ・ Editor Simulator
©2022 Kyash Inc. 7 1. ローカル開発環境の課題 Linuxの開発マシンを用意する • I/O遅い問題が解決できる •
MDMなどの関係ですぐには導入が難しい • エンジニア全員のマシンを一度に入れ替えるのは厳しそう クラウド上に開発環境を用意する 【採用】 • I/O遅い問題が解決できる • 物理マシンではないのでMDM面での懸念がない • 平日昼間のみ稼働させることでコストは比較的抑えられる 検討した案
©2022 Kyash Inc. 8 1. ローカル開発環境の課題 ローカルで起動するリソースが減ることでMacの負荷が軽減されるはず クラウド上に開発環境を用意する Editor Simulator
Service A Service B Service C ・ ・ ・ Editor Simulator Service A Service B Service C ・ ・ ・ +
©2022 Kyash Inc. ©2022 Kyash Inc. 2. AWS開発環境の整備 9 9
©2022 Kyash Inc. 10 2. AWS開発環境の整備 要件を洗い出すと…… 1. 個人ごとに環境を分離したい 2.
サクッと構築したい 3. ローカルでのファイル変更をスムーズに反映したい 4. 維持コストはなるべく抑えたい AWS上でどのように環境を構築するか
©2022 Kyash Inc. 11 2. AWS開発環境の整備 要件を洗い出すと…… 1. 個人ごとに環境を分離したい 2.
サクッと構築したい 3. ローカルでのファイル変更をスムーズに反映したい 4. 維持コストはなるべく抑えたい FargateではなくEC2を利用する方針に決定 1. インスタンス単位で完全に分離できる 2. EC2イメージから3分で構築可能 3. GoLandやVSCodeのSSHリモートホスト機能が使える 4. Fargateを多数起動するよりEC2の方が安い AWS上でどのように環境を構築するか
©2022 Kyash Inc. 12 2. AWS開発環境の整備 ・個人用EC2インスタンス (m5.large) ⇒ ローカル用の
docker-compose.yml を流用 ・個人用ドメイン ⇒ <name>.kyash-dev.com ・ALB (共有) ⇒ モバイルアプリのリクエスト受信用 ⇒ サブドメイン名で転送先を振り分け ・WAF (共有) ・ACM (共有) システム構成 ※ドメイン名はダミーです
©2022 Kyash Inc. 13 2. AWS開発環境の整備 GoLandやVSCodeのSSHリモートホスト機能を用いて、 ローカルで変更したファイルを即座にリモートホストへ反映できる。 SSH機能でファイル変更を即反映 Editor
Simulator Service A Service B Service C ・ ・ ・ + SSH on SSM
©2022 Kyash Inc. 14 2. AWS開発環境の整備 • インスタンスへのSSH直接接続は禁止 ◦ 必ずSSM経由のSSHを利用すること
◦ SSHポートは開放しない • インスタンスは毎日22時に自動シャットダウンされる ◦ 止め忘れによる費用増加を防ぐ ◦ 夜間に検証を走らせたいときは自動シャットダウン自体を止める (余談) クラスメソッド社のopswitchを使うと リソースタグ単位でスケジュールした時刻にEC2やRDSを起動停止できるので便利 運用ルール
©2022 Kyash Inc. ©2022 Kyash Inc. 3. 構築を自動化する 15 15
©2022 Kyash Inc. 16 3. 構築を自動化する 1. Terraformのworkspaceを作る 2. terraform
apply 3. gitconfigやユーザ名の設定を行う 4. 利用可能! 環境を立ち上げるまでの流れ
©2022 Kyash Inc. 17 3. 構築を自動化する Terraformの管理イメージ (共有リソース) ※ドメイン名はダミーです terraform
├── README.md ├── modules ├── general ※Terraform Workspace │ ├── 個人用リソース (EC2, ALBルール等) │ └── _tfvars │ ├── uehara.tfvars │ ├── tanaka.tfvars │ └── <workspace name>.tfvars └── shared └── 共有リソース (ALB本体, ACM, WAF等)
©2022 Kyash Inc. 18 3. 構築を自動化する Terraformの管理イメージ (個人用リソース) ※ドメイン名はダミーです terraform
├── README.md ├── modules ├── general ※Terraform Workspace │ ├── 個人用リソース (EC2, ALBルール等) │ └── _tfvars │ ├── uehara.tfvars │ ├── tanaka.tfvars │ └── <workspace name>.tfvars └── shared └── 共有リソース (ALB本体, ACM, WAF等)
©2022 Kyash Inc. 19 3. 構築を自動化する 環境を追加する際は、genaralでWorkspaceを 増やすだけで個人用リソースのみが追加作成される。 【工夫点】 ALBのサブドメイン振り分けを自動化するために、
リスナールールのみ general に配置した。 Terraform上での管理方法 terraform ├── README.md ├── modules ├── general ※Terraform Workspace │ ├── 個人用リソース (EC2, ALBルール等) │ └── _tfvars │ ├── uehara.tfvars │ ├── tanaka.tfvars │ └── <workspace name>.tfvars └── shared └── 共有リソース (ALB本体, ACM, WAF等)
©2022 Kyash Inc. ©2022 Kyash Inc. 4. 導入効果と今後の取り組み 20 20
©2022 Kyash Inc. 21 4.導入効果と今後の取り組み 導入効果 • コンテナリソースがEC2に移ったためMacの高負荷問題が解消! ◦ 遅いときは10分ほど掛かっていた起動待ち時間がなくなった
• 環境追加が容易になった ◦ 新メンバーのオンボーディングが少し楽になった ◦ Mobileチームが自前でサーバサイドの検証環境を追加可能になった 今後の取り組み • Slackコマンドでインスタンスを起動可能にする ◦ マネジメントコンソールやCLIを毎度叩くのは手間なのでSlackでシュッとやりたい • PRベースの検証環境を自動生成する ◦ EC2を1台立ち上げるだけなら現実的な待ち時間で生成できそう
©2022 Kyash Inc. ©2022 Kyash Inc. 5. まとめ 22 22
©2022 Kyash Inc. 23 5. まとめ ローカル開発環境をAWSへ移行して爆速にした • マイクロサービス数が30近くありローカルでは限界が来ていた •
Dockerリソースの動作場所をAWSへ移すことで解決した • 検証環境をスムーズに増やせるようになった Kyashでは各職種にて絶賛採用中! • エンジニアも、エンジニア以外の方も様々なポジションがあります • まずは話を聞くだけのカジュアル面談から始められますのでぜひ!