Best Practices for Designing Cloud-Based Systems

Best Practices for Designing Cloud-Based Systems

Question

Which of the following are best practices when designing cloud-based systems? Choose 2 answers from the options below.

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

Answer - B and C.

Always build components that are loosely coupled.

This is so that even if one component does fail, the entire system does not fail.

If you build with the assumption that everything will fail, you will ensure that the right measures are taken to build a highly available and fault-tolerant system.

Option D is incorrect because using multiple services increases cost and operational burden, rather use less and efficient services like serverless storage services and serverless compute services.

For more information on a well-architected framework, please refer to the below URL:

https://d0.awsstatic.com/whitepapers/architecture/AWS_Well-Architected_Framework.pdf

The two best practices when designing cloud-based systems are building loosely-coupled components and assuming everything will fail.

Building loosely-coupled components means designing the components of the system in a way that they are independent of each other and have minimal interdependencies. This allows for greater flexibility and scalability as changes can be made to one component without affecting the rest of the system. This also makes it easier to troubleshoot and debug the system in case of failures.

Assuming everything will fail is a key principle of designing systems for the cloud. This means anticipating that any component of the system can fail at any time, and designing the system to be resilient to such failures. This involves using redundancy and fault tolerance mechanisms to ensure that the system continues to operate even in the face of failures.

Building tightly-coupled components, on the other hand, can lead to increased interdependencies between components, making it harder to make changes or troubleshoot issues. It can also make the system less resilient to failures as a failure in one component can have a cascading effect on other components.

Using as many services as possible may also not be a best practice as it can lead to increased complexity and cost. It's important to evaluate which services are necessary for the system and choose them carefully, rather than just using as many as possible.