Thursday, July 16, 2020

# Microservices #

Q1: What is meant by Continuous Integration? What is meant by Continuous Integration?

Answer

Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. Each check-in is then verified by an automated build, allowing teams to detect problems early.


Q2: What is Docker? 

Answer

  • Docker is a containerization platform which packages your application and all its dependencies together in the form of containers so as to ensure that your application works seamlessly in any environment be it development or test or production.
  • Docker containers, wrap a piece of software in a complete filesystem that contains everything needed to run: code, runtime, system tools, system libraries etc. anything that can be installed on a server.
  • This guarantees that the software will always run the same, regardless of its environment

Q3: What does Containerization mean?

Answer:
Containerisation is a type of virtualization strategy that emerged as an alternative to traditional hypervisor-based virtualization.
In containerization, the operating system is shared by the different containers rather than cloned for each virtual machine. For example Docker provides a container virtualization platform that serves as a good alternative to hypervisor-based arrangements.

Q4: Define Microservice Architecture 

Answer

Microservices, aka Microservice Architecture, is an architectural style that structures an application as a collection of small autonomous services, modeled around a business domain.

Q5: Explain Blue-Green Deployment Technique 

Answer

Blue-green deployment is a technique that reduces downtime and risk by running two identical production environments called Blue and Green. At any time, only one of the environments is live, with the live environment serving all production traffic. For this example, Blue is currently live and Green is idle.
As you prepare a new version of your software, deployment and the final stage of testing takes place in the environment that is not live: in this example, Green. Once you have deployed and fully tested the software in Green, you switch the router so all incoming requests now go to Green instead of Blue. Green is now live, and Blue is idle.
This technique can eliminate downtime due to application deployment. In addition, blue-green deployment reduces risk: if something unexpected happens with your new version on Green, you can immediately roll back to the last version by switching back to Blue

Q6: What's the difference between a blue/green deployment and a rolling deployment? 

Answer

  • In Blue Green Deployment, you have TWO complete environments. One is Blue environment which is running and the Green environment to which you want to upgrade. Once you swap the environment from blue to green, the traffic is directed to your new green environment. You can delete or save your old blue environment for backup until the green environment is stable.
  • In Rolling Deployment, you have only ONE complete environment. The code is deployed in the subset of instances of the same environment and moves to another subset after completion.

Q7: What are the differences between continuous integration, continuous delivery, and continuous deployment? 

Answer

  • Developers practicing continuous integration merge their changes back to the main branch as often as possible. By doing so, you avoid the integration hell that usually happens when people wait for release day to merge their changes into the release branch.
  • Continuous delivery is an extension of continuous integration to make sure that you can release new changes to your customers quickly in a sustainable way. This means that on top of having automated your testing, you also have automated your release process and you can deploy your application at any point of time by clicking on a button.
  • Continuous deployment goes one step further than continuous delivery. With this practice, every change that passes all stages of your production pipeline is released to your customers. There's no human intervention, and only a failed test will prevent a new change to be deployed to production.

Q8: What do you know about serverless model? 

Answer

Serverless refers to a model where the existence of servers is hidden from developers. It means you no longer have to deal with capacity, deployments, scaling and fault tolerance and OS. It will essentially reducing maintenance efforts and allow developers to quickly focus on developing codes.
Examples are:
  • Amazon AWS Lambda
  • Azure Functions

Q9: What are the features of Microservices? 

Answer

  • Decoupling – Services within a system are largely decoupled. So the application as a whole can be easily built, altered, and scaled
  • Componentization – Microservices are treated as independent components that can be easily replaced and upgraded
  • Business Capabilities – Microservices are very simple and focus on a single capability
  • Autonomy – Developers and teams can work independently of each other, thus increasing speed
  • Continous Delivery – Allows frequent releases of software, through systematic automation of software creation, testing, and approval
  • Responsibility – Microservices do not focus on applications as projects. Instead, they treat applications as products for which they are responsible
  • Decentralized Governance – The focus is on using the right tool for the right job. That means there is no standardized pattern or any technology pattern. Developers have the freedom to choose the best useful tools to solve their problems
  • Agility – Microservices support agile development. Any new feature can be quickly developed and discarded again

Q10: How does Microservice Architecture work? 

Answer

  • Clients – Different users from various devices send requests.
  • Identity Providers – Authenticates user or clients identities and issues security tokens.
  • API Gateway – Handles client requests.
  • Static Content – Houses all the content of the system.
  • Management – Balances services on nodes and identifies failures.
  • Service Discovery – A guide to find the route of communication between microservices.
  • Content Delivery Networks – Distributed network of proxy servers and their data centers.
  • Remote Service – Enables the remote access information that resides on a network of IT devices.




Q11: What is the difference between Monolithic, SOA and Microservices Architecture? 

Answer

  • Monolithic Architecture is similar to a big container wherein all the software components of an application are assembled together and tightly packaged.
  • Service-Oriented Architecture is a collection of services which communicate with each other. The communication can involve either simple data passing or it could involve two or more services coordinating some activity.
  • Microservice Architecture is an architectural style that structures an application as a collection of small autonomous services, modeled around a business domain.


Q12: What are main differences between Microservices and Monolithic Architecture? 

Answer

Microservices
  • Service Startup is fast
  • Microservices are loosely coupled architecture.
  • Changes done in a single data model does not affect other Microservices.
  • Microservices focuses on products, not projects
Monolithic Architecture
  • Service startup takes time
  • Monolithic architecture is mostly tightly coupled.
  • Any changes in the data model affect the entire database
  • Monolithic put emphasize over the whole project

Q13: What are the standard patterns of orchestrating microservices?

Answer

As we start to model more and more complex logic, we have to deal with the problem of managing business processes that stretch across the boundary of individual services.
  • With orchestration, we rely on a central brain to guide and drive the process, much like the conductor in an orchestra. The orchestration style corresponds more to the SOA idea of orchestration/task services. For example we could wrap the business flow in its own service. Where the proxy orchestrates the interaction between the microservices like shown in the below picture.
  • With choreography, we inform each part of the system of its job, and let it work out the details, like dancers all find‐ ing their way and reacting to others around them in a ballet. The choreography style corresponds to the dumb pipes and smart endpoints mentioned by Martin Fowler's. That approach is also called the domain approach and is using domain events, where each service publish events regarding what have happened and other services can subscribe to those events.

Q14: What are smart endpoints and dumb pipes?

Answer

  • Smart endpoints just meaning actual business rules and any other validations happens behind those endpoints which are not visible to anyone to the consumers of those endpoints think of it as a place where actual Magic happens.
  • Dumb pipelines means any communication means where no further actions e.g validations are taken place, it simply carries the data across that particular channel and it may also be replaceable if need be. The infrastructure chosen is typically dumb (dumb as in acts as a message router only). It just means that routing is the only function the pipes should be doing.

Q15: Whether do you find GraphQL the right fit for designing microservice architecture? 

Answer

GraphQL and microservices are a perfect fit, because GraphQL hides the fact that you have a microservice architecture from the clients. From a backend perspective, you want to split everything into microservices, but from a frontend perspective, you would like all your data to come from a single API. Using GraphQL is the best way I know of that lets you do both. It lets you split up your backend into microservices, while still providing a single API to all your application, and allowing joins across data from different services.


1) Explain microservices architecture
Microservice Architecture is an architectural development style which builds an application as a collection of small autonomous services developed for a business domain.
2) Name three commonly used tools for Microservices
  • Wiremock, 2.) Docker and 3.) Hysrix are important Microservices tool.
3) What is Monolithic Architecture? Monolithic architecture is like a big container in which all the software components of an application are clubbed inside a single package.
4) What are the advantages of microservices?
Here, are some significant advantages of using Microservices:
  • Technology diversity, e., Microservices can mix easily with other frameworks, libraries,  and databases
  • Fault isolation, e., a process failure should not bring the whole system down.
  • Greater support for smaller and parallel team
  • Independent deployment
  • Deployment time reduce
5) What is Spring Cloud?
Spring cloud is an Integration software that integrates with external systems. It allows microservices framework to build applications which perform restricted amounts of data processing.
Microservice Interview Question And Answers
6) Discuss uses of reports and dashboards in the environment of Microservices
Reports and dashboards help in monitoring and upkeep of Microservices. Tons of Application Monitoring Tools assist in this.
7) What are main differences between Microservices and Monolithic Architecture?
MicroservicesMonolithic Architecture
Service Startup is fastService startup takes time
Microservices are loosely coupled architecture.Monolithic architecture is mostly tightly coupled.
Changes done in a single data model does not affect other Microservices.Any changes in the data model affect the entire database
Microservices  focuses  on products, not projectsMonolithic put emphasize over the whole project
8) What are the challenges faced while using Microservices?
  • Microservices always rely on each other. Therefore, they need to communicate with each other.
  • As it is distributed system, it is a heavily involved model.
  • If you are using Microservice architecture, you need to ready for operations overhead.
  • You need skilled professionals to support heterogeneously distributed microservices.
9) In which cases microservice architecture best suited?
Microservice architecture is best suited for desktop, web, mobile devices, Smart TVs, Wearable, etc.
10) Tell me the name of some famous companies which are using Microservice architecture
Most large-scale websites like Twitter, Netflix, Amazon, have advanced from a monolithic architecture to a microservices architecture.
11) What are the characteristics of Microservices?
  • Essential messaging frameworks
  • Decentralized Governance
  • Easy Infrastructure automation
  • Design for failure
  • Infrastructure automation
12) What is RESTful?
Representational State Transfer (REST)/RESTful web services is an architectural style that helps computer systems to communicate over the internet. These web services make microservices easier to understand and implement.
13) Explain three types of Tests for Microservices? In Microservice architecture tests are divided into three broad categories:
  • At the bottom level test, we can perform a general test like performance and unit tests. These kinds of tests are entirely automated.
  • At the middle level, we can perform exploratory tests like the stress tests and usability tests.
  • At the top level, we can conduct acceptance tests which are mostly fewer in numbers. It also helps stakeholders to know about different software features.
14) What are Client certificates?
Client certificates is a digital certificate used to make authenticated requests to a remote server. It is termed as a client certificate.
15) Explain the use of PACT in Microservices architecture?
It is an open source tool which allows testing interactions between service providers and consumers. However, it is separated from the contract made. This increases the reliability of the Microservices applications.
16) What is the meaning of OAuth?
OAuth means open authorization protocol. This protocol allows you to access the client applications on HTTP for third-party providers GitHub, Facebook, etc. It helps you to share resources stored on one site with another site without the need for their credentials.
17) What is End to End Microservices Testing?
End-to-end testing validates every process in the workflow is functioning correctly. It also ensures that the system works together as a whole and satisfies all requirements.
18) Why are Container used in Microservices?
Containers are easiest and effective method to manage the microservice based application. It also helps you to develop and deploy individually. Docker also allows you to encapsulate your microservice in a container image along with its dependencies. Microservice can use these elements without additional efforts.
19) What is the meaning of Semantic monitoring in Microservices architecture?
Semantic monitoring combines automated tests with monitoring of the application. It allows you to find out reasons why your business is not getting more profits.
20) What is a CDC?
CDC is Consumer-Driven Contract. It is a pattern for developing Microservices so that external systems can use them.
21) What is the use of Docker?
Docker offers a container environment which can be used to host any application. This software application and the dependencies that support it which are tightly-packaged together.
22) What are Reactive Extensions in Microservices?
Reactive Extensions is also called Rx. It is a design pattern which allows collecting results by calling multiple services and then compile a combined response. Rx is a popular tool in distributed systems which works exactly opposite to legacy flows.
23) Explain the term 'Continuous Monitoring.'
Continuous monitoring is a method which is used for searching compliance and risk issues associated with a company’s operational and financial environment. It contains human, processes, and working systems which support efficient and actual operations.
24) How independent micro-services communicate with each other?

It depends upon your project needs. However, in most cases, developers use HTTP/REST with JSON or Binary protocol. However, they can use any communication protocol.

No comments:

Docker Swarn

Docker is a tool intended to make the process of creating, deploying and running applications easier by using container based virtualization...