AOC55

Backend, Devops, Cloud, kubernetes

Cloud/AWS

생활코딩 AWS 강좌 - 용어 정리본

aoc55.soft@gmail.com 2019. 1. 29. 15:12

※ 생활코딩 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 활용