Using AWS X-Ray to Monitor a Node.js App
The course is part of these learning paths
AWS X-Ray makes it possible for you to monitor, trace and visualize activity across multiple application touch points.
In this course we will:
Introduce the AWS X-Ray service and the functionality that it provides.
Explain the functions of the AWS X-Ray service and how to use AWS X-Ray with other AWS services.
Demonstrate how to use the AWS X-Ray Console - highlighting key areas such as the Service Map and Tracing windows.
Demonstrate how to implement a Docker based Node.js application using the AWS X-ray SDK.
This is an Intermediate level course aimed at AWS professionals looking to learn how to use this important new AWS service in real world deployments.
The demo / build files for this course are available here
About the Author
Jeremy is the DevOps Content Lead at Cloud Academy where he specializes in developing technical training documentation for DevOps.
He has a strong background in software engineering, and has been coding with various languages, frameworks, and systems for the past 20+ years. In recent times, Jeremy has been focused on DevOps, Cloud, Security, and Machine Learning.
Jeremy holds professional certifications for both the AWS and GCP cloud platforms.
- [Presenter] To understand why we would consider deploying AWS X-Ray, we will step back and analyze some of the current trends that exist within software patterns and infrastructure architectures, each of which provides a motivation for using a service like AWS X-Ray. Of recent times there has been a strong progression away from monolithic architectures towards microservices. Software applications built to use in microservices have multiplied rapidly in recent years and the trend shows no signs of slowing down. A microservices architecture is a software design pattern in which a large application is decomposed into many smaller services, each with its own simple and discrete objective. The individual microservices are designed to collaborate and communicate over a network, typically using a lightweight mechanism, such as HTTP/REST with JSON. Some of this communication will be done asynchronously, a challenge in its own right. Coupled with the emergence and normality of cloud platforms, such as AWS, we are now seeing applications becoming more and more distributed and dynamic at the infrastructure layer. A single application nowadays could well be composed of hundreds of servers deployed across multiple regions, multiple physical facilities, multiple VPCs, and multiple availability zones. These architectures are highly elastic and dynamic, adjusting to application demand in real time. The following quote provided by Jeff Barr from AWS succinctly articulates the problem space. "The combination of cloud computing, microservices, "and asynchronous, notification-based architectures "has brought forth systems that have hundreds "or thousands of moving parts. "The challenge of identifying and addressing "performance issues in these complex systems "has only grown, as has the difficulty of aggregating "individual, service-level observations "into meaningful top-level results. "There has been no easy way for developers "to follow the thread as execution traverses "EC2 instances, ECS containers, microservices, "AWS database and messaging services."