Prev Next

Spring / Microservices

Could not find what you were looking for? send us the question and we would be happy to answer your question.

Explain micro service architecture.

Microservices are design patterns, a variant of the service-oriented architecture (SOA) architectural style, structures an application as a collection of loosely coupled independent services. In a microservices architecture, services are fine-grained and uses lightweight protocols.

The advantage of decomposing an application into smaller services is to improve modularity, enables the application easier to understand, develop, test, and become more resilient to architecture erosion. It helps to parallelize development by enabling different teams to develop, deploy and scale its respective services/modules independently.

It also allows the architecture of an individual service to emerge through continuous refactoring. Microservices-based architectures enable continuous delivery and deployment.

Explain the benefits of microservices.

Modularity of large application into microservices help achieve loose coupling when one module failed keeps other modules unaffected and live. Fault isolation is highly improved.

Modularity also helps developer understand and write code, enables parallelizing developments of different modules.

Continuous integration (CI) and deployments made easier.

Improved scalability.

Promotes the usage of its own technology stack per module, isolated from other modules which has zero impact on other modules.

Application troubleshooting and debugging will be quicker as it is easy to isolate which service to look into.

Containerization such as docker is easy and cloud friendly.

Smaller team.

Some of the challenges with Microservice.

Modularity in term of service may lead to duplication of efforts and code.

Application with too many modules make difficult to manage.

DevOps skill set may be required which lead to additonal resource challenge.

Explain spring boot in the context of microservices.

Spring boot provides easy means of creating stand-alone applications with minimal or no configurations. Spring boot provides default code and configurations required to start a spring project quickly.

What is Docker?

Docker is a container that package software in a format that can run isolated on a shared operating system. Unlike VMs, containers do not bundle a full operating system, only the libraries, and settings required to make the software work.

This makes for efficient, lightweight, self-contained systems and guarantees that software will always run the same, regardless of where it is deployed.

What is Dockerfile?

Dockerfile describes the build process for an image. It is run to automatically create an image. It has all the commands necessary to build the image and run your application.

What is kubernetes?

Kubernetes is an open-source container orchestration system for automating deployment, scaling, and management of containerized applications.

What are polyglot microservices?

The polyglot microservices is based on polyglot programming, the practice of writing code in multiple languages to capture additional functionality and efficiency not available in a single language.

What is a service mesh?

Service mesh is used to describe the network of microservices that make up such applications and the interactions between them.

What is distributed tracing?

Distributed tracing systems allows tracking a request through a software system that is distributed across multiple applications, services, and databases as well as through proxies.

Distributed tracing allow us to measure the total time a request took to complete across multiple services. It helps gather timing data needed to troubleshoot latency problems in service architectures.

There are many distributed tracing systems like Zipkin, OpenTracing, etc.

Explain Trace and Span terminologies in distributed tracing.

A trace is an end to end latency graph, composing of the different spans.

A span is an individual operation that takes place, In a microservice architecture, a request may pass through a set of different services and each represents one span and altogether represents a trace.

How do I decompose an application into services?

We can decompose in several catogories.

  • Split by business functionality - define services corresponding to business capabilities.
  • Self-contained Service - design services to handle synchronous requests without waiting for other services.
  • Services by team.
What is Semantic monitoring in Microservices architecture?

Semantic monitoring also known as synthetic monitoring runs certain application's automated tests against the live production system on a regular basis in a specified interval. The results are published into the monitoring service, which triggers alerts in case of any failures. This technique combines automation testing with monitoring in order to detect failing business requirements in production.

Once an issue is detected, it allow faster isolation and bug triaging, thereby reducing the main time required to repair.

What is Melvin Conway's Law?

Melvin Conway's law states that the "Organizations which design systems are constrained to produce designs which are copies of the communication structures of these organizations."

Creating simple Spring boot application using Eclipse and Gradle

Comments & Discussions