Subject description PG3402

Microservices

2024 Fall

  • Subject code

    PG3402
  • Version

    1
  • English name

    Microservices
  • Subject points

    15
  • Study level

    First cycle degree
  • Semester

    5th semester

  • Number of semesters

    1
  • Subject's supervisor

    Bogdan Marculescu
  • Teaching language

    Norwegian / English
  • Decision

    Translated version. The Norwegian version of this course description is approved by The Education Committee 15.05.2023 UU/EIT-case no. 40/23.

Introduction

As software systems grow in complexity, it becomes necessary to better handle their structure and interactions. One technique for managing complexity for online systems (e.g. REST, GraphQL, etc.) and for the communication protocols used (e.g. HTTP) is that of Microservices.

This course will introduce the concept of Microservices, and practical experience with the tools and methods that can be used to develop distributed systems, either from scratch or from existing monolithic systems. The students will learn how to use this type of software architecture, along with its benefits and drawbacks. The course will focus on Microservice Architectures, and topics that are essential to implementing those architectures (e.g. Load Balancers, Gateways, Circuit Breakers, message-oriented middleware, and auto-scaling). In addition, the students will gain a deeper understanding into the impact such architectural choices have on the software development process.

Learning Outcomes

Knowledge

The student...

  • has good knowledge of the different benefits, drawbacks, and tradeoffs of monolithic and service oriented styles of software architecture
  • understands and can discuss the tradeoffs of synchronous and asynchronous systems.
  • understands and can discuss the impact of Microservice Architectures on essential system characteristics, like maintainability, flexibility, scalability
  • understands and can discuss the impact of decision made regarding software architecture, selection of tools, and use pattens on the performance of the system they are developing
  • understands and can discuss the changes that need to be made to the software development process as a result of adopting Microservice Architectures
  • understands and can discuss continuous delivery, testing, and security in the context of distributed systems

Skills

The student...

  • is able to design, implement, and deploy a system along the lines of Microservice Architectures
  • is able to use the relevant tools to the development, deployment, and maintenance of distributed software systems
  • can discuss, plan, and implement the re-design of a monolithic software system into a distributed system in line with Microservice Architectural concepts
  • can plan and implement components specific to service-oriented systems (e.g. gateways, load balancing, containerisation and deployment with Docker, continuous delivery).
  • can publish, present, and discuss their solution

General competence

The student...

  • has broad understanding of the tools relevant to software development and communication within a software development context. This includes communication, version management and collaboration (git and GitHub), containerisation and deployment (Docker), testing of distributed systems (Cucumber)
  • has an understanding of the wider software development process, and the impact that the choice of Microservice Architectures has on that process (e.g. requirement engineering, software verification and validation, and deployment and maintenance in the context of distributed systems)
  • can design, present, and justify their solution to a given problem
  • can successfully collaborate in the context of a software development team
  • can successfully collaborate as a representative of a team with other teams
  • can keep track of their work and contributions using software development processes like agile, and use them to manage their activities

Degree

Bachelor in IT - Computer Programming

Learning activities

Lectures, exercises, self-study, team-based project.

The students will work on a project, alone or in teams. New exercises and concepts will build on previous work, allowing the students to better understand those concepts, as well as understand the reasoning behind their adoption and their impact on software development work. Feedback with deal with functional issues (what does not work as intended), as well as discussing and presenting design choices, improving the quality and maintainability of code, and other improvements that are relevant to individual submissions.

Student work load

Participation in teaching and guidance - 96 hours

Self study - 200-250 hours

Execution and preparation for the exam - 100 hours

Recommended use of time in total - 400-450 hours

Tools

Selected IDE and frameworks and tools relevant to the topic (e.g. Docker, Git). These do not incur additional cost to the student.

Compulsory assignments

Verifiable coursework requirements: one or more assignments that must be collectively approved

Individual qualification: G/IG (approved/not approved)

Execution: individual

Verifiable (right of appeal): yes

Coursework requirements are to be handed in or conducted in accordance with information given by the lecturer and carried out within the duration of the course, as well as registered as approved/not approved at least two weeks before the exam/exam period.

Approved coursework requirements grant students permission to take exams. Unapproved coursework requirements result in the student’s withdrawal from the exam.

Examination

Exam: Individual portfolio assessment

Duration: 4 weeks

Grading scale: The Norwegian grading system uses the graded scale A - F, where A is the best grade, E is the lowest pass grade and F is fail

Weighting: 100 % of the overall grade

Support materials: All support materials are allowed

Re-sit examination

Re-sit coursework requirements: revise and resubmit the same coursework assignment

Re-sit exam: revise and resubmit an improved version of the individual portfolio assessment

Comments

The course will be delivered in English or Norwegian based on the lecturer(s) in the course. Recommended previous knowledge: Object oriented programming andfurther skills and knowledge obtained through the course "Backendprogramming" (or equivalent).