AWS

0woy·2023년 7월 11일
0

LikeLion

목록 보기
6/6
post-thumbnail
post-custom-banner

📌 순천향대학교 멋쟁이 사자처럼 동아리 백엔드 트랙에서 배운 내용을 정리하여 올립니다.

📕 AWS (Amazon Web Services)

- 아마존 닷컴에서 개발한 클라우드 컴퓨팅 플랫폼
- 네트워킹 기반 가상 컴퓨터와 스토리지, 네트워크 인프라 등 다양한 서비스 제공
- 비즈니스와 개발자가 웹 서비스를 사용하여 확장 가능하고 정교한 어플리케이션 구축 지원

과거에도 서버를 빌려주는 서비스는 존재.
AWS는 여러 사업자에게 각각 빌려야 했던 인프라를 일괄로 빌릴 수 있고, OS, 웹 서버, DB 서버 등에 필요한 소프트웨어까지 사용 가능함

📖 클라우드?

  1. 클라우드 (Cloud)
    - 인터넷을 통해 컴퓨팅 리소스와 서비스를 제공하는 개념
    - 기존에는 개별 컴퓨터나 로컬 서버에 의존하여 데이터 저장 & 애플리케이션 실행 방식이 일반적.
    - 클라우드 컴퓨팅은 인터넷을 통해 원격으로 컴퓨팅 리소스에 접근해 필요한 만큼 사용할 수 있는 방식

  2. 클라우드 컴퓨팅 이점
    - 컴퓨팅 리소스를 필요한 만큼 신속히 확장 & 축소 = 유연성↑
    - 클라우드 사용자는 서버관리, 업그레이드, 보안 등의 부담↓
    - 사용한 만큼만 비용을 지불하므로 초기 투자 비용↓
    ex) AWS, Microsoft Azure, Google Cloud Platform(GCP)


📙 컴퓨팅 서비스 (Computing Service)

1. EC2 (Elastic Compute Cloud)

  • AWS에서 가장 기본적이면서 널리 쓰이는 인프라로, 물리 환경의 컴퓨터처럼 컴퓨팅 리소스를 제공하는 서비스
    ex) PC방에서 돈 내고 컴퓨터를 이용하는 것과 유사한 개념 (사용한 만큼 지불)
  • 클라우드 컴퓨팅 파워의 규모 자유자재로 변경
  • 인스턴스라고 불리는 가상 머신으로 제공
  • 안정성을 위해 여러 AWS 리전과 가용 영역에 걸쳐 배포

2. Lambda (Serverless Computing)

  • 모든 유형의 어플리케이션이나 백엔드 서비스에 대한 코드를 별도의 관리 없이 실행하는 서비스
  • 사용자는 서버 걱정 없이 코드만으로 서비스 실행 가능
  • Serverless 아키텍쳐 구현에 사용
  • 서버 및 OS 유지 보수, 용량 프로비저닝 및 자동 확장, 코드 모니터링 및 로깅과 같은 컴퓨터 리소스의 모든 관리를 자체적으로 수행
    → Lambda가 사용하는 언어 중 하나로 코드를 제공하기만 하면 됨

📖 용어 설명

⑴ 용량 프로비저닝 (Capacity Provisioning)
- 예상 트래픽, 사용량 또는 작업 부하에 기반하여 컴퓨팅 리소스를 사전에 설정하는 것
- Lambda는 필요에 따라 자동으로 확장하여 트래픽 증가 & 감소 시에도 최적의 리소스 사용 보장


⑵ 자동 확장 (Auto Scailing)
- 트래픽 증가에 따라 자동 확장
- 실행할 함수 인스턴스의 수를 동적으로 조정하여 요청 처리, 부하 분산 수행 → 애플리케이션의 성능 및 확장성 향상


⑶ 코드 모니터링, 로깅 (Code Monitoring, Logging)
- 실행 중인 함수에 대한 로그를 기록, CloudWatch Logs와 통합하여 사용자에게 액세스 할 수 있게 함.
함수 실행 상태, 오류 디버깅, 성능 모니터링 가능

📖 Lambda 사용 시기 & 단점

  • 언제 사용하면 되는가?
    - 코드를 계속 실행시키기 보단 특정한 시기에만 실행시키는 경우
    - 서버를 띄우지 않고 간단한 코드를 실행시키고 싶은 경우
    - 특정 기간 & 주기로 코드를 실행시켜야 하는 경우
    - 트리거가 실행될때만 코드를 실행시키고 싶은 경우

  • 단점?
    - 실행시간 & 코드 용량 제한 : 코드 용량이 최대 250MB, 실행 시간은 최대 15분으로 제한
    - 초기 지연 : 최초 호출시 Cold Start & 초기 지연시간 발생
    cold start: EC2는 항상 실행 준비 상태, Lamda는 코드 실행 + 사전 준비 시간 필요


📒 네트워킹 서비스 (Networking Service)

1. VPC (Virtual Private Cloud)

  • 클라우드 가상 네트워크 구축 서비스
  • IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등
  • 가상 네트워킹 환경을 완벽히 제어, IPv4와 IPv6 모두 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스 가능

2. Route53

AWS의 DNS(Domain Naame System) 도메인 관리, 설정 서비스

  • 도메인 등록: 수많은 최상위 도메인, 하위 도메인 등록 가능
    도메인 이름 구입 & 기존 도메인 전송 O

  • DNS 관리: DNS 레코드를 관리하는 기능 제공.
    DNS 레코드는 도메인 이름과 IP 주소 간의 매핑 정보 정의함
    Route 53을 사용하여 DNS 레코드 생성, 수정, 삭제하고, 도메인 이름을 관리할 수 있음.

  • 트래픽 라우팅: 도메인 이름을 여러 대상 리소스 ex) EC2 인스턴스, ELB, S3 저장소로 라우팅 하는 기능 제공
    → 트래픽을 다른 리전, 다른 엔드포인트로 분산하거나, 가중치 기반 라우팅, 지역 기반 라우팅 등 다양한 라우팅 정책 구성 O

  • 상태 검사: 애플리케이션 및 인프라의 상태 주기적으로 모니터링, 자동으로 장애 발생 시 대체 리소스로 전환하는 기능을 제공 = 애플리케이션의 가용성과 신뢰성↑

3. ELB (Elastic Load Balancer)

애플리케이션 트래픽을 여러 대상 서버 ex) EC2 인스턴스, 컨테이너, IP주소, Lambda 함수로 분산시켜 가용성과 확장성 향상시키는 역할

  • 로드 밸런싱: 들어오는 요청을 여러 대상으로 분산
    각 대상 서버의 상태를 모니터링하여 요청을 안정적으로 처리함 → 트래픽 부하 분산, 단일 서버에 의존하는 단일 장애 지점 방지
  • 가용성 및 확장성: 여러 가용 영역에 걸쳐 로드 밸런싱을 수행하여 애플리케이션의 가용성 보장.
    여러 대상 인스턴스로 트래픽을 분산시킴으로써 트래픽이 증가할 때 확장이 가능하며, 대상 인스턴스 중 하나에 장애 발생 시 트래픽을 다른 인스턴스로 자동 전환

📖 가용영역 (Availability Zone)
- AWS 클라우드 내의 물리적인 데이터 센터 의미, 각 AZ은 독립된 전력 공급, 네트워킹 및 냉각 시설을 갖춘 격리된 공간으로 구성됨

- 동일한 지리적 영역 내에서도 서로 독립적으로 운영

- 논리적인 단위로, AWS 리전 내에서 서로 다른 위치에 존재함
ex) us-east-1a, us-east-1c 형태로 표현

- 고가용성을 구성하기 위한 핵심 개념.
예를 들어, ELB를 사용하여 가용영역 간에 트래픽을 분산시키면, 한 가용영역에서 장애가 발생하더라도 다른 가용영역에서 애플리케이션을 계속해서 제공 가능

📖 가용성 (Availability)
- 시스템이 지속적으로 작동하고 사용자에게 신뢰할 수 있는 서비스를 제공할 수 있는 능력

- 장애 복구, 자동 확장, 로드 밸런싱 및 데이터 백업과 같은 기술과 프로세스를 통해 달성

3-1. Scale-up & Scale-out

ELB의 성능 향상을 위해 사용되는 방법으로, 애플리케이션의 요구 사항과 트래픽 패턴을 고려하여 선택함.

1. Scale-up
- ELB의 성능을 개선하기 위해 단일 리소스의 성능을 향상 시키는 것

- 기존 리소스에 더 많은 컴퓨팅 리소스 ex) CPU, Memory 를 할당하거나 리소스 성능을 강화하여 처리할 수 있는 트래픽을 늘리는 방식

- ELB의 처리 능력을 개선하고 병목 현상 완화

- 한정된 성능 한도에 도달할 수 있으며, 추가 리소스 확보에는 물리적 제한이 있을 수 있음

- 단일 리소스의 성능을 향상시키는 것으로, 비교적 적은 트래픽이나 리소스의 한계에 도달하지 않은 경우 유용

2. Scale-out
- ELB의 성능을 개선하기 위해 여러 리소스를 추가하여 트래픽을 분산시키는 것을 의미

- 새로운 리소스를 추가하여 처리할 수 있는 트래픽 분산→ ELB의 처리 능력 증가

- 추가 리소스를 동적으로 프로비저닝, 리소스의 수를 조절해 요구에 맞게 조정할 수 있는 유연성 제공

- 여러 리소스를 추가하여 처리 능력을 증가시키는 것으로, 높은 트래픽 처리 및 가용성을 요구하는 경우 유용

📖 로드 밸런싱 알고리즘

  • 라운드 로빈 (Round Robin)
    요청을 순서대로 돌아가며 배분
  • 가중 라운드 로빈 (Weighted Round Robin)
    각 서버에 가중치를 매기고 우선적으로 배분
  • IP 해시 방식 (IP Hash)
    클라이언트의 IP 주소를 특정 서버로 매핑하여 요청 처리
  • 최소 연결 방식 (Least Connection)
    요청이 들어온 시점에 가장 적은 연결 상태 를 보이는 서버에 우선적으로 트래픽 배분
  • 최소 리스폰타임 (Least Response Time)
    서버의 현재 연결 상태 + 응답시간 모두 고려하여 트래픽 배분

📗 스토리지 서비스 (Storage Service)

1. Cloud Front

데이터, 동영상, 애플리케이션 및 API를 전 세계 고객에만 전송하는 고속 글로벌 콘텐츠 전송 네트워크 (CDN: Content Delivery Network) 서비스

  • S3, EC2, ELB, Route 53 등 과 같은 AWS 서비스와 통합되어 운영
  • 리전에 상관 없이 엣지 로케이션 기준으로 사용자와 가장 가까운 곳 에서 파일 캐시를 가져오기 때문에 속도도 빠르며 비용도 EC2 혹은 S3 서비스로 제공하는 것보다 저렴함
    엣지 로케이션: CDN의 캐시 서버가 위치한 전 세계적으로 분산된 위치

2. S3 (Simple Storage Service)

정적 파일 스토리지 서비스 (사진, 비디오, 문서 또는 FE코드, Lambda 함수 코드)

  • 사용자는 URL을 통해 파일 사용
  • 다른 유저들의 액세스를 컨트롤할 수 있는 기능 제공
  • HTTP 프로토콜과 연동되어 정적 사이트를 호스팅하는데 사용할 수 있음
  • Cloud Front를 구성하면 S3에 저장된 정적 파일이 CDN을 통해 더 효율적으로 빠르게 보급되는 장점 O

📘 데이터베이스 서비스 (DataBase Service)

1. RDS (Relational Database Service)

AWS에서 제공하는 관계형 데이터 베이스 서비스

  • DB 설정, 패치, 백업 등 시간 소모적인 관리 작업을 AWS에서 처리
    RDBMS 클라우드 서비스: Amazon Aurora, MySQL, MariaDB, Oracle, PostgreSQL 등 지원

2. DynamoDB

AWS에서 제공하는 완전 관리형 NoSQL 데이터 베이스 서비스

  • 완전 관리형 서비스: DB 클러스터의 프로비저닝, 설정, 확장, 복제, 패치 및 업그레이드와 같은 모든 관리 작업 자동 처리

  • 높은 확장성: 수백 개의 서버에 데이터를 분산하여 처리할 수 있는 분산형 아키텍처 → 데이터의 용량과 처리량을 필요에 따라 증가 & 대규모 트래픽과 대용량 데이터 처리할 수 있는 DB 테이블 생성 가능

  • 빠른 성능: 어떠한 규모에서도 10ms 미만의 성능을 제공하는 key-value 형식의 데이터 모델


📜 참고 자료

AWS란? 클라우드, 클라우드 컴퓨팅이란?
아마존 웹 서비스 종류 & 용어 모음

post-custom-banner

0개의 댓글