What are microservices?

In general terms, microservices are sub-components of an application that run independently and communicate with each other as part of a modern and scalable architecture. They are independently deployable processes that are organized around business capabilities and communicate over a network using standard protocols, such as HTTP, to fulfill a specific goal. Microservices are implemented using different programming languages, databases, and hardware and software environments.


Characteristics of microservices

Some of the defining characteristics of microservices include:

  • Small size
  • Messaging-enabled
  • Bounded by contexts
  • Autonomously developed
  • Independently deployable
  • Decentralized
  • Built and released with automated processes.


Microservices and software development

A microservice is not a layer within a monolithic application. It is a self-contained piece of business functionality with clear interfaces, and may implement a layered architecture. Microservices lend themselves to a continuous delivery software development process. A change to a small part of the application requires rebuilding and redeploying only one or a small number of services. It’s common for microservices architectures to be adopted for cloud-native applications, serverless computing, and applications using lightweight container deployment.


Benefits of implementing microservices

  • Since they communicate via messaging, if at all, they’re not dependent on specific coding language. Developers can use the programming language they’re most familiar with, enabling them to work faster with lower costs and fewer bugs
  • Since teams can work on smaller applications and more focused problem domains, their projects can be more agile, too. They can iterate faster, address new features on a shorter schedule, and turn around bug fixes almost immediately. They also often find more opportunities to reuse code.
  • Microservices can improve an architecture’s scalability.
  • With monolithic systems, you usually end up “throwing more hardware” at a problem or purchasing expensive and difficult-to-maintain enterprise software. With microservices, you can scale horizontally with standard solutions like load balancers and messaging.
  • As more and more enterprises embrace the cloud, microservices are a great way to get there.


Suggested Reading and Related Topics

  • Containers: Read about what container are and their benefits.
  • Serverless computing: Understand this cloud computer architecture in which the cloud provider runs the server and dynamically manages the allocation of machine resources.
  • Horizontal Scaling and Vertical Scaling: Learn about the different scaling strategies for improving application performance and meeting growing demands.