2. About me
● Senior Software Engineer at Arvind Internet
● Ex-Flipkart Engineer
● Apache committer
● Technical book reviewer
Email: chandreshpancholi007@gmail.com
Linkedin: https://www.linkedin.com/in/chandresh-pancholi-467a8015
4. Pros
● Simpler build and deployment
● Lower latency for Inter-process communication
● Simpler logging and monitoring
● Easy testing
● Reduce agility over time
● Single tech stack. Easy to understand and build
5. Cons
● Coordination overheads as team grows
● All or nothing deployment
● Too much merge conflicts
● Large code base
● Tightly-coupled architecture
● Application downtime will bring down everything
6. Microservice
A Microservice architecture means that your app is made up of lots of smaller,
independent applications capable of running in their own memory space and scaling
independently from each other across potentially many separate machines
7. Pros
● Independence of development and tech stack
● Easy to onboard new functionality
● Faster development and deployment
● Easy to scale individual service
● Reliability
● Design autonomy
● High cohesion
● Isolation increases speed
8. Cons
● Costly inter-process communication
● Achieving and maintaining high availability
● Coordination overheads as team grows
● Lack of tooling
● Security
● Testability
● Increase configuration management
9. Requirements to build microservice
● Security
● Async communication among services
● Monitoring & Alerting
● Centralising logging
● Tracing
● Service discovery
● Configuration management
● Circuit breaker
● Containerization
● Orchestrator
● Bonus
14. Tracing
Requirement
● Trace inter-process communication among microservices
● Trace Database queries
● Trace exception trace of every error
● Trace JVM and GC for Java application
Tools
● Pinpoint
● Zipkin
● Open Tracing
● Jaeger
15. Centralised logging
Requirement
● Store Insights about user, order, payment etc
● Store history of an event. Create order event, user signup event
● Run batch processing
● Alert on errors
● Database logs
20. Containerization
Requirement
● Standard way to package containers
● Isolation between microservices
● Efficient application development
● Resource Efficiency
Tools
● Docker
● Rkt