To build a the whole system for a company, many layers and systems are used.
Enterprise architecture levels
- to abstract from software, hardware, functions, processes etc.
- in a company we have domains (sales, HR, finance, production…)
- each domain uses a application (CRM = customer relationship management, OMS = order management system etc.)
- different abstract applications and systems that make up the whole enterpise system in the company
- all these systems require software, hardware and be connected to other systems
- each application is used by different roles within the company (or customers) and their needs have to be satisfied
- different roles for architects
- Enterprise architect
- manages the whole enterprise system and their connection
- Solution architect
- manages the specific domain to satisfy the business needs
- Technical architect
- manages the specific technical part (API, Cloud, Security etc.)
- Enterprise architect
Software architecture
- centralised - with a central server and their clients
- SPoF = single point of failure
- mostly the solution for enterprise systems
- enhanced with P2P principles (such as messaging systems)
- P2P (decentralized) systems = peer to peer systems
- decentralized, if one node fails, other nodes can take up it’s function
- highly scalable
- use of messaging systems in enterprise systems
Integration issues
- when all applications are connected together (one action depend on another, one affects data and another act by it etc.), many integration issues can arise - they are solved by:
- standard interfaces (or mediators/adapters)
- message exchange formats, common and understandable data representation
- standardization of semantics of the data (this is often difficult)
- orchestrating of processes and functions
Separation of concerns
- the system needs to be separated into layers, which should not overlap
- Návrh architektury aplikace
- separation to presentation, application, data
- thick client = presentation + application
-
- database on a server (data layer)
-
- thin client = presentation
-
- app server + database server
-
- multi-tier client/server
- additional layers of middleware (value added to the communication)
- could be individual layer of e.g. Enterprise service bus
- additional layers of middleware (value added to the communication)
- thin client + microservices Microservices
- there has to be a service orchestration layer (Kubernetes, clusters)
- GRASP - Nízká provázanost = loose coupling
- Návrh architektury aplikace
- layer communicate through interface
- Části interface
- = “Agreement (contract) between two or more layers during communication”
- defines: data formats, functions available, process interface (state transitions), technical interface (HTTPS, ports, authentications)
- Části interface