iwmn architecture

Post on 17-May-2015

2.840 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

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

Tuesday, 12 July 2011

Tuesday, 12 July 2011

stripped down catalyststripped the M out of the VC

Tuesday, 12 July 2011

pure NoSQLno relational DB left in the entire stack

Tuesday, 12 July 2011

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

in a bit more detail

Tuesday, 12 July 2011

lightweight

• stripped out the model handling entirely

• stripped out the authentication handling

• many custom plugins (core and contrib)

Tuesday, 12 July 2011

authentication architecture

• multi platform handling (including different session cookie domains)

• CouchDB based storage

• OAuth

• API login (release pending)

Tuesday, 12 July 2011

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

backend

• all business logic in the backend

• clusters of perl/erlang daemons

• reading off RabbitMQ

• answers cached in Redis

Tuesday, 12 July 2011

multi anything

• multi domain support

• different platforms in one daemon

• i18n + multi currency

• separate template trees

Tuesday, 12 July 2011

static content

Tuesday, 12 July 2011

Tuesday, 12 July 2011

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

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

Tuesday, 12 July 2011

backend in detail

• Dæmonise daemons

• plugin based daemon framework

• dungenkeeper maintaining population

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

Tuesday, 12 July 2011

workflow engine

• CouchDB based workflows

• RabbitMQ based processing

• perl based daemons

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

Tuesday, 12 July 2011

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

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

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

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

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

questions?

Tuesday, 12 July 2011

springtimesoft.com/lenz

Tuesday, 12 July 2011

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

top related