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 Java Interviews v3.5 by Munish Chandel
240 real Java interview questions on core Java, concurrency, algorithms, design & data structures, spring, hibernate for Investment Bank, Healthcare IT, product and service based companies, Author : Munish Chandel, Price: 250, Type: PDF
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