Tag: tooling (page 2 of 2)

Snafu – The Swiss Army Knife of Serverless Computing

by Josef Spillner

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

by Josef Spillner

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

by Josef Spillner

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

Walk-through: Importing virtual machine images into EC2

by Josef Spillner

The Elastic Compute Cloud (EC2) offered by AWS as public commercial service has been one of the first and probably the seminal service for the research on cloud applications and infrastructure. From an application perspective, hosting in EC2 means wrapping the application into one of the provided virtual machine (VM) images and instantiating it in sufficient numbers (e.g. with autoscaling). Ultimately, for custom applications, it also possible to import custom VM images. This involves creating the machine image, testing it on a local hypervisor (KVM, Xen, VirtualBox, …) or in a local cloud stack (OpenStack, CloudStack, OpenNebula, …), then copying the image into the Simple Storage Service (S3) (in a reliable manner), initiating the import process, and waiting for the VM image called Amazon Machine Image (AMI) to become available. This import process is not well-documented and regularly causes high effort with application providers. Hence, this blog post offers a detailed walk-through and points out common pitfalls.

Continue reading

Making Tools Robust and Breaking Robust Tools

by Josef Spillner

Cloud services are meant to be elastically scalable and robust against all kinds of failures. The core services are very mature nowadays, but the tools which glue them together are often in need of quality improvements. Two common risks in networked environments are (1) unavailability and (2) slowness of services. The first risk is easier to detect but more severe in its effects. Furthermore, there is a dependency between the two as timeouts in many layers of the software cause unavailability failures upon strong slowdown. Timeouts should be avoided but are often part of protocols, libraries, framework and stacks with almost arbitrary combinations, so that in practice, failures happen more often than necessary. This post shows how research initiatives in the Service Prototyping Lab work on improving the situation to make cloud services access more robust and easier to handle for application developers.

Continue reading

Newer posts »