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
10k
ローカル開発環境をAWSへ移行して爆速にした
Kyash TechTalk #4
の登壇資料です。
登壇時の動画は
YouTube
から閲覧できます。
yuu26
September 12, 2022
Tweet
Share
More Decks by yuu26
See All by yuu26
AWS アーキテクチャクイズ
yuu26
2
890
EMになって半年でやったこと
yuu26
0
2.6k
AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用
yuu26
2
4.2k
Other Decks in Technology
See All in Technology
初中級者用如何使用backlog -VALE TUDOEDITION-
in0u
0
140
セキュリティ研修 Day1【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
160
Classmethod Odyssey 登壇資料
yamahiro
0
390
Classmethod流のPlatform Engineering / classmethod-platform-engineering-devio2024
tomoki10
0
470
技術負債による事業の失敗はなぜ起こるのか / Why do business failures due to technical debt occur?
i35_267
0
190
AutomatedLabを使って内部ペンテストを勉強しよう! -やられ社内ネットワークの自動構築-
n_etupirka
1
610
20240725 LLMによるDXのビジョンと、今何からやるべきか @Azure OpenAI Service Dev Day
nrryuya
3
1.2k
Git 研修 Basic【MIXI 24新卒技術研修】
mixi_engineers
PRO
0
310
大規模ドラレコデータ収集・機械学習基盤を支える AWS CDK 〜導入・運用事例紹介〜
pemugi
0
110
AOAI Dev Day LLMシステム開発 Tips集
hirosatogamo
15
3.7k
目標設定は好きですか? アジャイルとともに目標と向き合い続ける方法 / Do you like target Management?
kakehashi
10
3k
How to Think Like a Performance Engineer
csswizardry
4
590
Featured
See All Featured
GitHub's CSS Performance
jonrohan
1026
450k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
26
1.6k
How to Think Like a Performance Engineer
csswizardry
4
590
Become a Pro
speakerdeck
PRO
15
4.8k
What's in a price? How to price your products and services
michaelherold
239
11k
Large-scale JavaScript Application Architecture
addyosmani
506
110k
Documentation Writing (for coders)
carmenintech
63
4.2k
Why You Should Never Use an ORM
jnunemaker
PRO
51
8.9k
Designing on Purpose - Digital PM Summit 2013
jponch
113
6.6k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
26
1.8k
Fashionably flexible responsive web design (full day workshop)
malarkey
399
65k
Designing with Data
zakiwarfel
96
5k
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では各職種にて絶賛採用中! • エンジニアも、エンジニア以外の方も様々なポジションがあります • まずは話を聞くだけのカジュアル面談から始められますのでぜひ!