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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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.3k
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
予期せぬコストの急増を障害のように扱う――「コスト版ポストモーテム」の導入とその後の改善
muziyoshiz
1
1.8k
外部キー制約の知っておいて欲しいこと - RDBMSを正しく使うために必要なこと / FOREIGN KEY Night
soudai
PRO
12
5.4k
コスト削減から「セキュリティと利便性」を担うプラットフォームへ
sansantech
PRO
3
1.5k
Amazon S3 Vectorsを使って資格勉強用AIエージェントを構築してみた
usanchuu
3
450
配列に見る bash と zsh の違い
kazzpapa3
1
140
仕様書駆動AI開発の実践: Issue→Skill→PRテンプレで 再現性を作る
knishioka
2
640
10Xにおける品質保証活動の全体像と改善 #no_more_wait_for_test
nihonbuson
PRO
2
240
こんなところでも(地味に)活躍するImage Modeさんを知ってるかい?- Image Mode for OpenShift -
tsukaman
0
130
生成AIを活用した音声文字起こしシステムの2つの構築パターンについて
miu_crescent
PRO
2
190
AI駆動PjMの理想像 と現在地 -実践例を添えて-
masahiro_okamura
1
110
Webhook best practices for rock solid and resilient deployments
glaforge
1
280
20260204_Midosuji_Tech
takuyay0ne
1
150
Featured
See All Featured
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Six Lessons from altMBA
skipperchong
29
4.1k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
76
Docker and Python
trallard
47
3.7k
RailsConf 2023
tenderlove
30
1.3k
Facilitating Awesome Meetings
lara
57
6.8k
Building Flexible Design Systems
yeseniaperezcruz
330
40k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
820
Fireside Chat
paigeccino
41
3.8k
Automating Front-end Workflow
addyosmani
1371
200k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
710
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では各職種にて絶賛採用中! • エンジニアも、エンジニア以外の方も様々なポジションがあります • まずは話を聞くだけのカジュアル面談から始められますのでぜひ!