In an increasingly self-aware and knowledge-driven software world, understanding the execution behaviour of an application is mandatory for cost-effective delivery. This applies especially to cloud functions, because many complex applications are composed of those functions. Similar short-lived, event-driven processing models can be found inside databases and message brokers. This means systematic tracing of cloud functions should be conducted so that a large variety of applications benefits from rightsizing memory allocation and associated fair microbilling.
We recently reported on our upcoming presentation on generating static trace profiles for cloud functions. In general, tracing techniques help reporting with high precision how much memory an application requires. But in practice, the memory needs depend on a number of factors that change over time. Similar to how static environment variables have been replaced by dynamic queries to updateable key-value stores to increase dynamics, we should be able to produce dynamic traces that show at least a correlation to certain values within the function, like the number of rows in a table. This research blog post shows one approach to do that.
Software engineers are interested in novel ways to convert their applications into formats that can run «serverless» on Function-as-a-Service. Many issues have to be considered – partitioning of the application functionality, short-livedness and memory constraints of functions, easy but limited language runtimes or rather difficult container wrappers around microservices. Our virtual guest researcher Leonardo Rebouças de Carvalho, from University of Brasília in Brazil, has recognised the issue and launched a community website faasification.com that contains a lot of tools, methodologies, articles, research insights and events related to shifting software into the world of FaaS. Bookmark that site if you are developing serverless software!
For several years, we have conducted research on the design, implementation and evaluation of microservice-based applications, as well as on the assessment of characteristics of the constituent software artefacts. Yet we were so far not present in the first two editions of the International Conference on Microservices. Needless to say, we are now correcting this for the third edition of the conference with a talk on Syn.
In the context of our «Smart Cities and Regions Services Enablement» efforts, space (and to some extent time) are important dimensions. First, the digital transformation has an inherent spatial component. While the research application field is pragmatically scoped to cities and regions, indeed it spans a wider spectrum from households, quarters, districts to countries and even supranational entities. The recent wave of «surface digitalisation» has primarily affected mobile citizens (pandemic apps) and workers (video conferencing in home offices) around the world. This increased the surface over the previous one that for most citizens encompassed e-banking, e-ticketing and e-tax declarations, with various degrees of voluntariness.
Note: This information is to be understood under the condition of approval of the DIZH by the Canton Council.
The research efforts «Can virtual reality systems help us to design software as we talk?» and «Smart Cities & Regions Services Enablement» are among the first contributions to the digitalisation initiative of the canton of Zurich. They amplify the know-how on software engineering and data-intensive Internet services bundled at the Institute for Applied Information Technology for the support of commercial applications of the following decade.
SPLab has been participating in two major events recently: DINAcon in Bern, the conference for digital sustainability, and the Software QS Day in Frankfurt – expanding horizons on software quality and testing. As we participated as attendee in the first and speaker in the second, this blog post summarises interesting technology trends from both.
Adaptivity and adaptability are key characteristics of modern software to cope with sometimes unpredictable changes in the environment including system and user behaviour. Modern cloud-native architectures for instance foresee the case-by-case handling of decisions – e.g. to decide whether using a provider database or hosting one yourself – at the application or workflow level based on knowledge and rules or emergent behaviour. In workflows representing data flows from connected devices, the (self-)adaptivity should be modelled and supported by context-aware systems.
Our work in the Service Prototyping Lab at Zurich University of Applied Sciences consists of applied research, prototype development and conveying knowledge to industry. In this context, we have worked hard over the previous two years to gather educational and hands-on material, including our own contributions, for increasingly valuable tutorials. From single lectures to half-day and eventually full-day tutorials, we aim at both technology enthusiasts and experienced engineers who are open for new ideas and sometimes surprising facts. In this reflective blog post, we report on this week’s experience of giving the full-day tutorial on microservice artefact observation and quality assessment.
The eternal software circle of life continues to pose non-trivial challenges. Developers write code, run tests, push and/or deploy, perhaps leading to more tests, and finally see their software used in production. Eventually, they might see everything working out correctly or rather not, as indicated by log messages, user complaints and other side channels, and even more eventually, when nothing else gets in the way, they might even attempt to fix the problem at any code location which might have a probability of contributing to the issue.
Bachelor students of computer science at Zurich University of Applied Sciences focus a lot on software development. Software is never developed in the blue; rather, software needs a concrete environment to function and to deliver value. In ‘Programming’ (1st/2nd semester) and ‘Software Development’ (3rd/4th semester), you learn some basic skills. In ‘Systems-oriented Programming’ (2nd semester), you apply these skills to predefined systems with some constraints. In ‘Web Development’ (3rd semester), you apply these skills to another environment in which there is a lot of pace through new technologies. In ‘Game Development’ (5th semester), you develop for specific interactive scenarios, and in ‘Mobile Applications’ (5th semester, you develop user-facing apps for common mobile platforms.
One of the most fascinating and economically important areas is the development of applications which run in the cloud. You may access them with web or mobile devices, but you still cannot see them! Still, they are very powerful, scalable to millions of users, and interconnected across cloud providers and with various backend systems such as databases, message queues and key-value stores. This is why we offer SCAD, a new elective module on Serverless and Cloud-native Application Development.