- Which technologies or what do you have in mind in general if you think about "middleware" and "modern software architecture"?
- the "WHY" - Why would people use and implement a distributed systems architecture?
- Why distributed systems, why middleware, why modern software?
- What is Cloud Computing? Encounters in everyday life and history
- Characteristic, advantages & challenges
- Terminology - public, private, hybrid, dedicated
- Abstraction layers - IaaS, PaaS, FaaS, SaaS
- Overview - Hypervisors, virtual machines, containers and orchestration
The student is able to describe the reasons for distributed systems and cloud computing in own words and list examples for offerings, topologies and technologies. Includes ability to differentiate between different abstraction layers and knowledge how those layers and according technologies interact with each other. No exercises in this module
- Would an nginx serve as a vertical or horizontal middleware component?
- Is horizontal and vertical middleware same as horizontal and vertical scaling?
- Is a docker Container capable of installing things through apt-get?
- What happens with the data if you start and stop the Postgres container?
- https://github.com/wagoodman/dive
- https://docs.docker.com/engine/reference/builder/#cmd
- https://docs.docker.com/engine/reference/builder/#entrypoint
- https://github.com/docker/awesome-compose/
- Background: Spring Framework - History & components
- Spring ← → Spring Boot
- Spring Initializr (start.spring.io) & starter dependencies
- Basic project structure (folders, configuration ..)
- "Hello, World!" example explained
- Using Actuator
The student is able to build and configure an own Spring Boot application from scratch with the IDE of choice. The exercise is to build an own "Hello, World!" application that exposes various - endpoints and is able to execute CRUD operations on the state of the application. Optional: Add logging and testing, configure Actuator.
Basic setup:
- Set up an own gitlab or github repository
- Either set up an own local Java IDE or use gitpod.io
Helpful Links:
- https://github.com/
- https://gitlab.com/
- https://gitpod.io/
- https://www.gitpod.io/docs/introduction/languages/java
Application:
- Build your own first Spring Boot Hello, World application at
- https://start.spring.io
- Change name, Java version, build tool, dependencies. Observe changes
- Use the following deps: Web, Actuator, DevTools
- Annotate a class with @RestController and expose "some" Rest Mappings
- Experiment with other Mappings, e.g. @GetMapping, @PostMapping
- Pass a parameter via @PathVariable
- Put your application into a Docker container
Helpful Links:
- https://start.spring.io
- https://www.baeldung.com/spring-requestmapping
- https://www.baeldung.com/spring-boot-actuator-enable-endpoints
Questions:
-
What is the advantage of polyglot applications? Why in particular for cloud-native software? What kind of disadvantages do you see?
-
State(full/less)ness