microservices

CRAN status R build status codecov

Breakdown a Monolithic Application to a Suite of Services

Introduction

‘Microservice’ architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an ‘HTTP’ resource ‘API.’ These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies.

Should I use microservices?

As a start, ask yourself if a microservice architecture is a good choice for the system you’re working on?

Caution: If you do not plan to deploy a system into production, then you do not need microservices.

The microservice architecture entails costs and provides benefits. Making lots of independent parts work together incurs complexities. Management, maintenance, support, and testing costs add up in the system. Many software development efforts would be better off if they don’t use it.

If you plan to deploy a system into production, then consider the following:

After mentioning the disadvantages and dangers of implementing microservices, why should someone consider using them?

(Newman 2015) suggests seven key benefits of using microservices:

To conclude, not every application needs to be built as a microservice. In some cases, such as in a system that is an amalgam of programming languages and technologies, microservices architecture is advised or even necessary. However, seldom it is a good choice to start building an application as a microservice. Instead, a better option is to design a system in a modular way and implement it as a monolith. If done well, shifting to microservices would be possible with reasonable refactoring effort.

Installation

You can install microservices by using:

install.packages("microservices")

Further Reading

Fowler, Martin, and James Lewis. 2014. “Microservices - a definition of this new architectural term.” https://martinfowler.com/articles/microservices.html.

Newman, Sam. 2015. Building microservices: designing fine-grained systems. O’Reilly Media, Inc.