Modernization readiness factors - AWS Prescriptive Guidance

Modernization readiness factors

Observe the following standards and best practices when you’re modernizing your applications.

Code

  • Provide code comments that document the functionality of your software, and use them to generate documentation.

  • Follow code management and deployment processes that support frequent code check-ins and traceability to feature requests.

  • Build test suites that include unit, functional, performance, and critical path tests, with 100 percent code coverage.

  • Encourage code reuse to deliver the same or similar functionality in your code base.

  • Develop prototypes to validate features with users before investing in full code development.

Build and test

  • Redefine feature completeness based on testing, to improve quality and prevent recurring issues.

  • Automate acceptance tests.

  • Monitor all automated tests, and establish a process for handling failures in place.

  • Track performance in both production and non-production environments, define service-level objectives (SLOs) based on realistic traffic and load testing, and provide the ability to scale to meet performance requirements.

  • Abstract sensitive data from configuration files, and provide tools that automate and monitor configurations.

Release

  • Automate deployments with support for dependencies (for example, database releases), regression testing, and tracking.

  • Release code to the production environment incrementally, after every successful build.

  • Manage feature flags (toggles) effectively: support run-time configuration, monitor usage, maintain flags throughout the development cycle, and assign owners by category.

  • Provide traceability in your build pipelines, to track triggers, failure notifications, and successful completion.

  • Run automated deployment processes and tests for “zero touch” code updates in continuous delivery.

  • Use zero-downtime, fully automated blue/green deployment methodologies.

  • Make sure that your database schema changes are implemented consistently across all development and production environments.

Operate

  • Create a DevOps triage runbook that’s integrated with your notification system.

  • Make sure that your monitoring and notification system meets service-level objectives (SLOs) and supports thresholds, health checks, non-standard HTTP responses, and unexpected results.

  • Establish effective risk management and disaster recovery processes.

  • Develop a log rotation and retention strategy that meets your business and legal requirements.

  • Develop dashboards that track product performance, measure the success of new features, and display alerts when metrics don’t meet expectations.

Optimize

  • Review and improve processes regularly, based on performance and quality measures.

  • Implement root cause analysis and prevention processes to prevent issues from recurring.

  • Provide data-driven metrics that capture product health, and make sure that all notifications and actions are based on these metrics.

Readiness

  • Dedicate a cross-functional team (including business partners, developers, testers, and architects) to your modernization efforts.