Domain 3: Design High-Performing Architectures Flashcards
A pharmaceutical company has begun to explore using AWS cloud services for their computation workloads for processing incoming orders. Currently, they process orders on-premises using self-managed virtual machines with batch software installed. The current infrastructure design does not scale well and is cumbersome to update. In addition, each processed batch job takes roughly 30-45 minutes to complete. The processing times cannot be reduced due to the complexity of the application code, and they want to make the new solution as hands-off as possible with automatic scaling based on the number of queued orders.
Which AWS service would you recommend they use for this application design that best meets their needs and is cost optimized?
Amazon EKS
AWS Batch
AWS Lambda with Amazon SQS
An Amazon EC2 AMI with batch software installed used in an Auto Scaling group
AWS Batch
AWS Batch is perfect for long-running (>15 minutes) batch computation workloads within AWS while leveraging managed compute infrastructure. It automatically provisions compute resources and then optimizes workload distribution based on the quantity and scale of your workloads.
Reference: AWS Batch
AWS Lambda with Amazon SQS
AWS Lambda has a 15-minute execution timeout limit, which makes it unfit for this architecture.
Selected
Your boss has tasked you with decoupling your existing web frontend from the backend. Both applications run on EC2 instances. After you investigate the existing architecture, you find that (on average) the backend resources are processing about 50,000 requests per second and will need something that supports their extreme level of message processing. It’s also important that each request is processed only 1 time. What can you do to decouple these resources?
Use SQS Standard. Include a unique ordering ID in each message, and have the backend application use this to deduplicate messages.
Upsize your EC2 instances to reduce the message load on the backend servers.
Use SQS FIFO to decouple the applications.
Use S3 to store the messages being sent between the EC2 instances.
Use SQS Standard. Include a unique ordering ID in each message, and have the backend application use this to deduplicate messages.
This would be a great choice, as SQS Standard can handle this level of extreme performance. If the application didn’t require this level of performance, then SQS FIFO would be the better and easier choice. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html
Use SQS FIFO to decouple the applications.
While this would seem like the correct answer at first glance, it’s important to know SQS FIFO has a batch limit of 3,000 messages per second and can’t handle the extreme level of performance that’s required in this situation. https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/quotas-messages.html
A travel company has deployed a web application that serves travel updates to users all over the world. This application uses an Amazon RDS database, which is very read-heavy and can have performance issues at certain times of the year. What can you do to enhance performance and reduce the load on your source DB instance?
Place CloudFront in front of the Database.
Add read replicas
Configure multi-Region RDS
Configure RDS Multi-AZ
Add read replicas
Amazon RDS Read Replicas provide enhanced performance and durability for RDS database (DB) instances. They can be within an Availability Zone, Cross-AZ, or Cross-Region, and make it easy to elastically scale out beyond the capacity constraints of a single DB instance for read-heavy database workloads. You can create one or more replicas of a given source DB Instance and serve high-volume application read traffic from multiple copies of your data, thereby increasing aggregate read throughput. Read replicas can also be promoted when needed to become standalone DB instances. Read replicas are available in Amazon RDS for MySQL, MariaDB, PostgreSQL, Oracle, and SQL Server as well as Amazon Aurora. AWS Documentation: Amazon RDS Read Replicas.
You have just started work at a small startup in the Seattle area. Your first job is to help containerize your company’s microservices and move them to AWS. The team has selected ECS as their orchestration service of choice. You’ve discovered the code currently uses access keys and secret access keys in order to communicate with S3. How can you best handle this authentication for the newly containerized application?
Leave the credentials where they are.
Migrate the access and secret access keys to the Dockerfile.
Attach a role to the EC2 instances that will run your ECS tasks.
Attach a role with the appropriate permissions to the task definition in ECS.
Attach a role with the appropriate permissions to the task definition in ECS.
It’s always a good idea to use roles over hard-coded credentials. One of the best parts of using ECS is the ease of attaching roles to your containers. This allows the container to have an individual role even if it’s running with other containers on the same EC2 instance. https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html
You have been assigned to create an architecture which uses load balancers to direct traffic to an Auto Scaling Group of EC2 instances across multiple Availability Zones. The application to be deployed on these instances is a life insurance application which requires path-based and host-based routing. Which type of load balancer will you need to use?
Network Load Balancer
Application Load Balancer
Any type of load balancer will meet these requirements.
Classic Load Balancer
Application Load Balancer
Correct. Only the Application Load Balancer can support path-based and host-based routing. Using an Application Load Balancer instead of a Classic Load Balancer has the following benefits:
Support for path-based routing. You can configure rules for your listener that forward requests based on the URL in the request. This enables you to structure your application as smaller services, and route requests to the correct service based on the content of the URL.
Support for host-based routing. You can configure rules for your listener that forward requests based on the host field in the HTTP header. This enables you to route requests to multiple domains using a single load balancer.
Support for routing based on fields in the request, such as standard and custom HTTP headers and methods, query parameters, and source IP addresses.
Support for routing requests to multiple applications on a single EC2 instance. You can register each instance or IP address with the same target group using multiple ports.
Support for redirecting requests from one URL to another.
Support for returning a custom HTTP response.
Support for registering targets by IP address, including targets outside the VPC for the load balancer.
Support for registering Lambda functions as targets.
Support for the load balancer to authenticate users of your applications through their corporate or social identities before routing requests.
Support for containerized applications. Amazon Elastic Container Service (Amazon ECS) can select an unused port when scheduling a task and register the task with a target group using this port. This enables you to make efficient use of your clusters.
Support for monitoring the health of each service independently, as health checks are defined at the target group level and many CloudWatch metrics are reported at the target group level. Attaching a target group to an Auto Scaling group enables you to scale each service dynamically based on demand.
Access logs contain additional information and are stored in compressed format.
Improved load balancer performance. https://docs.aws.amazon.com/elasticloadbalancing/latest/application/introduction.html#application-load-balancer-benefits https://aws.amazon.com/elasticloadbalancing/faqs/
You have just been hired by a large organization which uses many different AWS services in their environment. Some of the services which handle data include: RDS, Redshift, ElastiCache, DynamoDB, S3, and Glacier. You have been instructed to configure a web application using stateless web servers. Which services can you use to handle session state data? CHOOSE 3
Amazon DynamoDB
Amazon ElastiCache
Amazon Redshift
Amazon S3 Glacier
Amazon RDS
Amazon DynamoDB
Elasticache and DynamoDB can both be used to store session data. https://aws.amazon.com/caching/session-management/
https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/dynamodb-session-net-sdk.html
Selected
Amazon ElastiCache
Elasticache and DynamoDB both can be used to store session data. https://aws.amazon.com/caching/session-management/
https://docs.aws.amazon.com/sdk-for-net/v2/developer-guide/dynamodb-session-net-sdk.html
Selected
Amazon RDS
Correct. Amazon RDS can store session state data. It is slower than Amazon DynamoDB, but may be fast enough for some situations.
Selected
A large financial institution is gradually moving their infrastructure and applications to AWS. The company has data needs that will utilize all of RDS, DynamoDB, Redshift, and ElastiCache. Which description best describes Amazon Redshift?
Cloud-based relational database.
Key-value and document database that delivers single-digit millisecond performance at any scale.
Near real-time complex querying on massive data sets.
Can be used to significantly improve latency and throughput for many read-heavy application workloads.
Near real-time complex querying on massive data sets.
Amazon Redshift is a fast, fully-managed cloud data warehouse that makes it simple and cost-effective to analyze all your data using standard SQL and your existing Business Intelligence (BI) tools. It allows you to run complex analytic queries against terabytes to petabytes of structured data, using sophisticated query optimization, columnar storage on high-performance storage, and massively parallel query execution. Most results come back in seconds. With Redshift, you can start small for just $0.25 per hour with no commitments and scale out to petabytes of data for $1,000 per terabyte per year, less than a tenth the cost of traditional on-premises solutions. Amazon Redshift also includes Amazon Redshift Spectrum, allowing you to run SQL queries directly against exabytes of unstructured data in Amazon S3 data lakes. No loading or transformation is required, and you can use open data formats, including Avro, CSV, Grok, Amazon Ion, JSON, ORC, Parquet, RCFile, RegexSerDe, Sequence, Text, and TSV. Redshift Spectrum automatically scales query compute capacity based on the data retrieved, so queries against Amazon S3 run fast, regardless of data set size. https://aws.amazon.com/redshift/faqs/
Your company has asked you to look into some latency issues with the company web app. The application is backed by an AWS RDS database. Your analysis has determined that the requests made of the application are very read heavy, and this is where improvements can be made. Which service can you use to store frequently accessed data in-memory?
Amazon DynamoDB
Amazon DynamoDB Accelerator (DAX)
Amazon ElastiCache
Amazon EBS
Amazon ElastiCache
Amazon ElastiCache is a web service that makes it easy to deploy, operate, and scale an in-memory data store or cache in the cloud. The service improves the performance of web applications by allowing you to retrieve information from fast, managed, in-memory data stores, instead of relying entirely on slower disk-based databases. There are two types of ElastiCache available: Memcached and Redis. Here is a good overview and comparison between them: https://aws.amazon.com/elasticache/redis-vs-memcached/
You have multiple EC2 instances housing applications in a VPC in a single Availability Zone. Your EC2 workloads need low-latency network performance, high network throughput, and a tightly-coupled node-to-node communication. What’s the best measure you can do to ensure this throughput?
Use Auto Scaling Groups
Use Elastic Network Interfaces
Increase the size of the instances
Launch your instances in a cluster placement group
Launch your instances in a cluster placement group
A cluster placement group is a logical grouping of instances within a single Availability Zone. A cluster placement group can span peered VPCs in the same Region. Instances in the same cluster placement group enjoy a higher per-flow throughput limit for TCP/IP traffic and are placed in the same high-bisection bandwidth segment of the network. Reference: Placement groups.
You have been tasked to review your company disaster recovery plan due to some new requirements. The driving factor is that the Recovery Time Objective has become very aggressive. Because of this, it has been decided to configure Multi-AZ deployments for the RDS MySQL databases. Unrelated to DR, it has been determined that some read traffic needs to be offloaded from the master database. What steps can be taken to meet this requirement? CHOOSE 2
Redirect some of the read traffic to the standby databases.
Use an Amazon RDS Multi-AZ with two readable standbys setup.
Convert to Aurora to allow the standby to serve read traffic.
Add DAX to the solution to alleviate excess read traffic.
Redirect some of the read traffic to the standby databases.
With an Amazon RDS Multi-AZ deployment that has two readable standbys, you can redirect some of the read traffic to the standby databases. This setup provides separate endpoints for reads and writes. By routing read queries to the appropriate read replica standby instances, you can offload read traffic from the master database, optimizing performance and scalability.
Selected
Use an Amazon RDS Multi-AZ with two readable standbys setup.
Amazon RDS Multi-AZ deployments with two readable standbys offer enhanced availability and performance for database instances. In case of a failure, RDS ensures rapid automatic failover to a standby. This setup provides distinct endpoints for reading and writing, allowing read traffic to be offloaded from the master database. By distributing traffic across two readable standby instances, it ensures optimal performance and scalability, making it an ideal solution for high availability and efficient read operations.
Selected
A professional baseball league has chosen to use a key-value and document database for storage, processing, and data delivery. Many of the data requirements involve high-speed processing of data such as a Doppler radar system which samples the position of the baseball 2000 times per second. Which AWS data storage can meet these requirements?
S3
RDS
Redshift
DynamoDB
DynamoDB
Amazon DynamoDB is a NoSQL database that supports key-value and document data models, and enables developers to build modern, serverless applications that can start small and scale globally to support petabytes of data and tens of millions of read and write requests per second. DynamoDB is designed to run high-performance, internet-scale applications that would overburden traditional relational databases. https://aws.amazon.com/dynamodb/features/
Bill is a cloud solutions architect for a small technology startup company. The company started out completely on-premises, but Bill has finally convinced them to explore shifting their application to AWS. The application is fairly complex and leverages message brokers that communicate using AMQP 1.0 protocols to exchange data between nodes and complete workloads.
Which service should Bill use to design the new AWS cloud-based architecture?
Amazon SNS
AWS Batch
Amazon MQ
Amazon SQS
Amazon MQ
Amazon MQ offers a managed broker service in AWS. It is meant for applications that need a specific message broker like RabbitMQ and ActiveMQ, as well as very specific messaging protocols (AMQP, STOMP, OpenWire, WebSocket, and MQTT) and frameworks.
Reference: Amazon MQ
You have configured an Auto Scaling Group of EC2 instances. You have begun testing the scaling of the Auto Scaling Group using a stress tool to force the CPU utilization metric being used to force scale out actions. The stress tool is also being manipulated by removing stress to force a scale in. But you notice that these actions are only taking place in five-minute intervals. What is happening?
A load balancer is managing the load and limiting the effectiveness of stressing the servers.
The stress tool is configured to run for five minutes.
Auto Scaling Groups can only scale in intervals of five minutes or greater.
The Auto Scaling Group is following the default cooldown procedure.
The Auto Scaling Group is following the default cooldown procedure.
The cooldown period helps you prevent your Auto Scaling group from launching or terminating additional instances before the effects of previous activities are visible. You can configure the length of time based on your instance startup time or other application needs. When you use simple scaling, after the Auto Scaling group scales using a simple scaling policy, it waits for a cooldown period to complete before any further scaling activities due to simple scaling policies can start. An adequate cooldown period helps to prevent the initiation of an additional scaling activity based on stale metrics. By default, all simple scaling policies use the default cooldown period associated with your Auto Scaling Group, but you can configure a different cooldown period for certain policies, as described in the following sections. Note that Amazon EC2 Auto Scaling honors cooldown periods when using simple scaling policies, but not when using other scaling policies or scheduled scaling. A default cooldown period automatically applies to any scaling activities for simple scaling policies, and you can optionally request to have it apply to your manual scaling activities. When you use the AWS Management Console to update an Auto Scaling Group, or when you use the AWS CLI or an AWS SDK to create or update an Auto Scaling Group, you can set the optional default cooldown parameter. If a value for the default cooldown period is not provided, its default value is 300 seconds. https://docs.aws.amazon.com/autoscaling/ec2/userguide/Cooldown.html
You work for an online school that teaches IT by recording their screen and narrating what they are doing. The school is becoming quite popular, and you need to convert the video files into many different formats to support various laptops, tablets, and mobile devices. Which AWS service should you consider using?
Amazon Elastic Transcoder
Amazon CloudWatch
Amazon CloudFront
Amazon Kinesis Video Streams
Amazon Elastic Transcoder
Amazon Elastic Transcoder allows businesses and developers to convert media files from their original source format into versions that are optimized for various devices, such as smartphones, tablets, and PCs.
You work for an oil and gas company as a lead in data analytics. The company is using IoT devices to better understand their assets in the field (for example, pumps, generators, valve assemblies, and so on). Your task is to monitor the IoT devices in real-time to provide valuable insight that can help you maintain the reliability, availability, and performance of your IoT devices. What tool can you use to process streaming data in real time with standard SQL without having to learn new programming languages or processing frameworks?
AWS Kinesis Streams
AWS RedShift
Amazon Managed Service for Apache Flink (formerly known as Kinesis Data Analytics)
AWS Lambda
Amazon Managed Service for Apache Flink (formerly known as Kinesis Data Analytics)
Utilizing Amazon Managed Service for Apache Flink allows the company to process, analyze, and act upon the streaming data from their field devices in real time, ensuring that insights can be derived promptly and any necessary actions (such as maintenance alerts for the devices) can be triggered immediately, enhancing the reliability, availability, and performance of the IoT devices in the field.