Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ローカル開発環境をAWSへ移行して爆速にした
Search
yuu26
September 12, 2022
Technology
11k
15
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ローカル開発環境をAWSへ移行して爆速にした
Kyash TechTalk #4
の登壇資料です。
登壇時の動画は
YouTube
から閲覧できます。
yuu26
September 12, 2022
More Decks by yuu26
See All by yuu26
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.6k
LLM 機能を支える Langfuse / ClickHouse のサーバレス化
yuu26
10
6.9k
Datadog 関数クイズ (初級編)
yuu26
0
190
バクラクにおける可観測性向上の取り組み
yuu26
5
2.6k
AWS アーキテクチャクイズ
yuu26
3
1.6k
EMになって半年でやったこと
yuu26
1
3.3k
AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用
yuu26
2
5k
Other Decks in Technology
See All in Technology
触りたくないデータに、どう触るか AI時代のRBACアクセスガバナンス
ivry_presentationmaterials
0
310
Browser Spec: Testing Hotwire with Ruby
takahashim
1
150
Post AI時代のリファクタリング実践記 / Refactoring in the post AI era
kaminashi
1
320
[JAWS-UG彩の国埼玉#12]そろそろ準備する?re:Invent2026をやさしく解説 / reinvent2026-sainokuni
sh_fk2
1
370
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
PRO
0
450
【データ横丁主催】AI エージェント時代のTranslytical Data Platform
shisyu_gaku
0
160
Getting Started with Google Antigravity
glaforge
0
350
JAWSUG TOHOKU 青森支部 「LoGoチャット」のAWS移行で 乗り越えたこと
taketakekaho
0
360
⾮構造化データを価値に変える AI エージェント基盤とその組織
ivry_presentationmaterials
0
220
その Valkey 使いこなしていますか?
onk
PRO
5
1.8k
顧客価値を追いかけたら、プライシングにたどり着いた
sansantech
PRO
0
250
ソフトウェア ファクトリー - 再現性のあるソフトウェアの工場づくり / Software factory
iktakahiro
7
5.2k
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6.3k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.9k
Making Projects Easy
brettharned
120
6.8k
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
30 Presentation Tips
portentint
PRO
1
430
Designing Powerful Visuals for Engaging Learning
tmiket
1
610
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
3
3.9k
How to make the Groovebox
asonas
2
2.5k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
1.1k
Fashionably flexible responsive web design (full day workshop)
malarkey
409
67k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
630
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では各職種にて絶賛採用中! • エンジニアも、エンジニア以外の方も様々なポジションがあります • まずは話を聞くだけのカジュアル面談から始められますのでぜひ!