Microservices

This article introduction is aimed at less tech savvy individuals to get a grasp or maybe play around with the capabilities of microservices.

D8ii Limited has been actively pursuing this pattern now for several years but recently you might have heard much more about is as its been more popularized by Uber.

In specific to lessons learned by Matt Ranney from Uber in the youtube video at GOTO 2016.

I have included a template on how to get started with microservices with the client.js and server.js files in D8ii Limited public github repo.

Feel free to share to anyone who this might be of use.  We will also release more code to public in the next couple of months to help benefit the ecosystem.

Please note for ease of use we used redis-rpc.  For proper implementation you would use traditional rpc.  However if your redis servers and microservices are on the same cloud network there should be minimal latency and it should suffice.  I will list the main pros and cons in this article for those wanting to venture further.

A little introduction to me

I’m the Founder of D8ii Limited and you can find me at Jayson Ho or on my facebook page.  I am also the organizer of Node.js in Bangkok and have done public speaking for BOI Thailand, UK Asean and other appearances. Our meetup interest has increased by 300% since I took over from Jason from nodejitsu and it has shown to me that in Bangkok there are much more people actively interested in node.js and this technology.

History

Microservices was advocated and pioneered by Martin Fowler which describes it more as an architecture term.  For IT Architects the reasoning for using microservices is to solve the two main core type of architecture issues we face today.  Monolith approaches (e.g. all in 1 app or repo) or SOA/MVC.  (A more service oriented approach which breaks services up or try to separate out code logic in a meaningful way)

So why did D8ii Limited started using microservices?

The main core reason was because we had to constantly release new features, meet business expectations without having downtime for refactoring (business hate this word) or slow progress.  As everyone who has been in IT has experience there will be an inflection point where growth or feature set slows because the code base has grown.

We had been using SOA architecture for awhile and this has worked well when a company is in their 1-3 year infancy.  However coming also from a large blue chip organization and consultancy on large scale platforms I realised that this would not last forever and there would need to be a more architecture fit solution in future.

The reason I choose to move to microservices for our company is because it fits a lot of what we need.  I wanted an architecture where new developers could be as productive as current developers from Day 1.  I wanted an architecture which had minimal impact on production if a new junior developer or less experience puts or creates an issue.  I wanted an easy way to roll back any problems if they surface quickly and seamlessly.

So to just summarise the key advantages and disadvantages.

Advantages

  • Microservices are great to keep larger teams productive in reducing learning curves by design they are best suited to companies which are wanting to scale up and work best in a development team of 20-100+.
  • Microservices pattern is to make things immutable, so the idea is to append and create apply new services or versions.  It is designed for more technical IT staffs to implement. e.g. architects and senior engineers.
  • Microservices can be used from Day 1 if you take the light approach with it.

Disadvantages

  • Microservices has a high learning curve and is not for users which want to just clone copy templates modify them slightly and follow a set of web instructions how to deploy.  You will need to get yourself dirty and involved to get it working correctly.
  • Microservices require a much higher understanding of Continous Integration , monitoring, logging and debugging of production systems.  You cannot just place a breakpoint and debug code in a microservice architecture.
  • Microservices need a highly technical person in your company to execute this correctly.  It is not a platform as a service like Google App Engine or Heroku.

However you can implement fragements or quasi implementation of microservices and this is the best way we encourage large corporations as well as startups to start with this.

You can even check out Tibco they also are discussing the advatanges of implementing microservices.

Microservices are great to keep larger teams productive in reducing learning curves by design they are best suited to companies which are wanting to scale up and work best in a development team of 20-100+

Microservices need a highly technical person in your company to execute this correctly.  It is not a platform as a service like Google App Engine or Heroku

 

If you wish to know more about microservices or wish for me to present the topic to your company please contact me or on facebook.

I hope you enjoyed the first article I will publish the next one in the upcoming weeks as well as start to discuss how D8ii Limited built and launched a real startup in bangkok using microservices architecture.