The digital landscape in software is moving from monolith to microservices and cloud-based services. Enterprises and companies need to adapt to the continually changing technological landscape and keep up with the change. Systems are becoming more and more complex and are not easy to manage. I will try to explain some of the newer architectural approaches, trends, and provide insight towards AIOps and how it helps to solve this very problem.
Microservices architecture is becoming the most preferred architectural and development strategy. The advantages of building and running software with this architecture outweigh the disadvantages. Benefits include:
- Building highly efficient autonomous "small" teams to deliver new services or features faster, this means you do not have to wait for the long release cycle, you release features as soon as they are ready. Increased productivity and speed of deliverables.
- Isolated development approach results in highly independently deployable service, and testable service. Managing and maintaining tests for the microservice is easier since the scope is limited to the service capabilities, automated testing for unit testing, regression testing as well as performance testing can be achieved easily.
- Different teams can build microservices using different technologies. The best suitable technologies can be leveraged to build specific microservices. Teams can be spread across geographies.
- Microservices are easier to build and deploy; specifically on container platform, the resource utilization is optimized.
- Microservices are built around a particular business functionality
- Microservices scalability is better since they have a very small footprint
Cloud platforms provide many capabilities and tools to work with. A fully managed system on cloud platforms is serverless. Cloud-based serverless technologies are a big boost to companies smaller or larger to move their small functions/code like nano services, asynchronous jobs, scheduled jobs, integration of cloud services with on-premises. With serverless:
- The underlying infrastructure is fully managed by the cloud platforms, resulting in very low maintenance costs
- The deployed serverless services are highly available
- Easier to scale globally with high concurrency
- Event-driven architecture which means that it is used only when a relevant event is triggered
- Most serverless are pay-for-usage which results in low cost for running the services
Utilizing both microservices-based architecture and serverless together is what is called as Digital Modernization. Container platforms like Kubernetes, Openshift are the most suitable platforms for hosting microservices. Serverless can be utilized for, but not limited to, asynchronous processing, scheduled jobs, ETL jobs, etc.
With the advent of microservices and serverless, different challenges arise like:
- Monitoring the high number of microservices
- Identifying the root cause for failure
- Addressing the failure quickly
- Testing across the various features
- Monitoring end-user conversions
- Adapting to continuous upgrades and changes to the systems
Simple DevOps strategy will not be enough to manage such a complex system. Bringing in Artificial Intelligence (AI) coupled with Machine Learning capabilities into DevOps will help address the new complexities in development, deployment as well as production application performance monitoring (APM). AIOps helps in enabling autonomous DevOps, offers prescriptive resolutions and self-healing.
AIOps brings in four critical features needed for creating highly effective processes and systems:
- AIOps: Analysis of the traffic, logs, usage with the help of machine learning, anomaly detection and alerting, and reliable root cause analysis
- Intelligence DevOps: Software quality is improved significantly with AI-driven performance and regression testing
- Remediation and Self-Healing: Auto-detect issues and alerts and trigger remediation and self-healing, provide prescriptive automation
- User Experience: AIOps provides better insights for the usage of the system and measures conversions easily
With AIOps, immediately test your code for performance and regression, automatically analyzing the test traffic and detect issues early. Integration of DevOps pipelines with the AI-based complete APM solution results into a powerful AIOps tool. AI-based APM solutions perform analysis of traffic, logs and resource utilization and detect an anomaly. If any anomaly is observed, an alert is triggered, based on the alerts, teams can build automated scripts for known issues which can be executed as and when the issue occurs. For example:
- Increase disk space or allocate new persistent volumes if the resource(s) is running out of disc space
- Run archival processes when a sudden surge in traffic resulted in increased database table sizing
- Scale up or scale down based on memory or CPU usage exceeding prescribed thresholds (usually in the absence of autoscaling setup)
- Auto-remediation of a failed deployment and revert to older build if the new build failed
A typical workflow for automated remediation will look like this: