20230516 TIL - AWS의 Network, Database 서비스

ohyujeong·2023년 5월 16일
0

TIL

목록 보기
23/27
post-thumbnail

📖 오늘의 학습

  • AWS : Route53, Document/DynamoDB, RDS, ACM, CloudFront, ELB, VPC

AWS의 네트워크 관련 서비스

Route53

  • 도메인을 관리해주는 서비스
  • 도메인 등록, DNS 라우팅, 상태 확인을 조합하여 실행한다.
  • public host zoneprivate host zone 이 존재한다.
  • Route53 = DNS + 모니터링 + L4 + GSLB

  1. 엔드 유저가 특정 도메인을 요청한다 (www.example.com)
  2. 글로벌하게 등록된 네임 서버를 찾아간다
  3. 지역적으로 등록된 네임 서버를 찾아간다
  4. 로컬에 등록된 네임 서버를 찾아간다.
  • 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 생성

  1. IP 주소 범위 선택
  2. 가용영역(AZ) 별 서브넷 설정
  3. 인터넷으로 향하는 route만들기
  4. 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 워크벤치로 접속 확인

  1. setup new connection
  2. host에 RDS endpoint 주소 입력
  3. 마스터 명, 암호 입력
  4. 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로 감사 기능을 제공한다
  • 샤딩 및 오토스케일 가능

차이점



📝 주요메모사항


😵 공부하면서 어려웠던 내용

profile
거친 돌이 다듬어져 조각이 되듯

0개의 댓글