You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by Graham Ashby <Gr...@ca.ibm.com> on 2016/07/19 18:20:10 UTC

Patching existing applications

I've been investigating using Brooklyn with our product.  I've been 
impressed with the out of box capabilities, plus the ease of extending it.

However, one thing I haven't seen addressed in the documentation is how 
you patch running systems.  Say I have a composite application that has a 
number of subsidiary applcations.  Now of those, there are a number of 
replicated components tat all need upgrading.  How do I do this?  I would 
have the blueprint for the entire system.  How do I indicate that certain 
parts need updating?  I don't want to have to tear down the existing 
system, and rebuild a new one.

Sorry if this is muddled -- I'm new to Brooklyn.

Thanks
Graham Ashby
IBM Canada


Re: Patching existing applications

Posted by Aled Sage <al...@gmail.com>.
Hi Graham,

There are many ways to tackle this problem - the general philosophy in 
Brooklyn is to do it in the way that is best practice for the software 
under management (sorry that's a bit vague!).

Are these "replicated components" stateless, which need upgraded?

If you can entirely replace individual servers within the composite app 
to achieve the upgrade, then that is the "most cloudy way". You'd want 
to use a policy to replace nodes N at a time (or an effector that would 
loop through the members of the cluster doing this).

---
Alternatively, you might need to upgrade the VM in-place. If there is no 
first-class support for this in the given blueprint (i.e. no existing 
effector to perform the upgrade), then you could invoke new scripts on 
the VM (e.g. via an effector) to make the change. And over time you 
could add first-class support for this upgrade process to the blueprint.

If upgrading in-place, you'll want to carefully follow the upgrade 
instructions in the software's admin guide. You'll also want to do it 
incrementally to the nodes that need upgraded.

---
If you can let us know a little more about your use-case and the 
blueprint, and which approach is most suitable for you then we can try 
to give more guidance as to how this would be done in Brooklyn.

Aled


On 19/07/2016 22:44, Mike Zaccardo wrote:
> Hi Graham,
>
> I don't have a complete answer for you now as this isn't my particular area
> of expertise, but I can get you started and will ask around for more
> information in order to provide a fuller answer.
>
> I believe this functionality can be achieved using a combination of an
> effector and the `ServiceReplacer` policy.  Here are two examples[1][2] of
> this policy in use.  My understanding is that the service could be replaced
> with a new instance running an upgraded version, on demand.  I will confirm
> this.
>
> I hope this helps for starters.
>
> Cheers,
> Mike
>
> [1] https://brooklyn.apache.org/v/latest/start/policies.html
> [2] https://brooklyn.apache.org/v/latest/java/topology-dependencies.html
>
> On Tue, Jul 19, 2016 at 2:20 PM Graham Ashby <Gr...@ca.ibm.com>
> wrote:
>
>> I've been investigating using Brooklyn with our product.  I've been
>> impressed with the out of box capabilities, plus the ease of extending it.
>>
>> However, one thing I haven't seen addressed in the documentation is how
>> you patch running systems.  Say I have a composite application that has a
>> number of subsidiary applcations.  Now of those, there are a number of
>> replicated components tat all need upgrading.  How do I do this?  I would
>> have the blueprint for the entire system.  How do I indicate that certain
>> parts need updating?  I don't want to have to tear down the existing
>> system, and rebuild a new one.
>>
>> Sorry if this is muddled -- I'm new to Brooklyn.
>>
>> Thanks
>> Graham Ashby
>> IBM Canada
>>
>>


Re: Patching existing applications

Posted by Mike Zaccardo <mi...@cloudsoftcorp.com>.
Hi Graham,

I don't have a complete answer for you now as this isn't my particular area
of expertise, but I can get you started and will ask around for more
information in order to provide a fuller answer.

I believe this functionality can be achieved using a combination of an
effector and the `ServiceReplacer` policy.  Here are two examples[1][2] of
this policy in use.  My understanding is that the service could be replaced
with a new instance running an upgraded version, on demand.  I will confirm
this.

I hope this helps for starters.

Cheers,
Mike

[1] https://brooklyn.apache.org/v/latest/start/policies.html
[2] https://brooklyn.apache.org/v/latest/java/topology-dependencies.html

On Tue, Jul 19, 2016 at 2:20 PM Graham Ashby <Gr...@ca.ibm.com>
wrote:

> I've been investigating using Brooklyn with our product.  I've been
> impressed with the out of box capabilities, plus the ease of extending it.
>
> However, one thing I haven't seen addressed in the documentation is how
> you patch running systems.  Say I have a composite application that has a
> number of subsidiary applcations.  Now of those, there are a number of
> replicated components tat all need upgrading.  How do I do this?  I would
> have the blueprint for the entire system.  How do I indicate that certain
> parts need updating?  I don't want to have to tear down the existing
> system, and rebuild a new one.
>
> Sorry if this is muddled -- I'm new to Brooklyn.
>
> Thanks
> Graham Ashby
> IBM Canada
>
>