Microservices vs Monolith
Contents
MicroService
- Take every app function and put it in its own service
- Runs in its own container
- Communicate via APIs
But if each microservice is implemented in different languages/environment, how do we deploy? Deployment: Use Docker ! Put each microservice into containers
Pros
- Flexibility (each microservice can be built in different languages/technologies)
- Less risk in change
- Independent scaling
- Faster release cycles
Monolith
- Server-side systme based on single application
Pros
- Good for small team
- Less complex
- Less duplication
- Run fast
Cons
- Highly dependent (single point of failure)
- Language/Framework
- Growth
- Scaling issue
- Complex deployment
Spring Boot
Goal
- Enable quickly built applications
- Provide common non-functional features
Not
- Spring boot does NOT generate code
- Spring boot is NOT an application server or a web server
Features
Quick starter projects with auto configuration
- Web (Login, spring mvc)
- JPA (DB)
start.spring.io starter apps/dependencies
- Spring Web
- @RestController
@GetMapping
handles REST API
- MVC
- @RestController
- Spring Boot Actuator
- Monitor and manage application
- Spring Boot DevTools
- Provide fast app restarts, livereload
Spring vs Spring Boot vs Spring MVC
Spring Framework
- Dependency Injection: Takes care of defining beans, dependencies, how to bind components
Spring MVC
- Web applications
Spring Boot
- Autoconfig
// 143
Questions: What is spring boot/cloud? Distirbuted system regarding microservice load balancer what does it do? what is maven
$$$$$$$$$$ Draw a overall blueprint of each model Why use these techs $$$$$$$$$$
Keyword
- Distributed system
- Maven
- Java Spring Boot?
Dependencies:
- Spring Boot Devtools
- Spring Boot Actuator
- Spring Web(REST, MVC)
- Config Client (Connect to spring cloud config)
- REST
- H2 DB, SQL with JPA (Currency from / to, exchange rate)
- Build routes with Eureka naming server and redirect all requests thru Spring cloud gateway (Assigen different ports to different server)
- Circuit Breaker framwork: Resilience4j (fallback methods if ms is down)
- Zipkin as a distributed tracing server (as a container) connected to all ms ( to trace requests accross ms) // 174
- What if distributed tracing server is down? Use Rabbit MQ
- Google Cloud Kubernetes