After successful completion of the course, students are able to:
As we move toward solutions that maximize productivity, minimize overhead, and promote sustainability, serverless paradigms arguably stand at the forefront of how we engineer future distributed systems. It can be seen as the next evolutionary step in cloud computing as it pushes the boundaries of efficient, scalable, and cost-effective software development. More specifically, serverless computing is a novel execution and programming model in which the platform provider dynamically manages the allocation and provisioning of the compute infrastructure. The serverless provider allows users to write and deploy code while the provider takes care of the entire infrastructure underpinning the application, but also of the application management during its runtime, e.g., of the elastic scaling.
There are several concepts and principles that underpin the serverless paradigm that we intend to introduce in this course. For example, we will discuss the Function-as-a-Service (FaaS) paradigm as a novel programming and execution model in which the applications are decomposed into triggers and actions (functions), which are managed by a serverless platform. The serverless platform is responsible for providing function isolation, e.g., by employing some of the well-known virtualization approaches such as micro VMs and containers. In order to provide an optimized cost model, such platforms typically enable serverless execution model which allows for scale-to-zero, i.e., fully downscaling serverless functions when there are no incoming requests.
The purpose of this course is to familiarize students with the emerging serverless paradigm and to discuss its foundations, technologies, architectures, examples, and best practices of recent developments in Serverless Computing. The following main topics of serverless computing are currently planned to be covered. Please note that content is tentative and may change.
This course is composed of a lecture (ca. 40%) and a lab (ca. 60%) part. In the lecture, the instructor will teach the fundamental concepts of the serverless paradigm as well as the main technologies of serverless computing and will discuss these with the students. Interaction with the students is facilitated through the usage of classroom tools (for discussions, collecting ideas, and so forth) as well as online tools and forums (Zoom, TUWEL).
Within the scope of the lab, students will be assigned group work (group size: 3 to 5 students). Students will need to familiarize themselves with serverless platforms and technologies and deliver a practical solution. During the semester, students will have to team up to design and implement a solution for their topic and they will need to present the results twice, in an intermediate and a final presentation.
ECTS Breakdown:
3ECTS corresponds to roughly 75 hours.
VO (30h):
UE (45h):
Course Materials & Lecture Notes
The following are the sources that will be used for this lecture:
Lecture notes will be distributed online in TUWEL, for each lecture and immediately after each lecture.
Miscellaneous
Please check TUWEL for the exact lecture dates. Lecture attendance is not mandatory. In addition, there are three mandatory meetings for the lab part of this course: a kickoff meeting, and two presentations. Generally, TUWEL course has the most up-to-date and comprehensive information about lecture and lab dates and times, as well as information on upcoming deadlines.
Condition on the approval of STUKO (Study Commission), this course is to be classified as an elective course for the following Master programmes. The decision will be applied retroactively, meaning that it will also apply to anyone who takes this course in WS 2023.
Lab exercises and a written exam about the lecture.
The examination is composed of two parts. First, there is an exam, which has a total of 40 points, and which counts for 40% of the overall points students can gain within this course. In the exam, the content of the lecture is retrieved and applied. Depending on the enrollment, the exam might be conducted orally.
The remaining 60% of the overall points are gained through the efforts in the lab part:
The course is recommended for Master’s and PhD students in Computer Science.
Significant knowledge in programming (one of e.g., Java, Python, TS, NodeJS, Rust, Go), as well as distributed systems, is required. Some familiarity with the main concepts of cloud computing will be assumed.
Any experience with advanced topics such as working with containers, such as Docker containers, container orchestrators, such as Kubernetes or Docker Swarm, or existing serverless platforms, such as AWS Lambda, OpenFaaS, or Open Whisk is beneficial, but not mandatory.
The course is self-contained.
Accompanying courses: While it might be helpful if VU Advanced Internet Computing (184.269) has already been done, the two courses can also be done in parallel without a problem.
Preceding courses: (194.024) VU Distributed systems