※ 생활코딩 AWS 강좌(https://opentutorials.org/course/2717)를 들으면서, 개인적으로 용어를 정리한 글입니다.
ㅇ EC2(Elastic Compute Cloud): 독립된 컴퓨터를 임대해주는 서비스
ㅇ Instance Type 설정
- Amazon Linux: 아마존이 커스터마이징한 리눅스
- MS의 SQL Server가 포함된 버젼은 비싼편이니 주의
- vCPUs: EC2내의 가상 CPU 갯수
ㅇ 프리티어
- 750시간 제공(참고: 1대가 1년을 사용할 경우 720시간임)
- 저장장치 30GB 제공
- 모든 AWS 서비스 통틀어서, 전송이 15GB 초과할 경우 과금이 시작됨!
ㅇ 인스턴스 타입
ㅁ 온디맨드 인스턴스
- 필요할때마다(온디맨드) 끄고 킬 수 있는 서버
ㅁ 예약 인스턴스
- 온디맨드 인스턴스이지만, 끄고 킬때 할인권 등을 적용 가능하다. (선결제/부분선결제/1년 계약/3년 계약 등)
ㅁ 스팟 인스턴스
- 노는(?) 컴퓨터를 사용함으로, 저렴한 가격에 사용 가능하나, 남는 컴퓨터가 없으면 가격이 올라간다. 즉 주가처럼 가변적이다
AWS S3(Simple Storage Sevice)
ㅇ 파일 서버를 클라우드 서비스화(즉 파일을 저장하는 서비스)
ㅇ 데이터가 여러 시설과, 각 시설 내의 여러 디바이스들에 중복으로 저장된다
ㅇ 사용하는 만큼만 비용을 내면 된다
ㅇ SSL을 통한 데이터 전송과 업로드 자동암호화를 지원한다
ㅇ EX) 예시
유저가 파일 업로드 -> 미들웨어(PHP, Java 등)은 파일을 받아서 -> S3 API 통해서 S3에 저장한다 -> 결과 사용자 리턴
AWS RDS(Relational Database Sevice)
ㅇ 관계형 데이터베이스를 서비스로서 제공하는 제품
ㅇ 서비스하는 RDS에는 MySQL, MariaDB, Aurora(AWS가 만든..), PostgreSQL, Oracle, MS SQL 등이 있다.
ㅇ 생성법
1) RDS 생성 -> 엔진을 선택한다(Auroa, MySQL... 등) -> 세부 정보 설정한다.
2) DB 인스턴스 식별자, 마스터 사용자 이름, 암호 등 설정
3) 세부 설정
a. Public Access 가능?
- Yes : VPC 외부에서 DB인스턴스에 연결이 가능, VPC 보안 그룹 설정 필요
- No : 퍼블릭 IP 주소가 할당되지 않음, VPC 외부에서 연결 불가능
b. 가용영역/VPC 보안그룹 설정 등
c. 데이터베이스 옵션, 데이터베이스 이름, 포트, 백업 설정 등등 세부 설정
ㅇ 멀티 AZ Development (다중 AZ 배포)
- 두개의 독립된 건물에 각각 AZ-A, AZ-B가 있고, 두 컴퓨터는 서로 연결관계를 가지고 있다.
- 저장 요청이 들어오면 AZ-A와 AZ-B에 모두 저장이 된다.
- AZ-A가 불능 상태가 되면, 자동으로 AZ-B에 접속이 되도록 변경된다.
- 즉, 성능향상의 목적이 아니라, 다른 한대는 예비(Stand By)상태로, 백업에 가깝다.
ㅇ 백업 & 복원
1) DB Snapshot 이용
ㅇ 백업: 스냅샷 촬영
ㅇ 복원: Restore DB Instance, 스냅샷으로 찍어둔(백업해둔) 인스턴스가 새로 만들어진다(기존 꺼를 엎어치기 하는 개념이 아님, 새로 생성)
2) 특정시점으로 복원(Restore to Point in Time) 이용
ㅇ 특정한 시점의 데이터베이스로 복원된다. (자동 백업 설정했었어야 함)
ㅇ RDS의 Scability - RDS의 Scale UP & Scale Out
- Scale Up
ㅇ DB Instance Type을 고성능으로 변경.
ㅇ 소스코드상에 수정이 필요 없음
ㅇ 언젠가는 한계에 도달(ex 더이상 고성능으로 업그레이드 불가능)
- Scale Out
EX)
ㅇ Master, Slave 1~3 총 4대의 DB 구성
ㅇ 쓰기(INSERT, UPDATE, DELETE 등)
- 오직 Master에서만 작업
- 마스터로 들어오면, 그 결과를 모든 Slave 1~3에게 공유!
ㅇ 읽기(SELECET 등)
- Slave 1~3 중에 하나로 바로 접근
ㅇ 즉 쓰기 작업은 Master에만 작업 및 Slave 들에게 공유하고, 읽기 작업은 다이렉트로 Slave로 접근
ㅇ 많은 경우에 대부분 쓰기보다는 읽기작업이 훨씬 많이 일어나기 때문
ㅇ 하지만, 역시 Master의 한계가 발생 -> Sharding 활용