Ever since I started following the Twitter engineering stories, I had developed a great interest in Microservices Architecture. Last Tuesday, I attended an one day workshop on Microservices Architecture, in Bangalore, as a part of the Agile India conference. Fred George, who I have interviewed for the May issue of the magazine, conducted the workshop. Fred, has a fascinating track record, which you can read in the May issue.
The workshop started with a brief introduction of the architecture. The Netflix, LinkedIn stories were discussed and Fred talked about his experience of working in a project where every 3 1/2 minutes the code was being deployed to production. In this architecture the entire application is split into tiny self-contained, self-monitoring, replaceable services. Each service has its own data store. The time taken to make changes to the services is very very less. And since the whole application is broken down into tiny pieces, you can manage them more efficiently. What was very interesting to me, was the facility to use of multiple technologies/languages in this architecture.
All the services talk to each other in a completely decoupled manner using message bus. LinkedIn apparently has open-sourced its bus called Kafka. Netflix has hundreds of services implemented in Java. With popular support from cloud providers like Amazon, it’s very easy to set up microservices and get them running as quick as possible. The microservices architecture, blends well with the Agile principles. You can experiment a new idea in your project and get it up and running asap.
I then paired up with Dhaval and implemented a simple application. We chose NodeJS and Java. We had services written in both interacting with each other using RabbitMQ.
Overall it was fun. I have jotted down some notes in .adoc format. I will share the nodes and the code written in Node JS in my Github soon. Microservices is so much productivity; but like any new stuff it’s going to take some time to get into the developer’s and the bosses’ minds.