AWS 클라우드 (TIL 22)

석형원·2024년 4월 30일

TIL

목록 보기
22/52

✏️ 오늘 학습한 내용

  • DB
    • RDS
    • DocumentDB
    • DynamoDB
  • Network
    • Route53
    • Certification Manager
    • CloudFront
    • Elastic Load Balancing (ELB)
    • Virtual Private Cloud(VPC)

🔎 DB

SQL ( RDBMS ) vs. NoSQL

  • DB는 크게 RDBMS에서 다루는 SQL과 비정형 데이터를 다루는 NoSQL 서비스가 있다.
  • NoSQL : 스키마 형식이 일관적이지 않더라도 대용량으로 적재 가능
    • Key-Value
    • Graph
    • Document
    • Column store

RDS

Relational Database Service

  • AWS에서 RDBMS를 지원하는 서비스

  • DB 인스턴스는 클라우드에서 실행하는 격리된 데이터베이스 환경을 제공
    ( 별도의 DB 설치를 하지 않아도 됨 )

  • AWS Console을 통해 마우스 클릭으로 수분 내에 DB 생성이 가능

  • 클라우드 내에서 RDS를 이용하면 DB 서버 실행도 가능하고, 액세스 관리도 가능

  • 직접 시스템 로그인 불가능
    ( 직접 서버 내에 들어가는 것은 제공하지 않음 )

  • RDS 자체는 serverless가 아님

RDS의 구조

  • Primary instance, StandBy instance가 각자 다른 가용 영역(AZ)에 존재
    ( Primary에 장애가 발생해도 standby instance로 서비스를 지속시킬 수 있다 )

  • EBS : 데이터를 저장하는 역할

AWS에서 RDS 사용

( AWS 웹 페이지에서 RDS를 검색 -> 데이터베이스 -> 데이터베이스 생성 )

  • DB 생성

    • 템플릿

      • RDS 비용이 높은 편이기에 특별한 목적이 없으면 프리티어를 선택
    • 설정

      • 인스턴스 식별자 (DB 이름), 마스터 이름, 암호 등을 작성
    • 연결

      • 컴퓨팅 리소스

        • EC2 리소스에 연결할지 안할지 선택
          ( 이번 경우는 연결 안함 )
      • VPC

        • 만들어두었던 VPC를 선택
      • 퍼블릭 액세스

        • JDBC 연결을 외부에서 하고 싶으면 예로 선택
          ( 이번 경우 예를 선택 )
    • 데이터베이스 생성하기

  • 완료 후 앤드포인트를 통해 접속 가능

  • RDS 이용 중, DB에 문제가 발생했거나 해결하기 어려운 상황이 발생하면
    ( 스냅샷을 통한 특정 시점으로 복원을 선택 )

  • MySQL Workbench

    • 설치

      https://dev.mysql.com/downloads/workbench/
      Recommended Download로 들어가서 용량이 높은 것을 다운 받아야한다.

    • Workbench(MySQL Connections)로 DB에 접근
      ( 앤드포인트를 이용 -> 퍼블릭 액세스를 허용했기에 직접 접근이 가능 )

      • 만일 연결이 안될시, 확인해봐야할 사항

        • 퍼블릭 액세스가 허용되어 있는지?

        • 인바운드 규칙에서 포트가 열려있는지? ( 이 경우 3306포트 )

          열려있지 않다면 인바운드 규칙을 만들어 삽입
          e.g.) 3306 포트 내의 모든 IP의 접근을 허용


DocumentDB

  • NoSQL의 Document 형식 데이터베이스

  • MongoDB API 워크로드의 완전 관리 및 유연한 확장이 가능한 문서전용(Document) 데이터베이스
    ( MongoDB 기반의 작업을 수행할 때, Document DB를 선택 )

  • 복제본을 최대 15개까지 추가하여 세팅 가능
    ( 대용량 데이터 처리 용이 )

    • 데이터 크기에 관계 없음
    • 읽기 용량을 초당 수백만 개의 요청으로 늘릴 수 있음
  • 데이터 복사본을 내부적으로 3개의 AWS 가용 영역(AZ)에 복제하여 보유하고 있음
    ( 가용성이 높음 )

  • 기본적으로 JSON 데이터를 사용

  • 유연한 인덱싱

MongoDB

  • Document DB에서 MongoDB를 연계하여 사용 가능

  • MongoDB는 오픈소스 Document 지향 데이터베이스

  • 데이터 중복이 발생할 수 있지만 / 접근성과 가시성이 좋음

  • 스키마 설계가 어렵지만 / 스키마가 유연해 다양한 데이터 수용이 용이

  • 가장 큰 장점 : Scale-out이 쉽다
    ( 분산에 대한 솔루션을 자체 지원 )

    • Scale-out : 장비를 추가해 확장하는 방식
  • 확장시, Application을 변경하지 않아도 됨

  • RDBMS와 개념 차이

AWS에서 Document DB 사용

( AWS 웹 페이지에서 DocumentDB를 검색 -> 클러스터 -> 클러스터 생성 )


DynamoDB

  • 완전관리형 Key-Value 기반NoSQL 데이터베이스 서비스

  • Auto-Scaling

    데이터가 쌓이면 쌓일수록 자동으로 용량이 증설됨

  • 테이블 생성시 별도의 스키마 생성 작업이 필요 없음

DynamoDB 테이블 구조

  • Rows -> Itmes

  • 각 Item 내부는 key-value 형태로 구성

    • Search할 수 있는 Partition Key

    • Sort할 수 있는 SorkKey

AWS에서 Dyanamo DB 사용

( AWS 웹 페이지에서 DynamoDB를 검색 -> 테이블 -> 테이블 생성 )

  • 항목 생성 ( 수기로 데이터를 넣고 싶은 경우 )

  • 조회

    • 스캔 : Partition Key를 이용해 조회 가능

    • 쿼리 : 다양한 조건을 통해 조회 가능


Document DB vs. Dynamo DB

  • 공통점
    • NoSQL Database
  • 차이점
Dynamo DBDocument DB
모든 region에서 사용가능특정 region에서만 사용가능
IAM을 통해 DB에 대한 액세스 제어DB에서 user를 생성하고 관리, AWS는 이 영역에 관여하지 않음
key-value 중심Documents 형식
하이퍼 스케일 (용량에 상관없이 서비스 이용)쉬운 확장(최대 64TB)

🔎 Network

Route53

  • 가용성과 확장성이 뛰어난 DNS 웹 서비스
    ( 도메인을 관리해주는 서비스 )

  • 주요 기능을 조합하여 실행 가능

    • 도메인 등록

    • DNS 라우팅

    • 상태 확인

  • public host zone / private host zone 존재
    ( 영역 별로 사용할 수 있는 도메인을 나누어서 제공 )

  • Route53 = DNS(네임서버) + 모니터링 + L4 + GSLB
    ( 이 4가지를 모두 지원 )

  • DNS를 찾아가는 과정

    1. End user가 특정 도메인(www.~)에 대해 요청
    2. 처음엔 글로벌하게 등록된 DNS root name server를 방문
    3. 지역쪽에 등록된 Name server를 방문
    4. 최종적으로 Local name server에 방문하여 DNS에 대한 주소를 받아옴
      ( 이런 도메인들을 등록하는게 Route53의 기능 )

AWS에서 Route53 사용

( AWS 웹 페이지에서 Route53를 검색 -> 대시보드 -> 도메인 등록 )

  • 도메인을 외부에서 구매하거나, AWS에서 구매해야 등록 가능

  • 외부에서 도메인을 구매한 경우 등록하는 방법

    • DNS 관리 -> 호스팅 영역 생성
      ( 구매한 도메인을 등록 )

    • 구매했던 곳(호스팅 업체)에서 등록된 네임 서버의 이름을 AWS의 라우팅 대상과 동일하게 변경

  • 서브 도메인이 필요한 경우 생성하는 방법
    ( 호스팅 영역 -> 레코드 생성 )

    • 레코드 이름
      • 서브 도메인으로 사용할 이름을 지정
    • Root Server의 EndPoint를 연결

      ( 이 경우 Elastic Beanstalk으로 바로 가는 도메인 )

Certification Manager

  • HTTPS 서비스를 사용하는데 필요한 SSL 인증서를 등록, 발급, 관리할 수 있는 서비스

다양한 인증서들을 AWS Certification Manager(ACM)에 등록해서
도메인 호출시, 인증서를 인증해주는 서비스를 제공

  1. 사용할 TLS/SSL 인증서를 AWS 계정으로 요청하거나 가져온다.

  2. DNS 또는 이메일 검증을 통해 요청된 인증서의 도메인 소유권을 검증하여 인증서 발급을 완료한다.

  3. 다양한 AWS 서비스에서 새로 발급되거나 가져온 인증서를 사용한다.
    ( Elastic Load Balancing(ELB), Amazon CloudFront 등에서 SSL 인증서를 세팅 가능 )

SSL 인증서

  • Public key와 Private key 쌍을 보유

  • 인증서를 얻으려면 서버에서 인증서 서명 요청(CSR)을 생성해야함

  • SSL 인증서 발급에게 보내는 CSR 데이터 파일에 Public key가 포함 됨

  • HTTPS의 자물쇠를 클릭하면 인증서의 발급 일, 발급 기관 등을 확인할 수 있음

  • 이 인증서를 관리하는 것이 Certification Manager

AWS에서 Certification Manager 사용

  • 인증서를 AWS 내에서 발급 받는 경우
    ( AWS 웹 페이지에서 Certification Manager를 검색 -> 인증서 -> 인증서 요청 )

    • Route 53에 등록한 도메인을 입력
      • 서브 도메인도 입력
  • 외부에서 인증서를 가져오는 경우
    ( AWS 웹 페이지에서 Certification Manager를 검색 -> 인증서 -> 인증서 가져오기 )


CloudFront

  • CDN 서비스를 해주는 AWS 내의 서비스

  • 특징

    • 대기 시간 감소
    • 보안 향상
    • 비용 절감
    • 사용자 정의 전송

CDN

  1. 콘텐츠 전송 네트워크(CDN)는 데이터 사용량이 많은 애플리케이션의 웹 페이지 로드 속도를 높이는 상호 연결된 서버 네트워크
    ( 콘텐츠, 영상 등의 로딩, 처리 속도를 빠르게 해주는 서비스 )

  2. 정적 콘텐츠 & 동적 콘텐츠

  3. 캐싱 / 동적 가속 /엣지 로직 계산 기능

  1. 처음 방문자가 DNS를 요청
  2. DNS를 타고 CDN 서비스로 도착
  3. 이전에 받아두었던 컨텐츠가 있으면 다이렉트로 전달
    ( 원래 접속해야하는 Origin Server까지 가지 않고
    CDN에서 Caching을 통해 빠르게 콘텐츠를 내려줄 수 있는 서비스 )

-> 이 CDN 서비스를 해주는 게 AWS의 CloudFront

AWS에서 CloudFront 사용

( AWS 웹 페이지에서 CloudFront를 검색 -> 배포 -> 배포 생성 )

  • 원본 도메인
    • S3 버킷의 엔드포인트를 설정
    • 다이렉트로 Origin Server(S3)로 가지않고 CDN을 거쳐서 S3로 갈 수 있도록 하기 위함
  • 특정 IP에 대한 차단을 걸고 싶은 경우 WAF 설정

Elastic Load Balancing (ELB)

  • ELB는 AWS의 Load Balancer

  • 로드 밸런싱은 애플리케이션을 지원하는 리소스 풀 전체에 네트워크 트래픽을 균등하게 배포하는 방법

Load Balancer

  • 로드밸런서는 서버에 가해지는 부하(Load)를 분산(Balancing)해주는 장치 또는 기술을 통칭
L4로드밸런서L7로드밸런서
Layer4 (Transport layer)Layer7 (Application layer)
TCP/UDP 포트 정보를 바탕으로 함TCP/UDP 포트 정보 + HTTP 쿠키 정보 등
네트워크 단계에서 패킷을 나눠줌애플리케이션 단계에서 로드를 분산, 더 섬세한 라우팅이 가능
( 상대적 가격이 더 저렴 )( 비정상적인 트래픽을 사전에 필터링 )

ELB 대상그룹

  • 로드 밸런서를 생성하게되면 대상 그룹을 등록해야함
    ( 어디에 연결되는 ELB인지 )
  1. 대상 그룹에 대상을 등록
  2. 로드밸런서가 대상 그룹에 대해 각각의 대상으로 지정한 프로토콜, 포토 번호를 사용해 요청을 전송
    ( 로드 밸런서와 대상을 연결 )

AWS에서 ELB 사용

( AWS 웹 페이지에서 EC2를 검색 -> 로드 밸런싱 -> 로드밸런서 )

  • 대상 그룹 생성

    • 인스턴스를 선택해 그룹 내 대상 등록
  • 로드 밸런서

    • Network Load Balancer

      • IP 대역에서 로드밸런싱을 하는 경우
      • EC2의 경우 고정 IP를 할당할 수 있지만, 그외 서비스는 여기서 고정 IP를 할당해야함
    • Application Load Balancer
      -> 이번에 사용할 로드 밸런서

    • 1단계: 로드 밸런서 구성

      • 기본 구성 - 체계

        • 인터넷 경계 : 외부와 연결하는 ELB 구성
      • 리스너 - Load Balancer 프로토콜

        • HTTP인 경우 HTTP를 선택

        • Certification에 SSL 인증서가 등록된 경우 HTTPS를 선택

    • 2단계: 보안 설정 구성

      • 인증서 선택 ( Certification Manager에 등록된 경우에만 등록 가능 )
    • 3단계: 보안 그룹 생성

    • 4단계: 라우팅 구성

      • 위에서 만들었던 대상 그룹을 선택
    • 5단계: 대상 등록

  • 트래픽 발생 시 모니터링 가능


Virtual Private Cloud(VPC)

  • 사용자가 정의한 가상 네트워크로 AWS 리소스를 시작할 수 있음

  • 데이터센터에서 운용하는 네트워크와 유사한 개념

  • 클라우드 내의 VPC라는 가상의 네트워크 망을 구성해서 애플리케이션이나 서버를 관리할 수 있도록 함

  • VPC 구조

    • VPC Peering Connection : 각각의 VPC를 연결해주는 역할

    • VPC 내부에는 여러 가지 Subnet을 나누어 운영 가능

      • Private/Public Subnet

VPC 기능

  • 서브넷

    • 서브넷은 VPC의 IP 주소 범위

    • 서브넷은 단일 가용 영역에 상주

    • 서브넷을 통해 다양한 리소스를 관리

  • IP 주소 지정

    • IPv4, IPv6 모두 할당 가능
  • 라우팅

    • 라우팅 테이블을 사용하여 서브넷 또는 게이트웨이의 네트워크 트래픽이 전달되는 위치를 결정
  • 게이트웨이 및 엔드포인트

    • 게이트웨이 : VPC를 다른 네트워크에 연결
      ( VPC 내부에 게이트웨이가 존재 )

    • VPC 엔드포인트 : 인터넷 게이트웨이 또는 NAT 게이트웨이를 이용하지 않고 AWS 서비스에 비공개로 연결

      • Public Subnet 내부에 인터넷 게이트웨이가 존재
      • Private Subnet 내부에 NAT 게이트웨이가 존재
  • 피어링 연결

    • VPC는 여러 개로 나누어 운영 가능 -> Subnet

    • 이를 VPC Peering Connection을 사용하여 연결

    • 두 VPC의 리소스 간 트래픽을 라우팅한다.

  • 트래픽 미러링

    • VPC에 들어오는 트래픽들을 모니터링할 수 있음
  • Transit Gateway

    • 전송 게이트웨이(중앙 허브 역할)를 사용하여 VPC, VPN, AWS Direct Connect 연결 간에 트래픽을 라우팅한다.
  • VPC 흐름 로그

    • VPC의 네트워크 인터페이스로 들어오고 나가는 IP 트래픽에 대한 정보를 캡쳐
  • VPC 연결

    • Virtual Private Network(VPN)을 사용하여 온프레미스 네트워크에 VPC를 연결

CIDR

  • Classless Inter-Domain Routing(CIDR) : 클래스 없이 도메인 간 라우팅하는 기법

기존의 A Class, B Class, C Class, D Class 라는 IP 대역에 대해 나눠진 것을,
굳이 나누지 않고 이 CIDR (사이더)를 통해서 도메인 간 라우팅을 하는 기법

  • IP address

    • Network 영역과 Host 영역으로 구분
    • 8 bit의 이진법으로 나누어 표현
  • CIDR 표기법

    • 어디까지 Network 영역으로 사용할지 나누는 표기법

    • 즉, 어느 대역까지 IP를 쓸 수 있느냐를 표현

    • 표기된 숫자만큼의 bit가 Network 영역, 그 외가 Host 영역

    • ex) 172.16.0.0 /24 -> 24가 CIDR 표기법

VPC 생성

  1. IP 주소 범위 선택

  2. 가용 영역(AZ)별 서브넷 설정
    ( Region 내부에 여러 AZ를 둘 수 있고, AZ 하나에 Subnet이 각각 들어갈 수 있음 )

  3. 인터넷으로 향하는 경로 만들기

  4. VPC로부터의 트래픽 설정

e.g.)

  • VPC를 생성

    • CIDR표기법 : 172.31.0.0/16
      -> Network영역이 16, Host영역이 16

    • Subnet 추가 : ap-northeast-2a, ap-northeast-2c
      -> Network영역이 24, Host영역이 8
      ( Subnet의 CIDR 숫자가 더 작아선 안됨 16 < 24 )

VPC 구성

  • EC2를 하나 만들면 내부적으로 보안을 강화하기 위해 Private subnet에 위치하게 됨

  • 외부와 통신하기 위해선

    • Public subnet의 경우 Internet Gateway를 통해 자유롭게 통신

    • Private subnet의 경우 Direct 통신이 불가능하기에 public으로 넘어가서 통신을 해야함

      • Terminal로 통신을 시도하는 경우 : Internet Gateway에서 Bastian 서버를 통해 Direct 연결
      • EC2 내부 인스턴스의 경우 NAT Gateway를 통해 통신
  • 인스턴스와 서비스를 하기 위해선

    • ELB-ALB를 통해 EC2와 Direct 연결

AWS에서 VPC 사용

( AWS 웹 페이지에서 VPC를 검색 -> VPC -> VPC 생성 )

[ 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만을 선택할 경우, VPC 생성 후 Subnet 등도 별도로 생성해줘야함

  • VPC 등을 선택할 경우, 편리하게 한번에 생성 가능

  • NAT Gateway는 보통 탄력적 IP 주소가 설정이 된다.
    ( 고정 IP가 있어야 외부에서 포트 열어줄 때, 유용하게 사용 )

profile
데이터 엔지니어를 꿈꾸는 거북이, 한걸음 한걸음

0개의 댓글