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
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
taiki45
December 18, 2014
Programming
4.2k
4
Share
Cookpad and Microservices
at 第1回 えびスタ! ~ 恵比寿スタートアップ勉強会 ~
http://ebista.connpass.com/event/10258/
taiki45
December 18, 2014
More Decks by taiki45
See All by taiki45
Mocking in Rust Applications
taiki45
2
720
Error Handling in Rust Applications
taiki45
3
810
Efficient Platform for Security and Compliance
taiki45
6
1.7k
RustでAWS Lambda functionをいい感じに書く
taiki45
2
830
SPIFFE Meetup Tokyo #2 LT: Envoy SDS
taiki45
0
830
builderscon Tokyo 2019: Intro Service Mesh
taiki45
6
3.6k
NoOps Meetup Tokyo #7: 入門サービスメッシュ
taiki45
4
2k
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
Symfonyの特性(設計思想)を手軽に活かす特性(trait)
ickx
0
110
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
110
メッセージングを利用して時間的結合を分離しよう #phperkaigi
kajitack
3
530
PHP でエミュレータを自作して Ubuntu を動かそう
m3m0r7
PRO
2
160
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
290
安いハードウェアでVulkan
fadis
1
870
Coding as Prompting Since 2025
ragingwind
0
620
Codex CLIのSubagentsによる並列API実装 / Parallel API Implementation with Codex CLI Subagents
takatty
2
750
Feature Toggle は捨てやすく使おう
gennei
0
400
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
910
AI-DLC 入門 〜AIコーディングの本質は「コード」ではなく「構造」〜 / Introduction to AI-DLC: The Essence of AI Coding Is Not “Code” but “Structure”
seike460
PRO
0
150
Featured
See All Featured
How STYLIGHT went responsive
nonsquared
100
6k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.2k
Agile that works and the tools we love
rasmusluckow
331
21k
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
340
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
1
3.5k
For a Future-Friendly Web
brad_frost
183
10k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
470
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.7k
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.4k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
940
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
95
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
460
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/