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


  • Circuit Breaker

Load Balancing

  • Ribbon - Client side load balancer


  • 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

  • Top 50 Spring Microservices 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

  1. Good service doesn’t need information from another service, it already has it.

  2. All you need is services with right boundaries. Right boundaries result in services being autonomous, loosely coupled and highly-cohesive.

  3. avoid synchronous communication.

  4. The only way good services communicate is via events. Good services are eventually-consistent as well, so there are no distributed transactions.

  5. Always make GET/POST/PUT and DELETE operation idempotent because networks are brittle and replay of a certain network operation should not cause failure.

Good Resources

  1. Decode and validate your JWT https://jwt.io

  2. JHipster

  3. Spring OAuth2 Official Tutorial

  4. Pivotal Cloud Foundary UAA Server

  5. RabbitMQ

Buy DRM Free PDF for Complete Collection of Interview Questions
product image
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