Closed emanuelpalm closed 1 year ago
OK
Usage of policies is appreciated - do we have resources to implement in v5?
OK
move the authorisation from the authorisation data base ID's
2.1.3: Here you just write about fix (peer-to-peer) store orchestration. We shouldn't discard the features that we already introduced: dynamic orchestration, flexible store orchestration (this can replace the fix store orchestration), matchmaking, provider reservation, etc. I agree with Emanuel that the current orchestration usage is confusing and complicated. But I think we can fix this, maybe with separating the orchestration to multiple operations, using better defaults, etc.
2.1.3 tokens: I don't think orchestration should store tokens, that is the job of the Authorization.
2.2: I do not really like these 'If only the Service Registry is used...', 'If also the Authorisation System is used...', etc. sentences. These suggests that the Authorization and Orchestration are NOT really mandatory systems (so NOT Core systems in the new notation). They are just recommended, at best. I think, every Arrowhead local cloud should contain these systems.
3.4: In this use-case, Orchestration should consult with Authorization about the results it got from the Service Registry. It makes no sense to return a provider to the requester that the requester can't use because of permissions.
4: 'Furthermore, once the system-of-systems have been established and no need for change is imminent, the control plane could even be removed or shut down.' I don't really understand this sentence. The previous use-cases can't work if we shut down the core systems (those are part of the control plane, right?). The providers wants to authorize all the time (by contacting Authorization), checking tokens (by contacting Authorization). The consumers may want reorchestrating because of changed circumstances or expired tokens (by contacting Orchestration).
7.1: 'As of Arrowhead version 4, security is managed by the Authorisation system'. It is not true. Authorization only works with permissions, authentication is using X.509 certificates.
7.1 Identity Provider (IP): If we want this system, it is definitely a core service. For X.509, the Cert authority can be this system. The problem with this that now every system has to know somehow where is the IP. Alternatively, system should ask Service Registry about the IP's service, but in this case we have to make an exception here: we need to allow that everybody (without identifying itself) can ask Service Registry about this specific service (and has permission to use it), because for using the service discovery the system needs to identify itself.
7.1. Tokens: Identity tokens and auth tokens are two separate things. The first one tells the provider who we are, the second tells provider that this consumer can use this service for a specified time.
7.2: I prefer the subscription approach. It makes possible for the consumer to express explicitly that it wants orchestration results continuously (when rules change) until further notice. Orchestration should store these requests to avoid problems if the system goes down and restart.
7.3: 'Systems/services or systems/services' This is about the micro- (see above) prefix. I suspect somebody use find all and replace operation to any microsystem to system and any microservice to service, which make this section very absurd.
Page 1:
The title: “Generic System-of-Systems Description (GSoSD) - The Arrowhead Core Systems” could perhaps be elaborated to better reflect the intension to be a “template” for specific SoSD’s at a basic Arrowhead level. Perhaps something like: “Generic System-of-Systems Description (GSoSD) – A template for design of basic Arrowhead System-of-Systems.”
Abstract: Clarify that the purpose with the document includes to be a guide on how to design specific System of Systems based on the Arrowhead architecture. Including how application systems that need to exchange information via application services are intended to behave.
Section 1:
loose coupling, which means that services have narrow, well-defined application areas and depend internally on as few other services as possible to fulfil their functions,
late binding, which entails providing as much functionality as possible given what needed services, configuration data and other details are currently available, as well as
lookup, which means that systems, when possible, look up needed data by consuming services instead of relying on the data being in given configuration files.
Section 2.3, System-Service Matrix. Gives a good overview and summary of section 2.1. And it clarifies the requirement to be able to implement and use separate systems that provide the services Service Discovery, Authorization and Orchestration Pull and Push independently. Propose to remove columns for different implementation technologies and just have one column for each system. Also propose to add example application systems and services aligned with the picture in section 1 and with section 3. Don’t think we need the System-Service Matrix as an appendix, if the picture is made clearer with better contrast.
Section 8, References. Propose to add referenses to SyS’s and SD’s for for systems and services addresses in the document.
My comments to the Eclipse arrowhead Generic SoSD v5.0 document. In general this GSoSD deviates too much from the v4.6 assumptions about the default properties provided by the architecture. This is not a good way forward. The default properties of 4.6 need to be kept. Degrading should be doable but not recommended. We should foster a more moderna, secure and future oriented thinking in the community!
I realise that many of my below comments are related to the above comment. Thus I limit Amy current review to a few sections of the current GSoSD v5.0 draft.
Sec 1
Terminology: SOA -> microservice architecture. An introductory explanation of the similarities between SOA and microservice architecture is necessary.
The local cloud definition should be more description and precise. Providing the objective and a conceptual description. The necessity for inter-local cloud service exchanges need to described.
Sec 2. We should use microsystem and microservice instead of system and service this to distinguish us from all other "system" terminology.
A more precise definition of a microsystem is needed. The self contained capability need to be defined. See definition in the Arrowhead book.
Sec 2.1.1 A mechanism for finding the ServiceRegistry should be defined, e.g. periodically broadcast within the local cloud of ServiceRegistry address. Individual should be mandated to register it's service with the local cloud ServiceRegistry (keep naming as before ServiceRegistry as one word with capital S and R).
Information about a microservice address, understood protocols, encodings, data models etc. need to be mandated. A set of metadata should be recommended.
Registration time to live need to be defined.
Re-registration of services by the producing microsystem before x% of the end registration life need to be mandated.
Thus automated cleaning end of life microservice in the ServiceRegistry is a needed property.
Monitoring of registered microservice responsiveness: Can be mandated to the the ServiceRegistry or a separate Monitoring syport microsystem,
Sec 2.1.2 The usage of microservice consumer authentication and access control should be the default. If relaxed security is preferred this is allow but not recommended.
Cashing strategies for security policies/rules should be more precisely described e.g. X number of usage, usage for a defined time period, but not limited to.
Sec 2.1.3
The description seams more like a v2 or maybe a v3 of Eclipse Arrowhead. Again the thinking of v4 need to reflected and any down grading should be allowed bu t not recommended!
Sec 2.2
We should continue to have the core microsystem as the basic starting point. Using one or two of the core microsystem need to be treated as special cases and can be described in e.g. appendix.
The booth-strapping description should reflect that v4 approach with the capabilities of the on-boarding procedure and associated support systems. Down grading should be allowed.
Sec 2.3
The service - system matrix should be replaced by SysML models of the core Microsystems showing actual implemented services and protocols and indicating potential protocols.
Sec 3 not considered so far.
Sec 4. Need to be much more precise regarding the default control plane capability capability and the thereby reflected data plane execution. Extensions to the default capability with on-boarding, and other control plane functionality should be described to the ambition of v5.
@jerkerdelsing
My comments to the Eclipse arrowhead Generic SoSD v5.0 document. In general this GSoSD deviates too much from the v4.6 assumptions about the default properties provided by the architecture. This is not a good way forward. The default properties of 4.6 need to be kept. Degrading should be doable but not recommended. We should foster a more moderna, secure and future oriented thinking in the community!
What do you mean by default properties and degrading? Are you saying that Arrowhead 5.0 must be backwards-compatible, or do you mean that we should not provide fewer features than Arrowhead 4.x? If it is the latter, I don't really see a significant risk of that. My own impression is that the features of Arrowhead 4.x are good. It is the way they are realized that can be improved upon quite a lot, in terms of how services are designed, how messages are sent, and so on. I thought that increasing the major version to 5 was meant to signal how backwards-compatibility with 4.x is not going to be a requirement.
I realise that many of my below comments are related to the above comment. Thus I limit Amy current review to a few sections of the current GSoSD v5.0 draft.
Sec 1
Terminology: SOA -> microservice architecture. An introductory explanation of the similarities between SOA and microservice architecture is necessary.
Yes, this has been voiced several times already. My impression is that most of us believe this should go into a separate document, however.
The local cloud definition should be more description and precise. Providing the objective and a conceptual description. The necessity for inter-local cloud service exchanges need to described.
We need to settle on an architectural definition of Arrowhead Local Cloud. I believe we can use the Arrowhead 4.x definition more or less as-is. There may be some less major details that need be discussed, such as what to call a local cloud that cannot connect to the Internet at all, and so on.
Sec 2. We should use microsystem and microservice instead of system and service this to distinguish us from all other "system" terminology.
We have already discussed this quite a lot. I'm not commenting on it here.
A more precise definition of a microsystem is needed. The self contained capability need to be defined. See definition in the Arrowhead book.
This is a good point. We may need some kind of architectural definition of system in this document.
Sec 2.1.1 A mechanism for finding the ServiceRegistry should be defined, e.g. periodically broadcast within the local cloud of ServiceRegistry address.
If we decide to include this (which I would fully support), I would likely be apt to mention already in this document.
Individual should be mandated to register its service with the local cloud ServiceRegistry (keep naming as before ServiceRegistry as one word with capital S and R).
I agree that this is important, but should it go into the GSoSD? Should there be a Generic SysD for each of the Core/Support systems? (I've made a note about system naming in my summary.)
Information about a microservice address, understood protocols, encodings, data models etc. need to be mandated. A set of metadata should be recommended.
Same as above.
Registration time to live need to be defined.
Same as above.
Re-registration of services by the producing microsystem before x% of the end registration life need to be mandated.
Same as above.
Thus automated cleaning end of life microservice in the ServiceRegistry is a needed property.
Same as above.
Monitoring of registered microservice responsiveness: Can be mandated to the the ServiceRegistry or a separate Monitoring syport microsystem,
I believe that monitoring should be handled, at least architecturally, as a separate system concern.
Sec 2.1.2 The usage of microservice consumer authentication and access control should be the default. If relaxed security is preferred this is allow but not recommended.
Yes.
Cashing strategies for security policies/rules should be more precisely described e.g. X number of usage, usage for a defined time period, but not limited to.
Noted.
Sec 2.1.3
The description seams more like a v2 or maybe a v3 of Eclipse Arrowhead. Again the thinking of v4 need to reflected and any down grading should be allowed bu t not recommended!
The GSoSD is not complete and there is no plan, as far as I'm aware, to remove any features. That being said, the Orchestrator does many things today, and I believe we need to make it much more apparent why and when its different modes of operation are useful. My gut feeling is that we may have to separate it into two systems to land at a desirable level of separation of concerns.
Sec 2.2
We should continue to have the core microsystem as the basic starting point. Using one or two of the core microsystem need to be treated as special cases and can be described in e.g. appendix.
From a pedagogical standpoint it is convenient to consider them without each other. We could make it into an architectural requirement for all three of them to be present. We could even talk about things such as "Core Compliance" (all core systems used), "Partial Core Compliance" (at least on core systems used) and so on, in this document.
The booth-strapping description should reflect that v4 approach with the capabilities of the on-boarding procedure and associated support systems. Down grading should be allowed.
When writing this, we decided that bootstrapping and on-boarding are two different things, and that the latter should be addressed in the "Support Systems" document together with the On-Boarding Controller et al. Bootstrapping is the process through which a local cloud forms after a cold start, while on-boarding is the process through which an individual system joins a local cloud.
What do you mean by "downgrading"?
Sec 2.3
The service - system matrix should be replaced by SysML models of the core Microsystems showing actual implemented services and protocols and indicating potential protocols.
This is an interesting proposal. Could you be more specific regarding what details you think should be in the model?
Sec 3 not considered so far.
Sec 4. Need to be much more precise regarding the default control plane capability capability and the thereby reflected data plane execution. Extensions to the default capability with on-boarding, and other control plane functionality should be described to the ambition of v5.
I agree that there is room for improvements to this section. I'm not sure it should be in this document at all. Perhaps we can resume this discussion when we know where the section goes?
This is my summary of all review comments I've found for this document. Some of them come from our internal discussions at Sinetiq and the rest of them are gathered from this GitHub project's issues. @jerkerdelsing @jenseliasson @palvarga @PerOlofsson-Sinetiq @henrikbylund @MatsBJohansson
@jerkerdelsing @jenseliasson @palvarga @PerOlofsson-Sinetiq @henrikbylund @MatsBJohansson
As you all can see, this document sparked quite a lot of discussion. I'm of the opinion that before we continue addressing the concerns that have been raised about it, we first agree on a plan for what reference documents this GSoSD should be split up into and complemented with.
We could chose to follow ISO 42010. It would require that someone more familiar with the standard guides us through it. @henrikbylund? Another thought is to follow the reasoning on the roadmap meeting where we discussed the Concepts Reference and create the "Assumptions", "Values" and "Practices" documents mentioned there.
~It is my opinion that most points in the review summary above can be fixed without further discussion within the Arrowhead community. I believe @PerOlofsson-Sinetiq and myself can see to that those points until the next release of the GSoSD.~
~Which are the points that cannot be trivially fixed withou further discussion? I believe they are as follows:~
The following plan has been ratified by the project:
I consider the following to be ratified and to need no further discussion:
As a consequence, each individual Core system must be useful on its own.
I disagree with this. The orchestrator can't do any useful things without an existing Service Registry.
As a consequence, each individual Core system must be useful on its own.
I disagree with this. The orchestrator can't do any useful things without an existing Service Registry.
By "be[ing] useful on its own", I'm not saying that the orchestrator has to work without a service registry, just that it should not depend on there being any particular type of service registry. This means that you should be able to use a regular DNS server as service registry, if you wanted to.
The orchestrator can work with any SR as long as that SR implements the ServiceDiscovery SD and provide that on an interface (which is documented in an IDD) that the orchestrator understands.
The outcome of this discussion is continuing in #63. I'm closing this issue.
The Arrowhead community is admonished to read and review the latest GSoSD Arrowhead Core Systems 5.0 draft, available here: https://github.com/eclipse-arrowhead/roadmap/tree/main/5.0%20Draft/GSoSD.
Please read the document and then create Issues with any comments you may have in this repository. Please start the titles of your issues with
GSoSD Arrowhead Core Systems 5.0:
. Alternatively, you may elect to post your comments in this issue.