Thanks Michael for raising these points. I share the same opinion and
sentiment and think a branch with a clean migration story is better and
makes more sense. I am not entirely convinced that the choice of language
itself will make the difference vs the new architecture which is quite
different and should in itself be more efficient.

-r

On Tue, Aug 28, 2018 at 4:51 PM Michael Marth <mma...@adobe.com.invalid>
wrote:

> Hi Markus,
>
> IMHO what you propose below is a rather severe change in scope of this
> discussion and effort.
> Up until so far this was about _evolving_ the OW architecture. We have not
> explicitly discussed it, but one could assume that it is at least feasible
> to gradually adopt the new architecture. So there would be a smooth path
> between the current state of the code base and a future one.
>
> Your proposal below breaks this assumption somewhat (by proposing a new
> repo instead of a branch - which will inevitably make the 2 code bases
> drift apart) as well as explicitly by suggesting a new implementation
> language. Especially the latter would create a schism between OW-now and
> OW-future.
> This schism has implications like the perception of OW-now being
> deprecated, the _possibility_ of no clean upgrade path, the immediate split
> of the community between *-now and *-future and of course carries the risk
> of the version 2 syndrome.
>
> I would propose to implement the future architecture in a branch and in
> Scala first. If it turns out to be good, then subsequent experiments can
> show or not-show if a switch of language is of additional value. That would
> allow to make a decision based on data rather than anything else.
>
> My2c
> Michael
>
>
> On 28.08.18, 14:26, "Markus Thömmes" <markusthoem...@apache.org> wrote:
>
>     Hi all,
>
>     Am Mo., 27. Aug. 2018 um 20:04 Uhr schrieb David P Grove <
> gro...@us.ibm.com
>     >:
>
>     >
>     >
>     >
>     > "Markus Thömmes" <markusthoem...@apache.org> wrote on 08/23/2018
> 04:19:33
>     > PM:
>     >
>     > >
>     > > Key point I want to make is: At some point we'll have to start to
>     > prototype
>     > > things out and see if our assumptions actually hold water. For
> example,
>     > my
>     > > assumption on a work-stealing backend is pretty much in the air.
>     > >
>     > > My proposal for going forward would be:
>     > > 1. Create a playground for the implementation of some parts of the
> system
>     > > (a new repository?)
>     > > 2. Let's build some of the things that are uncontroversial and
> absolutely
>     > > needed in any case (ContainerRouter, ContainerManager).
>     > > 3. Play around with them, hook them up in different ways, see what
> works
>     > > and what doesn't.
>     > >
>     > > Some things will need some testing out to see the scale that the
>     > components
>     > > can operate at. These things will narrow or widen the solution
> space for
>     > > the more controversial topics around how to distribute containers
> in the
>     > > system, how to balance between the routers, work-stealing queue:
> yes/no
>     > etc.
>     > >
>     > > Having some simple components fleshed out could encourage
> innovation and
>     > > creates some facts that we need to focus things into a good
> direction.
>     > >
>     > > What do you think? Too early to start with this and/or the wrong
> way of
>     > > doing it?
>     > >
>     >
>     > +1 for starting to prototype.  It's been a good discussion and I
> think
>     > we've identified some things that we know we don't know, so time to
>     > experiment and find out.
>     >
>     >
>     > Not sure what the best logistics are for this.  Would like the work
> to be
>     > at Apache (community visibility).  I'm not sure if the best way is a
> new
>     > repo or an experimental branch of the main repo (we could dial down
> the
>     > level of testing on the branch to make it less cumbersome?).  The
> branch is
>     > attractive to me because it might make it easier to keep in synch
> with the
>     > components we aren't changing.
>     >
>
>     I actually think we should generate a new repository for this. Opening
> PRs
>     etc. will then not clutter the "main" repository and we don't need to
> worry
>     about breaking anything.
>
>     If nobody objects I'm going to get "incubator-openwhisk-protoype"
> generated
>     and will create a rough outline in the repository (different folders
> for
>     different parts of the system).
>
>     One more basic question (and this is going to be controversial): Most
> of
>     the componentry in the execution layer will have to be build anew. I'd
> like
>     to switch the implementation language of at least the ContainerRouter
> to
>     Golang. Why? Because scale/performance matters a lot for them. As Dave
>     mentioned on multiple occasions, it will greatly matter how many
> containers
>     such a Router can handle under load and that scale will define the
>     implementation alternatives we will have at hand. I therefore would
> like to
>     optimise these Routers for minimal overhead. We could go even lower
> level,
>     but I guess that'd be at a kinda big maintenance cost.
>
>     I can envision the ContainerManager to be simpler to implement in
> Golang as
>     well, at least for some of the deployment alternatives (Kubernetes
> comes to
>     mind). The Golang based clients seemed superior to me vs. clients in
> any
>     other language.
>
>     As all of the communication will probably be HTTP only anyway, these
>     implementations should be swappable anytime.
>
>     Comments very welcome! Let me know your opinions.
>
>     Cheers,
>     Markus
>
>
>

Reply via email to