Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Iwmn architecture

3,560 views

Published on

an overview of the iWantMyName architecture. A catalyst app powered by a RabbitMQ based backend flavored with a lot of CouchDB and sugar coated with some Redis.

Published in: Technology, Business

Iwmn architecture

  1. 1. Tuesday, 12 July 2011
  2. 2. Tuesday, 12 July 2011
  3. 3. stripped down catalyst stripped the M out of the VCTuesday, 12 July 2011
  4. 4. pure NoSQL no relational DB left in the entire stackTuesday, 12 July 2011
  5. 5. iwmn in 5 • as lightweight as one gets a catalyst app • custom authentication architecture • Redis based session handling • RabbitMQ driven backend • multi language/domain/currency/anythingTuesday, 12 July 2011
  6. 6. in a bit more detailTuesday, 12 July 2011
  7. 7. lightweight • stripped out the model handling entirely • stripped out the authentication handling • many custom plugins (core and contrib)Tuesday, 12 July 2011
  8. 8. authentication architecture • multi platform handling (including different session cookie domains) • CouchDB based storage • OAuth • API login (release pending)Tuesday, 12 July 2011
  9. 9. session handling • started with Postgres and the standard session handler • moved to CouchDB for multi domain handling • moved to Redis for speedTuesday, 12 July 2011
  10. 10. backend • all business logic in the backend • clusters of perl/erlang daemons • reading off RabbitMQ • answers cached in RedisTuesday, 12 July 2011
  11. 11. multi anything • multi domain support • different platforms in one daemon • i18n + multi currency • separate template treesTuesday, 12 July 2011
  12. 12. static contentTuesday, 12 July 2011
  13. 13. Tuesday, 12 July 2011
  14. 14. content • pages in CouchDB • pages rendered with information out of CouchDB • page skeletons entirely i18n • template branches in git repository per platform/languageTuesday, 12 July 2011
  15. 15. backend request handling • Catalyst pushes request to RabbitMQ • backend daemons read off queue • push response to Redis • Catalyst reads off Redis (direct or through Ajax)Tuesday, 12 July 2011
  16. 16. Tuesday, 12 July 2011
  17. 17. backend in detail • Dæmonise daemons • plugin based daemon framework • dungenkeeper maintaining population • git://github.com/ideegeo/Daemonise.gitTuesday, 12 July 2011
  18. 18. workflow engine • CouchDB based workflows • RabbitMQ based processing • perl based daemons • talked about it before: http://lnz.me/cVcWTuesday, 12 July 2011
  19. 19. evolution • out of the box Catalyst app (mid 2008) • home grown message queue for backend • split out template tree • moved more content to CouchDB • moved to RabbitMQ in the backend • moved to CouchDB for sessionsTuesday, 12 July 2011
  20. 20. evolution 2 • moved more functionality from controller to plugins • moved to custom Engine • phased out Model • moved to Redis for session handling • moved to Redis for RabbitMQ response handlingTuesday, 12 July 2011
  21. 21. lessons learned • Redis rocks (not only for session handling) • CouchDB rocks • RabbitMQ scales like hell and rocks too • Catalyst rocks with lots of memory too • choose your weapons wiselyTuesday, 12 July 2011
  22. 22. Catalyst lessons • write plugins, lots of them • do it the Catalyst way or you die • message driven development is hard with Catalyst • watch your memory and your leaks • use a fast session storage engineTuesday, 12 July 2011
  23. 23. coding lessons learned • bump out the first version as quick as possible • rewrite it with the user feedback over time • dense code helps avoiding bugs • get to the point quickly, don’t spend ages on nice codeTuesday, 12 July 2011
  24. 24. questions?Tuesday, 12 July 2011
  25. 25. springtimesoft.com/lenzTuesday, 12 July 2011
  26. 26. credits • http://www.flickr.com/photos/amagill/ • http://www.flickr.com/photos/scania/ • http://www.flickr.com/photos/n0rthw1nd/ • http://www.flickr.com/photos/brewbooks/ • http://www.flickr.com/photos/kemped/ • http://www.flickr.com/photos/dunechaser • http://www.flickr.com/photos/vistavision/ • http://www.flickr.com/photos/neenahhistory • http://www.flickr.com/photos/brenda-starr/ • http://www.flickr.com/photos/mlrs193/ • http://www.flickr.com/photos/ • http://www.flickr.com/photos/axis/ abbeychristine/ • http://www.flickr.com/photos/thevlue/ • http://www.flickr.com/photos/beigephotos/Tuesday, 12 July 2011

×