Microservice Applications

Objectives and outcomes

Creating synchronous and asynchronous microservices. Creating DevOps streams for microservices and
their scalable implementation. Exposing microservice clusters as APIs. Acceptance of basic concepts of
microservice web applications. Practical application of the acquired knowledge to the development of a
robust microservice application using the Spring Boot and Spring Cloud framework, Netflix OSS. Packing
the application into Docker containers and defining the deployment pipeline. Theoretical review of
microservice orchestration (Docker Swarm, Kubernetes).

Lectures

Architecture and features of microservice applications. Steps in migrating from monolithic to microservice
architecture. Cases of microservice use. Development of applications based on the “12-factor”
methodology – best practices for the development of sustainable, scalable and portable applications.
Comparison of microservice architectures, SOA and monolithic application architectures. Protocols,
paradigms and patterns on which microservice architecture is based: communication via HTTP protocol,
REST API, declarative HTTP clients, Message Broker, Service Discovery, API Gateway, Circuit Breaker.
Different implementations of microservices – domain-oriented architectures (Data-driven), event-driven
programming. Distributed database management. Log aggregation and
understanding them. Security of microservice-based applications. Use of microservices in IoT
applications. Design of IoT middleware using microservices.

Practical classes

DevOps development culture and practice of continuous integration and continuous deployment (CI /
CD). Introduction to tools for version control (Git, Jenkins). Introduction to
different testing strategies (Unit testing, Integration testing, Canary Testing, A / B testing). Isolation of
applications in Docker containers (writing Dockerfile, Docker image register), orchestration of containers,
scaling of microservice applications. Working with databases in microservice architecture including
relational and non-relational databases. Using the Hibernate ORM tool for data persistence.
Communication among microservices, and the use of messaging systems. Development of specific
microservices for certain applications in IoT.