Monolithic architecture
multiple components are combined in single large app.
example :- Blogging app refer this 👉clickMe
→ Single code base
→ Deployed in single bundle
→ Change in one service then whole app is redeployed
→ Building problem :developer has to communicate
→ Problem in scale (to make big face problem during that time)
→ Cumbersome over time
To Overcomes such above problem
Microservices are an architectural and organizational approach to software development
where software is composed of small independent services that communicate over well-defined APIs.
These services are owned by small, self-contained teams.
Microservices architectures make applications easier to scale and faster to develop,
enabling innovation and accelerating time-to-market for new features.
→ Large apps are divide into small parts
→ Different codebase
→ Each module managed independently (or easily)
→ Different tech stack
→ Creating rating microservices
→ Implementing service registry server
→ Implementing service discovery client in user service
→ Implementing service discovery client in hotel service
→ Implementing service discovery client in rating service__understanding api for communcation
→ Microservice__communcation
→ Microservice__communcation__user service calling hotel
→ Removing host and port of microservice to call them
→ Fiegn client how to use calling hotel service
→ Implementing api gateway in simple way
→ Configure multiple url to api gateway
→ Config server in microservices
→ Implementing config server in microservices
→ Implementing cloud config client
→ Fault torance and circut breaker
→ Circut breaker using resilience4J
→ Retry module
→ Spring security with using OKTA Auth
→ OKTA configurations
→ Spring security at api gateway using okta_new
→ Implementing Spring security at userservice
→ Creating feign interceptor
→ Creating rest template client
→ Implementing security at rating and hotel service