Catalog
concept#Architecture#Software Engineering#Decentralization

Choreography

Choreography describes the coordination and interaction between different components in a system.

Choreography is a concept that describes how systems or components communicate and interact with each other.
Established
Medium

Classification

  • Medium
  • Technical
  • Design
  • Advanced

Technical context

Cloud ServicesDatabasesThird-Party APIs

Principles & goals

Loose CouplingReusabilityFlexibility
Build
Domain

Use cases & scenarios

Compromises

  • Insufficient error handling can lead to issues.
  • Performance issues under high load.
  • Complexity can lead to confusion.
  • Document all interfaces.
  • Use standard protocols for communication.
  • Implement monitoring tools.

I/O & resources

  • User Inputs
  • Data Sources
  • API Access
  • Processing Results
  • Transaction Data
  • Reporting

Description

Choreography is a concept that describes how systems or components communicate and interact with each other. It enables the decentralization of control and promotes flexible, reactive architectures.

  • Increased flexibility in system architecture.
  • Better maintainability of components.
  • Easier integration of new features.

  • Can become complicated when many systems are involved.
  • Requires well-defined interfaces.
  • More effort in synchronization.

  • Response Time

    The time it takes for the system to respond to requests.

  • Error Rate

    The percentage of erroneous requests in the system.

  • System Availability

    The percentage of time the system is operational.

Project A

A project using microservices to scale the application.

Project B

A system for real-time data processing for online transactions.

Project C

An automation tool for business processes in a large organization.

1

Design the system architecture.

2

Define the API interfaces.

3

Implement and test components.

⚠️ Technical debt & bottlenecks

  • Outdated Libraries
  • Insufficient Testing
  • Lack of Documentation
System ComplexityIntegrationNetwork Bandwidth
  • Ignoring error handling.
  • Incorrect implementation of APIs.
  • Insufficient testing of components.
  • Too much reliance on automation.
  • Insufficient monitoring of systems.
  • Overlooking scaling requirements.
Architectural KnowledgeProgramming SkillsData Integration Knowledge
ModularityInteroperabilityScalability
  • Technology Limitations
  • Resource Availability
  • Regulatory Requirements