Skip to content

Support for registering & discovering applications using AWS CloudMap #5

@hariohmprasath

Description

@hariohmprasath

Type: Feature
Support for registering & discovering applications using AWS CloudMap

Is your feature request related to a problem? Please describe.
We have an application which is currently deployed in both ECS and EKS cluster that would need AWS CloudMap integration to enable service discovery. But depending upon where you deploy the CloudMap integration may vary, like below:

  • For applications deployed in ECS we need to enable cloudmap integration via ECS task or Service.
  • For applications running on EKS we need to deploy an EKS operator and then integrate it via kubespec

This makes it difficult to have a single codebase for both services that can control the CloudMap integration and makes it DevOps heavy

Describe the solution you'd like
Similar to other Spring-boot AWS integration, we can have the registry and discovery defined part of application or bootstrap yaml/properties file like below:

aws:
    cloudmap:
        discovery:
            discoveryList:
            -   healthCheckProtocol: http
                healthCheckResourcePath: /health
                healthCheckThreshold: 5
                service: test-service
                serviceNameSpace: test-namespace
            failFast: true
        enabled: true
        region: us-east-1
        registry:
            description: Namespace for sample cloudmap registry service
            port: 80
            service: service-service
            serviceNameSpace: service-namespace

This will help application developers to control most aspects of the CloudMap integration part of their application code, instead of defining them in CDK, CloudFormation or k8s deployment files

Likewise, we will also provide annotation support using which developers can register spring boot application to cloudmap service. Here is a sample registration code:

@CloudMapRegistry(
		serviceNameSpace = "dark1-namespace",
		service = "dark1-service",
		port = 80
)
public class TestController {}

Describe alternatives you've considered
Other alternative is to have the individual applications register themselves to AWS CloudMap service using AWS SDK. This leads to lot of code & logic duplications which would become difficult to manage

Additional context
If you guys like this, please let me know. I am currently working on a pull request will submit it for review once it's ready.

Metadata

Metadata

Assignees

No one assigned

    Labels

    type: enhancementSmaller enhancement in existing integration

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions