We all are aware of the fact that software applications are scalable. Lately, software availability and responsiveness are few of the key factors towards high-end scalability. But, do you think all web applications or portals that you visit are enough responsive to match your expectations? I don’t think so! When it comes to application performance, your customers will have expectations, regardless of what device or network they are using. When these expectations fail, your customers may become frustrated and you could simply lose out on revenue – which is a complete no for business and reputation in the industry. So what does that mean? It simply means that the increase or decrease in revenue depends on your business experience which is based on the amount of time it takes for your web pages and all downloaded content to load.
Well, you must be aware why AWS is so popular nowadays, as a matter of fact, I will highlight few key features why most of the organizations want to move on AWS today. These facts include:
- Easy to use
- Scalable and high performance
Can you scale up or scale down your infrastructure based on demand?
As we begin, let us try to understand how we can achieve high application availability and scalability on AWS. As you might know, AWS provides different cloud watch matrices to monitor CPU, network, IOPs utilization and also enable auto scaling groups to scale up or down virtual machines i.e. EC2 instances based on these matrices. If you are running Docker containers on these instances then scaling and managing them becomes a challenging task. Well, Amazon Elastic Container Service (Amazon ECS) makes it easier to run, stop, and manage Docker containers on a cluster. Amazon ECS takes help of AWS CloudWatch matrices to auto scale Docker containers. Additionally, you may need other matrices to scale up and scale down your infrastructure based on memory utilization, thread count, error or exception count, response time, throughput, etc. Although AWS CloudWatch doesn’t provide such matrices, there are several other application performance monitoring tools which can provide you with this data.
Does New Relic cuts the mustard?
New Relic is an application performance monitoring tool which collects all the necessary data through an agent running inside virtual machines. New Relic’s software analytics product for application performance monitoring (APM) delivers real-time and trending data about your web application’s performance and the level of satisfaction that your end users expect.
With an end-to-end transaction tracing and a variety of color-coded charts and reports, APM visualizes your data to the deepest code levels. Based on the data it can alert teams or send a notification via webhook to third-party systems. To leverage webhooks, we have exposed an AWS API Gateway endpoint (public HTTPS endpoint). New Relic webhook can post the metrics data on this endpoint which is shown in the diagram below:
Whenever the metric value goes beyond a threshold value (Upscaling), New Relic webhook immediately posts data to the API Gateway. API Gateway then passes this data to AWS Lambda function which is a serverless computing provided by AWS. AWS Lambda connects with a particular service on ECS using AWS APIs and then adds one more task for the service. In the same way, this webhook posts data when the metrics value goes below the threshold limit (Downscaling) and when AWS Lambda decreases one task of corresponding ECS service. This process is repeated every time when there is an alert raised, furthermore, based on this alert AWS Lambda performs auto scaling of ECS task which is based on webhook execution.
This brings us to the point where auto scaling is highly possible through New Relic webhooks. Contact us today at firstname.lastname@example.org to know how we can help in infrastructure management with New Relic.
Akesh, a Solution Architect at BlazeClan, has hands-on experience in full-stack development using Java, Angular and Python, designing and implementing highly secure, scalable and highly available architectures on Amazon Web Services. He has excellent knowledge on implementing DevOps strategies along with different automation and provisioning of AWS resources using infrastructure as code(IAC) strategy. In his free time, he loves to play the synthesizer and composing songs on it.