📖 오늘의 학습
- AWS : Route53, Document/DynamoDB, RDS, ACM, CloudFront, ELB, VPC
AWS의 네트워크 관련 서비스
Route53
- 도메인을 관리해주는 서비스
- 도메인 등록, DNS 라우팅, 상태 확인을 조합하여 실행한다.
public host zone
과 private host zone
이 존재한다.
- Route53 = DNS + 모니터링 + L4 + GSLB
- 엔드 유저가 특정 도메인을 요청한다 (www.example.com)
- 글로벌하게 등록된 네임 서버를 찾아간다
- 지역적으로 등록된 네임 서버를 찾아간다
- 로컬에 등록된 네임 서버를 찾아간다.
- DNS 서버를 활용해서 원하는 도메인을 찾아갈 수 있는지 선택을 하게 되는데, 이런 도메인을 등록하는 것이 Route53의 기능이다.
사용방법
AWS에서 도메인을 구입하거나, 외부에서 구입한 도메인을 등록하여 사용할 수 있다.
AWS 말고 외부에서 도메인을 구매했을 경우:
- 호스팅 영역 생성
- 생성 후 웹 호스팅 업체로 가서 AWS 콘솔에 나와있는 네임서버를 복사해서 변경해준다.
서브 도메인
- 기존 도메인의 앞부분에 서브개념의 도메인명을 지정하여 해당 서비스를 제공할 수 있도록한다.
ex) admin.example.com
- 호스팅 영역 - 레코드 - 레코드 생성 - 라우팅 정책선택 - 단순라우팅 - 단순레코드 정의 - admin.~ 에 해당하는 레코드 이름/유형을 정의한다.
VPC (Virtual Private Cloud)
- 사용자가 정의한 가상의 네트워크
- AWS의 확장 가능한 인프라를 사용한다는 이점과 함께 고객의 자체 데이터 센터에서 운영하는 기존 네트워크와 유사하다.
- 여러개의 VPC 들을 Peering connection을 통해 연결할 수 있다.
- VPC안에는 여러개의 subnet을 나눠서 운영 (public, private)
- 서브넷 : VPC의 IP주소 범위. 단일 AZ에 상주해야한다. 서브넷을 추가한 후에는 VPC에 AWS 리소스를 배포할 수 있다.
- IP 주소 지정 : VPC와 서브넷에 IPv4, IPv6 주소를 할당할 수 있다.
- 라우팅 : 라우팅 테이블을 설정하여 서브넷 또는 게이트웨이의 네트워크 트래픽이 전달되는 위치를 결정한다.
게이트웨이 및 엔드포인트
- 게이트웨이는 VPC를 다른 네트워크에 연결한다.
예) 인터넷 게이트웨이를 사용하여 VPC를 인터넷에 연결한다.
- VPC 엔트포인트를 사용하여 (인터넷 게이트웨이/NAT 장치)를 사용하지 않고 AWS서비스에 비공개로 연결한다.
- Peering connection : 두 VPC 리소스 간 트래픽을 라우팅한다.
- 트래픽 미러링 : 네트워크 인터페이스에서 네트워크 트래픽을 복사하고, 심층 패킷검사를 위해 보안 및 모니터링 어플라이언스로 전송
- Transit Gateway : 중앙 허브 역할을 하는 전송 게이트웨이를 사용하여 VPC, VPN 연결 및 AWS Direct Connect 연결 간에 트래픽을 라우팅한다.
- VPC 흐름 로그 : VPC의 네트워크 인터페이스로 들어오고 나가는 IP 트래픽에 대한 정보를 캡쳐
- VPN 연결 : AWS VPN을 사용하여 온프레미스 네트워크에 VPC를 연결한다
CIDR
- 클래스 없는 도메인 간 라우팅 기법
- IP 주소는 네트워크 영역과 호스팅 영역을 관리하는 부분으로 나뉜다.
- 마지막 빨간 색 글자를 줄일 수록 대역이 좁아진다
VPC 생성
- IP 주소 범위 선택
- 가용영역(AZ) 별 서브넷 설정
- 인터넷으로 향하는 route만들기
- VPC로, VPC부터의 트래픽 설정
- 현재 VPC 설정에서 VPC, subnet, routing table, network 연결(연결할 인스턴스(프로젝트가 들어있음)) 을 한꺼번에 생성해주는 기능이 있어 생성이 아주 편리해졌다.
기존에는 왼편에 있는 옵션들을 일일히 콘솔에서 각각의 서비스로 들어가서 생성해주어야 했는데, VPC를 생성할 때 모두 같이 지정할 수 있게 되었다 👍
VPC 설계
- Private 서브넷의 경우 NAT gateway를 설정해야 외부와 연결할 수 있다.
- RDS 인스턴스가 있을 경우 보안을 강화하기 위해 private subnet에 위치시킨다. 외부랑 direct로 통신은 못한다.
그러기 위해서는 public subnet을 통해야 하는데, 방법은 2가지이다.
- bastian host를 두는 방법
- NAT gateway (EIP가 자동으로 세팅)
- public subnet은 인터넷 게이트웨이와 연결되어 있어 자유롭게 외부와 통신한다.
ACM (AWS Certification Manager)
- AWS 서비스 및 연결된 내부 리소스에 사용할 공인 및 사설 SSL/TLS 인증서를 프로비저닝, 관리, 배포할 수 있다.
- SSL/TLS 인증서를 구매, 업로드 및 갱신하는 데 드는 시간과 소모적인 수동 프로세스를 대신 처리한다.
- SSL/TLS 인증서는 AWS에서 구매할 수도 있고, 도메인과 마찬가지고 외부에서 구매 후 AWS에 등록하여 사용할 수 있다.
- 인증서 발급 시 도메인 이름 시스템(DNS) 또는 이메일 검증을 통해 요청된 인증서의 도메인 소유권을 검증하여 인증서 발급을 완료한다.
- ELB, CloudFront 와 같은 다양한 AWS 서비스에서 새로 발급되거나 가져온 인증서를 사용한다.
- 서비스를 할 때 HTTP는 보안 문제로 잘 사용을 하지 않고 HTTPS 사용을 하게 되는데, 그 때 사용되는 SSL 인증서를 등록 및 발급하는 서비스이다.
- ACM 통합 서비스를 위한 무료 퍼블링 인증서를 발급한다.
- 관리형 인증서를 갱신해줄 수 있다. 갱신 날짜 알림 메일 서비스 제공한다.
- 인증서를 손쉽게 받아서 관리할 수 있다.
AWS에서 인증서 요청
- 인증서 요청 - 퍼블릭 인증서 요청 - 도메인 이름 입력 (구입한 사용가능한 도메인/서브도메인 입력) - 검증방법 선택(DNS 권장) - 키 알고리즘 설정 - 요청
외부에서 가져오기
- 인증서 가져오기 - 인증서 세부정보 입력(따로 요청해야함)
-> 검증을 위해 Route53 의 호스팅영역의 레코드에 cname이 하나 더 생성되고, 몇 분정도 기다리면 인증서의 상태가 발급됨으로 변경된다.
다른 AWS 서비스와의 연계
- ELB 생성 시 적용 : 생성 과정의 기본 인증서 선택에서 ACM에서 인증서 선택 - 생성했던 인증서를 선택이 가능하다
- CloudFront 배포생성 시 적용 : 설정에서 사용자정의 SSL 인증서 선택
SSL 인증서
- 공개키와 개인키라는 키 쌍을 갖고 있다.
이 키들이 함께 작용하여 암호화된 연결을 수립한다. 인증서는 주체(object) 라는 것을 포함하고 있다. object는 인증서/웹사이트 소유자의 ID 이다.
- 인증서를 얻으려면 서버에서 인증서 서명 요청(CSR)을 생성해야 한다. 이 과정에서 서버에 개인키와 공개키가 생성된다.
- SSL 인증서 발급자(인증 기관 또는 CA)에게 보내는 CSR 데이터 파일에는 공개 키가 포함된다.
- 자물쇠 아이콘을 클릭하게 되면 인증서 발급정보를 볼 수 있다
CloudFront
- CDN(Content Delivery Network) 콘텐츠 전송 네트워크 서비스
- 콘텐츠를 빨리 로딩을 하여 처리 속도를 높여준다.
- 근거리에서 캐싱을 통해 굳이 먼 거리까지 가지 않고 바로 가져온다.
- 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크이다.
- 정적/동적 컨텐츠로 나뉜다.
- 컨텐츠를 가져오기 위해 원래 가야했던 서버로 가지 않고 CDN의 캐시를 가져온다
- 대기시간이 감소하고 보안이 향상되며 비용이 절감된다.
- 사용자 정의 전송
ELB (Elastic Load Balancing)
- 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법이다.
- Layer에 따른 여러 종류의 Load balancer가 있다.
- 앞서 배운 Elastic Beastalk에서도 생성 시 ELB를 설정하면 생성된다.
- 장애 대응에 용이하다.
ELB 대상 그룹
- 어떤 대상 그룹에 연결되는 ELB인지를 설정하기 위해 대상그룹에 대상을 등록한다
- 기본적으로 Load balancer는 대상 그룹에 대해 지정한 프로토콜과 포트번호를 사용해 등록된 대상으로 요청을 전송한다.
- 또는 대상 그룹에 각 대상을 등록할 댸 포트를 정의할 수 있다.
ELB 생성
ELB 생성 시 대상그룹을 선택해야하기 때문에 먼저 대상그룹을 생성해준다.
-
대상그룹 생성 : EC2 - 로드밸런싱 - 대상그룹 생성 - 대상그룹 이름, VPC 설정 - 대상 그룹 생성 완료 - 대상 그룹에 대상 등록 - EC2 나 elasticbeanstalk 이 있으면 선택 (선택한 서비스 앞단에 load balancer가 생성될 것이다)
-
ELB 생성 : EC2 - 로드밸런싱 - 로드밸런서 - 로드밸런서 생성 - 유형 선택 : application, network, gateway 중 선택 (application으로 진행) - load balancer구성 - 체계: 인터넷 경계 설정 - 리스너 - 프로토콜 설정 (https 설정 시 ACM에 등록된 SSL 인증서 사용) - VPC 선택 - 보안그룹 선택 - 대상그룹 선택 - 검토 - 생성
AWS의 Database 서비스
RDS (관계형 DB)
- DB 인스턴스는 클라우드에서 실행하는 격리된 데이터베이스 환경이다.
- 여러 사용자가 만든 데이터베이스가 포함될 수 있으며 독립 실행형 데이터베이스 인스턴스에 액세스 할 때 사용하는 도구 및 애플리케이션을 사용해 액세스 할 수 있다.
- AWS CLI, Amazon RDS API 작업 또는 AWS management console을 사용해 간단히 DB인스턴스를 만들고 수정할 수 있다.
- 직접 시스템 로그인은 불가능하다.
- RDS는 serverless가 아니다.
- Primary, StandBy 로 기본적으로 구성되어 있다.
- RDS는 인스턴스와 EBS로 이루어져 있다.
RDB 생성
- 데이터베이스 - 인스턴스 - 데이터베이스 생성 - 엔진 옵션 설정 (aurora, mysql, oracle… - oracle, mssql은 라이센스가 있기 때문에 구입 시 별도의 라이센스 비용이 청구됨) - 버전선택 - 템플릿 : 테스트, 프로덕션… - 식별자 : 원하는 DB명, 마스터 사용자, 암호 설정 - 스토리지 설정 - EC2 리소스와의 연결 설정 - VPC 설정 - 서브넷 설정 - 퍼블릭 액세스 : 예 로 선택 시 클라이언트에서 접속 가능 - 보안그룹 설정 - 인증방식 설정 : 기본으로 암호인증 - 데이터베이스 생성~!
- 스냅샷 : 원하는 데이터를 복구
- 파라미터 그룹 : DB에 대해서 기본적인 세팅
예) 타임 존을 설정
- 엔드포인트 : DB에 접속할 수 있는 주소
- MySql선택 시
3306
이 default 포트이다.
-> RDS 인스턴스의 보안그룹 인바운드 규칙에 3306 포트가 설정되어있는지 확인한다
MySql 워크벤치로 접속 확인
- setup new connection
- host에 RDS endpoint 주소 입력
- 마스터 명, 암호 입력
- connect
만약 접속이 안됐다면 endpoint 주소를 잘못 입력했거나 퍼블릭 액세스 가능 옵션을 체크하지 않은 것이다.
포트가 3306이 열려있는지 확인한다. (모든 IP가 들어갈 수 있도록 세팅 0.0.0.0/0)
DocumentDB (비관계형 DB)
- MongoDB의 API 워크로드의 완전 관리 및 유연한 확장이 가능한 문서전용 데이터베이스이다.
- Amazon Document DB에서는 스토리지 및 컴퓨팅이 분리되어 각각을 독립적으로 조정한다.
- 개발자는 데이터의 크기에 관계없이 지연 시간이 짧은 읽기 전용 복제본을 몇 분 내에 최대 15개까지 추가하여 읽기 용량을 초당 수백만개의 요청으로 늘릴 수 있다.
- DocumentDB 는 99.9%의 가용성을 위해 설계되었으며, 6개의 데이터 복사본을 3개의 AWS 가용영역에 복제한다.
- 대용량 데이터를 처리하기 용이하다.
- JSON 데이터 형태로 저장한다.
- 인덱싱이 유연하다
- Document 지향 DB이다.
- 스키마 설계가 어렵지만, 스키마가 유연해서 Application의 요구사항에 맞게 데이터를 수용할 수 있다.
- 분산에 대한 솔루션을 자체적으로 지원해서 Scale-out이 쉽다.
- 확장 시 App을 변경하지 않아도 된다.
- AWS DocumentDB와 별개로 Mongo DB 자체적으로 클라우드 유료 서비스를 제공하고, shell이나 실행파일을 받아서 로컬에 직접 설치 하여 접근할 수 있다.
관계형 vs. 비관계형 데이터베이스
Document DB 생성
- 클러스터 - 생성 - 인스턴스 클래스, 개수 설정 - 마스터사용자, 암호 설정 - 클러스터 생성
- 기본, 서브로 구성된다.
- 연결성 및 보안 탭에서 연결하는 command 라인을 제공하여 그대로 따라하면 된다.
- EC2에 직접 설치도 가능하다.
DynamoDB (비관계형 DB)
- 완전관리형 key-value기반 NoSQL 데이터베이스 서비스
- Auto-Scaling : 데이터가 쌓이면 쌓이는 만큼 용량이 늘어남. 고정적인 용량을 설정하지 않아도 됨
- 유휴 시 암호화를 제공하여 중요한 데이터 보호와 관련된 운영 부담 및 복잡성을 제거한다.
- 원하는 양의 데이터를 저장 및 검색하고 어느 수준의 요청 트래픽도 처리할 수 있는 데이터베이스 테이블을 생성할 수 있다.
- AWS 관리 콘솔을 사용해 리소스 사용률 및 성능 지표를 모니터링 한다.
- DynamoDB는 온디맨드 백업 기능을 제공한다
- 테이블 생성 시 스키마 생성이 필요없다.
items
: 하나의 row를 의미한다
partition key
를 통해 데이터를 조회한다.
생성
대시보드 - 테이블 생성 - 테이블 명, 파티션 키, 정렬 키 설정 시 테이블 생성 완료 가능
데이터 생성 : 테이블 - 항목 탐색 - 항목 생성
-> 보통 이렇게 데이터를 생성하는 경우는 거의 없고, AWS lambda를 통해 한꺼번에 데이터를 적재하는 것이 일반적이다.
DocumentDB vs. DynamoDB
공통점
- NoSQL DB
- AWS database migration service를 통해 데이터 마이그레이션을 위한 이식성을 제공한다
- AWS Key management service를 통한 저장 데이터 암호화와 보안 기능을 제공한다.
- 관리 API 호출과 CloudFormation에 대한 CloudTrail 및 VPC Flow logs로 감사 기능을 제공한다
- 샤딩 및 오토스케일 가능
차이점
📝 주요메모사항
😵 공부하면서 어려웠던 내용