Explain various non functional requirements of complex system and how to meet these requirements using aws services
Non-functional requirements (NFRs) are crucial for ensuring that a system operates effectively across various dimensions such as performance, scalability, security, and reliability. Here's an overview of the top five non-functional requirements and how you can implement them using AWS services:
1. Scalability
Definition: Scalability is the ability of a system to handle growth in workload by adding resources, either being able to handle growing amounts of work in a graceful manner (vertical scalability) or by enabling the addition of nodes to the system (horizontal scalability).
Implementation with AWS:
- Auto Scaling Groups (ASG) and Elastic Load Balancing (ELB): Automatically scale your Amazon EC2 instances up or down according to conditions you define. Distribute incoming traffic across multiple targets, such as EC2 instances, in multiple Availability Zones.
- Amazon RDS: The relational database service that automatically scales its storage and allows easy vertical scaling by changing instance sizes. It supports read replicas to scale read operations.
- Amazon S3 and DynamoDB: Both services offer high scalability for storage needs. S3 for object storage and DynamoDB for NoSQL database requirements, both capable of handling large amounts of traffic and data.
2. Performance
Definition: Performance refers to the responsiveness of the system to execute any action within a given time frame, which includes processing speed, latency, throughput, etc.
Implementation with AWS:
- Amazon CloudFront: A fast content delivery network (CDN) service that securely delivers data, videos, applications, and APIs to customers globally with low latency and high transfer speeds.
- Amazon ElastiCache: Improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory caches, instead of relying solely on slower disk-based databases.
- AWS Lambda@Edge: Run code closer to users of your application, which can help reduce latency and improve the performance of your applications.
3. Availability and Reliability
Definition: Availability refers to the system being accessible and operational when required, while reliability refers to the system’s ability to perform its required functions under stated conditions for a specified period of time.
Implementation with AWS:
- Multi-AZ Deployments for Amazon RDS and Amazon EC2 Auto Recovery: Ensure that your database and application layers can automatically recover from failures and are available in multiple geographical locations.
- Amazon Route 53: A highly available and scalable cloud Domain Name System (DNS) web service, designed to give developers and businesses an extremely reliable and cost-effective way to route end users to Internet applications.
4. Security
Definition: Security involves ensuring the confidentiality, integrity, and availability of data. It encompasses measures to protect against unauthorized access, disclosure, alteration, and destruction of information.
Implementation with AWS:
- AWS Identity and Access Management (IAM): Manage access to AWS services and resources securely. Using IAM, you can create and manage AWS users and groups, and use permissions to allow and deny their access to AWS resources.
- Amazon VPC: Lets you provision a logically isolated section of the AWS Cloud where you can launch AWS resources in a virtual network that you define. This includes subnets, route tables, and network gateways.
- AWS Shield and AWS WAF: Provide DDoS protection (Shield) and a web application firewall (WAF) that helps protect your web applications or APIs against common web exploits and bots.
5. Disaster Recovery (DR)
Definition: Disaster Recovery involves a set of policies, tools, and procedures to enable the recovery or continuation of vital technology infrastructure and systems following a natural or human-induced disaster.
Implementation with AWS:
- Amazon RDS Multi-AZ Deployments and Amazon S3 Cross-Region Replication: Ensure that your data is automatically backed up and stored in multiple locations to support quick recovery in the event of a disaster.
- AWS Backup: Centrally manage and automate backups across AWS services. It supports policies for retaining and encrypting your backups.
- Amazon Route 53 Failover Routing: Automatically route your users to an alternate location if your primary application endpoint becomes unavailable.
Implementing these non-functional requirements effectively can significantly enhance the resilience, efficiency, and user satisfaction of your system. AWS provides a comprehensive set of services that can help design systems that not only meet but exceed these requirements.