From September 2 to 4, 2019, Tampere University hosted the INFORTE.fi-supported summer school on Software Evolution: From Monolithic to Cloud-Native. The Service Prototyping Lab at Zurich University of Applied Sciences contributed with five lectures (and one coincidental serverless meetup talk) to increase theoretic knowledge and practical skills of Finnish doctoral students and developers on microservices and software engineering for the cloud. All presentations are available online but as usual the slides do not capture discussions and industry relevance, so read on to get to know more about this.
On the first day, local researcher Davide Taibi presented insights into cloud-native migration patterns. With data from interviews in 21 companies, he pointed out the main sources of issues still making a migration to microservices hard: monolith decoupling, database migration and data splitting, communication among services and effort estimation (mismatched by 20%). Patterns such as API Gateway and Client-Side Discovery complement the rather generic guiding principles and assist developers in the migration process.
Subsequently, Sebastiano Panichella presented his views on cloud-based testing. The main argument is that automated testing plays a critical role in supporting the verification and validation of complex applications in the cloud, extending to industry domains like smart cities and cyber-physical systems. In the afternoon, fueled by the input from these two talks and a number of relevant articles, the students – many of them part-timers with jobs related to cloud computing and software engineering – received practical tasks and started solving them in groups of 2-3 students each.
The second day started with a talk by Josef Spillner on quality assessment and software evolution in microservice artefacts such as Helm charts, Docker Compose files and Lambda functions. A key take-away was the need to strengthen CI/CD-integrated assessment tools. Additionally, Sebastiano Panichella with input from Soheila Dehghanzadeh presented slides on Kubernetes, the Operators SDK and Prometheus. Again, the afternoon was dedicated to further hands-on group work.
The last summer school presentation started the third day with a talk by Josef Spillner on cloud service dependencies in practice. While dependencies are not often used in recent cloud artefact types, already one in three Helm charts has issues with dependencies specification. Practical tools to check Helm and Docker Compose files were explained to alleviate these issues in practice. Afterwards, the student groups wrapped up their work and presented the achievements and results, primarily to the point of in-depth research questions around using Triton, microservice development-organisation mapping, e-learning rearchitecture with microservices and similar related topics.
In the evening, the 2nd Serverless Meetup Tampere happened with two talks. Arto Liukkonen (Nordcloud) and Josef Spillner (SPLab) informed about progress but also remaining challenges in the serverless and FaaS world, with talks about GraphQL/AWS AppSync and FaaS billing granularity challenges, respectively. Unfortunately, Anssi Herranen (Vincit) had to be excused but organiser Davide Taibi substituted with a refined talk on serverless anti-patterns.
The GraphQL talk outlined an easy scaffolding/boilerplating tool to bridge between the developer mindsets using REST and GraphQL. Based on the Serverless Framework, and enforcing test-driven development, data queries can be simplified while adhering to schemas. The granularity talk was partially based on the faas-timesharing repository which contains experimental approaches to minimise idle times within 100ms intervals, as well as an observation that many cloud functions in dockerised form only require a few MBs of memory, much less than the smallest instance type of 128MB. However, in the QA some attendees questioned the relevance of FaaS cost in general (especially in relation to other cloud cost and personnel cost), and the practical ability to reduce serverless cost with the presented approach.
Overall, both the summer school and the meetup have shown that despite an at-large move towards cloud-native and serverless technologies, many people are still new to these topics and teaching (as in ZHAW) is rare. Even experienced developers experiment a lot with workarounds such as the API gateway pattern and global function state. To assist companies on their cloud-native innovation journey, the Service Prototyping Lab at ZHAW continues to be available as research partner with strong practical skills profile in these topics.