https://www.coursera.org/professional-certificates/aws-cloud-solutions-architect
Storage types on AWS
storage 저장 방식은 크게 두 가지. Block storage / Object storage.
- Block Storage: 파일을 고정된 크기의 chunk로 구분해서 저장.
- Object Storage: 파일 자체를 하나의 고유 unit으로 저장.
만약 1GB 파일의 글자 하나를 수정한다면?
- block storage의 경우, 수정할 대상이 되는 chunk 하나만 업데이트. 데이터 업데이트 빈도가 잦거나 high transaction rate인 데이터를 저장할 때 적합
- object storage의 경우, 파일 전체를 업데이트. 따라서 보통 WORM (write once, read many) 데이터에 적합
AWS EC2 instance storage / AWS Elastic Block Store
EC2 생성 시 os boot volume / data volume 용도로 사용할 block storage가 필요함. 노트북으로 예를 들면, 노트북에 내장된 storage와 외장하드와 같은 외부 storage가 EC2에도 적용되는 셈
- Instance Store : EC2 내장 storage. Directly Attached to EC2.
- EC2에 내장된 개념이므로 접근 속도가 매우 빠름
- Lifecycle이 EC2에 종속되므로, ec2 다운되면 데이터 유실. 그래서 ephemeral storage라고도 부름.
- AWS EBS : External Storage. 하나의 ec2에 여러 대 연결할 수도 있고, ec2와 연결되면 서로만 통신할 수 있는 secure Direct Communication Line이 형성됨. 일종의 persistent storage
- 다른 Ec2에 연결하려면 Detach -> attach 수행하면 됨.
- 여러 ec2에 동시에 attach 가능한 "AWS EBS Multi-Attach"를 사용할 수도 있다.
- Data Encryption, on-the-fly change (실시간으로 IOPs, volume type/size 등을 변경할 수 있음) 지원.
백업: snapshot.
- incremental backups that are stored redundantly.
- 데이터에 문제가 생기면 snapshot 토대로 volume을 다시 생성하는 식으로 대응할 수 있음.
EBS Type은 아래 표를 참고.
Attribute | EBS Provisioned IOPS SSD | EBS General Purpose SSD | Throughput Optimized HDD | Cold HDD |
---|---|---|---|---|
Description | Highest performance SSD designed for latency-sensitive transactional workloads | General purpose SSD that balances price and performance for a wide variety of transactional workloads | Low-cost HDD designed for frequently accessed, throughput intensive workloads | Lowest cost HDD designed for less frequently accessed workloads |
Use Cases | I/O-intensive NoSQL and relational databases | Boot volumes, low-latency interactive apps, development, and test | Big data, data warehouses, log processing | Colder data requiring fewer scans per day |
Volume Size | 4 GB-16 TB | 1 GB-16 TB | 500 GB-16 TB | 500 GB-16 TB |
Max IOPS/Volume | 64,000 | 16,000 | 500 | 250 |
Max Throughput/Volume | 1,000 MB/s | 250 MB/s | 500 MB/s | 250 MB/s |
Object Storage: S3
EBS가 있음에도 Object storage가 필요할 수 있는 이유
- 일반적으로 EBS는 하나의 EC2에 매핑됨. 모든 종류의 volume과 instance가 multi-attach 기능을 지원하는 게 아님. 애플리케이션이 scale될수록 여러 인스턴스가 EBS에 접근하기는 쉽지 않다.
- EBS의 size limitation.
S3는 individual object 크기가 5TB 이하인 데이터를 저장할 수 있는 storage.
- Object Storage의 특징을 전부 가지고 있다.
- flat structure
- unique identifier...
- distributed storage -> 하나의 region 내 여러 facilities에 저장함
- 99.99% availability / 11 nines of durability (99.999999999%) 지원
- Bucket을 생성한다.
- object를 Bucket 하위에 업로드할 수 있따.
- bucket 내에 folder를 생성해서 object를 관리할 수 있다.
S3에 저장된 데이터는 기본적으로 Private. 따라서 default 설정으로는 해당 bucket이나 object를 생성한 사람만 데이터를 볼 수 있다. Public으로 s3 object를 공개하려면 몇 가지 절차를 거쳐야 함.
Bucket의 Permission - Block Public access 옵션을 비활성화한다.
Bucket의 Object OwnerShip 옵션 - ACL Enabled 설정
공개하고 싶은 Object의 Options - Make public using ACL 활성화
Granular Access Control을 적용하고 싶다면 IAM / S3 Bucket Policy를 사용할 수 있다.
- IAM은 AWS user, groups, roles 기반 ACL
- S3 bucket policy는 특정 bucket 단위로만 적용하는 ACL. json format으로 사용한다.
- What Actions you allowed / denied
Encryption으로 두 가지 방식 지원
- Server side Encryption -> 암호화한 채로 s3에 저장, 다운로드할 때 decrypt
- Client side Encryption -> 데이터를 사용자가 암호화해서 S3에 저장.
Versioning
- versioning 비활성화한 상태에서 동일한 파일명으로 업로드하면, s3는 파일을 덮어쓴다.
- versioning을 활성화하면
- 저장할 때 S3에서 unique version ID를 object에 추가로 부여함.
- accidental delete 방지 - 삭제요청 시 soft delete적용함 (mark붙임). 복구하고 싶으면 mark 해제요청하면 된다
S3가 지원하는 Versioning 상태는 세 가지
- Unversioning (default): 버전 없음
- Versioning Enabled: 모든 object에 버전 추가
- Versioning Suspended: 버전을 활성화했던 시기에 업로드된 object는 버전 유지, 이후에 업로드된 object는 버전 없음
Storage class 구분
- Amazon S3 Standard: This is considered general purpose storage for cloud applications, dynamic websites, content distribution, mobile and gaming applications, and big data analytics.
- Amazon S3 Intelligent-Tiering: This tier is useful if your data has unknown or changing access patterns. S3 Intelligent-Tiering stores objects in two tiers, a frequent access tier and an infrequent access tier. Amazon S3 monitors access patterns of your data, and automatically moves your data to the most cost-effective storage tier based on frequency of access.
- Amazon S3 Standard-Infrequent Access (S3 Standard-IA): S3 Standard-IA is for data that is accessed less frequently, but requires rapid access when needed. S3 Standard-IA offers the high durability, high throughput, and low latency of S3 Standard, with a low per-GB storage price and per-GB retrieval fee. This storage tier is ideal if you want to store long-term backups, disaster recovery files, and so on.
- Amazon S3 One Zone-Infrequent Access (S3 One Zone-IA): Unlike other S3 storage classes which store data in a minimum of three Availability Zones (AZs), S3 One Zone-IA stores data in a single AZ and costs 20% less than S3 Standard-IA. S3 One Zone-IA is ideal for customers who want a lower-cost option for infrequently accessed data but do not require the availability and resilience of S3 Standard or S3 Standard-IA. It’s a good choice for storing secondary backup copies of on-premises data or easily re-creatable data.
- Amazon S3 Glacier Instant Retrieval: Amazon S3 Glacier Instant Retrieval is an archive storage class that delivers the lowest-cost storage for long-lived data that is rarely accessed and requires retrieval in milliseconds.
- Amazon S3 Glacier Flexible Retrieval:S3 Glacier Flexible Retrieval delivers low-cost storage, up to 10% lower cost (than S3 Glacier Instant Retrieval), for archive data that is accessed 1—2 times per year and is retrieved asynchronously.
- Amazon S3 Glacier Deep Archive: S3 Glacier Deep Archive is Amazon S3’s lowest-cost storage class and supports long-term retention and digital preservation for data that may be accessed once or twice in a year. It is designed for customers—particularly those in highly regulated industries, such as the Financial Services, Healthcare, and Public Sectors—that retain data sets for 7 to 10 years or longer to meet regulatory compliance requirements.
- Amazon S3 Outposts:Amazon S3 on Outposts delivers object storage to your on-premises AWS Outposts environment.
Lifecycle policy 적용하기
- Transition action: storage class를 변경할 때
- i.e. 최초생성 시점부터 30일간은 s3 standard-IA Storage class에 저장, 이후에는 s3 Glacier storage로 이동
- = 어느 시점까지는 데이터 접근이 활발하지만, 그 이후에는 접근할 필요가 거의 없는 데이터의 경우.
- Expiration action: object 만료기한 설정 + permanent delete
- i.e. Periodic logs 관리하기
Choose the Right Storage store
Q. transcode large media file - needs to store both original file / transcoded media file. transcode logic은 Lambda. store duration should be at least a year.
- AWS S3
- EBS라면 large file 처리를 위해 volume이 커야 함
- EC2 안씀 (lambda)
Q. 이커머스 회사. mysql on EC2 요구사항. 데이터 추가 / 수정빈도 높으므로 반응속도 빨라야 함. (fast & durable)
- AWS EBS
- EC2 Instance store도 가능은 한데 권장하지 않음. 비즈니스 핵심로직을 EC2 인스턴스 날아가면 소실되는 instance store에 두는 건 부적합.
Q. 연산을 주로 하는 web app. 연산에 쓰는 데이터는 persistency 필요 없음. 속도 빠르고 비용 낮을수록 좋다.
- EC2 instance store.
- EBS 필요할 만큼 데이터 크기가 큰 것도 아니고, durability도 중요하지 않음.
- 문제가 생겼을 경우, 처음부터 다시 연산 시작하면 됨
- EBS보다 비용이 낮음
Q. wordpress 사이트를 여러 인스턴스에 올릴 건데, wordpress는 local storage에 파일을 저장하는 식으로 되어 있음. 사용자가 업로드하는 파일을 shared storage platform에 저장하고 싶다.
- AWS EFS(Elastic File System) - AWS에서 제공하는 file storage.
- AWS s3 - flat hierarchy + multiple instance에 mount할 수 없음
- wordpress가 local file system에 저장하는 로직을 가지고 있으므로, file system path를 AWS EFS로 변경하는 것만으로도 처리 가능
Database on AWS
EC2 instance에 Database를 설치해서 운영하는 경우도 있다. 이 경우 EC2가 인프라 리소스 관련 이슈를 담당하지만, RDBMS 자체의 설정은 사용자의 몫이 됨.
- scaling / availability
- optimization
- backup
- ...
Managed AWS Database를 쓰면, Database 사용을 제외한 모든 항목을 AWS managed service로 돌릴 수 있다.
Easy create 옵션으로 default 세팅 설정된 RDS 서버를 빠르게 만들 수 있음.
- AWS Aurora: Scalablity / Durability 특화된 AWS-specific DB.
- compatible with MySQL / PostgreSQL.
- standard MySQL보다 5배, standard PostgreSQL보다 3배 빠름.
- scale up to 128TB per DB instance.
HA 관련
- RDS를 생성하면, EC2와 마찬가지로 VPC 내부의 하위 Subnet에 생성된다.
- HA를 충족하려면 multiple subnet in different AZ.
- RDS는 다른 AZ + Subnet에 secondary DB 구축이 쉽다. (Multi-AZ Deployment)
- 두 개의 인스턴스 간 Data Replication + Sync 지원.
- Primary / Secondary 지정 -> single DMS로 DB 접근하므로 failover 대응.
- Secondary는 일반적으로 active DB 취급받지 않음. primary DB가 주기적으로 동기화되는 용도로, 쿼리를 받지 않는다. primary에 문제가 생겼을 때 secondary가 primary role을 대신 부여받음.
DB instance 종류
- Standard, which include general-purpose instances
- Memory Optimized, which are optimized for memory-intensive applications
- Burstable Performance, which provides a baseline performance level, with the ability to burst to full CPU usage.
각각의 종류에 맞게 Instance storage 선택이 가능하다.
- General purpose (SSD)
- Provisioned IOPS (SSD)
- Magnetic storage (not recommended)
Backup strategy
- Automate Backup: turned on by default.
- 백업본 저장기간은 0 ~ 35일 중 선택가능. (0 = disable backup. 0 설정 시 existing backup도 전부 제거)
- 백업 방법: Point-in-time recovery 선택.
- Manual backup: 백업본을 35일 이상 저장해야 할 경우 사용
- RDS에서 관리하는 일종의 EBS snapshot.
purpose built database on AWS
RDS가 모든 비즈니스에서 유효한 DB 수단인 건 아님.
- AWS는 여러 형태의 usecase에 대응할 수 있도록 다양한 Built DB 서비스를 제공함.
- 예컨대 Employee management 서비스의 경우 RDB의 복잡한 relation이 필요하지 않은, 일종의 Lookup table 역할만 수행한다.
- 주말에는 트래픽을 거의 받지 않는다.
- 따라서 일반적인 RDS의 과금방식인 instance running time은 비용 효율적이지 못함.
AWS DynamoDB: Managed NoSQL database
- suitable for key-value pairs / document data.
- massive scale / ms latency
- charge based on the usage of table & amount of data you're reading from the table.
AWS DocumentDB (MongoDB compatible)
- content management, catalogs, or user profiles
AWS Neptune: graph Database
- social network connectivity (graph figure) / recommend system engine / fraud detection
AWS QLDB: Ledger Database
- 100% immutable system (은행), audit for regulatory / compliance reason
AWS DynamoDB
Serverless DB. underlying instance / infrastructure 신경쓸 필요 없음.
- RDB처럼 relation 등록하지 않는다. 각각이 standalone table.
- 데이터는 items 단위, items는 attribute로 구성됨
- rigid schema, complex relationship / constraint를 다루지 않는다.
내부적으로는 store data redundantly with Multiple AZs, mirrors the data across multiple drives. -> HA 확보. scalable & highly performant.
- RDB처럼 strict schema가 필요하지 않은 경우, access at a high rate일 경우 유용함. (relation과 Constraint + rigid schema일수록 scalable / performance issue under stress)
DynamoDB의 경우
- Schema 제약에서 자유롭다. 각 items마다 attribute값이 달라도 됨
- Query 요청 자체가 collection of items from One table의 형태. 여러 테이블을 걸쳐 데이터를 조회하지 않는다.
- 빠른 response time, 10 trillion request per day가 가능한 이유 중 하나
AWS Database Service 구분표
Database Type | Use Cases | AWS Service |
---|---|---|
Relational | Traditional applications, ERP, CRM, e-commerce | Amazon RDS, Amazon Aurora, Amazon Redshift |
Key-value | High-traffic web apps, e-commerce systems, gaming applications | Amazon DynamoDB |
In-memory | Caching, session management, gaming leaderboards, geospatial applications | Amazon ElastiCache for Memcached, Amazon ElastiCache for Redis |
Document | Content management, catalogs, user profiles | Amazon DocumentDB (with MongoDB compatibility) |
Wide column | High-scale industrial apps for equipment maintenance, fleet management, and route optimization | Amazon Keyspaces (for Apache Cassandra) |
Graph | Fraud detection, social networking, recommendation engines | Amazon Neptune |
Time series | IoT applications, DevOps, industrial telemetry | Amazon Timestream |
Ledger | Systems of record, supply chain, registrations, banking transactions | Amazon QLDB |
Quiz에서 추가로 확인한 개념
- common use cases for file storage
- User home directories: example of file storage that uses a hierarchical system to store and organize data
- Large content repositories: use a hierarchical system to store and organize data
- RDS Supports "general-purpose instances", "memory optimized instance"