It Has Been Almost More Than Ten Years (Since 2011) That The Microservice Architecture Entered The World Of Software Development. During This Time, It Has Been Able To Attract The Attention Of Companies And Software Development Teams Due To Its Flexibility In The Development Of Application Software.
So that its popularity has been on the rise in the past years, and it is expected to occupy a significant part of the software development market by 2023.
For this reason, if you are looking for a career related to microservices architecture, now is the right time to focus on this software development paradigm.
Accordingly, in this article, we decided to collect a series of frequently asked questions from employment interviews along with their answers so that you have the necessary preparation before entering discussions in this field.
1. Describe one of the advantages and challenges you have faced when using microservices.
Microservices are diverse in terms of technology deployment. Since microservices are dependent on each other, they must be related to each other, which is one of the biggest challenges for developers. So that they provide the possibility of using different libraries, databases and frameworks.
2. Which feature of microservices has made them popular?
Microservices provide decentralized management of data, efficient implementation of DooPs, technical independence, distribution of services based on business capabilities, abstraction of functional complexities of components, and provision of multiple components with a single deployment feature.
3. Explain microservices in simple language
A microservice or microservice architecture breaks a large application into small independent services similar to a honeycomb. This is done with the aim of developing a program aligned with business goals. To be more precise, a honeycomb-like structure is drawn in interaction with business goals, on which the model or the application is developed and deployed.
The design process starts with developing a small module and gradually creates a large structure. The process of developing and putting modules together is just like building a honeycomb. Each cell is independent but interrelated with other cells. Therefore, damage to one cell does not affect the entire structure. Figure 1 shows the simple architecture of microservices.
figure 1
4. What are the main features of microservices?
Some of the main features of microservices are shown in Figure 2. A brief description of the above features is as follows:
- Isolation : In a system, services are largely isolated. Hence, it is possible to modify, scale, add, or remove features to the application.
- Componentization : Microservices are considered as independent components that can be easily upgraded.
- Business Capabilities: Microservices have a simple pattern, where each service performs only one specific task.
- Team independence : Each developer works independently of the other. As a result, it is possible to define a timetable to complete a project within the stipulated time.
- Continuous Delivery : Enables frequent release of application modules through systematic automation, development, testing, and quality assurance of code.
- Responsibility : Microservices do not define applications as a centralized project. In contrast, programs are defined as products consisting of different components, each of which is responsible for performing a specific task.
- Decentralized governance : tool selection is done according to business goals. Developers can choose the best tools to solve their problems.
- Agility : Microservices facilitate rapid or agile development. In addition, they enable the rapid development and deployment of new features and their removal at any time.
figure 2
5. What are the main components of microservices?
Some of the main components of microservices are as follows:
- Containers, clustering and orchestration.
- Infrastructure as Code (IaC).
- Cloud infrastructure.
- API gateway.
- Service communication channels.
- Continuous delivery and deployment of services.
6. What are the advantages and disadvantages of microservices?
Among the advantages of microservices , the following should be mentioned:
- Deployed module and standalone deployment.
- Independent management of services.
- The possibility of deploying services on multiple servers in order to improve performance.
- Easier testing of each service due to fewer dependencies.
- Greater scalability and agility.
- Ease of debugging and maintenance.
- Better interaction between developers and business users.
- Defining development teams with fewer people.
Among the disadvantages of the above architecture, the following should be mentioned:
- Due to the complexity of the architecture, it is more difficult to test and monitor.
- Organizations must change their organizational culture to use this architecture.
- Planning is necessary before using the above architecture.
- It is more expensive compared to integrated software architecture.
- It has its own security challenges.
- Managing a wide variety of services is difficult.
- Efficient mechanisms are needed to keep services connected.
7. Name three common tools used for microservices
Three common tools that most development teams use for microservices are as follows:
- Wiremock
- Docker
- Hystrix
8. How does microservices architecture work?
The microservice architecture is shown in Figure 3. The components shown in the figure are as follows:
- Client : Refers to people who send requests from different devices.
- Identity Provider : verifies the identity of the user or client and issues security tokens.
- API Gateway : Handles user requests.
- Static Content : Contains the static content of the system.
- Management : It balances the performance of services on nodes and detects failures.
- Service Discovery : It shows the solution to discover the communication paths between microservices .
- CDN : consists of a distributed network of proxy servers and data centers that host data.
- Remote Service : Provides remote access to data or information in computers and network devices.
Figure 3
9. Describe the difference between integrated, service-oriented, and microservice architectures
Figure 4 shows the architecture of three integrated, service-oriented and microservice paradigms.
Figure 4
- Integrated architecture: It is similar to a large container in which all the software components of an application are integrated together. In the above architecture, applications are built as a large system and have a code base.
- Service-oriented architecture : It is a set of services that interact with each other. Depending on the nature of the communication, it can be a simple data exchange or it can involve multiple services coordinating some activity.
- Microservice architecture: includes the structure of an application in the form of a set of small and independent services that are developed based on a business logic. Modules can be deployed independently and support the scalability feature in the best way. So that they are ultimately responsive to business goals. These services communicate with each other through standard protocols.
10. Explain Spring Cloud and Spring Boot
- In the field of microservices , Spring Cloud is a tool that provides integration with external systems. The above tool is a lightweight framework designed for rapid application development. Due to providing a powerful communication mechanism for a small amount of data, it is widely used in microservices architecture . Some of the practical features of the above framework are shown in Figure 5.
- Spring Boot is an open-source, Java-based framework that provides developers with a platform on which to build stand-alone, high-level Spring applications. In addition to reducing development time and increasing productivity, composition has a simple syntax that makes it easy to learn.
Figure 5
11. Explain how you can override the default properties of Spring Boot projects?
By specifying attributes in the application.properties file, you can override Spring’s default properties. For example, in Spring MVC applications you must specify an extension and a prefix. You can do this by adding the properties listed below in the application.properties file.
- For extension – spring.mvc.view.suffix: .jsp
- For prefix – spring.mvc.view.prefix: /WEB-INF/
12. What problems do Spring Clouds solve in general?
In general, the following problems can be solved with Spring Clouds:
- Complex problems arising from distributed systems: problems related to network, latency, bandwidth and security issues.
- Service discovery issues: The service discovery mechanism allows processes and services to communicate with each other in a cluster and perform the location process accurately.
- Redundancy problems: Distributed systems often face the problem of redundancy.
- Load balancing issues: optimizes the distribution of workloads among multiple computing resources, including clusters, central processing units, and network links.
- Reduces performance problems: It reduces performance problems caused by various operational overheads.
13. What is meant by Cohesion and Coupling?
- Coupling: In general, it refers to the relationship between software modules A and B and how much one module depends on or interacts with the other module. Coupling is divided into three main modes, modules can be fully coupled (highly dependent), semi-coupled or isolated from each other. The best type of coupling is called Coupling Shell, which is based on interfaces.
- Cohesion: refers to the relationship between two or more parts of a module that pursue the same goal. In general, a high-coupling module can perform a specific task without needing to communicate with other modules. High coherence means that the modules provide the best performance. Figure 6 shows this.
Figure 6
14. What is meant by Bounded Context?
- Bounded Context, which translates as “bounded context”, is a central design pattern based on the domain-oriented design principle of DDD.
- Domain-Driven Design refers to collaboration between models. DDD divides large models into multiple contexts to make them more manageable. In addition, it shows the relationship between the models. The above concept provides an object-oriented approach to the development of services related to the data model and guarantees the integrity and changeability of the data model (Figure 7).
Figure 7
15. Explain the basic characteristics of microservice design
In general, microservice architecture and software developed based on this paradigm have common features, the most important of which are the following:
- Development based on business capabilities : Services are divided and organized based on business capabilities.
- Teamwork : Programmers work as a team on a product. To be more precise, they all seek a common goal.
- Essential messaging frameworks : Microservices architecture emphasizes functional messaging frameworks, so it emphasizes the adoption of the concept of decentralization and elimination of centralized services.
- Clear Accountability : Development teams are accountable for all aspects of the software they produce.
- Decentralized data management : Microservices allow each service to manage its own data separately.
- Automated infrastructure : the systems are complete and each of their modules can be deployed independently.
- Design to deal with failure : due to the specific type of architecture, applications based on microservices have a high tolerance threshold against failures.
16. What are the challenges when using microservices?
The challenges a developer faces when using microservices may be functional or technical.
Operational challenges are as follows:
- The need for heavy infrastructure.
- Requires significant investment.
- The need for excessive planning to manage or manage operational overheads.
The technical challenges are as follows:
- Microservices are always interdependent; Therefore, they must communicate with each other.
- It requires significant system resources because it is based on a distributed paradigm.
- If you’re using a microservices architecture, you need to be prepared to deal with the overhead of operations.
- You need skilled professionals to support heterogeneous distributed microservices .
- Automation is difficult due to the large number of small modules. For this reason, each component must be built, deployed and monitored separately.
- Managing and configuring components deployed in different environments is a difficult task.
- The process of debugging, testing and sometimes deploying all services becomes complicated.
17. Explain PACT in microservices
PACT is an open-source tool that allows service providers and consumers to independently test communications against policies on reliability and integration of microservices . Also, it supports various languages and frameworks such as Ruby, Java, Scala, .NET, JavaScript and Swift/Objective-C.
18. Explain how independent microservices communicate with each other.
Communication between microservices can be established through the following channels:
- HTTP/REST with JSON in relation to request-response pattern.
- Websockets for streaming.
- A broker or server application that uses advanced routing algorithms.
- RabbitMQ, Nats, Kafka, etc. which can be used as message brokers. Each is built to handle a specific type of semantic message. Also, you can use Space Cloud to automate the entire backend operation.
19. What does Client Certificates mean?
A user certificate is a type of digital certificate that generally allows client systems to authenticate their requests to remote servers. In many mutual authentication schemes, the client certificate plays a key role in providing a strong supplicant-side identity mechanism.
20. Explain CDC
As its name suggests, a consumer-driven contract is an agreement between consumers and service providers regarding the format of data sent between them and the compatibility of communication channels that services use. More precisely, it is a pattern used to develop microservices so that they can be efficiently used by different systems.
21. Name some famous companies that use microservices architecture
Almost most of the big websites have replaced the microservices architecture with the integrated architecture, the most important of which are Twitter, Netflix, Amazon, etc.
22. What does semantic monitoring mean?
Semantic monitoring refers to automated testing and monitoring of applications to identify errors in business processes. So that developers get a deeper view of service availability, overall application performance, which plays an important role in identifying problems, fixing them, and improving performance.
23. Explain continuous monitoring
Continuous monitoring involves identifying compliance and risk issues in the operational environment. This includes monitoring the people, processes and infrastructure systems that support business operations.
24. What does domain driven design mean?
Domain-oriented design is an architectural style based on object-oriented analytical design approaches and principles. In the above architecture, the business domain is accurately modeled in software, regardless of how the system actually works (Figure 8). Next, by connecting the components to each other, the application software is made and the development process of complex systems is facilitated. In general, domain-oriented design emphasizes the following three important principles.
- Focus on core domain and domain logic.
- Analyze domain models to find complex designs.
- Liaise closely with network domain experts to improve the application model and address emerging domain issues.
Figure 8
25. Explain OAuth
In general, the OAuth open authorization protocol allows users to prove their identity to third-party service providers through powerful authentication mechanisms. Using the above protocol, you can access third-party services such as GitHub, Facebook, etc. through client programs based on the HTTP protocol. Also, using it you can easily share the resources of one site with another site.
26. What is wrong with distributed transaction?
Distributed transactions are an old approach in microservices architecture that presents the developer with severe scalability problems. Transactions are distributed to multiple services that are called sequentially to complete the transaction. Due to the existence of many modules, they increase the complexity and make the program prone to failure.
27. Explain the importance of reports and dashboards in microservices
Monitoring a system involves the use of reports and dashboards. Reports and dashboards help you:
- Determine which microservice supports which resources.
- Determine which services are affected whenever component changes occur.
- Make documents easy to access when needed.
- Check for different versions of an installed component.
- Determine the level of compliance and maturity of the components.
28. What tests do developers have access to for microservices?
Since in a software project , various microservices are connected with each other, the process of testing microservices while working is complicated and difficult. As a result, tests should be classified based on their levels (Figure 9).
Figure 9
- Low-level tests: Low- level tests are tests that deal with technology, such as unit tests and performance tests. This is a fully automated process.
- Mid-level tests: with the aim of checking reliability and availability, they are performed after low-level tests and before high-level tests.
- High-level tests: High- level tests help stakeholders understand and validate the final features of the software.