{"id":1082,"date":"2019-12-06T09:05:15","date_gmt":"2019-12-06T08:05:15","guid":{"rendered":"http:\/\/blog.zhaw.ch\/splab\/?p=1082"},"modified":"2019-12-06T09:33:51","modified_gmt":"2019-12-06T08:33:51","slug":"lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers","status":"publish","type":"post","link":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/","title":{"rendered":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers"},"content":{"rendered":"\n<p>For rapid development, deployment and testing of applications based on many cloud functions, code transformation tools are on the rise. With a process called &#8220;FaaSification&#8221;, they turn code into cloud functions by following annotations or decorators specified for developers. <a href=\"https:\/\/github.com\/serviceprototypinglab\/termite\">Termite<\/a> for Java, <a href=\"https:\/\/github.com\/leonardoreboucas\/node2faas\">Node2FaaS<\/a> for JavaScript, and <a href=\"https:\/\/github.com\/serviceprototypinglab\/lambada\">Lambada<\/a> for Python are representative examples of this new class of tools, related also to other overlay tools such as <a href=\"http:\/\/pywren.io\/\">PyWren<\/a>. This blog post summarises the recently added software features for Lambada.<\/p>\n\n\n\n<!--more-->\n\n\n\n<p>Most of the tools to generate FaaS-ready code, either statically at the source code file level or dynamically at runtime, support exactly one FaaS provider. While <a href=\"https:\/\/github.com\/walter-bd\/faas-converter\">some tools<\/a> exist to convert cloud function code and thus bridge between heterogeneous syntax conventions, they do not handle the gap between API access and other differences between the FaaS providers (with <a href=\"https:\/\/serverless.com\/\">some exceptions<\/a>). For the convenience of the developer, having a single FaaSification tool (per language if necessary) to address all FaaS services, including their syntax, API, behaviour and limits differences, would be welcome.<\/p>\n\n\n\n<p>We have therefore extended Lambada with multi-FaaS provider support beyond the original Lambda support. By specifying the <code>--provider<\/code> flag upon invocation, the syntax and API\/command-line tools conventions are adjusted accordingly.<\/p>\n\n\n\n<p>With the added support in terms of syntax transformation and API integration, the following FaaS providers and engines are now supported by Lambada.<\/p>\n\n\n\n<ul class=\"wp-block-list\"><li><a href=\"https:\/\/aws.amazon.com\/lambda\/\">AWS Lambda<\/a><\/li><li><a href=\"https:\/\/www.ibm.com\/cloud\/functions\">IBM Cloud Functions<\/a><\/li><li><a href=\"https:\/\/cloud.google.com\/functions\/\">Google Cloud Functions<\/a><\/li><li><a href=\"http:\/\/openwhisk.apache.org\/\">OpenWhisk<\/a> standalone<\/li><li><a href=\"https:\/\/fission.io\/\">Fission<\/a> on top of Kubernetes deployments<\/li><\/ul>\n\n\n\n<p>Apart from the functional multi-FaaS additions, the code has been refactored to allow for easier integration of additional providers. To add support for Ali Functions or Oracle Functions or any similar services, a much reduce effort will be required. Along with the ability to specify custom endpoints (<code>--endpoint<\/code>) or purely local transformations without involving FaaS (<code>--local<\/code>), Lambada can be used flexibly to build up cloud applications in which a single function or small set of functions needs to be offloaded into in a highly-scalable environment to perform its work. Hence, following the idea of serverless computing, service application developers are less exposed to infrastructure details.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/serviceprototypinglab\/lambada\">Check out Lambada<\/a> from Git!<\/p>\n<div class=\"pt-sm\">Schlagw\u00f6rter: <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/faas\/\">faas<\/a>, <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/faasification\/\">faasification<\/a>, <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/multi-cloud\/\">multi-cloud<\/a>, <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/python\/\">python<\/a>, <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/serverless\/\">serverless<\/a>, <a href=\"http:\/\/blog.zhaw.ch\/splab\/tag\/tool\/\">tool<\/a><br><\/div>","protected":false},"excerpt":{"rendered":"<p>For rapid development, deployment and testing of applications based on many cloud functions, code transformation tools are on the rise. With a process called &#8220;FaaSification&#8221;, they turn code into cloud functions by following annotations or decorators specified for developers. Termite for Java, Node2FaaS for JavaScript, and Lambada for Python are representative examples of this new [&hellip;]<\/p>\n","protected":false},"author":497,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[7,120,28,121,8,109],"features":[],"class_list":["post-1082","post","type-post","status-publish","format-standard","hentry","category-research","tag-faas","tag-faasification","tag-multi-cloud","tag-python","tag-serverless","tag-tool"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.2 (Yoast SEO v27.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Lambada update: Transforming Python code into cloud functions for multiple FaaS providers - Service Prototyping Lab<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers\" \/>\n<meta property=\"og:description\" content=\"For rapid development, deployment and testing of applications based on many cloud functions, code transformation tools are on the rise. With a process called &#8220;FaaSification&#8221;, they turn code into cloud functions by following annotations or decorators specified for developers. Termite for Java, Node2FaaS for JavaScript, and Lambada for Python are representative examples of this new [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\" \/>\n<meta property=\"og:site_name\" content=\"Service Prototyping Lab\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-06T08:05:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-12-06T08:33:51+00:00\" \/>\n<meta name=\"author\" content=\"boru\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"boru\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\"},\"author\":{\"name\":\"boru\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5\"},\"headline\":\"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers\",\"datePublished\":\"2019-12-06T08:05:15+00:00\",\"dateModified\":\"2019-12-06T08:33:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\"},\"wordCount\":359,\"commentCount\":0,\"keywords\":[\"faas\",\"faasification\",\"multi-cloud\",\"python\",\"serverless\",\"tool\"],\"articleSection\":[\"Research\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\",\"url\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\",\"name\":\"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers - Service Prototyping Lab\",\"isPartOf\":{\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/#website\"},\"datePublished\":\"2019-12-06T08:05:15+00:00\",\"dateModified\":\"2019-12-06T08:33:51+00:00\",\"author\":{\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5\"},\"breadcrumb\":{\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/blog.zhaw.ch\/splab\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/#website\",\"url\":\"https:\/\/blog.zhaw.ch\/splab\/\",\"name\":\"Service Prototyping Lab\",\"description\":\"A Blog of the ZHAW Zurich University of Applied Sciences\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/blog.zhaw.ch\/splab\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5\",\"name\":\"boru\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g\",\"caption\":\"boru\"},\"url\":\"https:\/\/blog.zhaw.ch\/splab\/author\/boru\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers - Service Prototyping Lab","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/","og_locale":"en_GB","og_type":"article","og_title":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers","og_description":"For rapid development, deployment and testing of applications based on many cloud functions, code transformation tools are on the rise. With a process called &#8220;FaaSification&#8221;, they turn code into cloud functions by following annotations or decorators specified for developers. Termite for Java, Node2FaaS for JavaScript, and Lambada for Python are representative examples of this new [&hellip;]","og_url":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/","og_site_name":"Service Prototyping Lab","article_published_time":"2019-12-06T08:05:15+00:00","article_modified_time":"2019-12-06T08:33:51+00:00","author":"boru","twitter_card":"summary_large_image","twitter_misc":{"Written by":"boru","Estimated reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#article","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/"},"author":{"name":"boru","@id":"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5"},"headline":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers","datePublished":"2019-12-06T08:05:15+00:00","dateModified":"2019-12-06T08:33:51+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/"},"wordCount":359,"commentCount":0,"keywords":["faas","faasification","multi-cloud","python","serverless","tool"],"articleSection":["Research"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/","url":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/","name":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers - Service Prototyping Lab","isPartOf":{"@id":"https:\/\/blog.zhaw.ch\/splab\/#website"},"datePublished":"2019-12-06T08:05:15+00:00","dateModified":"2019-12-06T08:33:51+00:00","author":{"@id":"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5"},"breadcrumb":{"@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/blog.zhaw.ch\/splab\/2019\/12\/06\/lambada-update-transforming-python-code-into-cloud-functions-for-multiple-faas-providers\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/blog.zhaw.ch\/splab\/"},{"@type":"ListItem","position":2,"name":"Lambada update: Transforming Python code into cloud functions for multiple FaaS providers"}]},{"@type":"WebSite","@id":"https:\/\/blog.zhaw.ch\/splab\/#website","url":"https:\/\/blog.zhaw.ch\/splab\/","name":"Service Prototyping Lab","description":"A Blog of the ZHAW Zurich University of Applied Sciences","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.zhaw.ch\/splab\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":"Person","@id":"https:\/\/blog.zhaw.ch\/splab\/#\/schema\/person\/d8bb83e9bb2a61d61fbe34ccffd3cad5","name":"boru","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e828fcec41f1cf1b96559a66bf5c987fe4a6fca8368dea825be4f46aa6995b50?s=96&d=mm&r=g","caption":"boru"},"url":"https:\/\/blog.zhaw.ch\/splab\/author\/boru\/"}]}},"_links":{"self":[{"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/posts\/1082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/users\/497"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/comments?post=1082"}],"version-history":[{"count":5,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/posts\/1082\/revisions"}],"predecessor-version":[{"id":1108,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/posts\/1082\/revisions\/1108"}],"wp:attachment":[{"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/media?parent=1082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/categories?post=1082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/tags?post=1082"},{"taxonomy":"features","embeddable":true,"href":"https:\/\/blog.zhaw.ch\/splab\/wp-json\/wp\/v2\/features?post=1082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}