kpavel opened a new pull request #3886: Proposing Lean OpenWhisk
URL: https://github.com/apache/incubator-openwhisk/pull/3886
 
 
   The proposition is to get rid of Kafka, have controller and invoker compiled 
together into a "lean" controller-invoker (have a Gradle project for that) with 
controller calling the invoker's method directly via an in-memory object (a 
queue, which is also loaded via SPI) via a new pluggable load balancer that is 
selected via SPI using configuration file property setting. For more 
information here is a 
[blog](https://medium.com/@davidbr_9022/lean-openwhisk-open-source-faas-for-edge-computing-fb823c6bbb9b)
   As well, briefly discussed it in this 
[thread](https://lists.apache.org/thread.html/516efc0ed9afb09fe52e30d10eb9fe5091af91df53a46c07e1701122@%3Cdev.openwhisk.apache.org%3E)
   
   ## Description
   The goal is to avoid changes in the core components as much as possible. 
Rather this PR adds a few components. The main additions are as follows:
   - LeanBalancer SPI: provides LoadBalancer to communicate with Invoker 
directly without Kafka in the middle (Invoker does not exist as a separate 
entity; it is built together with Controller)
   - LeanMessagingProvider SPI: provides Producer/Consumer implementers to 
communicate via in-memory queue instead of Kafka.
   - Ansible deployment: added controller-lean.yml and other files required for 
the Ansible deployment. Since lean controller is a combination of the 
controller + invoker projects, its ansible deploy.yml requires most of the 
values from both. Currently this problem is resolved by partially replicating 
variables from the regular invoker's deploy.yml to the tasks/invoker-lean.yml. 
Probably it would be better to avoid this duplication by having everything we 
need for lean in the regular deploy.yml. 
   - Dockerfile: to build Lean controller docker image, which is a merge of the 
regular invoker + controller Dockerfile
   - Vagrantfile: a small change to make Lean available using environment 
variable
   
   ## My changes affect the following components
   - [ ] API
   - [x] Controller
   - [ ] Message Bus (e.g., Kafka)
   - [x] Loadbalancer
   - [x] Invoker
   - [ ] Intrinsic actions (e.g., sequences, conductors)
   - [ ] Data stores (e.g., CouchDB)
   - [ ] Tests
   - [x] Deployment
   - [ ] CLI
   - [ ] General tooling
   - [x] Documentation
   
   ## Types of changes
   - [ ] Bug fix (generally a non-breaking change which closes an issue).
   - [x] Enhancement or new feature (adds new functionality).
   - [ ] Breaking change (a bug fix or enhancement which changes existing 
behavior).
   
   ## Checklist:
   
   - [x] I signed an [Apache 
CLA](https://github.com/apache/incubator-openwhisk/blob/master/CONTRIBUTING.md).
 
   - [x] I reviewed the [style 
guides](https://github.com/apache/incubator-openwhisk/wiki/Contributing:-Git-guidelines#code-readiness)
 and followed the recommendations (Travis CI will check :).
   - [ ] I added tests to cover my changes.
   - [x] My changes require further changes to the documentation.
   - [x] I updated the documentation where necessary.
   

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to