In a recent blog post, Amazon introduced a new service called AWS Cloud Map which acts as a service discovery mechanism and tracks AWS application services and cloud resources. With the rise of microservice architectures, it has been increasingly difficult to programmatically locate and manage dynamic resources in these architectures. But, using AWS Cloud Map, developers can discover and monitor the health of databases, queues, microservices, and other cloud resources with custom names.
Service maps are nothing new, but the nature of transient infrastructure can create anomalies in some of the traditional tools. Amazon positions some of the benefits of using their solution as:
Previously, you had to manually manage all these resource names and their locations within the application code. This became time consuming and error-prone as the number of dependent infrastructure resources increased or the number of microservices dynamically scaled up and down based on traffic. You could also use third-party service discovery products, but this required installing and managing additional software and infrastructure.
Ensuring resources are dynamically kept up to date is a key feature of AWS Cloud Map. Abby Fuller, a senior technical evangelist at AWS, explains how this is achieved:
AWS Cloud Map keeps track of all your application components, their locations, attributes and health status. Now your applications can simply query AWS Cloud Map using AWS SDK, API or even DNS to discover the locations of its dependencies. That allows your applications to scale dynamically and connect to upstream services directly, increasing the responsiveness of your applications.
Registering your web service and cloud resources in AWS Cloud Map is a matter of describing them using custom attributes including deployment stage and versions. Subsequently, your applications can make discovery calls and AWS Cloud Map will return the locations of resources based upon the parameters passed. Fuller characterizes the benefits of this approach as:
Simplifying your deployments and reduces the operational complexity for your applications.
In addition to resource tracking, AWS Cloud Map also provides proactive health monitoring. Fuller explains:
Integrated health checking for IP-based resources, registered with AWS Cloud Map, automatically stops routing traffic to unhealthy endpoints. Additionally, you have APIs to describe the health status of your services, so that you can learn about potential issues with your infrastructure. That increases the resilience of your applications.
Adding resources to AWS Cloud Map occurs through the AWS console or CLI by creating a namespace. With a namespace provisioned, an administrator then needs to determine whether they want to enable resource discovery only using the AWS SDK and AWS API or optionally using DNS. DNS discovery requires IP addresses for all the resources you register.
Resources, including Amazon Elastic Container Service (ECS) and Amazon Fargate are tightly integrated with AWS Cloud Map which simplifies enabling discovery. Fuller explains:
When you create your service and enable service discovery, all the task instances are automatically registered in AWS Cloud Map on scale up, and deregistered on scale down. ECS also ensures that only healthy task instances are returned on the discovery calls by publishing always up-to-date health information to AWS Cloud Map.
AWS Cloud Map is currently available in the following regions: US East (Virginia), US East (Ohio), US West (N. California), US West (Oregon), Canada (Central), Europe (Frankfurt), Europe (Ireland), Europe (London), Europe (Paris), Asia Pacific (Singapore), Asia Pacific (Tokyo), Asia Pacific (Sydney), Asia Pacific (Seoul), and Asia Pacific (Mumbai) Regions.