Distributed Systems
Distributed Systems
Definition: “A distributed system is a collection of independent computers that appears to its users as a
single coherent system.
Architectural styles give you guidance on how to structure your distributed system Layered
architectures Order your components in layers where calls go from higher-level layers to lower-level
layers. Distributed objects Expose your components via an endpoint to remote calls Event-driven
Decouple your components via events that are distributed via an event bus (publish / subscribe) Data-
centric Use data junks or files as means for coordination, e.g., web-based systems
Middleware
Middleware is the classical means to manage the complexity of distributed systems, but what is
middleware? Middleware is the software between …distributed system and operating system (local
view) …service user and service provider (global view)
Clustering
Middleware technologies reflect different system requirements! Implement Web Services by means of
Server Programming Technologies Servlets Spring Boot .n
Software architecture design maps the problem domain to the solution domain considering forces and
risks What are the forces (requirement or constraint)? Functional Non-Functional Infrastructural
Non-Technical (organization, processes, business case) Architecture design is about taking
architectural decisions that have system-wide impact that affect important quality attributes
Define a baseline architecture as complete as necessary for governing subsequent activities as
simple as possible to ensure it can be communicated
Service
Another definition for service system states that a service system consists of elements
(e.g., people, facilities, tools, and computer programs) that have a structure (i.e., an
organization), a behavior (possibly described as a business process), and a purpose (or
goal).
SOA Defination
Service Oriented Architecture (SOA) is a paradigm for organizing and utilizing distributed capabilities that
may be under the control of different ownership domains
SOA is a logical way of designing a software system to provide services to either end-user applications or
to other services distributed in a network, via published and discoverable interfaces. A wellconstructed,
standards-based Service Oriented Architecture can empower a business environment with a flexible
infrastructure and processing environment. SOA achieves this by provisioning independent, reusable
automated business process and systems functions as services and providing a robust and secure
foundation for leveraging these services. Efficiencies in the design, implementation, and operation of
SOA-based systems can allow organizations to adapt far more readily to a changing environment.
In practice, the term HTTP is frequently used as synonym of REST … this is a source of misunderstanding
HTTP is a protocol that you can use to implement REST services BEWARE: You can build RPC-style
services with HTTP, too REST is an architectual style that may or may not be implemented with HTTP
What is Kubernetes? “Kubernetes (K8s) is an open-source system for automating deployment, scaling,
and management of containerized applications.” (https://kubernetes.io/)
Why is K8s so developer friendly? “Containerization [and therefore K8s as well] transforms the data
center of being machine-oriented to being application oriented.” [BGOBW2016, p.5]
“Kubernetes was built to radically change the way that applications are built and deployed in the cloud.
Fundamentally, it was designed to give developers more velocity, efficiency, and agility