By Afzaal Ahmad Zeeshan, Alibaba Cloud Community Blog author.
Traditionally, applications were developed based on a centralized architecture. However, with the changing requirements of the industry and the advent of new methodologies and technologies, distributed applications entered the arena to solve the issues associated with the former. Distributed solutions offer advantages galore over centralized systems in terms of scalability, fault tolerance, cost effectiveness, and high efficiency among a few, but they also bring with them a range of new challenges including increased complexity, initial cost, availability, topology management, traffic movement and management, and security concerns.
We know that distributed applications are built on top of Microservices - a variant or new version of SOA (Service Oriented Architecture) - designs an application as a set of loosely coupled services for increasing modularity and enabling continuous integration, delivery and deployment. Since the services in the microservice architecture are almost independent, they can be developed, modified, tested, and deployed without affecting other services in the system-and this is where the problem starts, didn't notice yet? Let's talk a bit more about this in detail throughout the article and discuss the potential solution that Alibaba Cloud offers.
Also, distributed applications created on top of Microservices design and architecture offer further advantages in the form of high availability, improved disaster recovery, and improved control over performance, but management of such complex applications is not an easy task.
When there is a problem, it is inevitable that people should find solutions. As management needs for distributed applications increased due to the associated inherent complexities of the system, many cloud providers came up with services to satisfy the consumers. Many of the online solutions that tackle the problem, such as Kubernetes, came in the market and provided a solution to this common problem: Management of Microservices in a distributed environment. These distributed applications then posed some other requirements or issues, that were tackled by other solutions (or concepts; you may say!) such as service meshes, etc.
Consider an average-sized distributed application hosted on cloud. To meet the regional requirements of this application is a relatively easy task. Take for instance a container like Docker that provides clear demarcation between the infrastructure layer and the application code. Using its image functionality, we can easily create customized images based on our requirements, in this case the regional needs, and manage the images to provide the desired service. Docker engine is then responsible for making it run everywhere there is Docker runtime.
For management and monitoring of these applications, we can explore various services provided by Alibaba Cloud, namely Cloud Monitor and Application Real-Time Monitoring Service. Same is the case for Authentication, Authorization, Logging, etc.
For an average-sized application, we have options as already discussed. The problem arises when we deal with enterprise level applications, which can be any number of times more complex. A couple of problems to think of off the top of my head right now:
Alibaba Cloud provides Enterprise Distributed Application Service to fulfill the needs for Enterprise Distributed Applications, as it provides an out of the box solution for all these services.
Alibaba Cloud Enterprise Distributed Application Service (EDAS) is a Platform as a Service (PaaS) for applications and Microservices. You can think of this as a SaaS product if you do not integrate the solution inside your own code and only use the services provided by the portal to control the traffic and to log the queries. In a nutshell, this service consists of two major components: Application Release Capabilities and Lightweight Microservice Solutions. EDAS aims to solve issues the enterprise applications face when opting for distributed architecture, including monitoring for performance, diagnosis, and O&M issues.
We can trust EDAS to serve our needs efficiently as it utilizes the existing resource and service management systems of Alibaba Cloud. Features provided by EDAS include distributed service frameworks, centralized configuration management, service governance, high availability, and data-driven operations.
This is the default dashboard that you get when you purchase the subscription. You can see in the top right corner that the service is purchased for the number of services we have, and the number of months (or years) that we are going to utilize it-upfront payment model is available only at the time of this authoring. You are also guided as to create and import the services deployed on Alibaba Cloud in the EDAS portal to control them; ECS, SLB, etc.
In order to have your ECS ready for the EDAS dashboard to provide metrics for it, you need to install the EDAS client in it.
EDAS comes in three editions: standard, professional, and platinum.
The Standard version of EDAS provides Application Publishing & Maintenance, Real-Time Application Monitoring, Microservices, CI/CD Tools, RAM primary accounts & sub-accounts, and role & permission control.
The Professional version of EDAS includes all the above features as well as Rate Limiting & Service Degradation, Traffic Control, Application Health check, Fault Walkthrough, Runtime Snapshot, Hot Method Tracing, and Distributed Tracing.
The Platinum version of EDAS has the following additional capabilities: Application Topology, Distributed Transaction Processing, Dedicated Service Manager, Q&A, Support during System Launch & Big Promotions, Point-to-Point Fault Handling.
Price for platinum is the highest, then the professional edition, and finally the least price is of standard addition. Billing is based on the number of nodes on which the service is deployed. You can select in this category based on the needs that you and your solution have.
EDAS is the primary product of Alibaba Cloud's enterprise internet architecture line known to provide a multifunctional solution for today's enterprise-level cloud computing market. It offers improved stability and enhanced reliability and provides options that can help your operations team manage the application such as the generation of topology of your solution by monitoring the traffic flow of your microservices.
Deployment process can become tidy, sometimes build-in for a solution in cloud environments. For example, we might need to deploy a solution to each server individually and allocate/reallocate hardware and network resources based on the application requirement at the time of deployment. EDAS provides a concept of cluster, a cluster can be several ECS instances or your managed Kubernetes nodes.
Moreover, an application might go through any number of significant changes during a whole lifecycle, which would make the deployment process to each node rather tedious. In this case selection of Kubernetes nodes can be helpful since your underlying orchestrator engine is responsible for the publishing of updates and upgrades.
EDAS provides a visual console to publish and manage the life-cycle of applications regardless of the cluster size.
On the EDAS console, we can perform complete application life-cycle management I.e. releasing, starting/stopping, scaling, and deleting applications. We can very easily operate an application on thousands of instances (this depends on the number of instances you paid for during the purchase of the service!) and manage those efficiently by leveraging Alibaba Cloud's advanced and complex supportive toolkits in operating massive clusters. It is also possible to form groups of instances and then deploy applications in batches based on different groups.
The thing that I personally enjoy with EDAS is the namespaces, you can easily distinguish the deployments and resources with the namespaces, so you have more control over them. For example, here is the currently available namespace list.
You can create namespaces as needed, and they can then be used to separate out your resources as shown in the application creation tab.
This is a handy way to managing different resources for different regions or reasons (no pun intended) in their own namespaces, so that your operations teams can manage them separately.
EDAS provides traffic monitoring capabilities. It also allows us to configure throttling rules to ensure service stability. These rules can be based on threads as well as QPS (queries per second) to provide operation stability during peak times.
EDAS comes with extensive logging capabilities that help for analysis and troubleshooting purposes.
Once an application has been developed and deployed, we need to monitor the running application to retrieve performance metrics such as CPU & memory usage, workload, network traffic, etc., but sometimes this basic profiling is not enough to meet all business needs. These get even difficult to track and counterfeit in case of a problem with microservices, since it is a bit difficult process to control which nodes or solution endpoints are lacking the resources.
EDAS comes with a series of digital operation components that monitor and trace every single component/service in the system to effectively help in troubleshooting and performance profiling.
For a basic introductory post, I believe it would be out of scope to discuss a complete application for a demonstration. But let us discuss a couple of features that Alibaba Cloud EDAS has in the solution.
The basic container for running applications on EDAS, EDAS container integrates well with Aliware Stack and Apache Tomcat to deliver a visible improvement in the usage, monitoring, stability, and performance of container technology.
EDAS supports the deployment, management, and maintenance of applications at enterprise stage. It also provides autoscaling capabilities based on the present usage of CPU, memory, workload, traffic, etc. EDAS also comes with a role and permission control mechanism to allow individuals only a certain level of autonomy as deemed appropriate by their role.
EDAS makes the transition from a centralized system to a distributed system relatively easy by way of EDAS console that allows efficient method distribution, reconfiguration, and management. We can also modify configurations on the console and then notify all the involved machines in the distributed system.
EDAS also provides different types of resources to be controlled, such as ECS, SLB, VPC, etc. that you can also see in the above image for the resources.
GTS is a distributed transaction middleware. Its reliability and performances are high, and it also provides mechanisms for handling data consistency issues in distributed systems. Integrating EDAS and GTS will allow us to quickly implement distributed & multi- database transactions, using a vast set of policies.
EDAS is reliable. It is a product that has been used and tested with Alibaba Cloud for many years. It ensures stable operation, persists in high traffic scenarios, and provides dependable authentication mechanism for each service call.
EDAS is a complete solution for your enterprise needs. As a comprehensive PaaS platform, it offers complete application lifecycle management, efficient management of distributed services, extensive application diagnostics, automatic scaling to handle unexpected traffic peaks, performance profiling, as well as real-time operation monitoring.
EDAS offers openness. By utilizing various open source middleware components, EDAS provides high visibility and it is also Apache compatible.
Data Encryption for Database Backup with Data Backup Service
Managing Application Configuration in Distributed Environment
2,599 posts | 762 followers
FollowAlibaba Clouder - December 15, 2020
Alibaba Clouder - November 7, 2019
Aliware - July 3, 2020
kirito.moe - April 14, 2020
Alibaba Cloud Community - March 28, 2022
Alibaba Developer - January 20, 2022
2,599 posts | 762 followers
FollowA PaaS platform for a variety of application deployment options and microservices solutions to help you monitor, diagnose, operate and maintain your applications
Learn MoreAlibaba 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 MoreSimplify the Operations and Management (O&M) of your computing resources
Learn MoreMore Posts by Alibaba Clouder