---
# System prepended metadata

title: 'Remind: What are Microservices?'

---

Remind: What are Microservices?
===

Microservices are 
- **independently deployable services**
- **modeled around a business domain**

From a technology viewpoint:
- microservices expose the business capabilities that they encapsulate via one or more network endpoints
- encapsulate data storage and retrieval, exposing data, via well-defined interfaces

### Independent Deployability
- releasing changes to a single microservice into production without having to deploy any thing else
- need explicit, well-defined, and stable contracts between services

### Modeled Around a Business Domain

- This is an architecture in which we have **high cohesion of related technology, but low cohesion of business functionality**.

![](https://i.imgur.com/iQ1e5Hp.png)

- If we want to make it easier to make changes, instead we need to change how we group code — **we choose cohesion of business functionality, rather than technology**.

![](https://i.imgur.com/5Aztgj7.png)

**Our business domain becomes the primary force driving our system architecture**, hopefully making it easier to make changes, and making it easier for us to organize our teams around our business domain

### Own Their Own Data
- Don't shared database between microservices
- Having stable interfaces between services is essential if we want independent deployability
- By hiding the database that backs our service, we also ensure we reduce coupling

### What Advantages Can Microservices Bring?
flexibility:
- improving the scale and robustness of systems
- allows you to mix and match technology
- can be worked on in parallel
- easier for those developers to understand their part of the system, as they can focus their attention on just one part of it

### What Problems Do They Create?
- One of the main challenges: networks
    - network call can and will fail
    - system behavior unpredictable

### And Ownership
