Search for Well Architected Advice
< All Topics
Print

Implement graceful degradation to transform applicable hard dependencies into soft dependencies

Graceful degradation allows application components to continue performing their core functions even when certain dependencies are unavailable. By transforming hard dependencies into soft dependencies, your system can still deliver central business value, though it might provide stale data, alternate data, or reduced functionality. This approach ensures that localized failures have only a minimal impact on the overall system, improving resilience and user experience in the face of partial service outages.

Establish graceful degradation champions in each team: Assign graceful degradation champions within each workload team to oversee the transformation of hard dependencies into soft dependencies. These champions ensure that systems are designed to handle the unavailability of certain dependencies while maintaining core functionality.

Provide training on graceful degradation principles: Train builder teams on best practices for implementing graceful degradation, including designing fallback mechanisms and handling failure scenarios gracefully. Training should cover using alternate data sources, caching, or reduced functionality to keep services operational. Proper training ensures teams can implement solutions that allow systems to continue delivering value during partial failures.

Develop graceful degradation guidelines and standards: Create clear guidelines for transforming hard dependencies into soft dependencies. These guidelines should include best practices for identifying critical components, designing fallback mechanisms, and handling situations where data might be stale or unavailable. Documented standards help ensure consistency across services, improving resilience in the face of failure.

Integrate degradation validation into CI/CD pipelines: Integrate validation checks into CI/CD pipelines to ensure that systems are designed to degrade gracefully when dependencies are unavailable. Automated tests can simulate the failure of dependencies to verify that fallback mechanisms function correctly, reducing the risk of complete system failure.

Define automated guardrails for graceful degradation: Use automated tools to enforce the implementation of graceful degradation across application components. Tools like AWS Step Functions, AWS Lambda, and Amazon CloudFront can be configured to provide alternate workflows or data sources in the event of a failure. Automated guardrails help ensure that critical services continue to function even during localized outages.

Foster a culture of resilience and fallback planning: Encourage builder teams to prioritize resilience and graceful degradation when designing systems, particularly those that depend on external services or third-party APIs. Recognize and reward teams that effectively transform hard dependencies into soft dependencies, ensuring that critical functionality remains intact during failures. Open discussions about lessons learned from dependency failures can help foster a culture that values resilience and continuous improvement.

Conduct regular degradation reviews: Schedule regular reviews to evaluate the ability of systems to degrade gracefully. These reviews should assess whether each component can handle dependency failures and maintain core functionality. Regular reviews help maintain a focus on transforming hard dependencies into soft dependencies and improving system resilience.

Leverage automation for consistent graceful degradation: Use Infrastructure as Code (IaC) tools like AWS CloudFormation or AWS CDK to automate the deployment of components that can gracefully degrade in response to dependency failures. Automating these processes helps maintain consistency across environments and ensures that graceful degradation is applied uniformly across all services.

Provide dashboards for visibility into degradation behavior: Use dashboards to provide visibility into how systems behave when dependencies become unavailable, including which fallback mechanisms are in place and how effectively they are functioning. Tools like Amazon CloudWatch and AWS X-Ray can help monitor service degradation and assess the effectiveness of fallback strategies. Dashboards help builder teams proactively manage graceful degradation and identify areas for improvement.

Supporting Questions

  • How do you ensure that builder teams design systems that gracefully degrade when dependencies fail?
  • What mechanisms are in place to validate that fallback mechanisms function correctly during dependency failures?
  • How do you align system design practices with organizational standards for resilience and graceful degradation?

Roles and Responsibilities

Graceful Degradation Champion (within Builder Team)

Responsibilities:

  • Guide the transformation of hard dependencies into soft dependencies to ensure resilience.
  • Oversee the design and implementation of fallback mechanisms that allow core functionality to continue during failures.

Application Developer

Responsibilities:

  • Implement features that degrade gracefully when dependencies fail, maintaining core functionality where possible.
  • Use automated tools to validate fallback mechanisms during the development process.

Operations Team Member

Responsibilities:

  • Assist builder teams with configuring systems to degrade gracefully in response to dependency failures.
  • Provide guidance and training to ensure alignment with best practices for graceful degradation and resilience.

Artifacts

Graceful Degradation Guidelines and Standards: A document outlining best practices for transforming hard dependencies into soft dependencies, including designing fallback mechanisms and handling partial failures.

Training Resources for Graceful Degradation: Hands-on labs, workshops, and documentation to help teams understand how to implement graceful degradation effectively.

Automated Degradation Validation Configurations: Scripts and configurations that help automate the validation of graceful degradation across services and environments.

Relevant AWS Services

Training and Awareness Tools:

  • AWS Skill Builder and AWS Well-Architected Labs: Resources for learning about designing systems that degrade gracefully and transforming hard dependencies into soft dependencies.
  • AWS Trusted Advisor: Provides insights into dependency configurations and recommendations for improving resilience through graceful degradation.

Degradation Implementation and Guardrails:

  • AWS Lambda: Helps implement alternate workflows to continue core functionality during dependency failures.
  • AWS Step Functions: Orchestrates workflows that adapt to failures and maintain business value.
  • Amazon CloudFront: Caches data and serves stale content when backend services are unavailable, ensuring continuity in degraded conditions.

Monitoring and Visibility Tools:

  • Amazon CloudWatch: Monitors system performance and identifies when fallback mechanisms are in use, providing alerts for dependency failures.
  • AWS X-Ray: Traces requests across services to verify that graceful degradation is functioning as expected and dependencies are handled properly.
  • AWS CloudFormation: Codifies graceful degradation configurations to automate and standardize fallback mechanisms across environments.
Table of Contents