Study-Unit Description

Study-Unit Description


CODE LAS3017

 
TITLE Reactive Microservices With Akka, Kafka and Docker

 
UM LEVEL H - Higher Level

 
MQF LEVEL 6

 
ECTS CREDITS 4

 
DEPARTMENT Centre for the Liberal Arts and Sciences

 
DESCRIPTION Micorservice architectures are a relatively recent trend in software development which sees software applications designed as a suite of independently deployable services. Although software oriented architectures have been around for a while, microservices apply modern design decisions based on years of good practice applied in real world scenarios, with the capability to unlock impressive technical benefits as well as unleashing business possibilities. However, the architecture also comes with pitfalls and additional complexities. This Unit provides an in-depth understanding of these design decisions, what impact it can have on our technology, workforce and business capabilities, and most importantly when Microservice architectures should apply.

At a finer level of granularity, programming distributed systems provides its own set of challenges beyond the chosen architecture. Reactive programming provides techniques particularly suited for distributed systems, and involve modeling our programs as data flows and the causal propagation of change. By emphasizing on responsiveness, resilience, elasticity and scalability this has enabled systems to be deployed on cloud-based clusters running on thousands of multi-core processors with expectation of millisecond response times and high availability.

This Unit will focus on building reactive microservices through hands on experience with Akka and Kafka. The former is a toolkit and runtime for building distributed message-driven applications on the JVM based on the actor concurrency model (one possible reactive programming technique). This tool has seen a steep rise in popularity in recent years, and is being adopted by some of the largest and most forward-thinking companies concerned with the issues described above. Apache Kafka is yet another tool in the architect’s arsenal, and is concerned with large scale event publishing, and distributed subscription of such events. Like Akka, Kafka is focused on raw performance and distributed data streaming. Also like Akka, Kafka has been adopted by some of the largest companies with enormous user bases and tight performance requirements, and is steeply rising in popularity. By providing different-yet-complementary messaging patterns, this Unit will also provide an understanding how such tools can be applied together, and will be thought using their Java APIs.

Once the separate microservices have been developed, the final step involves packaging and deploying such applications on the necessary servers. By having many separate applications to deploy (ranging from dozens to hundreds and beyond), manual deployment of each application is clearly not feasible. To this end, automation, individual deployment and containerized packaging through tools such as Docker is a must, and has also seen a drastic in popularity in recent years. Therefore, this Unit will also be providing hands-on experience with such tools by packaging the software developed in this Unit within Docker containers.

Learning Outcomes:

1. Knowledge & Understanding:

By the end of the Unit the student will be able to:

- Comprehend the concepts behind one of the recent popular architectural design trends in software engineering;
- Weigh the pros and cons which Microservices bring to the table, including the ability to maturely analyse whether the architectural pattern is a good fit for a given problem a developer is set out to solve;
- Demonstrate an understanding of reactive programming principles focusing on the actor concurrency model, together with an appreciation of the paradigm shift from more traditional stateful programming paradigms;
- Exposure to a number of the more popular programming frameworks, tools and platforms for the development of distributed applications on the JVM.

2. Skills:

By the end of the Unit the student will be able to:

- Program distributed applications through actor based semantics, including point-to-point message passing behavior, actor supervisor hierarchies, at-least-once semantics, Akka persistence, Akka remoting and Akka FSM for locally stateful actor semantics;
- Apply the distributed publish-subscribe communication pattern in an enterprise application;
- Use container frameworks to package applications as executable, isolated and secure artifacts in automatable fashion.

Main Text/s and any supplementary readings:

- Sam Newman, Building Microservices (2015).
- Roland Kuhn, Brian Hanafee & Jamie Allen, Reactive Design Patterns (2017).
- Raymond Roestenburg, Rob Bakker, Rob Williams, Akka In Action (2016).
- Notes & Articles will be provided by lecturer throughout lectures.
- https://kafka.apache.org/ - Official Kafka documentation.
- https://docs.docker.com/ - Official Docker documentation.
- http://doc.akka.io/ - Official Akka documentation.

 
ADDITIONAL NOTES Pre-Requisite knowledge, skills and competences:
- A good understanding of Java and object oriented programming.
- An appreciation for traditional enterprise architectures is a plus, but not a requirement.

 
STUDY-UNIT TYPE Lecture

 
METHOD OF ASSESSMENT
Assessment Component/s Sept. Asst Session Weighting
Project Yes 100%

 
LECTURER/S

 

 
The University makes every effort to ensure that the published Courses Plans, Programmes of Study and Study-Unit information are complete and up-to-date at the time of publication. The University reserves the right to make changes in case errors are detected after publication.
The availability of optional units may be subject to timetabling constraints.
Units not attracting a sufficient number of registrations may be withdrawn without notice.
It should be noted that all the information in the description above applies to study-units available during the academic year 2023/4. It may be subject to change in subsequent years.

https://www.um.edu.mt/course/studyunit