Hacker Newsnew | past | comments | ask | show | jobs | submit | afex's commentslogin

i go one step further, and put the domain layer behind a network interface (http or other) with a versioned API. IMO, trapping behavior inside a single application is just as bad as tying it to a framework. the domain layer needs to be available to the entire organization.

rails is just a tool to build a front-end app. i have many of those on my project. some rails, some sinatra. if they want to access shared behavior or data, they include the appropriate gem which knows how to access a particular API.


I would only reach for service-oriented architecture after the application is very mature and it is apparent which parts will benefit by moving to their own services.


I find rails in particular to be very easy to just "api all the things" right off the bat. Add in some nice authentication / authorization with something like devise and CanCan and you will be saved from the headache of bolting an api onto your app as an afterthought.


or the moment you have more than one application running. (which for many products is day #1)


I'd like to hear more on how you setup your service architecture afex (if time permits). Sounds like exactly what I'm trying to accomplish. Thanks in advance!


As far as datastores go, cassandra is write-optimized. Writes are faster than reads. So for this use case (heavy denormalization) it is a good fit.

Also, Cassandra reduces the operational complexity of having a logical store which spans multiple hosts. Your memcache example does not get persistence for free, and sharding mysql is something you have to do manually. The interface to a Cassandra cluster is the same regardless of how many nodes you are running.

Scaling writes is "hard". Incrementing counters is obviously write heavy, and cassandra aims to make it easier.


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: