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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
yuu26
September 12, 2022
Technology
15
11k
ローカル開発環境をAWSへ移行して爆速にした
Kyash TechTalk #4
の登壇資料です。
登壇時の動画は
YouTube
から閲覧できます。
yuu26
September 12, 2022
Tweet
Share
More Decks by yuu26
See All by yuu26
プロダクト成長を支える開発基盤とスケールに伴う課題
yuu26
4
1.4k
LLM 機能を支える Langfuse / ClickHouse のサーバレス化
yuu26
9
4.7k
Datadog 関数クイズ (初級編)
yuu26
0
130
バクラクにおける可観測性向上の取り組み
yuu26
4
2.2k
AWS アーキテクチャクイズ
yuu26
3
1.4k
EMになって半年でやったこと
yuu26
1
3.1k
AWS Systems Manager で実現する SSH レスでセキュアなクラウド運用
yuu26
2
4.8k
Other Decks in Technology
See All in Technology
登壇駆動学習のすすめ — CfPのネタの見つけ方と書くときに意識していること
bicstone
3
120
学生・新卒・ジュニアから目指すSRE
hiroyaonoe
2
650
クレジットカード決済基盤を支えるSRE - 厳格な監査とSRE運用の両立 (SRE Kaigi 2026)
capytan
6
2.8k
顧客との商談議事録をみんなで読んで顧客解像度を上げよう
shibayu36
0
260
AzureでのIaC - Bicep? Terraform? それ早く言ってよ会議
torumakabe
1
580
Greatest Disaster Hits in Web Performance
guaca
0
270
M&A 後の統合をどう進めるか ─ ナレッジワーク × Poetics が実践した組織とシステムの融合
kworkdev
PRO
1
480
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
370
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
1.5k
AIエージェントを開発しよう!-AgentCore活用の勘所-
yukiogawa
0
170
AWS Network Firewall Proxyを触ってみた
nagisa53
1
240
ブロックテーマでサイトをリニューアルした話 / 2026-01-31 Kansai WordPress Meetup
torounit
0
470
Featured
See All Featured
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
A designer walks into a library…
pauljervisheath
210
24k
The browser strikes back
jonoalderson
0
390
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
190
Fashionably flexible responsive web design (full day workshop)
malarkey
408
66k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
350
The Pragmatic Product Professional
lauravandoore
37
7.1k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
1
130
Raft: Consensus for Rubyists
vanstee
141
7.3k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
BBQ
matthewcrist
89
10k
Building an army of robots
kneath
306
46k
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では各職種にて絶賛採用中! • エンジニアも、エンジニア以外の方も様々なポジションがあります • まずは話を聞くだけのカジュアル面談から始められますのでぜひ!