Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

OpenWhisk Go Runtime

0 views

Published on

The new high performing runtime for Go and Binary actions

Published in: Internet
  • Be the first to comment

  • Be the first to like this

OpenWhisk Go Runtime

  1. 1. Apache OpenWhisk Go Runtime (and some correlated stuff) Michele Sciabarrà michele@sciabarra.com
  2. 2. • Using Go for Serverless app on AWS Lambda • Looking for a Good Serverless on Kubernetes – OpenWhisk of course • "Open Source" Enthusiast – The Guardian: "Lambda and Serverless is one of the worst form of proprietary lock-in we've ever seen in the history of humanity" • "Help Wanted" for Go Actions on GitHub issues – So let's do it!
  3. 3. But Why Go? • Just. One. Word. • learning • development • execution • deployment • debugging
  4. 4. Current Status of Go Support in OpenWhisk • Currently based on DockerSkeleton – In short: • Upload an executable • A python "proxy" will receive the request • A "system" call will invoke the executable • Output is collected and sent back It sounds vaguely familiarial... ...I have heard of this, but when....?
  5. 5. Hmm, how can we improve it? • Step 1: the executable with do it, all replacing entirely the proxy • Issues: – "fragile" – "a race condition" when you do the replacement – not reusable with other binaries • Step 2 - keep the proxy in Go (or rust or whatever) • - use an executable that -loops on stdin line by line • - produce output on stdout • log on stderr – IN SHORT, it is an Unix command 
  6. 6. The new Design
  7. 7. Work Done So far https://github.com/sciabarracom/openwhisk-runtime-go • Implemented the GO Server with replacement – exec-replacement branch • Refactored to a piped loop implementation – pipe-looop branch • Tested the pipe-loop with a Swift executable – wrote an HelloWorld Swift example reading in input and writing in output • Simple Docker images
  8. 8. ...is it actually faster? let's measure it! Test: 100 threads executing 100 actions executed on OSX using Docker for Mac (executables compiled for linux-amd64) Go performances against DockerSkeleton Swift performances against DockerSkeleton ...apparently yes!
  9. 9. Work in Progress • Short term – Manage properly errors of misbehaving actions – A robust replacement for DockerSkeleton – Running the test suite against the new runtime – Changes to the cli – A change to the client library – Hand-over to Apache • Medium term – Use it for swift actions – Use it for docker skeleton

×