PV217 Service Oriented Architecture
Bruno Rossi, PhD
PV217 Service Oriented Architecture
Info
Období
podzim 2023
Kapitola obsahuje:
4
PDF
1
Studijní text
Učitel doporučuje studovat od 18. 9. 2023 do 24. 9. 2023.
Kapitola obsahuje:
1
Studijní text
2
Web
Kapitola obsahuje:
1
PDF
1
Video
1
Studijní text
1
Web
Učitel doporučuje studovat od 25. 9. 2023 do 1. 10. 2023.
Kapitola obsahuje:
1
Video
1
Studijní text
1
Web
Učitel doporučuje studovat od 2. 10. 2023 do 8. 10. 2023.
Kapitola obsahuje:
1
Video
1
Studijní text
2
Web
Učitel doporučuje studovat od 9. 10. 2023 do 15. 10. 2023.
Kapitola obsahuje:
4
Obrázek
5
PDF
1
Studijní text
Učitel doporučuje studovat od 23. 10. 2023 do 29. 10. 2023.
Kapitola obsahuje:
1
PDF
1
Studijní text
2
Web
Učitel doporučuje studovat od 30. 10. 2023 do 5. 11. 2023.
Kapitola obsahuje:
1
PDF
1
Studijní text
4
Web
Učitel doporučuje studovat od 6. 11. 2023 do 12. 11. 2023.
Kapitola obsahuje:
2
PDF
1
Studijní text
Učitel doporučuje studovat od 13. 11. 2023 do 19. 11. 2023.
Kapitola obsahuje:
1
PDF
1
Studijní text
Učitel doporučuje studovat od 20. 11. 2023 do 26. 11. 2023.
Kapitola obsahuje:
1
Obrázek
3
PDF
1
Studijní text
4
Web
Učitel doporučuje studovat od 27. 11. 2023 do 3. 12. 2023.
Kapitola obsahuje:
2
PDF
1
Studijní text
Učitel doporučuje studovat od 4. 12. 2023 do 10. 12. 2023.
Kapitola obsahuje:
2
Odevzdávárna
1
Studijní text
1
Web
Učitel doporučuje studovat od 10. 12. 2023 do 17. 12. 2023.
Kapitola obsahuje:
1
Studijní text
Učitel doporučuje studovat od 14. 1. 2024 do 4. 2. 2024.




Week 1- Course Introduction, SOA Concepts


Lecture Slides:

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-01_GeneralInfo.pdf

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-01_IntroSOC-SOA.pdf

Additional Readings:


Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50549403/microservices-journey-so-far.pdf

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50549403/Serverless_Computing-Where_Are_We_Now_and_Where_Are_We_Heading.pdf


Additional Resources:

  • The death of service oriented architecture or rebirth on the wings of SaaS and Cloud Computing [] [annotated pdf]
  • Case Study: SOA @Twitter
  • Decomposing Twitter: Adventures in Service Oriented Architecture, presentation at QConfNY by Jeremy Cloud [video]

 

Project Information & Teams

Lectures 2,3,4,5 will have an hands-on approach towards the creation of microservices that can be used for the creation of the project in teams of three. To get in touch with Martin Stefanko directly if you need help with the project, you can create an account at https://quarkusio.zulipchat.com/login/ 

Timeline

* by 2.10.2023 teams of three formed. You can add your name/uco/team to the following document

* 25.9 (lect) introduction to Microservices and the Quarkus framework

* 2.10 (lect2), 9.10 (lect4), 16.10 (lect5) hands-on lectures for the creation of microservices with the Quarkus framework.

* By 1.10.2023 all teams should have decided the domain of the system to be implemented, the project can start.

* 11.12.2023 Final projects presented.


Main Project Requirements

1. Pick some domain of the system under development that you agree within your team. This can be anything related to work, study, but also any domain that you think could be interesting for you. Examples can be an eshop, some platform to sell used items, platform to manage emergencies, etc... Anything that you think could be worth scaling-up with microservices and that can be interesting for some team members.
If you do not come up with some domain, do not worry, we will assign you some project description. Give also a name to your platform :)

After you have decided, you can add your team and project domain to the teams document.

2. Create a repository on GitHub/GitLab, in which you will collect the source code and the documentation about the project and collaborate within your team. Add the info about the repository to the list of teams document.


3. Add to the repository a short description of the system, and the main requirements that you think are worth to be included for the project and how you would divide it into services (we will have more in the course, after the 4 technical lectures block).

4. Each student should take the responsibility of one/two microservices, there can be students that can take more responsibility on other implementation, like the monitoring part, testing, etc... you can also have students more into documentation/design if not confident with implementation, but at least everybody should get hands on some part of the system.

Technical Requirements

+ For the implementation, try to keep with the technology stack presented during the lecture Quarkus and related frameworks shown during the lecture, Docker/Podman. Any deviation should be agreed with the lecturer:
+ (must) On your GitHub page of the project. give a i) description of the project, ii) a story/scenario of usage, iii) why you think a microservice architecture can be appropriate, iv) benefits of the using microservices in this project, v) drawbacks of microservices in this case. You can populate some of these points based on your experience during the course.
+ (must) Have the API design & contract available in the project documentation or integrated in the Quarkus project (e.g., using https://swagger.io - https://quarkus.io/guides/openapi-swaggerui)
+ (must) Have some blueprint for the design of your services (e.g., using domain driven design) which can be documented either with C4 models (https://c4model.com/) and/or UML models and/or other type of diagrams;
+ (must) Have some monitoring part for the services collecting metrics about usage (https://quarkus.io/guides/microprofile-metrics https://quarkus.io/guides/telemetry-micrometer-tutorial); (note: updated the link)
+ (must) Have at least one service that can show self-healing capabilities (https://quarkus.io/guides/microprofile-health);
+ (must) All services have some meaningful tests running (https://quarkus.io/guides/getting-started-testing);
+ (must) Have some simple database support for at least one service - https://quarkus.io/guides/hibernate-orm-panache
+ (must) Process monitoring data and visualization with Prometheus + Grafana (https://quarkus.io/guides/microprofile-metrics);
+ (must) Have a scenario that you can run that showcase some reactive properties of the system (those that you implemented): Responsiveness (quick response / always on), resiliency (self-healing service), elasticity (how the system can scale up/down when needed), message-driveness (asynchronous messages with loosely coupled / location-transparent services); (note: some of these might be difficult to show, so you can just focus on showing how your system can deal with failures or excessive number of requests)
+ (must) pick at least one of the following optional requirements and showcase the implementation / deployment at the final presentation:

  • (optional) Use Jaeger for tracing (https://quarkus.io/guides/opentracing);
  • (optional) Use of Kafka for asynchronous messaging (https://quarkus.io/guides/kafka)
  • (optional) Use of authentication for some microservices with JWT (JSON Web Tokens);
  • (optional) Configure and deploy the project with Docker/Podman;
  • (optional) Configure and deploy the project on Kubernetes/Minikube or Openshift/CRC;
  • (optional) show the usage of a native executable with GraalVM, discussing advantages/disadvantages (e.g., what are the performance improvement running the scenario you created);
  • (optional) Not directly covered in this course: however, if you have previous experience or want to try, you can showcase polyglot microservices (implemented in different programming languages/frameworks) - this is something that any team with students that have no experience with Java can have;


Teams


Team1

  • Vojtěch Sýkora
  • Marek Seďa
  • Dominik Seďa

Team2 (City bike & scooter reservation system / Wheelio)

  • Gema Vidagany Viel
  • Jiří Šimek
  • David Rajnoha

Team3 (Platform for exchanging skills (languages, playing musicinstruments, etc.) with strangers / Brainshare)

  • Dávid Šutor
  • Matej Meško
  • Jana Treláková

Team4

  • Miroslav Rouča
  • Martin Mojžiš
  • Straka Jan

Team5 (Household Management (track utilities, chores, common expenses, …)

  • Martin Klimeš
  • Juraj Marcin
  • Anna Vítová

Team6 (Car rental service(make a rental, payment process, fees)

  • Stanislav Koshchienko
  • Anna Ogorodova
  • Madyar Turgenbaye

Team7 (Covid Testing System (registration for testing, creating certificates for covid tests)

  • Lukáš Vavřík
  • Jozef Mihale
  • Martin Stojan

Team8 (Banking System)

  • Dominik Rehák
  • Peter Verčimák
  • Filip Piták

Team9 (Library Management System)

  • Jakub Krištof
  • Dávid Laurovič
  • Adam Kridl

Team10

  • Vasilii Karmazin
  • Ifeanyichukwu Egeolu
  • Ughur Aghakishiyev

Week 2 - Microservices Introduction (Martin Štefanko)

In this lecture, we will discuss about Microservices with Martin Štefanko (Red Hat): we will cover several aspects: what are microservices, how the principles are different from typical SOA principles, some examples of implementation. Martin will also showcase rapid prototyping of microservices with Quarkus (https://quarkus.io).

  • Microservices in general
  • Comparison to typical SOA principles
  • Technologies that make microservices possible
  • Live Example of Microservices creation
  • Principles of microservices from the perspective of the business


Lecture slides

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-02_Microservices.pdf

Video

The following is a video recording from two years ago, so content might be slightly different.

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/videos/119171631/



Week 3 - Microservices - introduction to Quarkus, HTTP, REST, Docker/Podman, Kubernetes/Openshift (Martin Štefanko)

This lecture will be a first hands-on about writing microservices, in particular we will see how to use Quarkus (https://quarkus.io) to create microservices.


Video

The following is a video recording from two years ago, so content might be slightly different.

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/videos/119364262/

Week 4 - Microservices - communication between services, CDI (context and dependency injection), microservices configuration, health, metrics (Martin Štefanko)


This lecture we will continue with technical details of writing microservices, using Quarkus (https://quarkus.io). This lecture we will look in particular at Microprofile (https://microprofile.io)

  • What is Microprofile?
  • Communication between services
  • CDI
  • Microservices configuration
  • Health and Metrics collection


Video

Please note this is a video from previous years, so some content might be different

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/videos/119585074/

Week 5 - Microservices - API design and contract definition, fault tolerance, request tracing, security with JWT (JSON web token), reactive services and Kafka (Martin Štefanko)

This lecture we will continue with technical details of writing microservices, using Quarkus (https://quarkus.io). This lecture we will look in particular at:

  • REST clients
  • Fault Tolerance
  • Authentication with JWT
  • reactive services with Kafka

Video

Note: this is a video from a previous edition:

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/videos/119794798/

Week 6 - The Software Architecture in SOA and Quality Properties (Scalability, Availability, Resilience)

The aim of this lecture is to give an understanding about what a Service Oriented Architecture (SOA) - from the architectural point of view, and why we even need such an architecture. We will also look at the definition of SOA Maturity Model looking at when we can consider an organization as fully SOA compliant, crossing different levels of adoption with different organizational aspects (governance, application level, information level, etc...). We will do the same with Microservices: how it represents an evolution of SOA, which are crucial aspects of the evolution of the architecture.

Lecture Slides:

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-06_TheSoftwareArchitecture_SOA.pdf

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-06_MSA-QualityProperties.pdf

The following in the Open Group Service Integration Maturity Model (OSIMM) we discussed during the lecture

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/The_Open_Group_Service_Integration_Maturity_Model__OSIMM_.pdf
Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/50992799/OSIMM.png

Other frameworks for Microservices Maturity Assessment

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/MicroservicesMaturityModelFrameworkAssessment.pdf
Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/Where_Is_Your_Microservices_Architecture.pdf
Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/50992799/ContainerSolutionsMSAMM.png
Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/50992799/ContainerSolutionsMSAMM2.png

Reading Material:


 

 

Week 7 - SOA Modelling & Analysis (Domain Driven Design & Microservices) Part I

In this lecture,  we start a two series session about Domain Driven Design (DDD) for designing microservices. In this first part, we will look at the strategic phase, covering the whole idea of the approach, the definition of bounded contexts, and the creation of context maps. Next lecture, we will continue with the tactical level.

 

Lecture slides


Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-07_MSAandDDD-PI.pdf

Additional Materials

For a very quick summary about DDD and the Bounded Context (more extensive details in the main reference books about DDD: [1], [2]):

[1] Evans, Eric, and Eric J. Evans. Domain-driven design: tackling complexity in the heart of software. Addison-Wesley Professional, 2004. [URL]

[2] Vernon, Vaughn. Implementing domain-driven design. Addison-Wesley, 2013. [URL]

Week 8 - SOA Modelling & Analysis (Domain Driven Design & Microservices) Part II

In this lecture, we see the tactical level of DDD and how it can be used for the design of microservices. We try to do a small exercise for the definition of microservices based on your domain (as said in the previous lecture, DDD for design of microservices makes sense if there is a large number of requirements and the domain is complex, for simple CRUD implementation of microservices, the whole DDD process has too much overhead).

Lecture slides

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-08_MSAandDDD-PII.pdf


Additional material

We have looked at how to apply DDD for the analysis of the domain and identification of the microservices. It is an iterative process that allows to define bounded contexts and derive the microservices from the attribution of functionality to each boundary. The following is another example of the application of DDD for the creation of microservices.

Week 9 - SOAML & Service Contracts

In this lecture,  we deal with Service Oriented Architecture Modelling Language (SoaML), that is a way to represent services in SOA. We see the notation and how it can be useful to represent services. We will also look at the definition of service contract with REST APIs (OpenAPI).


Lecture Slides 

Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-09_SOAML.pdf

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-09_ServiceContractMSA-API.pdf

    Further References for SoaML

    • How to model services with SoaML: VP Tutorial
    • SoaML Specifications 1.0.1: (SoaML specifications) [PDF]
    • Elvesæter, Brian, Arne-Jørgen Berre, and Andrey Sadovykh. "Specifying Services using the Service Oriented Architecture Modeling Language (SoaML)-A Baseline for Specification of Cloud-based Services." CLOSER. 2011 [PDF].
    • Berre, A. J. "Service-oriented Architecture Modeling Language (SoaML)—Specification for the UML Profile and Metamodel for Services (UPMS). OMG Document." (2009) [PDF]

    Week 10 - SOA Patterns

    In this lecture we look at common SOA patterns that have been applied over the years in the SOA domain. You have probably already heard about design patterns, analysis patterns and enterprise patterns (as well as anti-patterns). Patterns represent solutions to reoccuring problems and are usually applied also to make projects more understandable, as other projects' participants can immediately recognize one pattern. Each pattern has obviously benefits and also drawbacks. In this lecture, we look at SOA patterns.

    Lecture slides

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-10_SOAPatterns.pdf

    Week 11 - Microservices Patterns

    In this lecture, we look at Microservices patterns to get an overview of patterns both for the design and migration from monolithic systems. In particular, we look at the Strangler Fig pattern, the Saga pattern (both in the orchestration and choreography variants), and the CQRS pattern.
     

    Lecture slides

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-11_MicroservicesPatterns.pdf

    Orchestration vs Choreography

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/50992790/50992799/MS-orchestration-choreography.png

    Additional Material

    Migrations from monolith to microservices

    Suggested reads from the following document: "Principles for Microservice Design: Think IDEALS, Rather than SOLID" and "Migrating Monoliths to Microservices With Decomposition and Incremental Changes":

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/50549403/Re-examiningMicroservicesAftertheFirstDecade.pdf

    Master thesis about Migrations from Monoliths to Microservices that was defended in 2022:


    SAGA PAttern

    Article about comparison of frameworks supporting the Saga pattern: Štefanko, M., Chaloupka, O., Rossi, B.  (2019). The Saga pattern in a reactive microservices environment. In Proc. 14th Int. Conf. Softw. Technologies (ICSOFT 2019) (pp. 483-490).

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/50549403/The_Saga_Pattern_in_aReactive_MicroservicesEnvironment.pdf

    Martin Stefanko's thesis, Master thesis that was defended in 2018:


    The following is an example on how to implement the Saga Pattern in Quarkus:


    CQRS + Event Sourcing

    Example of CQRS with Quarkus:

    Week 12 - Chaos Engineering for Microservices - Course Summary

    We will have some closing lecture about how chaos engineering can be used for the scope of building more reliable microservices and what is different compared to traditional software testing. We will also have a short summary of the course.

    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/Lect-12_ChaosEngineering.pdf


    Additional Material

    Basiri, A., Behnam, N., De Rooij, R., Hochstein, L., Kosewski, L., Reynolds, J., & Rosenthal, C. (2016). Chaos engineering. IEEE Software, 33(3), 35-41.
    Chyba: Odkazovaný objekt neexistuje nebo nemáte právo jej číst.
    https://is.muni.cz/el/fi/podzim2023/PV217/um/50549403/chaosengineering-article.pdf

    Week 13 - Students Projects Presentations - (11.12.2023, 12:00, A319)

    Presentations by students

    • Every team will have 10min to present, there is no predefined template / structure of the presentation, but would be nice to cover the goals of the system and present the implementation of some of the technical requirements that you consider more interesting for your project (https://is.muni.cz/auth/el/fi/podzim2023/PV217/index.qwarp?prejit=11832245) . Please also highlight the contribution of each student in the different parts of the project.

    • A sample structure of the points to cover during the presentation (please see also the requirements above for more details)
      • Context of the project: why microservices as seen as necessary for this system;
      • Overview of the system's architecture (e.g., services implemented, their responsibilities, etc...);
      • Any particular focus of your project like usage of Apache Kafka, or some monitoring capabilities, usage of Grafana, etc...
      • How the deployment of the system has been done;
      • Demo of the application with some scenario that can show some interesting aspect of the implemented system;
      • Pro & Cons of microservices after having implemented the project;
      • How the work was distributed among team members;
    • Please remember to upload your presentation into the homework folder "Presentations" and the final archive of your project (as zip, tar.gz) to the "Projects" folder;



    Schedule:

    • 12:00 Team1 ( Vojtěch Sýkora, Marek Seďa, Dominik Seďa)
    • 12:10 Team2 (Gema Vidagany Viel, Jiří Šimek, David Rajnoha)
    • 12:20 Team3 (Dávid Šutor, Matej Meško, Jana Treláková)
    • 12:30 Team4 (Miroslav Rouča, Martin Mojžiš, Straka Jan)
    • 12:40 Team5 (Martin Klimeš, Juraj Marcin, Anna Vítová)
    • 12:50 Team6 (Stanislav Koshchienko, Anna Ogorodova, Madyar Turgenbaye)
    • 13:00 Team7 (Lukáš Vavřík, Jozef Mihale, Martin Stojan)
    • 13:10 Team8 (Dominik Rehák, Peter Verčimák, Filip Piták)
    • 13:20 Team9 (Jakub Krištof, Dávid Laurovič, Adam Kridl)
    • 13:30 Team10 (Vasilii Karmazin, Ifeanyichukwu Egeolu, Ughur Aghakishiyev)

    Colloquium Schedule


    Monday 18/12/2023 14:00 A320

    14:00 Rajnoha, David
    14:07
    Piták, Filip
    14:14
    Ogorodova, Anna
    14:21
    Turgenbayev, Madyar
    14:28
    Vavřík, Lukáš
    14:35
    Seďa, Marek
    14:42
    Rehák, Dominik
    14:49
    Šimek, Jiří
    14:56
    Verčimák, Peter
    15:03 Vidagany Viel, Gema
    15:10 Koshchienko, Stanislav
    15:17 Straka, Jan

    Tuesday 16/1/2024 14:00 A319

    14:00 Laurovič, Dávid
    14:07
    Krištof, Jakub
    14:14
    Klimeš, Martin
    14:21
    Sýkora, Vojtěch
    14:28
    Mojžiš, Martin
    14:35
    Mihale, Jozef
    14:42
    Seďa, Dominik
    14:49
    Karmazin, Vasilii
    14:56
    Vítová, Anna
    15:03 Marcin, Juraj
    15:10 Krídl, Adam
    15:17Aghakishiyev, Ughur
    15:24Vavřík, Lukáš
    15:31Šutor, Dávid
    15:38Meško, Matej
    15:45Treláková, Jana


    Tuesday 23/1/2024 14:00 A320

    14:00