YUDA't


글로벌 인프라

리전(Region)
  • 2개 이상의 가용 영역(AZ)을 호스팅하는 지리 영역을 뜻함
  • 리전은 완전히 독립된 엔티티(entity)이며, 한 리전의 리소스는 다른 리전으로 자동 복제되지 않는다.

가용 영역(AZ; Availability Zone)
  • 특정 리전 내에 존재하는 데이터 센터들의 모음
  • 가용 영역들은 서로 격리되어 있지만 빠르고 지연 시간이 짧은 링크로 연결되어 있다.(장애 처리에 유용)
  • 각 가용 영역은 물리적으로 구분된 독립적 인프라에 속한다. 물리적/논리적으로 구분되어 있다.
  • 각 영역은 별도의 무정전 전원공급장치, 발전기, 냉각장비, 네트워킹 및 연결수단을 자체적으로 갖추고 있다.
  • 모범 사례에 따르면, 다중 AZ에 걸쳐 데이터를 프로비저닝하는 것이 좋다.

엣지 로케이션(Edge locations)
  • 엣지 로케이션은 Amazon CloudFront라고 하는 CDN(Content Delivery Network)을 호스팅한다. (CloudFront는 고객들에게 콘텐츠를 전송하는 데 사용된다.)
  • 콘텐츠에 대한 요청이 가장 가까운 엣지 로케이션으로 자동 라우팅되므로 보다 빠른 콘텐츠 전송이 가능하다.
  • 엣지 로케이션은 대체로 인구 밀도가 높은 지역에 위치한다.



Amazon VPC(Virtual Private Cloud)

Amazon VPC는 사용자의 네트워킹 요구 사항들을 충족할 네트워킹 AWS 서비스이다.

소개
  • AWS 클라우드 내 프라이빗 네트워크를 생성
프레미스 네트워크와 동일한 여러 가지 개념 및 구성 사용
  • 네트워크 구성 제어

인터넷에 노출되는 항목과 VPC 내에서 격리되는 항목을 각각 제어할 수 있음

  • 네트워크 보안 제어 계층화 제공

서브넷 격리, 액세스 제어 목록 정의, 라우팅 규칙 사용자 지정

수신/송신 트래픽을 모두 허용/거부하도록 제어할 수 있음

  • VPC에 배포되는 수많은 AWS 서비스들

클라우드 네트워크에 구축된 보안을 상속/활용

EC2, RDS 등이 VPC에 배포되며, 데이터베이스의 경우 온프레미스 네트워크와 똑같은 구조를 통해 보호됨


기능
  • VPC는 리전 및 가용 영역의 AWS 글로벌 인프라를 기반으로 하며, 이 VPC를 통해 AWS가 제공하는 높은 가용성을 쉽게 활용할 수 있다.
  • VPC는 리전 내에 있으며 여러 가용영역에 걸쳐 확장할 수 있다.
  • VPC는 여러 서브넷에 의해 분할되는 하나의 IP 주소 공간을 정의한다.(이러한 서브넷들은 가용 영역 내에 배포됨)
  • 서브넷

많은 서브넷을 생성할 수 있지만, 네트워크 토폴로지의 복잡성을 제한하기 위해 적은 수의 서브넷을 권장한다.

버스넷과 인터넷 사이의 트래픽을 제어하기 위해 서브넷에 대한 라우팅 테이블을 구성할 수 있다.

기본적으로 VPC 내 모든 서브넷은 서로 통신 가능하다.

퍼블릭 서브넷은 인터넷에 직접 액세스할 수 있지만 프라이빗 서브넷은 직접 액세스 할 수 없다.

서브넷을 퍼블릭으로 설정하려면 1)인터넷 게이트웨이를 VPC에 연결하고 2)퍼블릭 서브넷의 라우팅 테이블을 업데이트하여 외부로 가는 트래픽을 인터넷 게이트웨이로 전송해야 한다.

EC2 역시 인터넷 게이트웨이로 라우팅하려면 퍼블릭 IP 주소가 필요하다.




보안 그룹

  • 보안 그룹은 AWS가 제공하는 보안 옵션 중 하나이다.
  • 보안 그룹은 사용자의 가상 서버를 위한 내장 방화벽처럼 작동한다. 이를 사용하면 인스턴스에 대한 접근성을 완벽하게 제어할 수 있다.
  • 다음 예시를 보면, 웹 티어에서 시작할 경우, 0.0.0.0/0의 소스를 선택하면 포트 80/443에서 인터넷의 모든 사이트로부터 발신된 트래픽을 허용하는 하나의 규칙을 설정한다. 그 다음 애플리케이션 티어로 이동하면 웹 티어에서 발신된 트래픽만 허용하는 하나의 보안 그룹이 있으며, 이와 마찬가지로 데이터베이스 티어는 애플리케이션 티어에서 발신된 트래픽만 허용한다.




컴퓨팅 서비스

  • Amazon EC2: 단순 웹서버부터 대규모 기계 학습 클러스에까지 모든 유형에 적합한 가상 서버 인스턴스 유형 제공
  • AWS Lambda: 따로 서버를 올릴 필요 없이 코드 실행
  • Amazon Lightsail

가상 프라이빗 서버를 단 몇 분만에 시작 가능

간단한 웹 서버/애플리케이션 서버를 쉽게 관리

가상 머신, SSD 기반 스토리지, 데이터 전송, DNS 관리 및 정적 IP 주소 포함

  • Amazon ECS(Elastic Container Service)

Docker 컨테이너를 지원하는 확장성과 성능이 뛰어난 컨테이너 관리 서비스

이를 사용하면 EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행할 수 있음




Amazon EC2(Elastic Compute Cloud)

  1. AWS 콘솔 로그인
  2. 리전 선택
  3. EC2 마법사 실행
  4. AMI(Amazon Machine Image) 선택(SW)
  5. 인스턴스 타입 선택(HW)
  6. 네트워크 설정 /  스토리지 설정
  7. 키 페어 설정
  8. 인스턴스 시작 & 연결



AWS Lambda

개요
  • 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 컴퓨팅 서비스
  • 고가용성 컴퓨팅 인프라에서 코드를 실행하며, 서버 프로비저닝, Auto Scaling, 코드 모니터링, 로깅 등 모든 관리 기능을 제공
  • 사용

S3 버킷 또는 DynamoDB 테이블의 변경을 포함한 이벤트에 대한 응답으로 코드를 실행

API Gateway를 사용하여 HTTP 요청에 응답

AWS SDK를 사용하여 만든 API 호출을 이용해 코드를 호출

AWS CodePipeline, AWS CodeDeploy를 사용하면 함수 자동으로 배포 가능

  • 모놀리식(monolithic) 솔루션 생성 방지를 위해

디스크 공간을 512MB로 제한

함수 실행은 최대 5분

사용자는 배포 패키지 크기와 파일 기술자의 최대 수에 의해 제약됨

요청 및 응답 본문 페이로드는 6MB로 제한

이벤트 요청 본문 128kbit로 제한


데모
  • S3에 이미지를 업로드하면 Lambda가 실행돼 해당 이미지를 처리하고 썸네일을 생성
  • AWS CloudWatch 이벤트로 Lambda 함수 트리거

용례
  • 백업 자동화, S3에 업로드된 객체의 처리, 이벤트 중심의 로그 분석, 이벤트 중심의 변환, IoT, 서버리스 웹사이트 운영 등
  • Seattle Times는 다양한 디바이스에서 이미지를 볼 수 있게 이미지 크기 조정을 위해 AWS Lambda 사용
  • Amazon Kinesis를 함께 사용하면 애플리케이션 활동 추적, 트랜잭션 주문 처리, 생성 로그 필터링, 소셜 미디어 인덱싱 분석 등 가능
  • 추출, 변환 및 로드(ETL;Extract, Transform, Load) 파이프라인 구축 가능
  • DynamoDB 테이블 내 모든 데이터 변경에 대한 그 밖의 변환들을 수행



AWS Elastic Beanstalk

개요
  • Elastic Beanstalk은 서비스로서의 플랫폼(Paas)에 속함

Paas란 사용 중인 코드를 필요에 따라 시스템에 간단히 배치할 수 있도록 전체 인프라와 전체 플랫폼이 생성됨을 말함

Paas를 사용하면 애플리케이션을 신속하게 배포

  • 빠른 애플리케이션 배포
  • 관리의 복잡성을 줄여줌
  • 전체 시스템을 관리

필요에 따라 Auto Scaling 설정값 조정

인스턴스 유형/데이터베이스 선택

사용 중인 애플리케이션을 업데이트

서버 로그 파일에 액세스

ELB에서 HTTPS 활성화

  • 다양한 종류의 플랫폼 지원

Packer Builder

싱글/멀티 컨테이너, 도커

Go, Java, .Net, Node.js, Python, PHP, Ruby




Application Load Balancer

개요
  • ELB의 두 번째 로드 밸런서로, 기존 로드 밸런서가 제공하는 기능 이외에 몇 가지 중요한 기능 및 개선 사항을 추가함

요청 프로토콜 추가

지표 및 액세스 로그 개선됨

상태 확인 대상이 확대됨

경로 또는 호스팅 기반 라우팅을 사용하는 요청에 대한 추가 라우팅 매커니즘

      • 경로 기반 라우팅: 요청 내 URL을 기반으로 대상 그룹으로 라우팅 하는 규칙 생성
      • 호스팅 기반 라우팅: 동일한 로드 밸런서가 여러 도메인 지원 / 요청된 도메인 기반으로 요청을 대상 그룹으로 라우팅

VPC에서 IPV6 기본 지원

AWS 웹 애플리케이션 통합


용례
  • 컨테이너를 사용하여 마이크로서비스를 호스트하고 단일 로드 밸런서로부터 이러한 애플리케이션으로 라우팅

서로 다른 요청을 동일한 인스턴스로 라우팅하되 포트에 따라 다른 경로를 지정할 수 있음

다양한 포트에서 수신 대기하는 여러 컨테이너가 있을 경우 라우팅 규칙을 설정하여 원하는 백엔드 애플리케이션으로만 트래픽 분배 가능

  • 용어들

리스너(Listenrs)

대상(Target): 인스턴스 대신 대상을 등록

대상그룹(Target Group)