I highly support the idea to start experimenting to help us make more informed decisions vs basing decisions on assumptions.
Should we also agree on a performance goal (aside from the other goals you called out ) ? I'm thinking at setting a performance goal i.e. run X/requests per second on a machine ? WDYT ? On Thu, Aug 23, 2018 at 4:19 PM Markus Thömmes <markusthoem...@apache.org> wrote: > Hi OpenWhiskers, > > We've been discussing a new direction for our architecture based on a > proposal I made here: > > https://cwiki.apache.org/confluence/display/OPENWHISK/OpenWhisk+future+architecture > > Discussion threads: > - > > https://lists.apache.org/thread.html/29289006d190b2c68451f7625c13bb8020cc8e9928db66f1b0def18e@%3Cdev.openwhisk.apache.org%3E > - > > https://lists.apache.org/thread.html/02986151fb2cffb7426c0d3b207c35923bc49bf164a967d310b3bbb6@%3Cdev.openwhisk.apache.org%3E > - > > https://lists.apache.org/thread.html/efec3d588e3519ce72b44f2d5ae00cabf1f6a33afaa2f08194290553@%3Cdev.openwhisk.apache.org%3E > > This discussion has been veeery fruitful and I enjoyed i'm enjoying it a > lot! Thanks so far to anybody who continues to contribute here! > > I think we are reaching a point where we start assuming a lot of things. > I'll attempt to diagram out my current view of things and maybe we can > already agree on some key parts of the current design as-is? Things I have > in mind that we need: > > 1. ContainerRouter: I think there's little debate around us needing an > efficient router, preferably with an API, that we can add/remove containers > from. > 2. ContainerManager: In terms of it being the interface creating containers > seems pretty accepted as well, from what I read in the discussions. > 3. A work-stealing backend: A backend (hopefully a pre-canned MQ) that > allows us to do action-specific pulling and signaling of demand through > that pulling. This one I think is more subject to a debate than the other > two. > > We should also lay out some of the basic gains we want to have from that > new system, i.e.: > 1. Makes streaming payloads possible. > 2. Has very high warm-ratios. > 3. Doesn't create (many) more containers than needed. > > (These are examples, others will feel different) > > 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? > > Cheers, > Markus >