<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>high-performing-architectures on Alperen Doc</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/</link><description>Recent content in high-performing-architectures on Alperen Doc</description><generator>Hugo</generator><language>en</language><atom:link href="https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/index.xml" rel="self" type="application/rss+xml"/><item><title>s3-storage-and-performance</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/s3-storage-and-performance/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/s3-storage-and-performance/</guid><description>&lt;h1 id="s3-simple-storage-service-storage-classes-and-performance"&gt;S3 (Simple Storage Service) Storage Classes and Performance&lt;a class="anchor" href="#s3-simple-storage-service-storage-classes-and-performance"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Two things get tested: &lt;strong&gt;which storage class for which data&lt;/strong&gt; (mostly a cost question - see &lt;a href="../../cost-optimized-architectures/s3-cost-and-lifecycle-policies/"&gt;s3-cost&lt;/a&gt; - but with performance implications) and &lt;strong&gt;how to move big data in and out fast&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="storage-classes-at-a-glance"&gt;Storage classes at a glance&lt;a class="anchor" href="#storage-classes-at-a-glance"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Class&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Durability / AZs (Availability Zone)&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Access pattern&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Min storage&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;S3 Standard&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Frequent, low latency&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;-&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Standard-IA&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Infrequent but instant&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;30 days&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;One Zone-IA&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.5% / &lt;strong&gt;1 AZ&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Infrequent, re-creatable&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;30 days&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Intelligent-Tiering&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Unknown/changing patterns&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;None (small monitoring fee/object)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Glacier Instant Retrieval&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Archival, &lt;strong&gt;ms&lt;/strong&gt; retrieval&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;90 days&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Glacier Flexible Retrieval&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Archive, minutes-hours&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;90 days&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Glacier Deep Archive&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;99.99% / 3+ AZs&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Archive, 12-48h retrieval&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;180 days&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Rules of thumb:&lt;/p&gt;</description></item><item><title>block-and-file-storage-ebs-efs-fsx</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/block-and-file-storage-ebs-efs-fsx/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/block-and-file-storage-ebs-efs-fsx/</guid><description>&lt;h1 id="block-and-file-storage-ebs-efs-and-amazon-fsx-deep-dive"&gt;Block and File Storage: EBS, EFS and Amazon FSx Deep Dive&lt;a class="anchor" href="#block-and-file-storage-ebs-efs-and-amazon-fsx-deep-dive"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;S3 (Simple Storage Service) handles objects, but applications running on EC2 (Elastic Compute Cloud) or containers often need &lt;strong&gt;block storage&lt;/strong&gt; (like a local hard drive) or &lt;strong&gt;shared file storage&lt;/strong&gt; (NFS/SMB). Choosing the right storage type, volume tier, or FSx flavor is one of the most heavily tested topics on the SAA-C03 exam.&lt;/p&gt;&#10;&lt;h2 id="block-vs-file-vs-object-at-a-glance"&gt;Block vs File vs Object at a glance&lt;a class="anchor" href="#block-vs-file-vs-object-at-a-glance"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;pre class="mermaid"&gt;flowchart TB&#10; s{Storage Requirement?}&#10; s --&amp;gt;|Single EC2 / low-latency DB disk| ebs[EBS / Instance Store]&#10; s --&amp;gt;|Shared Linux POSIX across AZs| efs[Amazon EFS]&#10; s --&amp;gt;|Windows SMB / AD share| fsxw[FSx for Windows]&#10; s --&amp;gt;|HPC / ML + S3 integration| fsxl[FSx for Lustre]&#10; s --&amp;gt;|Enterprise NetApp / multi-protocol| fsxn[FSx for NetApp ONTAP]&#10; s --&amp;gt;|HTTP REST / static / archive| s3[Amazon S3]&lt;/pre&gt;&lt;h2 id="amazon-ebs-elastic-block-store"&gt;Amazon EBS (Elastic Block Store)&lt;a class="anchor" href="#amazon-ebs-elastic-block-store"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;EBS volumes are &lt;strong&gt;network-attached block disks&lt;/strong&gt; locked to a &lt;strong&gt;single Availability Zone (AZ)&lt;/strong&gt;. To move a volume to another AZ, you &lt;strong&gt;snapshot it and restore&lt;/strong&gt; in the target AZ.&lt;/p&gt;</description></item><item><title>caching-elasticache-cloudfront</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/caching-elasticache-cloudfront/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/caching-elasticache-cloudfront/</guid><description>&lt;h1 id="caching-elasticache-cloudfront-and-dax-dynamodb-accelerator"&gt;Caching: ElastiCache, CloudFront and DAX (DynamoDB Accelerator)&lt;a class="anchor" href="#caching-elasticache-cloudfront-and-dax-dynamodb-accelerator"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The fastest query is the one you never make. Caching questions on the exam come down to: &lt;strong&gt;what layer&lt;/strong&gt; (CDN, application, database) and &lt;strong&gt;which engine&lt;/strong&gt; (Redis vs Memcached vs DAX).&lt;/p&gt;&#10;&lt;h2 id="cache-placement---pick-the-layer"&gt;Cache placement - pick the layer&lt;a class="anchor" href="#cache-placement---pick-the-layer"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Latency source&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Fix&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Static content far from users&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;CloudFront&lt;/strong&gt; (edge caching)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Repeated DB queries / session data&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;ElastiCache&lt;/strong&gt; in front of the DB&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DynamoDB reads need microseconds&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DAX&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;API responses repeat&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;API Gateway caching&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="elasticache-redis-vs-memcached"&gt;ElastiCache: Redis vs Memcached&lt;a class="anchor" href="#elasticache-redis-vs-memcached"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Redis&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Memcached&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Data structures&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Rich (lists, sets, sorted sets, streams)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Simple key-value strings&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Replication / failover&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Yes&lt;/strong&gt; (Multi-AZ with auto failover)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Persistence&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Yes (snapshots, AOF)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Clustering&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Yes (cluster mode, sharding)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Multi-threaded scaling&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pub/Sub, Lua, transactions&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Yes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;No&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Typical use&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Session store, leaderboards, chat, queues&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Simple object caching&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Exam shortcut: &amp;ldquo;failover / durability / data structures / sorted leaderboard&amp;rdquo; → &lt;strong&gt;Redis&lt;/strong&gt;. &amp;ldquo;Pure cache, simplest and fastest horizontal scaling&amp;rdquo; → &lt;strong&gt;Memcached&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>database-selection-matrix</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/database-selection-matrix/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/database-selection-matrix/</guid><description>&lt;h1 id="database-selection-matrix"&gt;Database Selection Matrix&lt;a class="anchor" href="#database-selection-matrix"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;The most common question format in Domain 3: &amp;ldquo;the application needs X - which database?&amp;rdquo; There are ~10 AWS database services and exactly one right answer per workload. Learn the workload → service mapping.&lt;/p&gt;&#10;&lt;h2 id="the-decision-table"&gt;The decision table&lt;a class="anchor" href="#the-decision-table"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Workload&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Service&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Why&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Relational OLTP (online transaction processing), joins, transactions, known schema&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;RDS (Relational Database Service)&lt;/strong&gt; (or &lt;strong&gt;Aurora&lt;/strong&gt; for cloud-native scale)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Managed SQL, Multi-AZ, replicas&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Massive-scale key-value, any traffic shape, single-digit ms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DynamoDB&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Serverless NoSQL, unlimited scale&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hot data, microsecond reads, session store&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;ElastiCache&lt;/strong&gt; (Redis/Memcached)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;In-memory&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Data warehouse, OLAP (online analytical processing), columnar analytics&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Redshift&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Petabyte analytics&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Interactive SQL on S3 (Simple Storage Service) data lake&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Athena&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Serverless, pay per query&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Search, autocomplete, log analytics&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;OpenSearch&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Full-text search&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Document workloads, MongoDB-compatible&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DocumentDB&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Mongo API without Mongo ops&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Graph relationships (social, fraud, routes)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Neptune&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Graph DB&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Time series (IoT, metrics)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Timestream&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Built for timestamps&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Immutable ledger / audit&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Aurora PostgreSQL / S3 Object Lock&lt;/strong&gt; &lt;em&gt;(Note: AWS deprecated &lt;strong&gt;QLDB&lt;/strong&gt; on July 31, 2025)&lt;/em&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Cryptographic verifiability / WORM&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;In-memory cache with SQL on RDS-adjacent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Redis&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Microsecond latency&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Query exabytes in S3 directly from a data warehouse&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Redshift Spectrum&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Joins Redshift tables with S3 Parquet files without loading&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="rds-vs-dynamodb---the-heavyweight-bout"&gt;RDS vs DynamoDB - the heavyweight bout&lt;a class="anchor" href="#rds-vs-dynamodb---the-heavyweight-bout"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Pick &lt;strong&gt;RDS/Aurora&lt;/strong&gt; when:&lt;/p&gt;</description></item><item><title>dynamodb-deep-dive</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/dynamodb-deep-dive/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/dynamodb-deep-dive/</guid><description>&lt;h1 id="dynamodb-deep-dive"&gt;DynamoDB Deep Dive&lt;a class="anchor" href="#dynamodb-deep-dive"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;DynamoDB shows up in ~a third of all &amp;ldquo;which database&amp;rdquo; and &amp;ldquo;how do I scale reads&amp;rdquo; questions. The exam-level knowledge is: &lt;strong&gt;partitioning, capacity modes, indexes, DAX (DynamoDB Accelerator) and Global Tables&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="data-model-basics"&gt;Data model basics&lt;a class="anchor" href="#data-model-basics"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Table → items (rows) → attributes (columns)&lt;/strong&gt; - schemaless except the key&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Partition key&lt;/strong&gt; (required) - hashed to decide storage partition; good partition keys spread load evenly&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Composite key&lt;/strong&gt; = partition key + &lt;strong&gt;sort key&lt;/strong&gt; - enables range queries (&lt;code&gt;WHERE orderId = X AND date BETWEEN...&lt;/code&gt;)&lt;/li&gt;&#10;&lt;li&gt;Item max size &lt;strong&gt;400 KB&lt;/strong&gt;&lt;/li&gt;&#10;&lt;li&gt;Access is via &lt;code&gt;Query&lt;/code&gt; (key condition) or &lt;code&gt;Scan&lt;/code&gt; (everything - avoid it)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="capacity-modes"&gt;Capacity modes&lt;a class="anchor" href="#capacity-modes"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;On-demand&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;Provisioned&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Pricing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Per request (pay per use)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Per hour on WCU (write capacity unit)/RCU (read capacity unit) + autoscaling&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Best for&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Unknown, spiky traffic&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Steady, predictable traffic&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Scaling&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Instant, no planning&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Auto scaling policy on utilization&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;1 WCU&lt;/strong&gt; = 1 KB write per second; &lt;strong&gt;1 RCU&lt;/strong&gt; = 4 KB strongly consistent read per second (2x for eventually consistent)&lt;/li&gt;&#10;&lt;li&gt;Reads: &lt;strong&gt;eventually consistent&lt;/strong&gt; by default (duplicates at read time possible), &lt;strong&gt;strongly consistent&lt;/strong&gt; = 2x RCU&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="indexes"&gt;Indexes&lt;a class="anchor" href="#indexes"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;LSI (local secondary index)&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;&lt;strong&gt;GSI (global secondary index)&lt;/strong&gt;&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Key&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Same partition key, new sort key&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Any key (new partition + sort)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Consistency&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Can be strongly consistent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Always eventually consistent&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Limits&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;5 per table&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;20 per table&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Availability&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Same partition as item&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;Global&amp;rdquo; = separate index&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Sparse index trick: items missing the indexed attribute are simply not in the index - filter by putting an attribute only on some items.&lt;/p&gt;</description></item><item><title>compute-performance-ec2-options</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/compute-performance-ec2-options/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/compute-performance-ec2-options/</guid><description>&lt;h1 id="compute-performance-ec2-elastic-compute-cloud-options"&gt;Compute Performance: EC2 (Elastic Compute Cloud) Options&lt;a class="anchor" href="#compute-performance-ec2-elastic-compute-cloud-options"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;&amp;ldquo;Which instance type / placement / purchase option&amp;rdquo; questions test whether you know the &lt;strong&gt;instance family alphabet&lt;/strong&gt; and the three placement group shapes. (Pricing is covered in &lt;a href="../../cost-optimized-architectures/pricing-models-ri-savings-plans-spot/"&gt;pricing-models&lt;/a&gt;.)&lt;/p&gt;&#10;&lt;h2 id="instance-families"&gt;Instance families&lt;a class="anchor" href="#instance-families"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Family&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Optimized for&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Mnemonic&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;T&lt;/strong&gt; (t3, t4g)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Burstable general purpose (baseline CPU + credits)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;t&amp;rdquo; = tiny/test&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;M&lt;/strong&gt; (m5, m6i)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Balanced general purpose&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;m&amp;rdquo; = middle&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;C&lt;/strong&gt; (c5, c7g)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Compute intensive (app servers, game servers, batch)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;c&amp;rdquo; = compute&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;R&lt;/strong&gt; (r5, x2idn) / &lt;strong&gt;X&lt;/strong&gt; / &lt;strong&gt;Z&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Memory intensive (in-memory DB, caches, big data)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;r&amp;rdquo; = RAM&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;P / G / VT / Inf&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;GPU/ML training and inference&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;p/g&amp;rdquo; = graphics&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Hpc / D&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;High performance compute, high disk throughput&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Mac&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;macOS build farms&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;Burstable (T family)&lt;/strong&gt; detail: instances earn &lt;strong&gt;CPU credits&lt;/strong&gt; when idle and spend them under load; &amp;ldquo;unlimited&amp;rdquo; mode can pay for extra credits. &amp;ldquo;Variable low CPU baseline&amp;rdquo; → T family.&lt;/p&gt;</description></item><item><title>serverless-and-containers-lambda-ecs-eks</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/serverless-and-containers-lambda-ecs-eks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/serverless-and-containers-lambda-ecs-eks/</guid><description>&lt;h1 id="serverless--containers-lambda-rds-proxy-api-gateway-ecs-and-eks"&gt;Serverless &amp;amp; Containers: Lambda, RDS Proxy, API Gateway, ECS and EKS&lt;a class="anchor" href="#serverless--containers-lambda-rds-proxy-api-gateway-ecs-and-eks"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Modern architecture questions on SAA-C03 revolve around &lt;strong&gt;eliminating server management&lt;/strong&gt; while respecting service limits, networking rules, and database connection pools.&lt;/p&gt;&#10;&lt;h2 id="aws-lambda---limits-networking-and-scaling"&gt;AWS Lambda - limits, networking and scaling&lt;a class="anchor" href="#aws-lambda---limits-networking-and-scaling"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;Hands-on: &lt;a href="../../../AWS/lambda/aws-lambda/"&gt;aws-lambda&lt;/a&gt;, &lt;a href="../../../AWS/lambda/lambda-api-gateway/"&gt;lambda-api-gateway&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h3 id="hard-limits-the-exam-tests"&gt;Hard limits the exam tests&lt;a class="anchor" href="#hard-limits-the-exam-tests"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Max execution timeout&lt;/strong&gt;: &lt;strong&gt;15 minutes&lt;/strong&gt; (900 seconds). If a job takes 25 minutes → use &lt;strong&gt;AWS Fargate&lt;/strong&gt; or &lt;strong&gt;AWS Batch&lt;/strong&gt;, never Lambda!&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Memory&lt;/strong&gt;: &lt;strong&gt;128 MB to 10 GB&lt;/strong&gt; — &lt;strong&gt;CPU and network bandwidth scale proportionally with memory&lt;/strong&gt;. &lt;em&gt;&amp;ldquo;A CPU-bound Lambda function is too slow&amp;rdquo;&lt;/em&gt; → &lt;strong&gt;increase its memory configuration&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Storage&lt;/strong&gt;:&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;/tmp&lt;/code&gt; ephemeral storage: &lt;strong&gt;512 MB&lt;/strong&gt; default, configurable up to &lt;strong&gt;10 GB&lt;/strong&gt; (shared across warm invocations in the same execution environment — great for caching static reference files).&lt;/li&gt;&#10;&lt;li&gt;Need persistent shared storage across invocations or big ML models? Mount &lt;strong&gt;Amazon EFS (Elastic File System)&lt;/strong&gt; (requires Lambda in a VPC).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Deployment package&lt;/strong&gt;: 50 MB zipped (250 MB unzipped including &lt;strong&gt;Lambda Layers&lt;/strong&gt;), or up to &lt;strong&gt;10 GB&lt;/strong&gt; as a container image from ECR (Elastic Container Registry).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="concurrency-reserved-vs-provisioned"&gt;Concurrency: Reserved vs Provisioned&lt;a class="anchor" href="#concurrency-reserved-vs-provisioned"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Default account concurrency limit&lt;/strong&gt;: 1,000 concurrent executions per region (soft limit).&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Reserved Concurrency&lt;/strong&gt;: caps the max concurrency for one function so it can&amp;rsquo;t starve other functions (and guarantees that slice of capacity). Costs nothing extra; setting it to &lt;code&gt;0&lt;/code&gt; throttles/disables the function.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Provisioned Concurrency&lt;/strong&gt;: keeps N environments pre-initialized and warm → &lt;strong&gt;eliminates cold starts&lt;/strong&gt; for latency-sensitive APIs (costs money).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="lambda-in-a-vpc--the-rds-proxy-pattern"&gt;Lambda in a VPC &amp;amp; the RDS Proxy pattern&lt;a class="anchor" href="#lambda-in-a-vpc--the-rds-proxy-pattern"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;pre class="mermaid"&gt;flowchart LR&#10; apigw[API Gateway] --&amp;gt; lambda[Lambda in Private Subnet]&#10; lambda --&amp;gt;|pooled connections| proxy[Amazon RDS Proxy]&#10; proxy --&amp;gt; rds[(RDS / Aurora Multi-AZ)]&#10; lambda --&amp;gt;|outbound internet via| nat[NAT Gateway]&lt;/pre&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Lambda in a VPC has NO internet access by default&lt;/strong&gt; (even in a &amp;ldquo;public&amp;rdquo; subnet, Lambda ENIs (Elastic Network Interface) never get public IPs!). To call an external public API from a VPC-connected Lambda, put Lambda in a &lt;strong&gt;Private Subnet with a route to a NAT Gateway&lt;/strong&gt;.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The RDS connection storm problem&lt;/strong&gt;: Lambda scales out to 1,000 concurrent instances in seconds; each opens a DB connection and crashes RDS (&lt;code&gt;Too many connections&lt;/code&gt;).&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;The fix: Amazon RDS Proxy&lt;/strong&gt; (placed in the VPC between Lambda and RDS/Aurora).&lt;/li&gt;&#10;&lt;li&gt;Pools and shares DB connections, enforces &lt;strong&gt;IAM (Identity and Access Management) authentication&lt;/strong&gt; with credentials stored in &lt;strong&gt;Secrets Manager&lt;/strong&gt;, and &lt;strong&gt;reduces Multi-AZ failover time by up to 66%&lt;/strong&gt; by preserving client connections during failover.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;blockquote class='book-hint warning'&gt;&#10;&lt;p&gt;&lt;strong&gt;Sınav Tuzağı (Exam Trap):&lt;/strong&gt; &amp;ldquo;Lambda fonksiyonları trafik patlamasında RDS veritabanında bağlantı hatası (&lt;code&gt;Too many connections&lt;/code&gt; / connection exhaustion) veriyor&amp;rdquo; sorusunun cevabı Read Replica veya daha büyük RDS değil, &lt;strong&gt;Amazon RDS Proxy&lt;/strong&gt;&amp;lsquo;dir!&lt;/p&gt;&lt;/blockquote&gt;</description></item><item><title>data-transfer-and-hybrid-services</title><link>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/data-transfer-and-hybrid-services/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.ulutasalperen.com/docs/aws-saa/high-performing-architectures/data-transfer-and-hybrid-services/</guid><description>&lt;h1 id="data-transfer-and-hybrid-services"&gt;Data Transfer and Hybrid Services&lt;a class="anchor" href="#data-transfer-and-hybrid-services"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;Moving data is its own question family: &amp;ldquo;we have 500 TB on-premises, get it to S3 (Simple Storage Service)&amp;rdquo; or &amp;ldquo;users must still write to a local file server&amp;rdquo;. Each answer is a specific service - and mixing them up is easy, so learn the &lt;strong&gt;one job per service&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;h2 id="the-transfer-service-lineup"&gt;The transfer service lineup&lt;a class="anchor" href="#the-transfer-service-lineup"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Service&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Job&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Scenario keyword&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;DataSync&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Scheduled bulk transfer (NFS/SMB/HDFS/object → S3/EFS (Elastic File System)/FSx)&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;migrate file shares&amp;rdquo;, &amp;ldquo;agent, scheduled, fast&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Transfer Family&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Managed &lt;strong&gt;SFTP / FTPS / FTP&lt;/strong&gt; endpoints backed by S3/EFS&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;partners upload via SFTP&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Storage Gateway&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Hybrid&lt;/strong&gt;: local file/volume/tape interface → S3/EBS-backed&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;on-prem apps keep using local protocols&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Snow Family&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Physically ship petabytes&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;no bandwidth / 100 TB+&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;AWS Backup&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Centralized backup plans&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&amp;ldquo;tag-based backup across services&amp;rdquo;&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="storage-gateway-modes-classic-exam-trio"&gt;Storage Gateway modes (classic exam trio)&lt;a class="anchor" href="#storage-gateway-modes-classic-exam-trio"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;File Gateway&lt;/strong&gt; - NFS/SMB share backed by S3 objects (&amp;ldquo;local file share, objects in S3&amp;rdquo;)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Volume Gateway&lt;/strong&gt; - iSCSI block storage; &lt;strong&gt;cached&lt;/strong&gt; (hot data local, everything in S3) vs &lt;strong&gt;stored&lt;/strong&gt; (full copy local, async backup to EBS (Elastic Block Store) snapshots)&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Tape Gateway&lt;/strong&gt; - virtual tape library (VTL) for legacy backup software&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="snow-family"&gt;Snow Family&lt;a class="anchor" href="#snow-family"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Device&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Scale&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Notes&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Snowcone&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;~8-14 TB, rugged edge device&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Edge computing + transfer&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Snowball Edge&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;80-210 TB&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;The standard &amp;ldquo;ship a box&amp;rdquo; answer&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Snowmobile&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;100 PB per truck&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Exabyte-scale, literally a shipping container&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&amp;ldquo;Petabytes of data, limited bandwidth&amp;rdquo; → Snowball. &amp;ldquo;Ongoing streaming&amp;rdquo; → Kinesis / DataSync instead.&lt;/p&gt;</description></item></channel></rss>