service discovery


James Bayer
 

i would encourage you to consider a circuit breaker pattern like hystrix
which will have graceful degradation if a remote endpoint is unavailable
because it has not started yet, has too many failures, is network
segmented, etc..

On Thu, Jun 25, 2015 at 9:02 PM, Sumanth Yamala <Sumanth.Yamala(a)sas.com>
wrote:

No. My endpoints don't change. I envision having a number of 12 factor
stateless applications getting deployed using CF push (java buildpacks).
Some of these stateless apps need to talk to each other and so the need for
service discovery.


Currently we use Consul - i.e. each 12 factor app registers itself with
Consul and apps needs to re-discover another app. We feed in the Consul
end point to all the apps as an environment variable.


Using environment variables has a dependency issue that certain
applications that have not been started yet, would not be visible to
applications that have already started...but a HashMap of apps and its
route could itself serve as a repository to discover other applications as
long as the app can get access to the hash map or we persist this hash map
as a KV store in Consul.


Thanks all for your inputs.


Sumanth



------------------------------
*From:* cf-dev-bounces(a)lists.cloudfoundry.org <
cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of James Bayer <
jbayer(a)pivotal.io>
*Sent:* Thursday, June 25, 2015 11:42 PM

*To:* Discussions about Cloud Foundry projects and the system overall.
*Subject:* Re: [cf-dev] service discovery

can you describe the architecture of your applications? do the
endpoints change often after some mircoservices have been started?

your app needs some way to look up other network endpoints it needs.
there are several ways to do this.

* use environment variables - which is provided just-in-time when the
container starts - this might be a URL for example, that routes to the CF
router that might be bound to several different apps, but all the source
app needs to know is the destination route represented by a FQDN and
optional context path

* use a service - either user a service broker or provided service that
provides information to the apps that bind to it, might be a URL and
authentication information, this information is also put in the apps env
variables

* use something like the spring cloud config service that can distribute
information to clients dynamically post container start [1]

* use something like the spring cloud eureka service from netflix oss
that can provide dynamic information to clients using netflix ribbon, also
takes in updates post container start [2] [3]

[1] https://www.youtube.com/watch?v=bJvReWt2jLc
[2] http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
[3]
http://blog.pivotal.io/pivotal-cloud-foundry/features/deploying-microservice-architectures-with-pivotal-cloud-foundry

On Thu, Jun 25, 2015 at 7:47 PM, Sumanth Yamala <Sumanth.Yamala(a)sas.com>
wrote:

micro-service architecture.


Yes - would like for applications to discover the URL of other
applications deployed in CF . Consul is what I use right now - was
wondering if CloudFoundry had something in this space.


Service brokers I thought are only for stateful components like a
database, Consul..can it be used for stateless components as well?



Thanks,

Sumanth


------------------------------
*From:* cf-dev-bounces(a)lists.cloudfoundry.org <
cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of John Wong <
gokoproject(a)gmail.com>
*Sent:* Thursday, June 25, 2015 10:35 PM
*To:* Discussions about Cloud Foundry projects and the system overall.
*Subject:* Re: [cf-dev] service discovery

What's the requirement that your application need to discover other
application? Did you mean somethibg like say microservice architecture and
you want to know the url available and any metadat / property of some
service / app you depend on? One way is via service broker. You can use
also use consul and token to do ACL based resource retrieval/discovery and
I have seen this apptoach (actually today at a local tech talk).
On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com>
wrote:

Hi,


In CF space - the applications that get deployed in warden containers
- how do they discover other applications ? Should we pick a third party
like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth

--
Sent from Jeff Dean's printf() mobile console

_______________________________________________
cf-dev mailing list
cf-dev(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-dev


--
Thank you,

James Bayer

_______________________________________________
cf-dev mailing list
cf-dev(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-dev


--
Thank you,

James Bayer


Sumanth Yamala
 

No. My endpoints don't change. I envision having a number of 12 factor stateless applications getting deployed using CF push (java buildpacks). Some of these stateless apps need to talk to each other and so the need for service discovery.


Currently we use Consul - i.e. each 12 factor app registers itself with Consul and apps needs to re-discover another app. We feed in the Consul end point to all the apps as an environment variable.


Using environment variables has a dependency issue that certain applications that have not been started yet, would not be visible to applications that have already started...but a HashMap of apps and its route could itself serve as a repository to discover other applications as long as the app can get access to the hash map or we persist this hash map as a KV store in Consul.


Thanks all for your inputs.


Sumanth



________________________________
From: cf-dev-bounces(a)lists.cloudfoundry.org <cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of James Bayer <jbayer(a)pivotal.io>
Sent: Thursday, June 25, 2015 11:42 PM
To: Discussions about Cloud Foundry projects and the system overall.
Subject: Re: [cf-dev] service discovery

can you describe the architecture of your applications? do the endpoints change often after some mircoservices have been started?

your app needs some way to look up other network endpoints it needs. there are several ways to do this.

* use environment variables - which is provided just-in-time when the container starts - this might be a URL for example, that routes to the CF router that might be bound to several different apps, but all the source app needs to know is the destination route represented by a FQDN and optional context path

* use a service - either user a service broker or provided service that provides information to the apps that bind to it, might be a URL and authentication information, this information is also put in the apps env variables

* use something like the spring cloud config service that can distribute information to clients dynamically post container start [1]

* use something like the spring cloud eureka service from netflix oss that can provide dynamic information to clients using netflix ribbon, also takes in updates post container start [2] [3]

[1] https://www.youtube.com/watch?v=bJvReWt2jLc
[2] http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
[3] http://blog.pivotal.io/pivotal-cloud-foundry/features/deploying-microservice-architectures-with-pivotal-cloud-foundry

On Thu, Jun 25, 2015 at 7:47 PM, Sumanth Yamala <Sumanth.Yamala(a)sas.com<mailto:Sumanth.Yamala(a)sas.com>> wrote:

micro-service architecture.


Yes - would like for applications to discover the URL of other applications deployed in CF . Consul is what I use right now - was wondering if CloudFoundry had something in this space.


Service brokers I thought are only for stateful components like a database, Consul..can it be used for stateless components as well?



Thanks,

Sumanth


________________________________
From: cf-dev-bounces(a)lists.cloudfoundry.org<mailto:cf-dev-bounces(a)lists.cloudfoundry.org> <cf-dev-bounces(a)lists.cloudfoundry.org<mailto:cf-dev-bounces(a)lists.cloudfoundry.org>> on behalf of John Wong <gokoproject(a)gmail.com<mailto:gokoproject(a)gmail.com>>
Sent: Thursday, June 25, 2015 10:35 PM
To: Discussions about Cloud Foundry projects and the system overall.
Subject: Re: [cf-dev] service discovery

What's the requirement that your application need to discover other application? Did you mean somethibg like say microservice architecture and you want to know the url available and any metadat / property of some service / app you depend on? One way is via service broker. You can use also use consul and token to do ACL based resource retrieval/discovery and I have seen this apptoach (actually today at a local tech talk).
On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com<mailto:Sumanth.Yamala(a)sas.com>> wrote:

Hi,


In CF space - the applications that get deployed in warden containers - how do they discover other applications ? Should we pick a third party like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth


--
Sent from Jeff Dean's printf() mobile console

_______________________________________________
cf-dev mailing list
cf-dev(a)lists.cloudfoundry.org<mailto:cf-dev(a)lists.cloudfoundry.org>
https://lists.cloudfoundry.org/mailman/listinfo/cf-dev




--
Thank you,

James Bayer


James Bayer
 

can you describe the architecture of your applications? do the endpoints
change often after some mircoservices have been started?

your app needs some way to look up other network endpoints it needs. there
are several ways to do this.

* use environment variables - which is provided just-in-time when the
container starts - this might be a URL for example, that routes to the CF
router that might be bound to several different apps, but all the source
app needs to know is the destination route represented by a FQDN and
optional context path

* use a service - either user a service broker or provided service that
provides information to the apps that bind to it, might be a URL and
authentication information, this information is also put in the apps env
variables

* use something like the spring cloud config service that can distribute
information to clients dynamically post container start [1]

* use something like the spring cloud eureka service from netflix oss that
can provide dynamic information to clients using netflix ribbon, also takes
in updates post container start [2] [3]

[1] https://www.youtube.com/watch?v=bJvReWt2jLc
[2] http://cloud.spring.io/spring-cloud-netflix/spring-cloud-netflix.html
[3]
http://blog.pivotal.io/pivotal-cloud-foundry/features/deploying-microservice-architectures-with-pivotal-cloud-foundry

On Thu, Jun 25, 2015 at 7:47 PM, Sumanth Yamala <Sumanth.Yamala(a)sas.com>
wrote:

micro-service architecture.


Yes - would like for applications to discover the URL of other
applications deployed in CF . Consul is what I use right now - was
wondering if CloudFoundry had something in this space.


Service brokers I thought are only for stateful components like a
database, Consul..can it be used for stateless components as well?



Thanks,

Sumanth


------------------------------
*From:* cf-dev-bounces(a)lists.cloudfoundry.org <
cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of John Wong <
gokoproject(a)gmail.com>
*Sent:* Thursday, June 25, 2015 10:35 PM
*To:* Discussions about Cloud Foundry projects and the system overall.
*Subject:* Re: [cf-dev] service discovery

What's the requirement that your application need to discover other
application? Did you mean somethibg like say microservice architecture and
you want to know the url available and any metadat / property of some
service / app you depend on? One way is via service broker. You can use
also use consul and token to do ACL based resource retrieval/discovery and
I have seen this apptoach (actually today at a local tech talk).
On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com> wrote:

Hi,


In CF space - the applications that get deployed in warden containers -
how do they discover other applications ? Should we pick a third party
like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth

--
Sent from Jeff Dean's printf() mobile console

_______________________________________________
cf-dev mailing list
cf-dev(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-dev


--
Thank you,

James Bayer


John Wong
 

Service brokers I thought are only for stateful components like a
database, Consul..can it be used for stateless components as well?
Well here is a way to look at it. You can have consul to discover a bunch
of cassandra nodes in a cluster, and you can remove a node from ever being
contacted by your application if said node is not responsive. Another
example is nginx behind ha proxy or a bunch of apps behind ha proxy, and
you can remove app/webservers went down from ha proxy config dynamically
with some consul engineering.

So what exactly makes something stateless in your case? I think if you can
provide us a concrete use case that'd be very helpful (because you can do
stateless with like DNS load balancing / behind ELB / HA Proxy etc).

John

On Thu, Jun 25, 2015 at 10:47 PM, Sumanth Yamala <Sumanth.Yamala(a)sas.com>
wrote:

micro-service architecture.


Yes - would like for applications to discover the URL of other
applications deployed in CF . Consul is what I use right now - was
wondering if CloudFoundry had something in this space.


Service brokers I thought are only for stateful components like a
database, Consul..can it be used for stateless components as well?



Thanks,

Sumanth


------------------------------
*From:* cf-dev-bounces(a)lists.cloudfoundry.org <
cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of John Wong <
gokoproject(a)gmail.com>
*Sent:* Thursday, June 25, 2015 10:35 PM
*To:* Discussions about Cloud Foundry projects and the system overall.
*Subject:* Re: [cf-dev] service discovery

What's the requirement that your application need to discover other
application? Did you mean somethibg like say microservice architecture and
you want to know the url available and any metadat / property of some
service / app you depend on? One way is via service broker. You can use
also use consul and token to do ACL based resource retrieval/discovery and
I have seen this apptoach (actually today at a local tech talk).
On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com> wrote:

Hi,


In CF space - the applications that get deployed in warden containers -
how do they discover other applications ? Should we pick a third party
like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth

--
Sent from Jeff Dean's printf() mobile console

_______________________________________________
cf-dev mailing list
cf-dev(a)lists.cloudfoundry.org
https://lists.cloudfoundry.org/mailman/listinfo/cf-dev


Sumanth Yamala
 

micro-service architecture.


Yes - would like for applications to discover the URL of other applications deployed in CF . Consul is what I use right now - was wondering if CloudFoundry had something in this space.


Service brokers I thought are only for stateful components like a database, Consul..can it be used for stateless components as well?

?

Thanks,

Sumanth


________________________________
From: cf-dev-bounces(a)lists.cloudfoundry.org <cf-dev-bounces(a)lists.cloudfoundry.org> on behalf of John Wong <gokoproject(a)gmail.com>
Sent: Thursday, June 25, 2015 10:35 PM
To: Discussions about Cloud Foundry projects and the system overall.
Subject: Re: [cf-dev] service discovery

What's the requirement that your application need to discover other application? Did you mean somethibg like say microservice architecture and you want to know the url available and any metadat / property of some service / app you depend on? One way is via service broker. You can use also use consul and token to do ACL based resource retrieval/discovery and I have seen this apptoach (actually today at a local tech talk).
On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com<mailto:Sumanth.Yamala(a)sas.com>> wrote:

Hi,


In CF space - the applications that get deployed in warden containers - how do they discover other applications ? Should we pick a third party like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth


--
Sent from Jeff Dean's printf() mobile console


John Wong
 

What's the requirement that your application need to discover other
application? Did you mean somethibg like say microservice architecture and
you want to know the url available and any metadat / property of some
service / app you depend on? One way is via service broker. You can use
also use consul and token to do ACL based resource retrieval/discovery and
I have seen this apptoach (actually today at a local tech talk).

On Thursday, June 25, 2015, Sumanth Yamala <Sumanth.Yamala(a)sas.com> wrote:

Hi,


In CF space - the applications that get deployed in warden containers -
how do they discover other applications ? Should we pick a third party
like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth
--
Sent from Jeff Dean's printf() mobile console


Sumanth Yamala
 

Hi,


In CF space - the applications that get deployed in warden containers - how do they discover other applications ? Should we pick a third party like Consul or Eureka, or does CF provide an alternate approach.


Thanks in advance.


Thanks,

Sumanth