What Are Microservices?
Microservice architecture is a design approach used to build an application as a set of smaller services. Each service should implement a specific business capability and services should be independent of each other.
Defining a Business Domain
Similar to bounded contexts in domain driven design, we want to seperate relevent models into their own domain. Each microservice should own all of its own data, logic and interfaces to access the data it contains. This encapsulation ensures that microservices can evolve over time without dependencies from other services.
Breaking an application into smaller services has the additional benefit of creating smaller-sized teams of developers to create them. This typically allows easier resource planning, pairing of skill levels and communication for each team.
Microservice independence allows us to develop, deploy and test each service seperately. This allows us to choose technologies best suited to solve that needs of the business domain. We can also scale a microservice to accomodate more workload easier. This may entail more processing power, memory, servers, storage or any other resource needed. Companies can thus allocate resources more efficiently when using microservices to save costs.
As an example, let say you are building a system in the cloud and you are required to store application log messages for 5 years. The data will be rarely used except in the case of audits and will grow to be gigabytes or terabytes worth of data. Storing this amount of infrequently used data in a high-end relational database may end up costing tens, if not hundreds, of thousands of dolars in the long run. Alternatively, you could store your data in a cheap storage mechanism like Azure Data Tables and only spend a small fraction of the cost.
This flexibility and cost-saving benefit is one of the main features of SERVICE BRICK. We have developed our platform to support several storage providers, both on premise and in the cloud. Each service we develop includes implementation for all supported storage providers which gives our customers unprecedented choice for their needs and checkbook.
- Allows a team to choose the best technologies to solve problems for their particular business domain.
- Microservices can scale independently, allowing you to allocate resources to each service to accomodate workload.
- Companies can staff teams to support each service more efficiently.