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.
In the final days of October, the Service Prototyping Lab at Zurich University of Applied Sciences (ZHAW) hosted two doctoral candidates who take part in the structured doctoral programme Information Technology and Systems at Universidade Eduardo Mondlane (UEM) in Maputo, the capital of Mozambique. The candidates Martina Barros and Ambrósio Vumo arrived from Germany, as they spent a significant part of their research time at Technische Universität Dresden (TUD) as part of the DAAD-funded joint programme Welcome to Africa. The realisation of this programme also involves the Service Prototyping Lab as competence centre for research and innovation on cloud applications and new services for digital economies. This article describes how innovation transfer was conducted during the stay.
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.
One of the desirable properties which users expect in a modern cloud-hosted application is portability. Users want to migrate portable applications between private and public clouds or between different cloud regions. With container images as portable application implementations and emerging sophisticated container runtimes, this should be an easy task. But when a containerised application starts to become more complex, a container platform or an orchestration tool needs to be deployed. This add specifics blueprints and together with the persistent data makes the migration of the application tough. This means that the application is not in a condition to be moved as easily between clouds or even between the orchestration tools or container platforms, losing the desirable portability property. With the idea in mind that the next generation of Cloud-Native Applications must be deployable to different cloud providers as the requirements change, we are proud to announce the first proof of concept release of os2os, a tool to migrate cloud-native applications between OpenShift installations. While our research on application migration is not limited to this single container platform, we see it as one of the more popular and technically interesting ones.
The Itaipu Technology Park (PTI) in Paraguay, founded in 2009, is involved with scientific and technological development which contributes positively to regional development. Several of its centres with a total number of 90 engineers and researchers put emphasis on ICT integration and the challenges connected with it. Among them are diverse plans to use cloud applications. In this context, the Service Prototyping Lab of Zurich University of Applied Sciences (SPLab) in Switzerland is conducting a two-week guest lecturing and research exchange presenting its research initiatives and outputs on the PTI premises in close proximity to Ciudad del Este.
PyParis is a community-organised conference on all topics around the Python programming language. The expected target group are primarily practitioners and researchers in the greater capital region of France, but also international engineers and language advocates. At Zurich University of Applied Sciences, Python is taught as automation and statistics application language to more than 200 business engineering, aviation and traffic engineering undergraduates per year. It is furthermore used a lot in research, including several prototypes resulting from the Service Prototyping Lab. Therefore, it was consequential for us to attend the conference and to contribute an in-depth tutorial on one of our research topics, Function-as-a-Service, to its attendees.
Applications are increasingly delivered for cloud deployment as set of composite artefacts such as containers. The composition descriptions vary widely: There are Docker compose files, Vamp blueprints, Kubernetes descriptors, OpenShift service instance templates, and more. Ideally, taking these compositions and deploying them somewhere would always work. In practice, it is more complex than that. Commercial production environments are often constrained depending on the chosen pricing plan. Many applications would still run but due to over-estimating deployment information do not “fit” into the target environment. In this blog post, we look at how to “right-size” an application deployed into such a constrained Kubernetes instance, and furthermore propose a tool to automate this process.
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.
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.