Microservices
Microservices Architecture and its implementation using Spring Framework
Microservices - also known as the microservice architecture - is an architectural style that structures an application as a collection of loosely coupled services, which implement business capabilities. The goal of the microservice architecture is to accelerate software development by enabling continuous delivery/deployment.
Microservices Basics
-
Why Microservices?
-
Monolithic Architecture
-
Microservices Architecture
-
Microservices vs small services
-
Microservices vs SOA
-
Mciroservices vs Monolith
-
12 Factor App Principle
-
Spring Cloud Introduction
-
What are anti-patterns for Microservices
-
Fallacies of Distributed Computing
-
What is Single Responsibility Principle?
-
Partitioning System into Microservices Architecture
Deployment Patterns
-
Multiple Service Instances Per Host
-
Serverless deployment (AWS Lambda)
-
Service Instance per host
-
Service Deployment Platforms (Cloudfoundary, AWS EC2, Azure)
Communication Style
-
Event Driven Messages
-
Messaging (Async Publish Subscribe)
-
REST based communication
Reliability
-
Circuit Breaker
Load Balancing
-
Ribbon - Client side load balancer
Security
-
JWT OAuth2 Access Token
Microservices Tutorials
-
What is Spring Cloud? What are advantages of using Spring Cloud?
-
Developing Microservices using Spring Cloud and deployment on AWS
-
Inter Service Communication in Microservices - different mechanisms
-
Inter Service Communication with Spring Cloud Security in Microservices - different mechanisms
-
API Gateway Design Pattern
-
Ribbon - Client Side Load Balancer
-
Using Hystrix in Microservice communication
-
Design a Scalable GeoIPLocation service using microservices architecture
-
Design a OTP Microservice Using Spring Boot
Microservices Java Interview Questions
-
What are key principles of Microservices Architecture? How are they different from a Monolith and SOA application?
-
Small Services vs Microservices - what distinguished microservices from a small service?
-
How to do authentication at API Gateway Level?
-
How to protect OAuth2 clientId and clientSecret from a public client like Android App?
-
How will you implement throttling of requests for a given client at API Gateway Level?
-
What are four different grant types in OAuth2 password flow? Who is potential user for each one?
-
What is a RefreshToken and AccessToken?
-
How will you implement security for inter microservice communication using OAuth2?
Hint: use client_credentials grant type to issue accessToken
-
How will you move configuration for all microservices to a config server?
-
How will you make sure that not more than 10 password reset requests are made from a single client? Bucket4j
-
How JWT different from a normal session based security?
-
How long the duration should be for AccessToken and RefreshToken Validity?
-
How will you design a eCommerce website using Microservices architecture at a very high level?
-
How will you ensure that Android App does not burst network calls just to fetch the user sync data? How to club the multiple calls into single call?
-
How to use cryptography for serving secure content to end user?
-
How will you implement a Email Verification Microservice using Cryptography rather than a central database.
-
Synchronous vs Async Communication between microservices?
-
How to propagate security token from one microservice to another?
-
What is eventual consistency? How to implement it correctly? What about SQS?
-
How to implement 2 phase commit or distributed transactions in microservices?
-
How will you ensure zero downtime during deployment?
-
How often one should release Microservices to production?
-
Can two microservices share the same database?
-
How to communicate from one microservice to another?
-
Figure out number of microservices in a typical e-shop?
-
How to assign a random port to microservice on every run? Whats benefit?
Best Practices in Microservices Architecture
-
Good service doesn’t need information from another service, it already has it.
-
All you need is services with right boundaries. Right boundaries result in services being autonomous, loosely coupled and highly-cohesive.
-
avoid synchronous communication.
-
The only way good services communicate is via events. Good services are eventually-consistent as well, so there are no distributed transactions.
-
Always make GET/POST/PUT and DELETE operation idempotent because networks are brittle and replay of a certain network operation should not cause failure.
Testing microservices
Good Resources
-
Decode and validate your JWT https://jwt.io
-
JHipster
-
Spring OAuth2 Official Tutorial
-
Pivotal Cloud Foundary UAA Server
-
RabbitMQ
ebook PDF - Cracking Spring Microservices Interviews for Java Developers
This ebook discusses 120 plus real problems and their solutions for Spring microservices architecture based on Spring Boot, Spring Cloud, Cloud Native Applications. It covers core concepts of microservices architecture, various design patterns, interview questions & answers, security in microservices, testing strategies and best practices in distributed system design.
Popular Tags
Trending Posts
- What is Spring Boot and what are its advantages
- Is it a good practice to deploy multiple microservices in a single tomcat container
- Why Microservices are better than Monoliths
- Cracking Spring Microservices Interviews - question bank
- 50 microservices interview questions for Java developers
- Spring Cloud and its advantages
- How will you Partition a typical e-shop into Microservices Architecture