Portable Cloud Functions for Future-Proof Software Applications

Ever since the inception of cloud computing as a widespread phenomenon over a decade ago, the issue of API and data structure variety across providers has become a major hurdle to multi-cloud applications. Even in the most recent services such as Function-as-a-Service (FaaS) offerings to build so-called serverless applications, the issue repeats itself with each provider pushing for their own management interfaces and accepted function definitions.

Yessica Bogado and Walter Benítez from Itaipu Technology Park, currently visiting the Service Prototyping Lab at Zurich University of Applied Sciences, are among the active researchers who tackle such practical problems from the perspective of engineering software applications based on microservices. In the park’s distributed systems and parallel computing research team led by Fabio López Pires, they are witnessing first hand the increasing issues of local software and service providers to keep up with cloud trends. Appropriate tooling can therefore help to alleviate the issues. This blog post describes one such tool, the FaaS converter, which has emerged from their applied research. Continue reading

SPLab Colloquium on Serverless Scientific Computing

Maciej Malawski from AGH University of Science and Technology in Kraków, Poland, visited us today to give a colloquium talk titled «Can we use Serverless Architectures and Highly-elastic Cloud Infrastructures for Scientific Computing?» and to discuss research around the wider topics of workflows and cloud function compositions. This post summarises the talk and the subsequent discussion mixed with further general reflections on the state of serverless applications.

Continue reading

Extending Web Applications with Cloud Functions

The discourse on cloud functions focuses heavily on diverse use cases: Standalone functions to perform a certain functionality, compositions of functions into complete applications, and functions as plumbing between separate application parts. This blog post intends to explore the use of cloud functions as extensibility mechanism for existing applications. It exemplifies the interaction between a function, a website and a login-protected web application and furthermore discusses implementation aspects and the notion of caching data in function instances.

Continue reading

Probabilistically Stateful Serverless Web Applications

Among the lectures offered by the Service Prototyping Lab is Scripting. Aimed at students of advanced studies, it teaches essential practical programming skills and conveys approaches how to automate the exploration of data retrieved from the Internet. Python is taught as programming languages and consequently a Python (Django) web application has thus far been used to automatically score the results submitted by students of a particular advanced task towards the end of the lecture. There’s nothing wrong with Django per se, but its roots have evidently been in the era of monolithic web applications. Armored with our Function-as-a-Service experience we decided to drop it and go purely serverless. In production.

Continue reading

Termite. A Java library for the selective “Lambdafication” of applications.

Introducing selective Lambdafication

“Lambdafication” is the automated transformation of source code to make it run on AWS Lambda. It is a provider-specific flavour of generic “FaaSification” which is our ultimate research goal. With our Lambdafication tooling, we offer application engineers today the possibility to step into the serverless world without much effort, and leave the more challenging research tasks for the summer time.

Continue reading

Research Directions for FaaS

FaaS, or Function-as-a-Service, is a considerable application engineering trend under observation by the Service Tooling research initiative of the Service Prototyping Lab at Zurich University of Applied Sciences. Yesterday, the lab’s semi-regular open-for-all evening seminar series, Future Cloud Applications, centered around tools for managing the growing FaaS ecosystem. While the open source tools prototypically produced through the initiative are primarily of interest to Swiss software application engineers and cloud providers, the research challenges continuously uncovered by the work are more fundamental and encompass some harder nuts to crack in dedicated research projects. This blog reflects on what has been achieved already and what needs to be accomplished in the next years.

Continue reading

Running Google Cloud Functions in OpenShift

Have you created a highly popular and frequently used JavaScript (Node.js) functions for execution in Google Cloud Functions? In this case, the economics of FaaS turn against you due to the per-invocation pricing. You might want to have more options for both testing the same function locally and for deploying it into an environment with fixed monthly pricing. This blog post explains step-by-step how to migrate functions from FaaS environments into a fixed per-month pricing container environment. The running example will be Node.js functions running in Google Cloud Functions albeit the procedure is similarly applicable to other combinations.

Continue reading

Snafu – The Swiss Army Knife of Serverless Computing

The Service Prototyping Lab at Zurich University of Applied Sciences is committed to advancing the state of technology for bringing applications to the cloud, for the benefit of the society of large in general and of the local industry in particular. This obliges us to closely monitor industrial trends along with academic advances. A hot topic currently found in both is the higher-PaaS-level service class of FaaS, or Function-as-a-Service, which coincides with the marketing term Serverless Computing. We have already contributed analytical work on finding the limits and possibilities of today’s FaaS systems (preprint), and engineering work on translating legacy monolithic code into fine-grained functions (preprint). It was only a matter of time until the limits in both commercially operated FaaS services and open-source FaaS prototypes became too severe for our work. Hence, after a careful analysis of what is available, we decided to come up with an alternative FaaS host process design. The design led to an architecture, and the architecture eventually to an implementation called Snafu. This post presents Snafu and positions it as Swiss Army Knife for situations in which functions should be prototyped, tested or hosted.

Continue reading

Introducing Podilizer: Automated Java code translator for AWS Lambda

Overview

Function-as-a-Service (FaaS) is a relatively novel approach to run fine-grained code on the cloud. Almost all major cloud providers have opened such services in recent months. The approach still needs to be investigated in terms of evaluation, use-cases, performance and programmability. The first step of research was to overview the FaaS providers and to estimate their features and technical characteristics. The results were described in our previous blog-post. The FaaS paradigm allows one to write light-weight hosted functions targeted on a certain task and upload them to the cloud, or even author them online in Azure and Bluemix, for instance. But what if the user already has an existing application and would like to move it to a FaaS platform, or in marketing terms, to a “serverless” architecture. The Podilizer tool aims to perform an automated translation of existing Java code into uploadable functions and to deploy them to cloud in one go. This tool is related to research on the degree of automation and flexibility in terms of switching service technologies without development effort.

Continue reading

FaaS: Function hosting services and their technical characteristics

What is FaaS?

Cloud computing has become an essential paradigm of a majority of modern applications. The service model which represents cloud ecosystems is known as Everything-as-a-Service, or XaaS, with IaaS, PaaS and SaaS being among the most well-known representatives. All of them use similar client-server communication patterns (i.e. remote APIs for programmable infrastructure, platforms and applications) and they are similar in requiring the developer to understand the service functionality and characteristics.

Continue reading