AWS 공부하기 - Tirrilee/TechTalk GitHub Wiki

AWS 공부하기

생활 코딩 (AWS) 에서 공부한 내용을 요약하였습니다.


ELB



ELB란 AWS가 제공하는 Cloud Service용 Software Load Balancer이다.

L4 Switch (Hardward Load Balancer) 지만 ELB는 Software Load Balancer 이다.

현재 TNDN에서 사용하는 HAProxy와 비슷하나 HAPoxy는 단독서비스이다.

ELB가 훨씬더 많은 기능을 제공하고 있는 데 그 기능은 아래와 같다.

1. 트래픽 분산
2. 자동 확장
3. 인스턴스 상태를 자동 감지해서 오류가 있는 시스템은 배제
4. 사용자 세션을 특정 인스턴스에 고정
5. SSL 암호화 지원

이 중에서 사용자 세션을 특정 인스턴스에 고정 하는 부분이 궁금했다.

그 이유는

  1. 메모리를 재사용하는 경우
  2. 한 개의 기능을 처리하는데 2개 이상의 Controller를 사용하는 경우

에 인스턴스를 고정한다고 한다.


예를 들어 다운로드 기능을 사용할 때 A Controller를 사용하고 이후 B Controller를 사용해야한다고 가정하자.

만약 A Server에서 A Controller를 사용했다가 B Server로 바꾸게 되면 B Server에서는 A Server에서 처리했던 부분이 (메모리가) 존재하지 않아 해당 사항을 처리할 수 없게 된다.

따라서 위의 기능이 필요하다.

고정된 인스턴스를 연결할 때는 해당 브라우저를 닫을 때까지 연결하며

만약 cookie가 남아있다면 남아있는 곳으로 이동한다.

cookie가 남아있는 서버가 죽는다면 cookie와 관계없이 살아있는 서버로 옮기게 된다.




EBS


- Elastic Block Store의 약자로 일종의 하드디스크
용량에 따라 구입할 수 있고, 필요에 따라 즉시 생성, 제거 가능

- 용한만큼 과금

- 내부적으로 데이터를 실시간 복제 > 데이터를 잃을 확률이 적음

- 스냅샷 기능

- CloudWatch > EBS 통계 열람

- EC2 Instance를 제거해도 EBS는 독립적이기 때문에 데이터는 유지

- 같은 가용성 존에 있는 EC2와 Mount 가능

EBS를 구축한 다음 EC2에 mount 시키면

mount 시킨 파일에 폴더를 업로드하면 자동으로 EBS에도 업로드




AMIs


Amazon Machine Images의 약자로 EC2 Instance를 그대로 저장해서 재사용할 수 있도록 만든 것

  • Private : 비공개 이미지로 자기 자신만이 사용
  • Public : 공개된 이미지로 누구나 이용
  • MarketPlace : 앱스토어 같은 개념으로 이미지를 판매 및 구매 할 수 있는 마켓

이 이미지를 이용하여 Instance를 구현하면, 이미지를 떴던 Instance와 같은 기능이 뜬다.

Auto Scaling시 AMIs를 이용해서 Amazon에서 자동으로 이미지를 생성해서 서버를 새로 생성한다.




Auto Scaling


기존 인프라의 문제

빨간색 선은 시스템에게 실질적으로 가해지는 부하(=트래픽)

파란색 선은 인프라가 확충되는 것 - 트레픽이 커지면서 서버를 구매하고 같은 환경을 세팅하는 시간

  1. 파란색 선 > 빨간색 선 : 인프라가 낭비되고 있음
  2. 빨간색 선 > 파란색 선 : 서비스가 느려지거나 완벽하게 제공되지 못함

Auto Scaling 이란

  • EC2 Instance 규모를 자동으로 확대/축소
  • Instance 규모를 변화하는 다양한 조건
  • 처리량 증가에 빠르게 대응 (부하에 따라 자동으로 규모 변경)
  • CLI를 통해서만 제어 가능 (~2013)
  • AMI를 이용해서 Instance를 자동으로 생성 (Auto Scaling에 등록해놓으면)

Auto Scaling Type

  • 현재의 규모 유지
  • 자동으로 규모 변경
  • 시간에 따라 변경

Auto Scaling 절차


1. launch Configuration 설정

  • AMI
  • Instance Type

2. Auto Scaling Group 생성

  • ELB
  • 최소 / 최대 Instance 수량 : 서비스 때문에 트래픽이 증가하면 좋지만, 만약 DDos 공격이라면?
  • 가용성 존

3. Policy 생성

  • Instance 추가 / 제거 방법과 Instance 개수
  • cooldown : AutoScaling이 실행되서 Instance가 변경되고 다시 AutoScaling이 실행되는 시간

4. Cloud Watch에서 Alarm을 생성하고 정책과 연결

ex) 평균 CPU 점유율이 80%가 5분 이상 지속시 알람 +) Cloud Watch는 Amazon 서비스 Monitoring!




S3


Simple Storage Service란 파일(객체) 서버의 역할을 하는 서비스이다.

- 많은 사용자가 접속을 해도 시스템적인 작업을 하지 않아도 괜찮음

- 저장할 수 있는 파일 수의 제한이 없음

- 최소 1바이트에서 최대 5TB의 데이터를 저장하고 서비스

- 파일에 인증을 붙여 무단으로 엑세스 하는 것을 막음

- http, BitTorrent 프로토콜을 지원 
  - http : 웹을 통해서 파일을 전달
  - BitTorrent : P2P방식, 다운로드를 진행하려는 Client가 Client인 동시에 Server역할을 진행

- 데이터를 여러 시설에서 중복으로 저장해 데이터의 손실이 발생할 경우 자동으로 복원

- 버전관리 기능을 통해서 사용자에 의한 실수도 복원 가능

- 정보의 중요도에 따라 보호 수준을 차등, 이에 따라서 비용을 절감 (RSS)




RDS


Relational Database Service

- 다중 AZ(가용성 존) 복제
  - 만약 한 개의 서버가 자연 재해 등에 의해서 망가졌을 때 가용성 존에 있는 다른 서버들이 백업
  
- 읽기 복제 : Master, Slave로 구분하고 Master에서는 쓰기 Slave에서는 쓰기 작업으로 일어난 일을 그대로 복제
  - 만약 트래픽이 많아져서 DB를 많이 생성해야할 때, 어쨋든 쓰기 작업은 한 곳에서 실행해야 한다. 
    Slave에서 쓰기 작업을 마친 DB를 복제하면 여러대의 DB를 유지할 수 있다.
    
- 백업 자동화

- DB SnapShot 지원

- 프로비저닝된 IOPS (Input Output Per Second) : 얼마나 빠른 속도로 데이터를 검색해야하는지 설정 가능
  - IOPS : 얼마나 빠르게 데이터를 읽고 쓸수 있는지를 측정하는 단위

- 미리 구성된 매개변수 : 매개 변수 Group을 설정하면 한번에 설정 변경 가능

- CloudWatch를 이용한 모니터링




ElastiCache



  • Cache : 오래 걸리는 작업의 결과를 저장해서 반복적인 작업의 시간을 단축
    • 웹브라우저는 한번 다운받은 파일을 캐쉬해서 다음번 다운로드시 컴퓨터에 저장된 파일을 사용

  • Memcached
    • 분산형 메모리 Caching System, 메모리에 저장해뒀다가 요청시 메모리에서 꺼냄
    • 메모리는 하드디스크와 ssd보다 훨씬 더 빠른 속도를 가지고 있다.
    • Server/Client Model : Memcached Server에 접속해서 데이터를 가져와야함
    • 무료 & open source

  • ElastiCache
    • Memcached를 Amazon WebService Infra 위에서 제공
    • Memcached와 호환 : Memcached를 사용한 서비스가 있다면 AWS와 문제없이 호환
    • 즉시 Cache를 생성해서 사용할 수 있음
    • Cache의 성능과 수량을 유연하게 변경 가능
    • 모니터링 기능 제공
    • 사용한 만큼만 지불




Route 53


AWS에서 제공하는 DNS Web WebService


왜 기존의 DNS가 아니라 Route 53을 사용하는가?

만약 ELB를 사용했을 때 ELB에 Domain을 붙여야하는 데 ELB에 Domain을 붙일 수 있는 방법이 없다.


Domain vs DNS

Domain : IP가 아닌 이름

DNS : IP에 대한 정보를 가지고 있다가 Domain 주소에 대한 요청이 들어왔을 때 이에 해당하는 IP를 알려주는 서버


a record

각 Domain마다 어떤 ip를 가져야 한다를 설정

TTL : Time To Live, Cache는 DNS에게 IP를 물어보지 않고 IP를 Cache에 저장하고 있음. 이 Cache가 얼마나 살아있는 지를 설정 가능.


cname

Domain에 또 다른 별명을 정하는 방식

naver.com 뿐만 아니라 nver.com으로 해도 naver.com으로 가게 할 수 있게

naver.com에 nver.com이라는 별칭을 만든다.




SQS (Simple Queue Service)

해야 할일을 나중에 처리하거나 다른 시스템이 처리할 수 있도록하기 위한 비동기 메시징 서비스

처리해야하는 일을 Message라고 부르며 SQS 는 Queue 형식으로 작동된다.


예시

youtube를 AWS에서 구축한다고 가정하면

  • 수신자 : 사용자가 업로드한 동영상을 수신
  • 인코더 : 업로드된 동영상을 전달받아서 인코딩
  • 메일러 : 인코딩이 끝났음을 업로더에게 이메일로 발송
  1. 수신자가 SQS 서비스에 업로드된 동영상을 추가
  2. 인코더는 정기적으로 SQS를 확인
  3. SQS에 추가된 동영상 파일이 발견되면 인코딩 시작 (만약 인코더가 인코딩을 시작하면 파일을 보이지 않도록 설정 (다른 인코더가 중복적으로 인코딩하는 것을 방지) - visibility time out으로 시간 설정 가능)
  4. 인코딩이 끝나면 끝난 동영상을 SQS에 추가
  5. 메일러는 SQS에 인코딩이 끝난 동영상이 존재하는지 확인 후 메일 발송
⚠️ **GitHub.com Fallback** ⚠️