Hi folks,
// cross-post stratos and brooklyn mailing lists
Two suggestions.
First one is that Stratos should look at adopting at least one of these
official specs -- CAMP or TOSCA -- now rather than later. Both have
matured a lot in recent months and would suit the purpose nicely from
what I see. "Cartridges" seem to map fairly neatly into CAMP components
/ TOSCA nodes, and "dependencies" to
requirements/characteristics/relationships.
Disclaimer: I am on the TC for these specs, but mainly because I don't
like different, proprietary formats unless there is a real need for it,
hence making this suggestion! It would also have the nice benefit of
aligning Apache Stratos with OpenStack projects Heat and Solum as well
as neighbouring Apache (incubating) project Brooklyn [1].)
Second suggestion is that Stratos could leverage some of the work we've
been doing in Apache-incubating Brooklyn.
Last week CAMP support was officially contributed -- both YAML
description and REST API (although a slightly out-of-date version, to be
updated soon!). We're expecting to have TOSCA simple profile YAML
support developed this year.
Brooklyn is Java-based, lower level than Stratos, designed to support
exactly the type of service composition designed here, so I think it
could be a good fit saving a lot of headaches and wheel-reinvention.
There is some overlap but essentially Brooklyn does NOT try to be the
services, it is great and composition, management, and clouds, but
agnostic about the things Stratos cares most about, at least from what I
understand.
Another disclaimer: I am on PPMC for Brooklyn. That said, if we in the
Brooklyn community can help, please let us know. Some of you may know
us from lots of jclouds contributions or early Stratos discussions.
We're also on IRC at #brooklyncentral.
Best
Alex
[1] http://brooklyn.incubator.apache.org/
On 04/07/2014 15:16, Imesh Gunaratne wrote:
[Added Sanjiva to the list]
Hi All,
IMO this composite application model is really important for the
future of Stratos and it will become the foundation for all other
features. Therefore we need to make sure that it is simple, easy to
understand, covers all currently available requirements and easy to
extend. At some point we might need to add extensions to support well
known similar specifications such as CAMP, CloudML and TOSCA.
At present I do not see much feedback from the community on this.
Shall we walk through this and suggest refinements? I had some
concerns and added them to the below document [1]. @IsuruH: Is the
document up to date?
[1]
https://docs.google.com/a/wso2.com/document/d/1qnArxF8obhbjMLUbPAENQMn94fPSd3AVqO41mxhnJXE/edit#
Thanks
On Thu, Jul 3, 2014 at 12:22 PM, Isuru Haththotuwa <isu...@apache.org
<mailto:isu...@apache.org>> wrote:
For the initial implementation for persisting Service Group
Definitions, the functionality will cover:
1. Nested Service Groups
2. Validation of the availability of referred Service Groups and
Cartridges
I have copy-pasted two sample Service Group definitions [1, 2]
below. [2] is a nested group.
[1].
{
"name": "group1",
"cartridges": [
"mysql", "mongoDB"
],
"dependencies": {
"killBehaviour": "kill-none"
}
}
[2].
{
"name": "group2",
"subGroups": [
"group1"
],
"cartridges": [
"php"
],
"dependencies": {
"startupOrder": [
{
"start": "group.group1",
"after": "cartridge.php"
}
],
"killBehaviour": "kill-dependents"
}
}
On Mon, Jun 2, 2014 at 10:52 AM, Isuru Haththotuwa
<isu...@apache.org <mailto:isu...@apache.org>> wrote:
Hi Devs,
This is an addition to the discussion happened in the thread
[1]. I have included a very basic sequence diagram to show the
flow of how Service Grouping would happen for the initial
implementation.
composite_app_1.png
<https://docs.google.com/a/wso2.com/file/d/0B4pCC9A49FwCRDhqQ0JDRl9tQjA/edit?usp=drive_web>
Short description of the flow:.
1, 2 & 3. Deploy Components' Definitions that would be
included in the top level Composite Application. Typically, a
component would map to a single cartridge. For sample JSON
definitions of a component, please refer [1].
4. Deploy a Group Definition, which would logically group the
relevant components. This would include information on the
Startup Order of each component, and how to handle the
termination/error situations as well (Kill Behavior).
5. Deploy a Nested Group Definition, which would contain
one/more of Components and Groups.
6. Deploy the Composite Application Definition. This would map
to the operation 'Subscription' which we have currently, when
spinning up a single cartridge instance. As per the discussion
that took place in the above mentioned thread, this was
decided to be called the 'Composite Application Definition'
deployment, rather than a Subscription.
For the initial version, we can restrict this Composite
Application Definition only to contain information for each
group/component, such as aliases, git repositories and
relevant info as required, etc., and not allow further
grouping at this level.
A typical basic Composite Application Definition, in JSON
format, would be as follows:
{
"name": "group2",
"alias": "<group2_alias>",
"components": [
{
"name": "component2",
"alias": "<component2_alias>",
"repoUrRL": "<repo_url>"
}
],
"groups": [
{
"name": "group1",
"alias": "group1_alias",
"components": [
{
"name": "component1",
"alias": "<component1_alias>",
"xxx": "<xxx>"
},
{
"name": "component3",
"alias": "<component3_alias>",
"yyy": "<yyy>"
}
]
}
]
}
More information is available in the above mentioned mail
thread and in [2]. Please share your feedback on this.
[1]. [Discuss] Grouping of services (cartridges)
[2].
https://docs.google.com/a/wso2.com/document/d/1qnArxF8obhbjMLUbPAENQMn94fPSd3AVqO41mxhnJXE/edit#
--
Imesh Gunaratne
Technical Lead, WSO2
Committer & PPMC Member, Apache Stratos