Skip to content

Support for registering & discovering applications using AWS CloudMap #5

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
hariohmprasath opened this issue Dec 23, 2020 · 4 comments
Labels
type: enhancement Smaller enhancement in existing integration
Milestone

Comments

@hariohmprasath
Copy link

hariohmprasath commented Dec 23, 2020

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.

@github-actions github-actions bot added type: enhancement Smaller enhancement in existing integration status: waiting-for-triage Team has not yet looked into this issue labels Dec 23, 2020
@eddumelendez eddumelendez removed the status: waiting-for-triage Team has not yet looked into this issue label Dec 25, 2020
@eddumelendez
Copy link
Contributor

@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
Copy link
Author

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
Copy link
Contributor

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

@hariohmprasath
Copy link
Author

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

Thanks. I have opened a discussion

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type: enhancement Smaller enhancement in existing integration
Projects
None yet
Development

No branches or pull requests

3 participants