karaf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Achim Nierbeck <bcanh...@googlemail.com>
Subject Re: [PROPOSAL] Create and provide karaf-boot plugin
Date Tue, 28 Apr 2015 08:42:45 GMT
Hi,

I fully agree, it's just another flower to our bouquet of working with
Karaf.
Of course the best is to either use Karaf as a server and deploy your
features on it or build a custom distribution to deploy it in your target
environment.
But with all this fuss about Microservices, Dockers and XXX-Boot, it fits
quite nice in there.
The biggest benefit will be to have it as a easy way of using Karaf for a
quick POC to show the power with a "one" artifact only like scenario.
In the end if people are back to reason and think about how the deployment
is done right they get back to building custom distributions again. (I hope
they do get reasonable again ;) )

regards, Achim

2015-04-28 10:37 GMT+02:00 Milen Dyankov <milendyankov@gmail.com>:

> Comparing to SpringBoot is exactly what I wanted to write about.
>
> But from psychological point of view, it has to be able to put everything
> in a single executable jar to be able to convince people.
>
> I recently used both SpringBoot and Felix in a demo and some feedback I had
> was "see but SpringBoot is just one jar while in Felix you need to deploy
> like in EE container"
> The facts that (a) extracted SpringBoot generated jar file contains much
> more than felix + relevant bundle (b) it uses roughly twice the memory and
> (c) it loads roughly twice as many classes - was largely ignored.
>
> So for me personally it's not a big deal - I like Karaf the way it is and I
> know how to work with it. However for marketing purposes it would be nice
> to have a feature that will generate a compile app by running a single
> maven command.
>
> Just my 2 cents
>
> Best,
> Milen
>
>
> On Tue, Apr 28, 2015 at 10:22 AM, Jean-Baptiste Onofré <jb@nanthrax.net>
> wrote:
>
> > Hi Fabian,
> >
> > I fully agree.
> >
> > My point is more to follow the docker discussion that we have. Lot of
> > people see Karaf as a complex and "large" container, and they prefer
> usage
> > of spring-boot for instance. I want to show that Karaf is now a very
> > modern, flexible, lightweight and polymorphic container. So, as I don't
> > think it's a lot of effort, I would like to provide the tooling (code,
> > bootstrapper, etc) to provide an alternative to spring-boot based on
> Karaf.
> >
> > My €0.02 ;)
> >
> > Regards
> > JB
> >
> >
> > On 04/28/2015 09:06 AM, Fabian Lange wrote:
> >
> >> Hi JB,
> >>
> >> correct. But I don't consider that to be a real problem. I have to deal
> >> with about 50 osgi bundles at the moment. And because the standard
> >> assembly
> >> is not in the layout I want I would anyway need to have one to change
> the
> >> layout and customize the contents (properties etc).
> >>
> >> So my opinion is that while your proposal is nice to have, its not
> really
> >> worth much effort, because anybody who wants to build a dist needs
> >> actually
> >> much more control, rather than more helper magic.
> >>
> >> Fabian
> >>
> >> On Tue, Apr 28, 2015 at 7:28 AM, Jean-Baptiste Onofré <jb@nanthrax.net>
> >> wrote:
> >>
> >>  Hi Fabian,
> >>>
> >>> I fully agree with you that creating a custom distro is easy but,
> correct
> >>> me if I'm wrong, right now, you have:
> >>> - modules with your application code
> >>> - a module dedicated for your feature
> >>> - a module dedicated for your custom distribution assembly
> >>>
> >>> You provision the distribution created by the assembly.
> >>>
> >>> What I'm proposing is just a simple way to have a ready to go code and
> >>> building, in order to avoid the overhead of the "custom distribution"
> >>> plumbing module.
> >>>
> >>> Regards
> >>> JB
> >>>
> >>>
> >>> On 04/27/2015 09:57 PM, Fabian Lange wrote:
> >>>
> >>>  Hi,
> >>>>
> >>>> quick feedback from here. I used the current 4.0 way of building my
> >>>> custom
> >>>> dist and it was actually easy enough.
> >>>> What you propose seems to hide a few karaf details, which I personally
> >>>> think should be handled explicitly.
> >>>>
> >>>> In my case for example, I am actually happy with managing the required
> >>>> bootFeatures myself.
> >>>>
> >>>> Fabian
> >>>>
> >>>> On Mon, Apr 27, 2015 at 9:53 PM, Jean-Baptiste Onofré <
> jb@nanthrax.net>
> >>>> wrote:
> >>>>
> >>>>   Actually, I wasn't clear.
> >>>>
> >>>>>
> >>>>> At I'm proposing is not only a new plugin, it's also a dependency.
> >>>>>
> >>>>> Imagine, that in your project pom.xml, you have:
> >>>>>
> >>>>> <parent>
> >>>>> <groupId>org.apache.karaf.boot</groupId>
> >>>>> <artifactId>karaf-boot-starter-parent</artifactId>
> >>>>> <version>4.0.0-SNAPSHOT</version>
> >>>>> </parent>
> >>>>>
> >>>>> The parent contains all plugins and dependencies set, especially
the
> >>>>> Karaf
> >>>>> standard distribution.
> >>>>>
> >>>>> Later in your pom.xml, you have:
> >>>>>
> >>>>> <build>
> >>>>> <plugins>
> >>>>> <plugin>
> >>>>>     <groupId>org.apache.karaf.boot</groupId>
> >>>>>     <artifactId>karaf-boot-maven-plugin</artifactId>
> >>>>> </plugin>
> >>>>> </plugins>
> >>>>> </build>
> >>>>>
> >>>>> In your project, you just need a class describing your Karaf
> >>>>> bootstrapping:
> >>>>>
> >>>>> @KarafBootApplication
> >>>>> @WithShell
> >>>>> @profiles({"a","b","c"})
> >>>>> @featuresBoot({"f1","f2"})
> >>>>> public class MyContainer implements KarafBootstrapper {
> >>>>>
> >>>>> @Override
> >>>>> public void run() {
> >>>>>     // setup your Karaf bootstrapping
> >>>>> }
> >>>>>
> >>>>> }
> >>>>>
> >>>>> The user can add "boot features" to customize the container:
> >>>>>
> >>>>> <dependency>
> >>>>> <groupId>org.apache.karaf.boot</groupId>
> >>>>> <artifactId>org.apache.karaf.boot.webcontainer</artifactId>
> >>>>> </dependency>
> >>>>>
> >>>>> for instance it will automatically add Pax Web war feature in
> >>>>> featuresBoot
> >>>>> (no need to use @featuresBoot).
> >>>>>
> >>>>> The purpose is to (depending of the goal used by the user):
> >>>>> 1/ be able to run container+application easily
> >>>>> 2/ package a custom distribution, ready to go ("key turn") including
> >>>>> applications
> >>>>>
> >>>>> Again, the approach is, from the native user codebase, be able to
> >>>>> bootstrap a container embedding the user applications. This container
> >>>>> can
> >>>>> be started directly from the project, and provide an artifact ready
> to
> >>>>> deploy (on docker, or whatever). The artifact is actually a custom
> >>>>> karaf
> >>>>> distribution.
> >>>>>
> >>>>> I hope it's clearer. Again, it's just an idea, but IMHO, it will
> give a
> >>>>> new dimension to Karaf: it will turn Karaf as a modern polymorphic
> >>>>> container.
> >>>>> The users can still use Karaf "standalone" where they do the
> >>>>> provisioning,
> >>>>> or they can use Karaf "boot" as basis for key turn application
> >>>>> container.
> >>>>>
> >>>>> Regards
> >>>>> JB
> >>>>>
> >>>>> On 04/27/2015 07:57 PM, Guillaume Nodet wrote:
> >>>>>
> >>>>>   2015-04-27 16:03 GMT+02:00 Jean-Baptiste Onofré <jb@nanthrax.net>:
> >>>>>
> >>>>>>
> >>>>>>    Hi all,
> >>>>>>
> >>>>>>
> >>>>>>> On a local branch, I worked on some new goals for the
> >>>>>>> karaf-maven-plugin,
> >>>>>>> especially:
> >>>>>>>
> >>>>>>> karaf:run to easily bootstrap and start a Karaf instance
> >>>>>>>
> >>>>>>>
> >>>>>>>   +1
> >>>>>>>
> >>>>>>
> >>>>>>
> >>>>>>    karaf:deploy to upload (scp) the project artifact (or a given
> >>>>>> artifact)
> >>>>>>
> >>>>>>  in
> >>>>>>> the deploy folder or the system folder (respecting the maven
> >>>>>>> structure)
> >>>>>>>
> >>>>>>>
> >>>>>>>   +1 we could also add sftp and http/https upload, with
the help of
> >>>>>>> the
> >>>>>>>
> >>>>>> maven
> >>>>>> http servlet i've added in 4.x
> >>>>>>
> >>>>>>
> >>>>>>    karaf:client to connect to a running Karaf instance and execute
> >>>>>> commands
> >>>>>>
> >>>>>>
> >>>>>>>
> >>>>>>>   +1, i suppose we'd need interactive and scripted, like
the
> >>>>>>> bin/client
> >>>>>>>
> >>>>>> script, right ?
> >>>>>>
> >>>>>>
> >>>>>>   I would like to add a new plugin (more than a new goal):
> >>>>>>
> >>>>>>>
> >>>>>>> karaf-boot-maven-plugin
> >>>>>>>
> >>>>>>> with the boot goal.
> >>>>>>>
> >>>>>>> The purpose is easily:
> >>>>>>> 1/ in the end user code module, build a karaf custom distribution
> >>>>>>> including karaf standard distribution and the end user built
> >>>>>>> application
> >>>>>>> 2/ be able to easily include test with pax-exam
> >>>>>>> 3/ provide a ready to run artifact
> >>>>>>> 4/ provide a way to specify profiles or features to include
in the
> >>>>>>> distribution
> >>>>>>>
> >>>>>>> It's just an idea for now. The purpose is to provide a ready
to run
> >>>>>>> Karaf
> >>>>>>> container like users does with spring-boot.
> >>>>>>>
> >>>>>>>
> >>>>>>>   So it would create the distribution, same as the install-kars
/
> >>>>>>>
> >>>>>> assembly
> >>>>>> goal, then use the karaf:run goal ?
> >>>>>> The only step than the assembly / run / archive goals can't
do is
> the
> >>>>>> tests, but I'm not completely sure to understand this part...
> >>>>>> It looks more like an archetype than a plugin to me ? Or do
I miss
> >>>>>> something ?
> >>>>>>
> >>>>>>
> >>>>>>   Thoughts ?
> >>>>>>
> >>>>>>>
> >>>>>>> Regards
> >>>>>>> JB
> >>>>>>> --
> >>>>>>> Jean-Baptiste Onofré
> >>>>>>> jbonofre@apache.org
> >>>>>>> http://blog.nanthrax.net
> >>>>>>> Talend - http://www.talend.com
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>    --
> >>>>>>
> >>>>> Jean-Baptiste Onofré
> >>>>> jbonofre@apache.org
> >>>>> http://blog.nanthrax.net
> >>>>> Talend - http://www.talend.com
> >>>>>
> >>>>>
> >>>>>
> >>>>  --
> >>> Jean-Baptiste Onofré
> >>> jbonofre@apache.org
> >>> http://blog.nanthrax.net
> >>> Talend - http://www.talend.com
> >>>
> >>>
> >>
> > --
> > Jean-Baptiste Onofré
> > jbonofre@apache.org
> > http://blog.nanthrax.net
> > Talend - http://www.talend.com
> >
>
>
>
> --
> http://about.me/milen
>



-- 

Apache Member
Apache Karaf <http://karaf.apache.org/> Committer & PMC
OPS4J Pax Web <http://wiki.ops4j.org/display/paxweb/Pax+Web/> Committer &
Project Lead
blog <http://notizblog.nierbeck.de/>
Co-Author of Apache Karaf Cookbook <http://bit.ly/1ps9rkS>

Software Architect / Project Manager / Scrum Master

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message