O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

OpenWhisk Go Runtime

647 visualizações

Publicada em

The new high performing runtime for Go and Binary actions

Publicada em: Internet
  • Entre para ver os comentários

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