When building and designing new cloud-based applications, we usually start by looking at the functional requirements, which will define the functionality and objective of the application. These are all the things that the users of the application expect, such as shopping online, searching for products, and ordering. However, it is equally important that we consider the non-functional requirements of applications like the ease of deployments, monitoring, scalability, and reliability. We have 3 the so-called “ilities, that should be considered while architecting the cloud-based application.
Deployability: Flow and agility to consistently deploy new features. It includes services such as AWS CodePipeline, AWS CodeBuild, AWS CodeDeploy, and AWS CodeCommit
Observability: Feedback about the state of the application. we can leverage Amazon CloudWatch to gather and search through logs and metrics, AWS X-Ray for tracing, and Amazon QuickSight as an analytics tool to measure CI/CD metrics.
Disposability: Throwing away resources and provision new ones quickly. we can achieve disposability with serverless using AWS Lambda, or with containers running on Amazon Elastic Container Service (ECS) or Amazon Elastic Kubernetes Service (EKS), or using AWS Auto Scaling with Amazon Elastic Compute Cloud (EC2).
Designing applications considering these requirements provides better manageability of a cloud application on Day 2 and can always be observed with multiple views or lenses.
- Build lens: This can be helpful to achieve the deployability by providing the platform that will allow developers deploy code changes quickly and frequently using the atomated pipilines that can be executed with every code change. It will maintain the standard of deployments and will decrease the manual intervention , that itself saves time and cost.
- Runtime lens: This will help to achieve the application scalability & reliability that itself will maximise the user exprience.
- Operate lens: This will help in monitoring and visibility of application functioning that itself will help the developers to enhance the user exprience.
Overall It is very important that we consider both functional and non-functional requirements of the application in the early phase of software development. It will help us to focus on both application users (consumers ) and technical people like developers and system admins.
Note:- I have collected this information from AWS official documentation and try to concise it for the readers. Please refer this for detailed understanding of AWS services https://docs.aws.amazon.com/