AWS X-Ray is a service developed by Amazon that enables developers to conduct performance analysis and debug distributed microservice-based applications.
X-Ray consolidates information about an application’s architecture into a Service Map, which also includes connections to components and a dependency tree. It enables easier root cause analysis by highlighting the part of application that is problematic, offering request details such as latency, HTTP response status and number of errors.
AWS X-Ray can trace requests made to applications that span multiple AWS accounts, AWS Regions and Availability Zones, offering true end-to-end visibility.
As the largest Cloud Service Provider in the world, Amazon has played an active role in promoting the transition from monolithic applications to microservice-based applications. They have witnessed first-hand the difficulties in identifying and solving issues in distributed systems, Jeff Barr of AWS saying:
‘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’.
Leveraging all the data Amazon gathered since the release of their cloud computing services, they had all the necessary information to develop AWS X-Ray and release it in November 2016.
AWS X-Ray operates on an intuitive workflow that progresses as follows:
While X-Ray is an easy and convenient feature to use with AWS exclusive systems, the tool lacks when it comes to tracing outside the realms of Amazon’s products. This makes third-party traces end abruptly and the resulting service map to inaccurately represent the application’s architecture. It is not possible to trace over the API gateway or track asynchronous invocations such as SNS on Kinesis. In addition, it is difficult to set up connections to developer and testing environments, or identify problems that run across multiple traces.
As usual with AWS, X-Ray features a free tier. The first 100,000 traces recorded each month, and free for the first 1,000,000 traces retrieved or scanned each month.
Afterwards, traces recorded cost $5 for every 1,000,000 transactions, while traces received or scanned only cost $0.50 for every 1,000,000 transactions.