Which of the following are best practices when designing cloud-based systems? Choose 2 answers from the options below.
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.pdfThe best practices for designing cloud-based systems involve building loosely-coupled components and assuming everything will fail.
Build Loosely-coupled components: The cloud-based systems should be designed using loosely-coupled components, which means that the components should not be highly dependent on each other. This provides flexibility in the system, enabling the components to be easily replaced, upgraded or modified without affecting the entire system. This design principle allows for increased scalability, reliability, and agility of the system.
Assume Everything Will Fail: In a cloud-based system, there are multiple services and components working together. Therefore, it is necessary to assume that some of these components will fail at some point in time. By assuming this, the system can be designed in a way that ensures fault tolerance, high availability, and disaster recovery. To achieve this, components can be replicated in different availability zones or regions to ensure that even if one component fails, the system will continue to operate without disruption.
Avoid Tightly-coupled components: Tightly-coupled components can create issues when scaling the system, making it challenging to replace, upgrade, or modify individual components without impacting the entire system. This approach is not suitable for cloud-based systems as it can increase the risk of system downtime and limit the scalability and agility of the system.
Use Only the Necessary Services: Using as many services as possible may seem like a good idea, but it can have several negative implications. It can lead to higher costs, increased complexity, and reduced agility, as there may be too many components to manage. Therefore, it is important to use only the necessary services that are required to achieve the desired outcomes.
In summary, to design a cloud-based system that is scalable, reliable, and fault-tolerant, it is necessary to use loosely-coupled components and assume that everything will fail. It is also essential to avoid tightly-coupled components and use only the necessary services to reduce complexity and costs.