Every time a microservice architecture is changed, it becomes more complex. Frequent architectural changes may lead to huge differences between the actual architecture and the expectations. Because of these changes, it is difficult for architects or system operations and maintenance (O&M) personnel to accurately remember the composition and interaction of all resources and instances.
In addition, some undesirable features may be introduced during the dynamic evolution of system architectures, such as strong dependence, insufficient local capacity, and over-coupling. These factors bring about significant security threats to the system stability. Therefore, whenever we perform system transformation, business expansion, and stability management, we need to sort out the system architecture to present the interaction between each component beforehand. Architectural visualization can help us clearly identify problems that exist in our architecture, and ensure our system is highly available.
An architecture diagram shared by Daniel Woods when he talked about microservices
Architectural visualization brings about advantages in many aspects, including:
Many familiar architecture diagrams exist in static PowerPoint slides. While we may still be using these legacy architectural diagrams, they are often outdated after significant architectural changes. Using an outdated architecture diagram may lead to misunderstanding of the online architecture. We need to constantly update the view of the system architecture in our minds to be sensitive to any architectural changes. Big promotions or major system transformations happening each year provides us with opportunities to sort out and re-recognize the system architecture. Then we may use various tools to view the distribution of various system components, and the internal and external dependencies they have. This is the mostly commonly used method to sort out an architecture diagram. We may call it the "manual drafting method".
People may want to use automation through technology to improve the efficiency of manual work—for example, the commonly used event-tracking-based microservice visualization solutions. These type of solutions are mainly used in the monitoring fields, such as distributed tracking and appliance performance management (APM). An architectural visualization solution for an ARM product in the app dimension is as follows.
We call this visualization method the "event-tracking-based architectural awareness method". For this type of method, the identification of architecture components relies on core class detection and event tracking.
This solution has some drawbacks:
There is also an automated architectural awareness visualization method. We call it the "unbounded architectural awareness method". It is a language-independent architecture identification solution. It uses the basic data of the metadata, monitoring data, and network data of processes and containers on a user server to create the architecture diagram on the server.
In order to minimize the cost to visualize users' architecture, we use a non-intrusive way to visualize the microservice architecture. By collecting the process data and network interaction data, and then establishing the network interaction relationship between the processes, we are able to create the architectural diagram of microservices. Users only need to install our Application High Availability Service Agent (AHAS Agent) to do architectural visualization. For Alibaba Cloud native microservice systems, the AHAS Agent is installed automatically without user logon.
We also believe that the effectiveness of architectural visualization is related to the level of human cognition. The focus of architectural visualization should consider whether the product better supports top-down methods, bottom-up methods, or a combination of both. Developers are more concerned with the app-level architecture, but architects or managers are more concerned with the overall system architecture. Therefore, different architectural visualization perspectives need to be provided for users at different levels.
The ideal architecture diagram needs to support both macro and micro dimensions. Currently, our architectural visualization product is designed with multi-layer perspectives, including the process layer, container layer, and host layer. Later on, we may include more layers, such as the region layer and service layer.
The three-layer architecture of a microservices application deployed on Alibaba Cloud ECS visualized by AHAS Agent is as follows:
Currently, Architectural Awareness supports identification of 20 Alibaba Cloud services and 21 common third-party service components, such as MySQL, Redis, and Tomcat. The library of supported components is still expanding. The goal is to identify all elements of an architecture as far as practically possible.
The topology for components (Nginx and Redis) and Alibaba Cloud services (MySQL and AHAS) identified by Architectural Awareness
The topology for the request flow and monitoring information of a node
The overview of some processes of hosts identified by Architectural Awareness
Architectural visualization is not an end in itself, but a means of achieving high system availability. Architectural Awareness collects the architectural data and identifies user components (MySQL, Redis, Message Queue, and so on are collectively referred to as "component"). Based on the component and the matching fault library, Architectural Awareness automatically reminds users of the possible faults for each of these components.
We also provide an assessment service that can be used in conjunction with Architectural Awareness. This combination allows users to easily simulate and practice against each type of faults, in order to improve the robustness of the system. In addition, Architectural Awareness identifies Java applications. If the load of a Java application is high, we have a throttling service (Alibaba open source Sentinel Commercial Edition) that can be used in conjunction with Architectural Awareness to safeguard the continuous availability of the application.
The positioning of AHAS is a data analysis-based high availability assurance product that is designed to help cloud native systems achieve high availability. Architectural visualization is a window for efficient O&M and control. We hope to build an application-centric operation and maintenance integrated platform based on the extensive cloud native data system and the visualized and easy-to-operate architecture diagram. In the future, we will strengthen the integration with other cloud services, such as Alibaba CloudMonitor and Alibaba Cloud Container Service, to enrich the dimension of Architectural Awareness. In addition, we will invest more energy in deep data mining and intelligent consumption, to truly make data a core asset of enterprises, and make data effectively ensure business stability.
Alibaba Clouder - January 28, 2019
Alibaba Clouder - June 15, 2020
Alibaba Clouder - May 24, 2019
Aliware - May 13, 2019
Alibaba Clouder - November 30, 2018
Alibaba Clouder - November 7, 2019
Alibaba Cloud Container Service for Kubernetes is a fully managed cloud container management service that supports native Kubernetes and integrates with other Alibaba Cloud products.Learn More
Automate performance monitoring of all your web resources and applications in real-timeLearn More
Quickly Improves High Availability For ApplicationsLearn More
More Posts by Alibaba Clouder