SECTION 11. Classic Solutions Architecture Discussions

‎김연수·2024년 5월 29일

SAA 자격증 공부

목록 보기
8/16

1. Stateless Web App: WhatIsTheTime.com

Elastic IP 사용

  • 각 인스턴스들이 고정 IP 주소를 가지고 있어서 재시작해도 IP가 변하지 않는다는 장점이 있다.

Route 53 추가

  • Eliastic IP를 제거하고, Route 53을 활용한다.
  • TTL 시간 설정.
  • A record로 설정했다는 것은 DNS로부터 IP 리스트를 받는다는 의미이다.

    Route 53의 A record는 IP를 연결시켜준다.

ELB(Elastic load banlancer) 추가

문제 상황: 상황에 따라 즉시 인스턴스를 추가하고, 제거할 수 있도록 확장하고 싶다. 그런데 인스턴스를 제거하게 되면, 인스턴스가 사라졌어도 TTL 시간 동안 사용자는 해당 인스턴스에 연결되므로 접속 못하는 상황 발생.

ELB 추가
1. User들은 Route53에 DNS Query를 하여 ELB 의 주소를 얻는다.
2. User들은 ELB에 접속하고, ELB는 EC2 인스턴스로 리다이렉트 시킨다.

  • Private EC2
    - ELB 는 공개되겠지만 private EC2 는 뒤에 숨어있게 된다.
  • Alias Record
    - 로드 밸런서가 IP주소를 지속적으로 바꾸기 때문에 A record 를 사용할 수 없다.
    - alias(별칭) record 를 사용하면 route53 으로부터 ELB를 가리키게 될 것이다.
  • Health Check
    - 한 EC2 가 다운되거나 작동하지 않으면 해당 EC2 로 트래픽을 전송하지 않는다.
    - 사용자들의 다운타임이 없어진다.
  • Auto Scaling group
    - 로드 밸런싱되는 인스턴스를 그룹화
    - ASG가 private EC2를 관리하여 ASG의 요청에 따라 확장하게 됨.(트래픽이 많아지면 확장, 적어지면 축소)
  • Multi AZ
    - 인스턴스를 다중 가용지역으로 배치해 고가용성 유지
    - AZ1 가 다운되더라도, AZ2 AZ3 이 있기 때문에 트래픽을 처리할 수 있게 된다.

2. Stateful Web App: MyClothes.com

ELB Stickness

문제: 사용자가 장바구니에 뭔가를 담았고 잠시 홈화면으로 이동한 후에 다시 장바구니로 돌아왔을 때 장바구니에 담은 정보들이 모두 사라진 상태가 된다.(stateless)

  • ELB 의 stickiness 를 활성화하면 사용자가 똑같은 동일한 인스턴스에 계속해서 접근할 수 있게 된다.(stateful)

Web Cookies

  • User Cookies
    -기본적으로 EC2 인스턴스가 장바구니의 내용을 저장하는 것이 아니라 사용자쪽에서 장바구니의 내용을 저장하도록 하는 방법
    -웹 쿠키를 통해서 이루어지는 방식으로 어떤 인스턴스로 접근을 하더라도 사용자가 EC2 인스턴스로 장바구니 내용을 보내주기 때문에 각각의 서버가 장바구니의 내용을 알 수 있게 된다.

Server Session

user cookies 방법을 사용하면 HTTP request 가 무거워지게 되고 보안 위험이 있다.

  • Session ID
    -전체 장바구니를 웹 쿠키로 보내는 대신에 세션 ID 만 보내는 방식
    -사용자는 세션 ID를 ELB에 보내고, EC2 인스턴스에 연결된다.

  • ElastiCache
    -EC2 인스턴스는 장바구니 내용을 ElastiCache에 추가하고, 이 내용은 접속한 사용자의 세션 ID로만 읽을 수 있다.
    -사용자가 다른 EC2 인스턴스로 접근하게 됐을 경우, 인스턴스는 사용자의 세션 ID 를 사용해 ElastiCache 에서 장바구니 내용을 찾아서 데이터를 불러올 수 있다.

  • DynamoDB
    -세션 데이터를 저장하는 또다른 방식.

database

  • RDS
    -사용자의 데이터를 DB에 저장하고자 할 때, RDS인스턴스와 통신해야 한다. 각각의 EC2 인스턴스가 RDS인스턴스와 통신할 수 있다.
    -wrtie 마스터에서 읽기 전용 복제본을 생성하여 읽기 작업의 효율성을 늘려준다.
  • 캐시
    -서버가 사용자 요청을 받고 쿼리를 날린다.
    -캐시를 확인하고, 해당 데이터를 가지고 있지 않다면 RDS로부터 쿼리문을 날려 데이터를 읽어들인다.
    -해당 데이터를 ElastiCache에 넣어 캐싱한다.
    -현재 찾는 데이터가 캐시에 존재한다면 캐시 히트를 하게 되고 정보를 얻는다. (RDS로 쿼리를 날리지 않고, 캐싱이 되었기 때문에 사용자에게 즉시 응답을 날린다)

3. Stateful Web App: MyWordPress.com

이미지 저장하기

Aurora

  • 다중 가용지역에 읽기 전용 복제본을 가지고 있는 “Aurora MySQL”을 사용할 수 있다.

EBS

  • 단일 인스턴스 애플리케이션의 데이터를 저장
  • 사용자가 업로드한 이미지를 EBS에 저장할 수 있다.
  • 여러 인스턴스를 사용하고 있다면 EBS 또한 여러개를 사용해야 한다.

EFS

  • 분산된 애플리케이션의 데이터를 저장
  • 여러 인스턴스에서 동일한 파일 시스템을 사용해야 한다면 EFS를 사용한다.
  • ENI(Elastic Network Interface)
    - VPC 의 논리적 구성 요소이며 가상 네트워크 카드
    - EC2 인스턴스 외부에서 사용되며 EC2 인스턴스에 네트워크 접근 권한을 부여해준다.

Elastic BeanStalk

  • 웹 애플리케이션 및 서비스의 배포 및 조정을 위한 서비스

Worker Tier

  • SQS 메시지가 EC2 인스턴스로 전달되고, 메시지의 수 기반으로 스케일됨.
  • 다른 웹 서버 티어로부터 SQS 큐로 메시지를 푸쉬할 수 있음.

Deployment Modes

  • ALB(애플리케이션 로드밸런서)에 EC2 인스턴스가 연결되어 있음.

0개의 댓글