📖 학습주제
가장 많이 사용되는 AWS 클라우드에 대해 실습 중심으로 학습 (2)
DB
SQL vs NoSQL

| SQL | NoSQL |
|---|
| 관계형 데이터베이스 | 비관계형 데이터베이스 |
| 테이블 기반 | 문서, 키-값, 그래프 또는 와이드 컬럼 스토어 |
| 정규화된 데이터 구조 사용 | 비정규화된 데이터 구조 사용 |
| 미리 정의된 스키마 | 동적 스키마 |
| 수직적 확장 | 수평적 확장 |
| 다중 행 트랜잭션에 적합 | 문서나 JSON과 같은 비정형 데이터에 더 적합 |
MySQL, PostgreSQL, Oracle, SQL Server, Microsoft SQL Server | MongoDB, Cassandra, Couchbase, Amazon DynamoDB, Redis |
RDS
- DB 인스턴스는 클라우드에서 실행하는 격리된 데이터베이스 환경.
- DB 인스턴스에는 여러 사용자가 만든 데이터베이스가 포함될 수 있으며, 독립 실행형 데이터베이스 인스턴스에 액세스할 때 사용하는 도구 및 애플리케이션을 사용해 액세스할 수 있다.
- AWS 명령줄 도구, Amazon RDS API 작업 또는 AWS Management Console을 사용해 간단히 DB 인스턴스를 만들고 수정할 수 있다.
- 직접 시스템 로그인 불가능.
- RDS 는 serverless 가 아님
실습
Amazon Management Console에서 RDS를 검색하면 찾을 수 있다.

데이터베이스 탭의 데이터베이스 생성을 누른다.

그렇게 하면 사용하고자 하는 RDBMS의 여러 종류를 선택 할 수 있다.

아래에서 여러 설정들은 선택하고 데이터베이스 생성을 눌러 생성한다.

MySQL을 선택했기에 보안규칙을 확인해 3306포트가 인바운드 되어있는지 확인하고 없다면 편집해 추가한다.
MySQL Workbench에서 +를 눌러 만든 데이터베이스에 접속하자.
데이터베이스 생성이 완료되면 엔드포인트가 나오게 되는데 hostname에 해당 엔드포인트를 입력하고 생성할 때 설정한 username도 입력한다.

접속이 됨을 확인할 수 있다.

NoSqL
Document DB
- MongoDB API 워크로드의 완전 관리 및 유연한 확장이 가능한 문서전용(Document) 데이터베이스
- Amazon DocumentDB에서는 스토리지 및 컴퓨팅이 분리되어 각각을 독립적으로 조정
- 개발자는 데이터 크기에 관계없이 지연 시간이 짧은 읽기 전용 복제본을 몇 분 내에 최대 15개까지 추가하여 읽기 용량을 초당 수백만 개의 요청으로 늘릴 수 있음
- Amazon DocumentDB는 99.99%의 가용성을 위해 설계되었으며 6개의 데이터 복사본을 3개의 AWS 가용 영역(AZ)에 복제
- JSON 데이터 이용
- 유연한 인덱싱 제공
MongoDB
- Document 지향 Database
- 데이터 중복이 발생할 수 있지만 접근성과 가시성이 좋음
- 스키마 설계가 어렵지만 스키마가 유연해서 Application의 요구사항에 맞게 데이터를 수용 가능
- 분산에 대한 솔루션을 자체적으로 지원해서 Scale-out이 쉬움
- 확장시 Application을 변경하지 않아도 됨
RDBMS vs MongoDB

Dynamo DB
- 완전관리형 Key-Value 기반 NoSQL 데이터베이스 서비스
- Auto-Scaling
- DynamoDB는 유휴 시 암호화를 제공하여 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 제거
- DynamoDB를 통해 원하는 양의 데이터를 저장 및 검색하고 어느 수준의 요청 트래픽도 처리할 수 있는 데이터베이스 테이블을 생성 가능
- AWS Management Console을 사용하여 리소스 사용률 및 성능 지표를 모니터링할 수 있음
- DynamoDB는 온디맨드 백업 기능을 제공
- 테이블 생성시 스키마 생성 필요 없음
Document DB vs Dynamo DB
공통점
- NoSQL Database
- AWS Database Migration Service를 통해 데이터 마이그레이션을 위한 이식성을 제공
- AWS Key Management Service를 통한 저장 데이터 암호화와 보안기능을 제공
- 관리 API 호출과 CloudFormation에 대한 CloudTrail 및 VPC Flow Logs로 감사 기능 제공
차이점

Route53

- 가용성과 확장성이 뛰어난 DNS(도메인 이름 시스템) 웹 서비스
- Route 53을 사용하여 세 가지 주요 기능, 즉 도메인 등록, DNS 라우팅, 상태 확인을 조합하여 실행할 수 있음
실습
Amazon Management Console에서 Route53을 검색해 대시보드로 들어간다.

도메인을 등록하기 전에 도메인을 구매해야 한다. 도메인 이름 입력에 임의의 도메인을 입력하고 검색한다. 아래 도메인을 구매한 후 등록할 수 있다.

호스팅 영역 생성에서 외부에서 도메인을 구매할 수도 있다.
Certification Manager
- AWS 서비스 및 연결된 내부 리소스에 사용할 공인 및 사설 SSL/TLS 인증서를 프로비저닝, 관리 및 배포
- SSL/TLS 인증서를 구매, 업로드 및 갱신하는 데 드는 시간 소모적인 수동 프로세스를 대신 처리
-
사용할 TLS/SSL 인증서를 AWS 계정으로 요청하거나 가져온다.
-
도메인 이름 시스템(DNS) 또는 이메일 검증을 통해 요청된 인증서의 도메인 소유권을 검증하여 인증서 발급을 완료한다.
-
Elastic Load Balancing(ELB), Amazon CloudFront 등과 같은 다양한 AWS 서비스에서 새로 발급되거나 가져온 인증서를 사용한다.
SSL 인증서
- 공개 키와 개인 키라는 키 쌍을 갖고 있음
- 이 키들이 함께 작용하여 암호화된 연결을 수립
- "주체(subject)"라는 것을 포함하고 이는 인증서/웹사이트 소유자의 ID
- 인증서를 얻으려면 서버에서 인증서 서명 요청(CSR)을 생성해야 함
- 이 과정에서 서버에 개인 키와 공개 키 생성
- SSL 인증서 발급자(인증 기관 또는 CA라 함)에게 보내는 CSR 데이터 파일에는 공개 키가 포함
Certification Manager 특징
- ACM 통합 서비스를 위한 무료 퍼블릭 인증서
- 관리형 인증서 갱신
- 손쉬운 인증서 받기
CloudFront
- 뛰어난 성능, 보안 및 개발자 편의를 위해 구축된 콘텐츠 전송 네트워크(CDN) 서비스
CDN

- 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크
- 캐싱 / 동적 가속 / 엣지 로직 계산 기능
- 정적 콘텐츠, 동적 콘텐츠로 나누어짐
CloudFront 특징
- 대기 시간 감소
- 보안 향상
- 비용 절감
- 사용자 정의 전송
Elastic Load Balancing (ELB)

- 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법
Load Balancer
- 서버에 가해지는 부하(=로드)를 분산(=밸런싱)해주는 장치 또는 기술을 통칭

ELB 대상그룹
- 대상 그룹에 대상을 등록
- 기본적으로 로드 밸런서는 대상 그룹에 대해 지정한 프로토콜과 포트 번호를 사용하여 등록된 대상으로 요청을 전송
- 대상 그룹에 각 대상을 등록할 때 이 포트를 재정의할 수 있음
EC2 메인보드에서 로드 밸런서와 대상그룹을 확인 할 수 있다.


VPC

- 사용자가 정의한 가상 네트워크
- AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사함
VPC 기능
Virtual Private Cloud(VPC)
- 자체 데이터 센터에서 운영하는 기존 네트워크와 아주 유사한 가상 네트워크
- VPC를 생성한 후 서브넷을 추가할 수 있음
서브넷
- VPC의 IP 주소 범위
- 서브넷은 단일 가용 영역에 상주해야 함
- 서브넷을 추가한 후에는 VPC에 AWS 리소스 배포할 수 있음
IP 주소 지정
- VPC와 서브넷에 IPv4 주소와 IPv6 주소를 할당할 수 있음
- 퍼블릭 IPv4 및 IPv6 GUA 주소를 AWS로 가져오고 VPC의 리소스(예: EC2 인스턴스, NAT 게이트웨이, Network Load Balancer)에 할당할 수 있음
라우팅
- 라우팅 테이블을 사용하여 서브넷 또는 게이트웨이의 네트워크 트래픽이 전달되는 위치를 결정
게이트웨이 및 엔드포인트
- VPC를 다른 네트워크에 연결
- 예를 들면, 인터넷 게이트웨이를 사용하여 VPC를 인터넷에 연결
- VPC 엔드포인트를 사용하여 인터넷 게이트웨이 또는 NAT 장치를 사용하지 않고 AWS 서비스에 비공개로 연결
피어링 연결
트래픽 미러링
- 네트워크 인터페이스에서 네트워크 트래픽을 복사하고 심층 패킷 검사를 위해 보안 및 모니터링 어플라이언스로 전송
Transit Gateway
- 중앙 허브 역할을 하는 전송 게이트웨이를 사용하여 VPC, VPN 연결 및 AWS Direct Connect 연결 간에 트래픽을 라우팅
VPC 흐름 로그
- 흐름 로그는 VPC의 네트워크 인터페이스로 들어오고 나가는 IP 트래픽에 대한 정보를 캡처
VPN 연결
- AWS Virtual Private Network(AWS VPN)을 사용하여 온프레미스 네트워크에 VPC를 연결
CIDR(Classless Inter-Domain Routing, 사이더)
- 클래스 없는 도메인 간 라우팅 기법


/n이 사이더 표기법
- n번자리까지 network 영역, 그 뒤가 host 영역이 됨
- network 영역은 전체적으로 사용되는 네트워크 주소 범위, host 영역은 내가 할당할 수 있는 ip대역이 됨
[ Private IP 대역 ]
10.0.0.0~10.255.255.255
172.16.0.0~172.31.255.255
192.168.0.0~192.168.255.255
VPC 생성
- IP 주소 범위 선택
- 가용영역(AZ)별 서브넷 설정
- 인터넷으로 향하는 경로(route) 만들기
- VPC로부터의 트래픽 설정
NAT(Network Address Translation) Gateway
- 외부 서비스에서 프라이빗 서브넷의 인스턴스로 접근할 수 없게 하되, 프라이빗 서브넷의 인스턴스에서는 외부 서비스로 접근할 수 있게 해주는 서비스
VPC 구성

실습
VPC 대시보드에서 VPC 생성을 눌러 생성할 수 있다.

VPC를 먼저 만들고 서브넷을 설정할 수도 있지만 VPC 등을 선택하면 자동으로 만들 수 있다.