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
Cookpad and Microservices
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
taiki45
December 18, 2014
Programming
4
4.2k
Cookpad and Microservices
at 第1回 えびスタ! ~ 恵比寿スタートアップ勉強会 ~
http://ebista.connpass.com/event/10258/
taiki45
December 18, 2014
Tweet
Share
More Decks by taiki45
See All by taiki45
Mocking in Rust Applications
taiki45
2
690
Error Handling in Rust Applications
taiki45
3
770
Efficient Platform for Security and Compliance
taiki45
6
1.6k
RustでAWS Lambda functionをいい感じに書く
taiki45
2
800
SPIFFE Meetup Tokyo #2 LT: Envoy SDS
taiki45
0
810
builderscon Tokyo 2019: Intro Service Mesh
taiki45
6
3.6k
NoOps Meetup Tokyo #7: 入門サービスメッシュ
taiki45
4
1.9k
CloudNative Days Tokyo 2019: Understanding Envoy
taiki45
3
3.6k
Cloud Native Meetup Tokyo #8 ServiceMesh Day Recap
taiki45
2
410
Other Decks in Programming
See All in Programming
Automatic Grammar Agreementと Markdown Extended Attributes について
kishikawakatsumi
0
190
開発者から情シスまで - 多様なユーザー層に届けるAPI提供戦略 / Postman API Night Okinawa 2026 Winter
tasshi
0
200
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
180
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
610
2026年 エンジニアリング自己学習法
yumechi
0
130
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
390
なぜSQLはAIぽく見えるのか/why does SQL look AI like
florets1
0
460
生成AIを使ったコードレビューで定性的に品質カバー
chiilog
1
270
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
690
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
MDN Web Docs に日本語翻訳でコントリビュート
ohmori_yusuke
0
650
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
3.9k
Featured
See All Featured
How GitHub (no longer) Works
holman
316
140k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
76
Done Done
chrislema
186
16k
BBQ
matthewcrist
89
10k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
110
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
310
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Into the Great Unknown - MozCon
thekraken
40
2.3k
How STYLIGHT went responsive
nonsquared
100
6k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Transcript
Cookpad and Microservices Why and how we move to Microservices
architecture style
Taiki Ono • @taiki45 • Joined Cookpad at 2014/3 •
Dev-Infra group • Working with service integration related things and Web API
Sponsored by
Hi, we are Cookpad
None
over 50M users/month over 1.8M recipes
Not only recipe site…
None
None
None
You can see more products!
To make everyday cooking fun.
Why Microservices?
• Environment changes • Limit of Monolithic
• Environment changes • Limit of Monolithic
Our business changes
User agent changes
• Environment changes • Limit of Monolithic
A huge Rails app +----------------------+-------+-------+---------+---------+-----+-------+ | Name | Lines |
LOC | Classes | Methods | M/C | LOC/M | +----------------------+-------+-------+---------+---------+-----+-------+ | Controllers | 46173 | 37194 | 493 | 3754 | 7 | 7 | | Helpers | 14251 | 11687 | 13 | 1367 | 105 | 6 | | Models | 10153 | 7799 | 319 | 1152 | 3 | 4 | | Mailers | 402 | 326 | 16 | 35 | 2 | 7 | | Javascripts | 40217 | 34405 | 36 | 4940 | 137 | 4 | | Libraries | 2341 | 1833 | 112 | 252 | 2 | 5 | | Async_view specs | 247 | 212 | 0 | 0 | 0 | 0 | | Controller specs | 58856 | 48671 | 7 | 121 | 17 | 400 | | Feature specs | 40886 | 33590 | 0 | 196 | 0 | 169 | | Helper specs | 4151 | 3396 | 1 | 10 | 10 | 337 | | Lib specs | 22537 | 18817 | 27 | 128 | 4 | 145 | | Mailer specs | 421 | 346 | 0 | 0 | 0 | 0 | | Model specs | 71128 | 58668 | 4 | 70 | 17 | 836 | | Policy specs | 1487 | 1219 | 0 | 0 | 0 | 0 | | Request specs | 34595 | 29677 | 0 | 12 | 0 | 2471 | | Routing specs | 661 | 533 | 0 | 0 | 0 | 0 | | View specs | 619 | 508 | 0 | 2 | 0 | 252 | | Worker specs | 862 | 715 | 0 | 1 | 0 | 713 | +----------------------+-------+-------+---------+---------+-----+-------+ | Total | 349987 | 289596 | 1028 | 12040 | 11 | 22 | +----------------------+-------+-------+---------+---------+-----+-------+
Slow test issue
RRRSpec solved
Slow deployment
mamiya solved
and some difficulties like scaling, upgrading Rails, etc…
We can’t control our own application.
We've found Microservices while we were challenging these issues.
Microservices
–James Lewis & Martin Fowler “an approach to developing a
single application as a suite of small services” IUUQNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
Build around business capabilities
None
Own process and lightweight messaging
HTTP JSON REST
Decentralization and polyglot
Ruby + MySQL Go + Redshift Java + MySQL
Characteristics of Microservices • Build around business capabilities • Own
process and lightweight messaging • Decentralization and polyglot
We can handle our own application, by paying cost of
complexity as a whole.
In Cookpad What we did?
Published service data
Garage Garage Garage Rails app
Garage and garage-client • RESTful hyper-media API • JSON message
enveloped in HTTP • Implemented as a Rails extension • Standardized communication pattern
Solutions for product common problems
º
̋
Backend products • Auth server (OAuth2.0) • Personal information server
• Notification base • Video backend
Data synchronization between products
Pub-Sub Topic
Pub-Sub Topic
Ping • Pub-Sub pattern • Implemented as a Rails extension
• A thin wrapper of Amazon SNS and fluentd • Receive events via webhook
What we did are… • Published product data with Garage
• Built some backend products • Built Ping for data synchronization
We are challenging more problems around Microservices
Join us!! http://recruit.cookpad.com/