Search for Well Architected Advice
< All Topics
Print

Identify which kind of distributed system is required

Determining the type of distributed system required for your workload is crucial to ensure that it meets the necessary performance and reliability requirements. Different distributed systems serve different purposes: hard real-time systems require immediate, synchronous responses; soft real-time systems provide a more relaxed response time within minutes; and offline systems handle requests through batch or asynchronous processing. Hard real-time systems demand the highest reliability due to their stringent response requirements, whereas offline systems can accommodate more relaxed reliability measures.

Establish distributed system type champions in each team: Assign distributed system type champions within each workload team to determine the appropriate system type based on workload requirements. These champions are responsible for evaluating the needs of the application and ensuring that the distributed system chosen aligns with performance and reliability expectations, such as hard real-time, soft real-time, or offline processing.

Provide training on distributed system types: Train builder teams on the characteristics of different distributed systems, including hard real-time, soft real-time, and offline systems. Training should focus on the differences in response requirements, reliability standards, and the appropriate use cases for each type of system. Proper training ensures builder teams can make informed decisions about selecting the right distributed system to meet application needs.

Develop distributed system selection guidelines and standards: Create clear guidelines for identifying and selecting the appropriate type of distributed system for different workloads. These guidelines should cover criteria for determining whether hard real-time, soft real-time, or offline processing is required based on business requirements and technical constraints. Documented standards help ensure consistency and alignment with organizational goals.

Integrate system type validation into CI/CD pipelines: Integrate validation checks into CI/CD pipelines to verify that the correct type of distributed system is selected based on workload requirements. Automated checks can help identify discrepancies between the system type chosen and the application’s response requirements, reducing the risk of misconfiguration.

Define automated guardrails for distributed system selection: Use automated tools to enforce the use of appropriate distributed system types based on the workload’s requirements. Tools like AWS Step Functions, Amazon SQS, and AWS Lambda can be used to implement guardrails that ensure workloads operate using the right type of system—whether hard real-time, soft real-time, or offline processing. Automated guardrails reduce the likelihood of errors in system selection.

Foster a culture of distributed system awareness: Encourage builder teams to prioritize understanding the type of distributed system needed for each workload. Recognize and reward teams that make well-reasoned choices about system type based on application requirements, balancing performance, reliability, and efficiency. Foster open discussions about the different types of distributed systems and their benefits to create a culture of informed decision-making.

Conduct regular system type reviews: Schedule regular reviews of workload requirements to ensure that the appropriate type of distributed system is being used. These reviews should evaluate whether the system type meets performance and reliability requirements and whether any adjustments are necessary as workloads evolve. Regular reviews help maintain alignment between distributed systems and application needs.

Leverage automation for consistent system type deployment: Use Infrastructure as Code (IaC) tools like AWS CloudFormation or AWS CDK to automate the deployment of distributed systems, ensuring that workloads are configured consistently with the appropriate system type. Automating these processes helps maintain reliability and ensures that the correct distributed system type is deployed across environments.

Provide dashboards for visibility into system types and reliability: Use dashboards to provide visibility into the type of distributed system used by each workload and monitor system performance and reliability. Tools like Amazon CloudWatch and AWS X-Ray can help track latency, reliability metrics, and ensure that the system type is appropriate for the application’s requirements. Dashboards help builder teams proactively manage distributed systems and identify areas for improvement.

Supporting Questions

  • How do you ensure that builder teams choose the correct type of distributed system for their workload requirements?
  • What mechanisms are in place to validate that the selected system type aligns with performance and reliability needs?
  • How do you align distributed system selection practices with organizational standards for reliability and scalability?

Roles and Responsibilities

Distributed System Type Champion (within Builder Team)

Responsibilities:

  • Evaluate workload requirements to determine the appropriate distributed system type (hard real-time, soft real-time, or offline).
  • Ensure the selected system type aligns with the application’s performance and reliability needs.

Application Developer

Responsibilities:

  • Implement features while ensuring that the distributed system type is consistent with workload requirements.
  • Use automated tools to validate the chosen distributed system type during the development process.

Operations Team Member

Responsibilities:

  • Assist builder teams with configuring and managing distributed systems to meet performance and reliability needs.
  • Provide guidance and training to ensure alignment with best practices for distributed system selection.

Artifacts

Distributed System Selection Guidelines and Standards: A document outlining best practices for identifying and selecting the appropriate distributed system type (hard real-time, soft real-time, or offline) based on workload requirements.

Training Resources for Distributed System Types: Hands-on labs, workshops, and documentation to help teams understand how to identify and implement different types of distributed systems.

Automated System Type Validation Configurations: Scripts and configurations that help automate the validation of distributed system types across environments.

Relevant AWS Services

Training and Awareness Tools:

  • AWS Skill Builder and AWS Well-Architected Labs: Resources for learning about distributed systems, including hard real-time, soft real-time, and offline processing requirements.
  • AWS Trusted Advisor: Provides insights into workload configurations and recommendations for selecting the appropriate distributed system type.

Distributed System Implementation and Guardrails:

  • AWS Step Functions: Helps manage workflows in distributed systems, enabling both soft real-time and offline processing.
  • Amazon SQS: Supports asynchronous communication for offline processing systems.
  • AWS Lambda: Provides flexibility in implementing services with different response requirements, supporting both real-time and offline processing.

Monitoring and Visibility Tools:

  • Amazon CloudWatch: Tracks performance metrics and monitors latency to ensure the distributed system meets workload requirements.
  • AWS X-Ray: Helps trace requests across distributed components, identifying dependencies and latency issues.
  • AWS CloudFormation: Codifies system type configurations to automate and standardize distributed system deployment across environments.
Table of Contents