# MicroService
###### tags: `learning` `nodejs`
## What Is Monolithic Server
Contains all the routing, middleware , business , logic, db access to implement all features of our application in one place.
## What is Microservice
A single Microservice contains all the routing, middleware , business , logic, db access to implement just one feature or part of our Application.
eg Service A, Service B , Service C all have their own ** routing, middleware , business , logic, db access.**
One Of The Bigest Challenge Of MicroService Is
**Data Management Between Service**
In MicroService
- Each Service get its own Database (If it need one)
- Service will never , ever reach into another services database.
#### Why Database Per Service
- We want each service to run independently of other services
- Database schema/structure might change unexpectedly
- Some services might function more efficiently with different types of DB's (sql vs nosql)
#### Communication Strategies Between Services
- Sync:- Services Communicates with each other using direct requests
*
- - Async: Communicate using events
* Here we Use an **Event Bus** all requests are made to and emitted from the **Event Bus**.
But It is rarely used
* Second way to use Asyn
1. Define your request very clear and detailed, Then create a db for Sevice D that requires the query data from other services.
1. Next we use an **Event Bus** to listen to request made to other services, then send the log data to Service D database for saving when needed. It notifiy us when an event happens in other services
Pro Of This Technique
- Service D has Zero dependencies on other services
- service D will be extremely fast
Con
- Data Duplication, Paying for extra storage + etra DB
- Harder to Understand.
## Section 2
### Creatind A Post Project
- First What Services should We create? (Post, Comment)
- Next Picture the Goal and Responsibilities of the Services
- We are only using the query service to read data - so when we need to create either comments or post we go to their individual services.