awspring / spring-cloud-aws

The New Home for Spring Cloud AWS
http://awspring.io
Apache License 2.0
882 stars 299 forks source link

Support for registering & discovering applications using AWS CloudMap #5

Open hariohmprasath opened 3 years ago

hariohmprasath commented 3 years ago

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:

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.

eddumelendez commented 3 years ago

@hariohmprasath thanks for offering your support for this feature. After reading about cloudmap it makes sense to have this integration which allows registry and discovery. I think a good example to follow the implementation is spring-cloud-consul

hariohmprasath commented 3 years ago

Do we have any working example of spring boot integration with this new repository. Seems like whatever I do none of the integrations like parameter store is working with the new repo. Can you please help me out with this?

eddumelendez commented 3 years ago

@hariohmprasath do you mind to open a discussion with category Q&A about it, please?

hariohmprasath commented 3 years ago

@hariohmprasath do you mind to open a discussion with category Q&A about it, please?

Thanks. I have opened a discussion