A (Very) Minimal Charm
Free Ekanayaka
free.ekanayaka at canonical.com
Thu Dec 1 13:27:58 UTC 2016
On 1 December 2016 at 13:53, Marco Ceppi <marco.ceppi at canonical.com> wrote:
> On Thu, Dec 1, 2016 at 5:00 AM Adam Collard <adam.collard at canonical.com>
> wrote:
>
>> On Thu, 1 Dec 2016 at 04:02 Nate Finch <nate.finch at canonical.com> wrote:
>>
>> On IRC, someone was lamenting the fact that the Ubuntu charm takes longer
>> to deploy now, because it has been updated to exercise more of Juju's
>> features. My response was - just make a minimal charm, it's easy. And
>> then of course, I had to figure out how minimal you can get. Here it is:
>>
>> It's just a directory with a metadata.yaml in it with these contents:
>>
>> name: min
>> summary: nope
>> description: nope
>> series:
>> - xenial
>>
>> (obviously you can set the series to whatever you want)
>> No other files or directories are needed.
>>
>>
>> This is neat, but doesn't detract from the bloat in the ubuntu charm.
>>
>
> I'm happy to work though changes to the Ubuntu charm to decrease "bloat".
>
>
>> IMHO the bloat in the ubuntu charm isn't from support for Juju features,
>> but the switch to reactive plus conflicts in layer-base wanting to a)
>> support lots of toolchains to allow layers above it to be slimmer and b) be
>> a suitable base for "just deploy me" ubuntu.
>>
>
> But it is to support the reactive framework, where we utilize newer Juju
> features, like status and application-version to make the charm rich
> despite it's minimal goal set.
>
Yeah, and I think this is a good thing.
> Honestly, a handful of cached wheelhouses and some apt packages don't
> strike me as bloat
>
No it's not per-se. However I think this highlights a more general issue
with the current implementation of the reactive stack. It's not only the
ubuntu charm that has slowed done, it's any reactive-based charm, because
the steps required to "setup" reactive take longer than they used to.
I see a couple of (possibly alternative) ways to improve the situation:
1) Make sure the dependencies of the base reactive layer are packaged, that
should be much faster than pip install, and fall back to pip only for
what's not there (i.e. dependencies added by the consumers of the base
layer). Also, package the base layer itself.
2) Add support for images, so when you deploy some vanilla charm there's an
associated "pre-built" image that will be very fast. I guess this is in the
juju road map anyways.
We always need to keep in mind that this experience will be compared with
things like Kubernetes and Docker, and speed-y deployments really unlock
velocity when iterating on charm development (think for instance running
integration tests).
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/juju-dev/attachments/20161201/59542e8a/attachment.html>
More information about the Juju-dev
mailing list