On 13/12/2019 12:29 pm, Justin Ross wrote:
> On Thu, Dec 12, 2019 at 5:24 PM Justin Ross <
justi...@gmail.com
> <mailto:
justi...@gmail.com>> wrote:
>
> Hi, all. Here's an attempt to outline the entities and
> relationships in the Skupper model. For now, the description is
> closely tied to Kubernetes to aid understanding, but I don't
> necessarily mean that to always be the case.
>
> VirtualApplicationNetwork (VAN, Skupper network)
> - Is a multi-site application-layer network
> - Hosts one DistributedApplication
>
>
> The 1:1 relation of VAN to Application is something I want to think
> about some more. For one, I think the Application may be a useful
> grouping construct for Services. For two, if deployment resources are
> to some degree tied to the unit of one VAN, then maybe you don't want to
> have to have more than one for multiple Applications.
For me the key point is that the VAN is a single 'address-space'. If you
deploy distinct 'applications' to the same VAN, you are responsible for
ensuring their use of addresses does not collide.
To support multiple applications, they would (in my view) need to have
their own address-space (which is essentially their own VAN).
I see DistributedApplication as being essentially defined by its
association to a network, and a VAN as being defined by the application
it is designed to connect. That is true whether all the services
communicate or whether there are in fact several disjoint sets of
services (though if we care enough about that another term is needed to
distinguish those).
User defined groupings of services are also in my view a separate thing
(regardless of what we actually call them all).
> - Connects all the ApplicationSites in a given DistributedApplication
> - Forms a graph of connected ApplicationSites (the network topology)
>
> DistributedApplication (Application)
> - Is an application implemented as multiple independent services
> in communication with each other
> - Has one or more ApplicationServices, deployed across multiple
> Kube clusters
> - Runs on one VirtualApplicationNetwork
> - Forms a graph of connected ApplicationServices (the application
> topology)
As above, my assumption here is that the graph is not necessarily fully
connected. (I.e. the above perhaps would be Forms one or more graphs of
connected AppplicationServices.)
> ApplicationService (Service)
> - Is a piece of functionality exposed as a network-accessible
> interface
> - Has a name
> - This name features importantly in the presentation of a
> DistributedApplication
> - If not specified, Skupper tooling uses the Kube deployment name
> - Corresponds to one Kube service *name* (*not* one Kube *service*
> - see next point)
> - Corresponds to one or more Kube services (but only *one* Kube
> service *name* - see previous point)
> - Corresponds to one VirtualApplicationNetwork address
> - Has one or more ApplicationDeployments
> - Uses zero or more ApplicationServices
>
> ApplicationDeployment (Deployment)
> - Is a configuration of the entities that support a running service
> - Has a name
> - If not specified, Skupper tooling uses the Kube deployment name
> - Runs in the context of one ApplicationSite (it has a "location")
> - Corresponds to one Kube deployment
>
>
> Having Deployment and Process is probably the way to go, but I find the
> reasoning a bit subtle and hard to remember, which makes me think twice.
Can you elaborate? I think both are important concepts regardless of the
names we use. The 'deployment' concept is perhaps quite kubernetes
centric whereas the 'process' is more universal. At present however our
focus (rightly, in my view) is kubernetes, so I think having deployment
represented in the model at this point is important.
> ApplicationProcess (Process)
> - Is a piece of running code that implements the
> network-accessible interface of its service
> - Has a name
> - If not specified, Skupper tooling uses the Kube pod name
> - Corresponds to one Kube pod
>
> ApplicationChannel (Channel)
>
>
> I wasn't able to immediately come up with an "is a" here. Let me know
> if you have ideas.
A process is a program in execution.