$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
トレタの大規模バックエンドを移行するまでの道のりと舞台裏
Search
wind-up-bird
February 25, 2021
Technology
1
120
トレタの大規模バックエンドを移行するまでの道のりと舞台裏
wind-up-bird
February 25, 2021
Tweet
Share
More Decks by wind-up-bird
See All by wind-up-bird
いつもみてるよ、エラーもその先も
w1ndupb1rd
0
110
CDNの自動割当ドメインをすべて独自ドメインに移行したよ
w1ndupb1rd
0
22
Teachme Biz で利用するドメインを統合して安心安全に静的コンテンツを取得する
w1ndupb1rd
0
150
studist tech talk #1
w1ndupb1rd
1
200
トレタを支える技術(インフラ編)
w1ndupb1rd
0
94
Other Decks in Technology
See All in Technology
SQLだけでマイグレーションしたい!
makki_d
0
1.1k
Microsoft Agent 365 についてゆっくりじっくり理解する!
skmkzyk
0
380
SREには開発組織全体で向き合う
koh_naga
0
380
年間40件以上の登壇を続けて見えた「本当の発信力」/ 20251213 Masaki Okuda
shift_evolve
PRO
1
140
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
MySQLとPostgreSQLのコレーション / Collation of MySQL and PostgreSQL
tmtms
1
1k
Databricks向けJupyter Kernelでデータサイエンティストの開発環境をAI-Readyにする / Data+AI World Tour Tokyo After Party
genda
1
560
Lookerで実現するセキュアな外部データ提供
zozotech
PRO
0
170
ウェルネス SaaS × AI、1,000万ユーザーを支える 業界特化 AI プロダクト開発への道のり
hacomono
PRO
0
150
2025年 開発生産「可能」性向上報告 サイロ解消からチームが能動性を獲得するまで/ 20251216 Naoki Takahashi
shift_evolve
PRO
2
200
GitHub Copilotを使いこなす 実例に学ぶAIコーディング活用術
74th
3
3.5k
文字列の並び順 / Unicode Collation
tmtms
3
610
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
61
30 Presentation Tips
portentint
PRO
1
160
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
54k
How GitHub (no longer) Works
holman
316
140k
[SF Ruby Conf 2025] Rails X
palkan
0
540
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
0
57
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3k
A better future with KSS
kneath
240
18k
Faster Mobile Websites
deanohume
310
31k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
740
Transcript
トレタの大規模バックエンドを移行するまでの道のり と舞台裏 プロダクト開発におけるAWS活用のいろは 株式会社トレタ
自己紹介 名前:柳楽瑛 入社:2018年11月 部署:プロダクト開発部SREチームに所属 領域:AWS、GCPなどクラウドサービス全般 担当:トレタのほぼ全てのサービス @_windupbird_
目次 - トレタのサービスと移行前の構成 - これまでの課題 - どのように解決したか? - 移行後の構成 -
今後の課題 - まとめ
トレタのサービスと移行前の構成
トレタのサービスと移行対象 サービス群 構成: API + 複数のサービス 特性: APIが止まると他のサービス にも影響が波及する
移行対象: API
トレタのバックエンド API移行前の構成 NW: Public Subnet 構成: ALB + EC2 +
AutoScaling API: Nginx + Unicorn 非同期処理: Sidekiq ログ収集: Fluentd
トレタのバックエンド API移行前のデプロイ アプリケーションのデプロイ CI: CircleCI CD: CircleCI Gem: Capistrano
これまでの課題
これまでの課題 課題: 長期運用 EC2レイヤー 例: メンテナンス(イベント) 例: ステータスチェック OSレイヤー 例: OSのEOL対応 例: プロセスの起動設定
その他 EC2のイメージにすべて同梱されている
これまでの課題 課題:開発スピード(イメージ作成) AMI の作成時間 Packer: 30分以上 修正 小さな修正も都度 待ち時間が発生
これまでの課題 課題:開発スピード(イメージのデプロイ) Terraform 手動実行 AMIの差し替え B/Gデプロイ
これまでの課題 課題:開発スピード(イメージのデプロイ) Terraform 手動実行 AMIの差し替え B/Gデプロイ
これまでの課題 課題:開発スピード(イメージのデプロイ) Terraform 手動実行 AMIの差し替え B/Gデプロイ staging/procuction 計4回の terraform apply
...
これまでの課題 課題:設定ファイル・Secret管理 設定ファイル(Packer管理) テンプレート+変数 例: unicorn.rb Secret(Packer管理) 暗号化してGithubに保存 Packer Build時に複合&埋め込み
例: database.yml チーム間で作業の依存関係 アプリチームからSREチームに依頼 設定待ちの状態が発生 packer build + terraform apply staging + production
これまでの課題 課題:セキュリティ Public Subnet すべて Public Subnet に配置 Session Manager
導入以前は ssh 接続していた ssh 接続 CircleCI経由でデプロイ Security Group 22番ポート開放 ssh 秘密鍵の管理
どのように解決したか?
どのように解決したか? 長期運用 EC2レイヤー コンテナの採用 プラットフォームはECS FargateでEC2の管理から解放 OSレイヤー UbuntuなどホストOSの管理不要 その他 すべてEC2同梱
=> 各コンテナに分離
どのように解決したか? 開発スピード(イメージ作成) イメージの作成時間 CodeBuild docker build: 2分 素早い修正が可能に
どのように解決したか? 開発スピード(イメージのデプロイ) CodePipelineの採用 イメージ作成 タスク定義のイメージIDの差し替え B/Gデプロイ
どのように解決したか? 設定ファイル・Secret管理 設定ファイル アプリケーションのレポジトリ管理に Secret Parameter Store 例: database 接続情報
環境差分(staging/production) コンテナの環境変数で吸収 設定待ち、チーム間の依存関係が解消
どのように解決したか? セキュリティ Private Subnet Private Subnet にコンテナ配置 Session Manager も廃止
ssh 接続が不要 CodePipeline経由でデプロイ AWS内で完結(22番ポート開放が不要) ssh 秘密鍵の管理が不要に
移行後の構成
トレタのバックエンド API移行後の構成 構成: ALB + Container + AutoScaling プラットフォーム: ECS
on Fargate NW: Private Subnet API: Nginx + Unicorn 非同期処理: Sidekiq ログ収集: Fluent Bit
トレタのバックエンド API移行後のデプロイ アプリケーションのデプロイ CI: CircleCI CD: CodePipeline Gem: Capistrano
今後の課題
今後の課題 Log の Aggregator 課題 EC2 の利用とメンテナンス fluentd バージョン古い どうする?
kinesis + lambda とか?
今後の課題 コンテナセキュリティ イメージ脆弱性スキャン ECRイメージスキャン、Trivy etc… Pipeline への組み込み スキャン後のアクションなど運用も課題 信頼できるベースイメージの利用
今後の課題 API以外のサブシステム 一部ECS/EKSでホストしているが、 古いサービスはEC2を利用している (Herokuもいる) 最終的にはECS/EKSに統一したい
まとめ
まとめ ECS on Fargate へ移行できた 開発スピードの向上 技術的負債の返却 将来的なトイルの撲滅 DX(Developper Experience)の向上
まだまだ改善の余地がある 脆弱性対策 サブシステムのコンテナ化 周辺システムの改善 マネージドサービスへの移行
最後に エンジニア採用してます!! SRE フロントエンド サーバーサイド Clojureエンジニア etc... https://corp.toreta.in/recruit/engineer/
ありがとうございました