Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Cookpad and Microservices

taiki45
December 18, 2014

Cookpad and Microservices

at 第1回 えびスタ! ~ 恵比寿スタートアップ勉強会 ~ http://ebista.connpass.com/event/10258/

taiki45

December 18, 2014
Tweet

More Decks by taiki45

Other Decks in Programming

Transcript

  1. Taiki Ono • @taiki45 • Joined Cookpad at 2014/3 •

    Dev-Infra group • Working with service integration related things and Web API
  2. 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 | +----------------------+-------+-------+---------+---------+-----+-------+
  3. –James Lewis & Martin Fowler “an approach to developing a

    single application as a suite of small services” IUUQNBSUJOGPXMFSDPNBSUJDMFTNJDSPTFSWJDFTIUNM
  4. Characteristics of Microservices • Build around business capabilities • Own

    process and lightweight messaging • Decentralization and polyglot
  5. Garage and garage-client • RESTful hyper-media API • JSON message

    enveloped in HTTP • Implemented as a Rails extension • Standardized communication pattern
  6. º

  7. ̋

  8. Ping • Pub-Sub pattern • Implemented as a Rails extension

    • A thin wrapper of Amazon SNS and fluentd • Receive events via webhook
  9. What we did are… • Published product data with Garage

    • Built some backend products • Built Ping for data synchronization