TU Wien:Distributed Systems Technologies VU (Truong)/Prüfung 2020-06-24
The exam was divided into 7 parts. The first five consists of 4 questions (2 MC/SC and 2 open questions and for each question 2 points) and were based on the five lectures. The last two parts covered multiple parts and were "creative" questions (5 points for each part). The questions and answers are just a version we kept in mind.
Part 01[Bearbeiten | Quelltext bearbeiten]
Active Record
- Seperates database and domain logic
- Domain object exposes database operations
- Is a generalization of the data mapper pattern
- Domain logic is included in domain object
Which database system is the most appropriate for the following use case: The database should scale over different nodes and the queries are often based on aggregations.
- Cassandra
- Redis
- Influx-DB
- Neo4J
Explain the concepts Abstraction and Generalization. Describe two examples/technologies and how they achieve the concepts.
Explain the types of horizontal scaling and describe an example for them.
Part 02[Bearbeiten | Quelltext bearbeiten]
The Marshaller:
- Is responsible for the transportation of messages
- Provides the data for the skeleton on the client side
- Transforms the requests to messages
Message oriented models
- Ensure loosely coupled components
- Provide a common communication interface
- Enable a clear communication pattern trought the app <or something like that>
- Enable an active producer to communicate with a passive consumer
Describe the uniform HTTP Interface and its effect on modern web applications.
Explain the competing consumers pattern. What are differences to the publish-subscribe pattern.
Part 03[Bearbeiten | Quelltext bearbeiten]
The authorization token in the Authorization Grant Flow is necessary:
- To identify the user at the autorization server
- For the client to get the resource from the resource server
- For the client to communicate with the authorization server
- For the browser to authenticate at the authorization server
An advice is:
- An modularized implementation of a crosscutting concern
- An point in the execution of a program
- An expression to select an point in the execution of a program
- The code to be executed at a specific point
Describe how Annotations, Dynamic Proxies and Dependency Injection can help in an application framework in the context of transactions.
Describe the relationship between instrumentation in the logging context, and java bytecode instrumentation. How does the latter enable the former?
Part 04[Bearbeiten | Quelltext bearbeiten]
Container Virtualization has benefits over VMs because:
- They can be deployed in an existing operating system
- Container images have a smaller memory footprint
- In most cases they are more performant than VMs
- <a few others>
The ingress controller:
- Hides the internals from a public network
- <something with routing>
- <something with overlay network>
- Is responsible for discovering services inside the cluster/network
Describe the relationship between elasticity and virtualization.
Why do you need Service Discovery to make autoscaling possible.
Part 05[Bearbeiten | Quelltext bearbeiten]
Apache Beam:
- Is an abstraction of stream processing system
- Is a set of features for stream processing
- Provides a model for data processing <or something like that>
- Encapsulates the features of other stream processing frameworks.
Watermarks:
- Ensure the ordering of events
- Can be set punctual and/or periodically
- Always have to be emitted together with an event
- Set borders between aggregation windows <or something like that, but should be true imo.>
Describe the Event Sourcing Pattern and give/explain an example.
Describe the key benefits/features of Kafka. Describe a use case.
Part 06[Bearbeiten | Quelltext bearbeiten]
You got the task to provide a solution to provide VMs (like AWS, OpenStack etc.) You should create an Resource Management System. The VMs should auto scale and it should be possible to limit them. Furthermore there exists an VM repository. Sketch the components, how they interact, describe your solution and which technologies you would use.
Part 07[Bearbeiten | Quelltext bearbeiten]
You work in a company where an microservice architecture is used. There exist 20-30 different microservices. Some of them provide logging to files. You want to monitor them (to get information about bottlenecks etc.) How can this be done? Explain your approach and technologies you would use. What changes must be done in the different services to instrumentate logging? How can this be done least intrusively (with minimal changes)?