An Introduction to Microservices

An Introduction to Microservices

What is the thing behind Grab’s success? What make Amazon system run smoothly even in the worst situation when technology mistakes appear? Of course, it is microservice – a new approach to software development for many apps and large – scale websites in the world. Let’s figure out how this architecture style could solve problems for Twitter, Spotify, Netflix, eBay, the UK Government Digital Service, PayPal, The Guardian and many more.

In fact, besides microservice, there is another popular software architecture pattern called monolithic. Being invented earlier, monolithic allows IT engineers to develop software simply and directly because all of software modules such as view, business, database, report… are grouped into a big project. Through monolithic, UI (User Interface) and password connects to each other and do all parts of one process to complete a function. Development effect is cut down, all you need to do in a monolithic project are submit change, review, merge code and continue. However, that advantage of monolithic is also its disadvantage, especially in fixing and maintenance process. When one part in your project is broken, it has a bad influence on related others and then the whole project collapses. It is not easy to find mistakes and figure out what you should start to fix, or even worse, you have to rebuild everything totally. Furthermore, it takes a lot of time to upgrade or replace a monolithic project.

Appearing along with the development of cloud computing, microservice is expected to repair all of disadvantages in monolithic. As the name say it all, instead of collecting all modules into a monolithic, microservice divides many modules into many super micro services which work and be deployed independently. Each service has its own server, logic, responsibility. They are isolated but still connect together through Internet (send message through HTTP or use MessageQueue).

The development make it work, microservice brings various benefits to many brands, especially business basing on big technology systems.
Easy to work and manage: Because of being divided into many micro services, each service is simpler, less conflict than monolithic. IT employees find it easy to understand and manage their service. They possibly focus on just only one detailed business function effectively. A small team of 2 to 5 developers is enough to run a service dependently.
Easy to upgrade and scale: it is necessary to make your system work faster, more effective to catch up with customer’s requirements. With cloud computing, you can upgrade your service easily by some clicks because microservice allows to put new technologies into themselves. Furthermore, microservice is possibly developed by various languages, in comparison to its senior which can be used in a synchronous language. For example, image management service can be developed bay C++ or data synthesis service can be written by Python. Meanwhile in monolithic, it is nearly impossible to do such thing, you have to ensure that your upgrade part still works on well with the others without destroying the whole system.
Flexible in emergency situations: thanks to this interesting process, microservice guarantees the whole project to run perfectly even in case of some services are broken down. You will find it easy to fix the broken part later without blocking the process. This is one of the most important role of microservice, especially in big businesses that cut down the loss of revenue’s ability. Monolithic, by contrast, just one mistaken module appears and then the whole project is emergency in danger. That is the reason why microservice receive the trust of big companies which base on complicated technology system, instead of monolithic posing a threat on their sales.

However, microservice provides benefits but come with costs. Most of them comes with its independent process. Modules in project running by microservice connect to each other through Internet so this software architecture possibly fails to ensure the high speed for all modules in comparison to ones which are managed by monolithic. Moreover, because of being run by isolated teams, each team has to solve some related problem such as security, transaction, connection, log files appearing in its own service.

Also, each service use an isolated database so you need some high – tech software such as Docker, Ansible, Salt or Octopus to manage, ensure all services work on well together. Therefore, the whole process becomes more complicated and depends mostly on developers’ knowledge and qualification. A team of software architectures running microservice projects include one technical leader for workflow setup, one for module division, one for CI setup and cloud deploying.

Microservice develops itself and becomes an effective assistant for big companies. However, both monolithic and microservice have their own positive and negative sides so they become very helpful in different situations.