You are on page 1of 12

Distributed Systems

Definition: “A distributed system is a collection of independent computers that appears to its users as a
single coherent system.

Characteristics of Distributed Systems

 Autonomous Entities / Partial Failures  No Global Time  No Global Memory  Communication


Errors  Heterogeneity (technical, semantical)  Complex Associations (dynamic bindings, multi-party)

Architectural styles of distributed systems

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

Aims  Failover  Load-Balancing  Resource Usage  Response Time  Scalabi

Typical Middleware Technologies

Middleware technologies reflect different system requirements!  Implement Web Services by means of
Server Programming Technologies Servlets Spring Boot  .n

SOC = Service Oriented Computing


SOA = Service Oriented Arcitature

What is Software Architecture?


“Architecture is defined […] as the fundamental organization of a system, embodied in its components,
their relationships to each other and the environment, and the principles governing its design and
evolution.” [interfaces are missing!]  Informally speaking, software architecture is the building plan of
software that describes structure, behavior and guiding principles such as: cross-cutting mechanisms,
programming conventions, build and development practices, concurrency mechanisms
What is Software Architecture Design?

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

With computer software, a service is software that performs


automated tasks, responds to hardware events, or listens for data
requests from other software.

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

You might also like