In this lesson, we will cover the following topics:
- What is a distributed architecture?
- What challenges need to be addressed?
What is a Distributed Architecture?
A distributed architecture describes an IT setup in which system functionality is spread across multiple components that work together to deliver a complete solution. Instead of relying on a single, tightly coupled system, responsibilities are divided and coordinated through well-defined interactions.
This differs from a monolithic architecture, where all core functions are bundled into one centralized system. In distributed environments, functionality is typically split across several components, which are often also physically separated and connected through a network.
These components can include a wide range of IT systems and services, such as on-premise ERP systems (for example, SAP S/4HANA On-Prem) as well as cloud-based SaaS applications.
Challenges in distributed architectures
Due to the heterogeneity of systems, addressing the following challenges requires costly and complex solutions:
- Diverse transport and messaging protocols
- Integration of various communication methods
- Release management
- Coordinating updates and version compatibility
- Monitoring
- Ensuring visibility into system performance and health
- Error identification and correction
- Detecting and resolving issues efficiently
- Latency
- Minimizing delays in communication and processing
- Quality of Service (QoS)
- Maintaining reliable and consistent system performance
- Security
- Protecting data and services from threats
- Implementation availability
- Ensuring necessary features are implemented and accessible
- Observability
- Providing insights into system behavior and performance
- Documentation
- Maintaining clear and comprehensive records of systems and interfaces
Summary
Automating technical processes in distributed systems often involves integrating a wide variety of software components, installations, technologies, and geographically dispersed resources. These components communicate over networks using different protocols, and their functionalities are exposed as services. The interaction between these services is facilitated through Application Programming Interfaces (APIs).