Notice
Recent Posts
Recent Comments
Link
Gom3rye
AWS의 Database 본문
728x90
반응형
AWS의 Database
- 데이터 저장소 종류
- RDBMS
- 관계형 데이터베이스 서비스
- Amazon Aurora, Amazon RDS, Amazon Redshift
- 과거의 애플리케이션, ERP, CRM, 전자 상거래 등에 많이 이용된다.
- Key-Value Database
- 데이터를 구분하는 키와 값 쌍으로 저장하는 구조
- Amazon Dynamo DB
- 높은 트래픽의 웹 애플리케이션, 전자 상거래 시스템, 게임 애플리케이션에 활용
- In-Memory DB
- 데이터를 메모리에 저장하는 방식으로 속도가 빠르다.
- Amazon의 ElasticCache, Amazon Memory DB for Redis
- Caching, 세션 관리(클라이언트의 정보를 서버에 보관), 게임 순위표, 지리 공간 애플리케이션 등에 활용
- Document DB
- 하나의 데이터를 하나의 문서로 취급한다.
- Amazon Document DB(Mongo DB와 호환)
- 콘텐츠 관리, 사용자 프로필 ,카탈로그 등에 활용된다.
- Wide Column
- 데이터를 열 단위로 저장
- 쿼리의 성능을 향상시키고 대량의 데이터를 효율적으로 처리하는데 중점을 둔 데이터베이스이다.
- 데이터 분석 작업에 많이 상요된다.
- Amazon Keyspaces를 제공한다.
- 장비 관리, 플릿 관리 및 경로 최적화에 주로 활용된다.
- Graph
- 그래프 형태로 데이터를 저장하는 구조
- 저장소에 직접 데이터 항목들의 관계를 저장한다.
- Amazon Neptune
- 부정 탐지, 소셜 네트워킹, 추천 엔진 등에 활용된다.
- Time Series(시계열)
- 하나 이상의 시간과 하나 이상의 값을 쌍으로 저장하는 시스템
- Amazon Timestream 제공
- 사물 인터넷, DevOps, 산업용 텔레메트리 등에 활용된다.
- Ledger
- 거래 원장을 저장하는 데이터베이스
- Amazon Quantum Ledger Database(QLDB)
- 공급망 관리, 은행 거래 등에 활용된다.
- 블록체인의 개념을 도입한 것
- 모든 변경 내역을 추적 가능하며 이를 검증할 수 있는 장점을 가진다.
- update, delete가 없고 오로지 insert만 있다. (데이터가 변경되면 안되니까) → 저널이라는 개념(모든 변경 내역이 시간순으로 기록됨) 사용
Amazon RDS
- 관계형 데이터베이스 6종류의 제품을 클라우드에 최적화된 상태로 제공한다.
- Amazon Aurora, PostgreSQL(Aurora 버전 제공), MySQL(Aurora 버전 제공), MariaDB, Oracle, MS SQL Server, IBM DB2를 지원한다.
- Aurora 버전은 기존 소스들을 AWS에 맞게 수정한 버전이다.
- 데이터베이스 제공 방식은 EC2와 비슷한데 VPC 상에 인스턴스 형태로 구축하면 다양한 인스턴스 클래스를 사용할 수 있다.
- EC2와 다른 점은 RDS는 Managed Service라서 업데이트 등의 관리가 AWS에 의해 자동으로 수행된다.
- 백업과 같이 번거로운 관리 작업도 자동화되어 있어 관리자가 수행할 필요가 없다.
- AWS Database Migration Server를 사용하면 기존 데이터베이스를 이전하거나 복제하는 것도 가능하다.
인스턴스 클래스
- RDS는 EC2와 같이 인스턴스 형식으로 사용된다.
- 클래스는 표준, 메모리 최적화, 버스트 성능의 3종류로 나누고 그 안에 여러 가지 인스턴스 클래스를 제공한다.
- 표준은 범용적인 인스턴스 클래스이다.
- 메모리 최적화는 메모리를 많이 사용하는 애플리케이션에 최적화되어 있다.
- 버스트 성능은 CPU를 최대 100%까지 사용할 수 있는 구조이다.
요금
- 기본적으로 EC2와 비슷하지만 DBMS에 따라 인스턴스 요금이 다르다.
- DBMS는 무료와 유료가 있고 유료 DBMS는 AWS에서 라이선스 사용료가 부과되는데 라이선스 요금은 인스턴스 요금에 포함되어 있다.
- 스토리지(확보하고 있는 용량) 요금 + 데이터베이스 인스턴스(가동한 시간당으로 부과되는데 다중 AZ로 구성하여 이중화를 구축하면 2배 + 라이선스 비용) 요금 + 백업 스토리지(스냅샷에 부과되는 요금으로 데이터베이스 스토리지 크기의 100% 넘는 경우만 발생) 요금 + 통신료(VPC
장점
- Managed Service라서 AWS가 업데이트 등을 관리해주기 때문에 별도로 관리를 할 필요가 없다.
- 간단하게 데이터베이스를 생성할 수 있으며 On-premise에서 데이터를 이전하기 쉽고 소프트웨어를 수정하지 않아도 이전이 가능하다.
- EC2와 연동이 쉽고 같은 네트워크 내에 있다면 통신료도 무료이다.
단점
- 사용자가 자유롭게 사용할 수 없다.
Aurora
- MySQL이나 PostgreSQL과 호환할 수 있으며 AWS가 만든 관계형 데이터베이스
- 요금이 조금 비싼 편이지만 견고하고 성능이 뛰어나다.
- 호환성을 가지고 있기 때문에 일반적인 도구나 스냅샷을 사용해서 On-premise 환경의 MySQL 이나 PostgreSQL을 이전할 수 있고 SQL문도 그대로 사용할 수 있으며 코드, 애플리케이션, 드라이버 도구 등의 프로그램 및 소프트웨어를 수정할 필요가 없다.
- AWS 용으로 설계가 되었기 때문에 일반적인 MySQL이나 PostgreSQL 데이터베이스에 비해 속도가 빠르고 Managed Service라서 안전하게 사용 가능하다.
- AWS에서 MySQL이나 PostgreSQL을 사용하는 방법
- EC2에 설치해서 사용
- RDS를 사용
- Amazon Aurora를 사용
MySQL(RDS) vs Aurora의 차이
- MySQL의 경우는 자신의 EBS로 데이터를 쌓고 쌓은 데이터를 EBS로 미러링한 다음 Replication을 통해 Replica로 데이터를 보내고 Replica는 받은 데이터를 자신의 스토리지로 쌓는다.
- Aurora의 경우는 4/6 Quorum을 사용해서 스토리지에 저장하며 Replica로 보내는 것은 frm 및 redo log이므로 network bandwidth 사용도 적으며 빠르게 변경 분을 저장하고 반영할 수 있는데 이는 인스턴스와 스토리지 영역을 나눴기 때문에 이와 같은 아키텍쳐를 그릴 수 있다.
- 데이터의 변경이 많은 경우 효율적이다.
조작
- EC2와 마찬가지로 데이터베이스 작업은 데이터베이스 준비와 데이터베이스 사용으로 나누어진다.
- 데이터베이스 준비 작업은 데이터베이스를 만들거나 설정하는 등의 조작을 의미하는데 이러한 작업은 관리 콘솔에서 이루어진다.
- 데이터베이스 사용 작업은 데이터를 입력, 삭제, 변경하는 조작을 의미하는데 이러한 작업은 데이터베이스 클라이언트나 소프트웨어를 통해서 이루어진다.
EC2에 MySQL을 설치하고 외부 접속 허용
- 패키지 업데이트: sudo apt update
- MySQL 서버 설치: sudo apt install -y mysql-server
- 보안 설정: sudo mysql_secure_installation
- 루트 계정 암호 설정이나 테스트 유저 삭제 등 보안 설정을 할 수 있다.
- ynyy
- 외부 접속 허용 설정: sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf (외부 접속 허용을 위해서 설정 파일 수정)
- bind-address 부분을 주석 처리하거나 bind-address를 0.0.0.0으로 설정
- 설정 변경을 적용하기 위해서 mysql 재시작: sudo systemctl restart mysql
- 외부에서 접속할 사용자를 생성
- 관리자로 접속: sudo mysql -u root -p
- 유저 생성: create user '유저이름'@'접속위치' identified by '비밀번호';
- create user 'kyla'@'%' identified by '~~~~~~~~';
- 권한 부여: GRANT ALL PRIVILEGES ON 데이터베이스이름.테이블이름 TO '유저이름'@'접속위치' WITH GRANT OPTION;
- GRANT ALL PRIVILEGES ON . TO 'kyla'@'%' WITH GRANT OPTION;
- 권한 설정 테이블을 업데이트: flush privileges;
- 클라이언트 애플리케이션에서 EC2 Public IP를 이용해서 접속
- 접속이 안되는 경우: 인바운드 규칙에서 3306번 포트가 열리지 않은 경우
- 접속 프로그램의 경우는 allowPublicKeyRetrieval 설정 때문
RDS를 이용해서 MySQL Server 구축
- 설정 항목
- 생성 방식 선택: 옵션을 직접 설정할 것인지 아니면 자동으로 설정하도록 할 것인지 여부 확인
- 엔진 옵션: 사용하고자 하는 데이터베이스 종류
- 식별자와 관리자 계정과 비밀번호 설정
- 인스턴스 구성에서 cpu 설정 (읽기를 많이 하면 cpu가 중요하지만 그렇지 않으면 별로 중요x)
- 스토리지 설정
- 기타 설정: 보안 그룹, 포트 등 설정
- 생성이 되면 End Point를 이용해서 접근 가능
- 설정 변경
- RDS에서는 파라미터 그룹을 이용해서 설정을 변경할 수 있다.
- 파라미터 그룹을 생성한 후 세부 내용을 수정한다.
- 데이터베이스 인스턴스 수정을 눌러서 파라미터 그룹을 변경하면 된다.
- AWS의 File Storage
AWS를 이용한 백업
백업의 형태
- On-premise 환경의 데이터를 AWS로 백업
- AWS에 구축한 시스템을 백업
인프라 핵심 설계 사항
- 로그 파일과 데이터베이스 파일은 장기간 보관
- 비용을 절감하면서도 운영에 손이 많이 가지 않는 방식으로 진행한다.
- 스토리지 게이트웨이를 이용한 자동 백업: 온프레미스 환경에 스토리지 게이트웨이를 사용해서 백업용 스토리지를 만들어서 S3에 자동 백업
- S3와 글레이셔로 수명 주기 관리: 장기간 보관해야 하는 로그 파일의 경우 S3의 기능으로 백업하면서 온라인 보관 기간을 넘은 파일을 글레이셔로 아카이브
- 용량의 대부분을 차지하는 이미지 파일과 데이터베이스는 S3에 백업: 스토리지 게이트웨이에 부과되는 종량제 요금을 줄이기 위해서 용량이 큰 데이터는 스크립트를 사용하여 S3에 백업
온프레미스 환경의 데이터 백업
방법
- 오브젝트 스토리지 서비스인 S3를 명령행 인터페이스를 통해 이용하는 패턴
- 백업 대상이 파일인 경우에 유효하며 간편하면서도 저렴하다.
- S3는 범용적인 파일 저장 서비스로서 온라인 파일 서버처럼 사용할 수 있다.
- S3는 서로 다른 가용 영역에 3중화 되어 있으면 99.99999999% 정도의 내구성을 가진다.(거의 사용 못하는 시간이 없다라고 보면 된다.)
- 가상 서버인 EC2와 가상 스토리지인 EBS로 구축한 백업용 서버에 데이터를 동기화 시키는 패턴
- 비용은 앞에 방법보다 많이 들지만 데이터베이스의 백업을 유연하게 실행할 수 있다.
- 백업 대상 EC2에서 유틸리티를 실행시키면 DB를 온라인 백업할 수 있다.
- 자동 백업 서비스인 AWS 스토리지 게이트웨이를 이용하는 패턴
- 첫 번째와 두 번째 방법보다는 적은 노력으로 자동 백업 환경을 구축할 수 있으면서도 백업 관리의 일원화도 가능하다.
- 스토리지 게이트웨이는 온프레미스 환경에 있는 서버에 스토리지 관련 전용 소프트웨어를 설치하여 AWS와 접속하는 서비스
S3
Simple Storage Service의 약자
- 용량에 관계없이 파일을 저장할 수 있고 웹에서 파일에 접근할 수 있으며 안정성이 뛰어나고 가용성이 높으며 무제한 확장이 가능하다.
- 대용량 파일 저장을 EC2와 EBS를 이용하면 많은 비용이 들고 노력이 요구되지만 S3는 저장 용량이 무한대이고 파일 저장에 최적화되어 있기 때문에 용량을 추가하거나 성능을 높이는 작업을 하지 않아도 되고 비용이 저렴하다.
- 정적 웹 서비스가 바로 가능하다.
- 성능이 좋은 웹 서버로 구성되어 있어서 자동 횡적 확장(Auto Scaling)이나 부하 분산(Load Balancing)을 신경 쓰지 않아도 된다.
- S3는 파일 업로드/다운로드를 모두 HTTP 프로토콜로 처리하기 때문에 별도의 클라이언트나 Active X 설치 없이 웹 브라우저에서 바로 가능하다.
- 넷플릭스는 동영상 콘텐츠를 그리고 Airbnb는 10페타 바이트가 넘는 데이터를 S3에 보관한다.
- 단점은 파일 저장 서비스이기 때문에 데이터베이스 백업용으로는 적당하지 않다.
기본 개념
- 객체
- 파일과 메타 데이터로 이루어진 데이터가 저장되는 기본 단위
- 기본적으로 Key가 객체의 이름이고 값이 객체의 데이터
- 객체 하나의 크기는 1Byte ~ 5TB
- 메타데이터는 MIME 형식으로 확장자를 통해 자동 설정되고 사용자가 임의로 지정
- Bucket
- S3에서 생성할 수 있는 최상위 디렉토리
- Bucket은 리전 별로 생성되며 계정 별로 100개까지 생성 가능하다.
- Bucket 안에 객체가 저장되고 디렉토리 생성 가능하다.(객체 이름이 디렉터리 경로까지 포함)
- 저장 가능한 객체의 개수 와 저장 가능한 용량은 무제한
- 접속 제어 및 권한 관리가 가능하다.
- http://examplebucket.s3.amazonaws.com/helloworld.jpg 처럼 URL로 접근 가능하다.
- 내구성과 가용성
- 99.9999999999% 내구성과 99.99%의 가용성
- 내구성은 데이터가 유실되지 않는 확률을 의미하고 가용성은 언제나 정상적으로 사용 가능한 상태
- 요금은 저장 용량과 데이터 전송량 그리고 HTTP 요청 개수로 측정한다.
버킷 생성
- IAM 사용자 생성 및 권한 설정: S3를 외부에서 사용하고자 하는 경우 생성
- 사용자 생성을 누르고 사용자 이름을 입력한 후 직접 정책 연결을 선택해서 S3 권한을 추가해 준다.
- 사용자를 생성한 후 엑세스 키와 보안 엑세스 키를 생성해서 다운로드 해야 한다.
- 사용자를 클릭하고 보안 자격 증명에서 엑세스 키 생성을 클릭한다.
- 외부에서 실행되는 애플리케이션을 선택하고 생성한 후 csv 파일을 다운로드 한다.
- 버킷 생성 이름은 영역에서 유일해야 한다.
- Bucket 만들기 – ACL 설정(ACL 활성화됨 선택)
- Bucket 만들기 – 퍼블릭 엑세스 차단 설정(차단 설정 해제)
- 외부에서 버킷을 사용하기 위해서는 버킷에 권한 설정을 추가해야 한다.
✅ S3의 특징 요약
항목 설명
| 이름 유일성 | 전 세계에서 유일해야 함 |
| 웹 호스팅 | 정적 웹사이트를 바로 서비스 가능 |
| URL 접근 | 파일 업로드 후, 퍼블릭 설정하면 URL로 접근 가능 |
| 서버리스 | EC2 없이 웹 호스팅 가능 (HTML/CSS/JS만으로 구성된 사이트) |
- 외부에서 Bucket을 사용할 수 있도록 [권한] – [버킷 정책] 에서 [편집]을 눌러서 Bucket 정책 추가
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicListGet",
"Effect": "Allow",
"Principal": "*",
"Action": [
"s3:List*",
"s3:Get*",
"s3:Put*",
"s3:Delete*"
],
"Resource": [
"arn:aws:s3:::Bucket이름",
"arn:aws:s3:::Bucket이름/*"
]
}
]
}
- [권한] – [CORS] 에서 CORS 정책 추가
[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
"AllowedOrigins": ["*"],
"ExposeHeaders": ["Access-Control-Allow-Origin"]
}
]
- 파일 업로드 → 객체 URL 다운로드 받기
728x90
반응형
'현대 오토에버 클라우드 스쿨' 카테고리의 다른 글
| AWS- ECS (1) | 2025.07.28 |
|---|---|
| AWS Container Service (5) | 2025.07.25 |
| Kubernetes Service, AWS EC2 (4) | 2025.07.22 |
| AWS (1) | 2025.07.21 |
| Jenkins (0) | 2025.07.18 |