iwmn architecture

26
Tuesday, 12 July 2011

Upload: lenz-gschwendtner

Post on 17-May-2015

2.840 views

Category:

Technology


0 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: Iwmn architecture

Tuesday, 12 July 2011

Page 2: Iwmn architecture

Tuesday, 12 July 2011

Page 3: Iwmn architecture

stripped down catalyststripped the M out of the VC

Tuesday, 12 July 2011

Page 4: Iwmn architecture

pure NoSQLno relational DB left in the entire stack

Tuesday, 12 July 2011

Page 5: Iwmn architecture

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/anything

Tuesday, 12 July 2011

Page 6: Iwmn architecture

in a bit more detail

Tuesday, 12 July 2011

Page 7: Iwmn architecture

lightweight

• stripped out the model handling entirely

• stripped out the authentication handling

• many custom plugins (core and contrib)

Tuesday, 12 July 2011

Page 8: Iwmn architecture

authentication architecture

• multi platform handling (including different session cookie domains)

• CouchDB based storage

• OAuth

• API login (release pending)

Tuesday, 12 July 2011

Page 9: Iwmn architecture

session handling

• started with Postgres and the standard session handler

• moved to CouchDB for multi domain handling

• moved to Redis for speed

Tuesday, 12 July 2011

Page 10: Iwmn architecture

backend

• all business logic in the backend

• clusters of perl/erlang daemons

• reading off RabbitMQ

• answers cached in Redis

Tuesday, 12 July 2011

Page 11: Iwmn architecture

multi anything

• multi domain support

• different platforms in one daemon

• i18n + multi currency

• separate template trees

Tuesday, 12 July 2011

Page 12: Iwmn architecture

static content

Tuesday, 12 July 2011

Page 13: Iwmn architecture

Tuesday, 12 July 2011

Page 14: Iwmn architecture

content

• pages in CouchDB

• pages rendered with information out of CouchDB

• page skeletons entirely i18n

• template branches in git repository per platform/language

Tuesday, 12 July 2011

Page 15: Iwmn architecture

backendrequest 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

Page 16: Iwmn architecture

Tuesday, 12 July 2011

Page 17: Iwmn architecture

backend in detail

• Dæmonise daemons

• plugin based daemon framework

• dungenkeeper maintaining population

• git://github.com/ideegeo/Daemonise.git

Tuesday, 12 July 2011

Page 18: Iwmn architecture

workflow engine

• CouchDB based workflows

• RabbitMQ based processing

• perl based daemons

• talked about it before: http://lnz.me/cVcW

Tuesday, 12 July 2011

Page 19: Iwmn architecture

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 sessions

Tuesday, 12 July 2011

Page 20: Iwmn architecture

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 handling

Tuesday, 12 July 2011

Page 21: Iwmn architecture

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 wisely

Tuesday, 12 July 2011

Page 22: Iwmn architecture

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 engine

Tuesday, 12 July 2011

Page 23: Iwmn architecture

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 code

Tuesday, 12 July 2011

Page 24: Iwmn architecture

questions?

Tuesday, 12 July 2011

Page 25: Iwmn architecture

springtimesoft.com/lenz

Tuesday, 12 July 2011

Page 26: Iwmn architecture

credits• http://www.flickr.com/photos/amagill/

• http://www.flickr.com/photos/n0rthw1nd/

• http://www.flickr.com/photos/kemped/

• http://www.flickr.com/photos/vistavision/

• http://www.flickr.com/photos/brenda-starr/

• http://www.flickr.com/photos/abbeychristine/

• http://www.flickr.com/photos/beigephotos/

• http://www.flickr.com/photos/scania/

• http://www.flickr.com/photos/brewbooks/

• http://www.flickr.com/photos/dunechaser

• http://www.flickr.com/photos/neenahhistory

• http://www.flickr.com/photos/mlrs193/

• http://www.flickr.com/photos/axis/

• http://www.flickr.com/photos/thevlue/

Tuesday, 12 July 2011