티스토리 뷰

1. Infrastructure

1.1 물리 서버

  • 자체적으로 구축한 데이터 센터 => On-Premise
  • 단점 => 고정 비용 + 직접 운영 관리
    - 건물 유지비용, 서버 구매비용, 유지보수 등
    - 한번 구매, 설정하면 수요에 상관없이 계속 보유, 관리필요

1.2 가상 서버(클라우드 서버)

  • 데이터 센터에서 임대 => 온디맨드 비용 + AWS가 대신 운영 관리(아마존은 신이야)
  • 장점
    - 간편한 설정
    - 고정되지 않은 유동적인 비용

1.3 서버리스(Serverless)

  • 서버 구축 X
  • only 상시 서버가 아닌 필요할 때마다 빌림
    1) 서버 필요 요청
    2) 서버 활성화(= 타 서버 대여)
    3) 작업 이후 서버 비활성화(= 서버 반납)
  • 요청 횟수에 따른 과금이기에 
    => 낮은 트래픽, 고메모리 필요시에 유용(= 호출 횟수는 적고, 작업의 필요 자원이 큰 경우)
            Ex) 이미지 프로세싱, AWS 람다,
            Ex) Vercel 을 통해 Next.js 배포 시 모든것이 Serverless

2. 트래픽 분산

: only 1개의 WS를 통해 웹 어플리케이션 서비스를 제공하는 경우

    1) 대량의 트래픽이 한개의 웹 서버에 집중될 경우
        -> 펑!

        => 수직/수평적 확장 필요

    2) 새 버전의 웹 어플리케이션 배포 시

        -> 기존 웹 서버의 IP ≠ 새 버전의 웹 서버의 IP  

        -> 전환 과정에서 서비스 중단

2.1 CDN(= L1 Reverse Proxy)

목적 설명
- 캐싱 - 요청에 따른 응답을 중간에 캐싱 -> 동일 요청 시, 저장값 반환(준 실시간성 데이터)
- 원 서버의 문제 시, CDN이 캐싱 값으로 대신 응답
    -> 고가용성 보장
    ==> 고가용성을 보장해주는 버퍼의 역할
- 원 서버에 가해지는 DDos공격을 대신 탱킹
- 지역성 해결 - 리소스 제공 서버와 클라이언트의 물리적 거리가 멀 경우
    -> 각 지역의 CDN을 통해 응답 속도 개선
    -> CDN을 통해 장애허용(Fault Tolerance) 제공

 

2.2 Load Balancer(= L2 Reverse Proxy)

목적 설명
- 배포 이슈 해결 - 로드 밸런서에 대표IP 부여
    - 클라이언트에서 해당 IP를 호출(뒷단의 서버는 몰라도 됨)
- 트래픽 이슈 해결 - 로드 밸런서 뒷단의 서버의 수를 늘리는 수평적 확장을 통해 해결(요청을 분산하기에)

: DNS를 통해 로드밸런서 구현도 가능

 

2.3 메세지 큐를 이용한 요청 트래픽 비동기 처리

: 수직/수평적 확장의 경우, 요청에 대한 동기적 처리 목적

: 실시간성이 중요하지 않은 비실시간성 요청에 대한 비동기적 처리 방식

    1) 요청이 들어오면 큐에 적재

    2) 서버의 여유 시, 큐의 내용 처리

- Producer/Consumer 패턴을 가짐

  • Producer : 메세지(요청)를 발행
  • Queue : 메세지를 저장하는 버퍼
  • Consumer : 메세지(요청)을 처리

- 메세지 큐 장점

  • 비동기 : Queue 라는 메세지를 저장하는 버퍼(임시 저장소)가 있기 때문에 나중에 처리 가능
  • 탄력성 : Consumer 서비스가 다운되거나, 문제가 생겨도 다시 살아나서 메세지를 소비만하면 된다.
  • 확장성 : Producer 가 엄청 많아져도, Consumer 가 적어도 서비스를 원하는대로 확장할 수 있음
  • 낮은 결합도 : Consumer 와 분리되어 있어, Consumer 에 문제가 생겨도, 구현체가 바뀌어도 상관없음
  • 보장성 : 결국 Queue 안에 있는 모든 메시지는 Consumer 서비스에서 모두 처리됨을 보장

- Ex) AWS SQS, Kafka(애는 큐에서 화살표만 이동하는 것으로 이해, 큐에서 내용 삭제 X), RabbitMQ(내용 삭제-처리)


3. 다수의 트래픽을 고려한 배포 방법

3.1 Rolling 배포 방식

Rolling

  • Rolling 방식
    : 1죽이고 1교체 -> 반복
    : 버전 간 트래픽이 의도치 않게 섞인다.
    : 변경 시, 한쪽에 과한 트래픽이 몰림

Rolling with Additional Batches

  • Rolling with Additional Batches 방식
    : 한개의 추가 서버를 구동
    : 1죽이고 1교체 -> 반복
    : 트래픽은 섞이지만 트래픽 커버지리 유지 가능

Immutable

  • Immutable 배포 방식
    : 새 ASG로 트래픽을 꺾는다.

3.2 Canary 배포 방식

: 신버전 테스트(구버전과 신버전으로 나누어 트래픽 분산처리 및 테스트) -> 신 버전으로 전체 전환

: 버전 간의 트래픽이 섞임(의도적, 테스트 목적)

: A/B테스트나 성능 테스트에 용이

 

3.3 Blue-Green 배포 방식

: 그룹을 기준으로 구버전/신버전 구별 -> 즉, n개의 서버를 추가 생성

: 문제 발생 시, 즉시 롤백 가능


깨알 단어 사전

* 수직적 확장: 서버 자체의 성능 업

* 수평적 확장: 비슷한 성능의 서버의 수를 늘림

 

* Proxy: client-server 사이의 중간 서버

    - Forward Proxy: Client 측에 가까이 위치, 다수의 Client와 연결

    - Reverse Proxy: Server 측에 가까이 위치, 다수의 Server와 연결(L1, L2 ...등으로 추가 분류된다.)

 

* 장애 허용(Fault Tolerance): 시스템이 일부 부분에서 장애가 발생하더라도 전체 시스템이 멈추지 않고, 다른 방법으로 계속 작동할 수 있도록 설계

 

* SRE(Site Reliability Engineer): 시스템 안정성과 서비스 가용성을 유지, 시스템 운영을 최적화하는 역할

 

* immutable(불변성): 데이터 생성 시, 그 값은 변경되지 않는다.
    => 수정의 경우, 새 객체를 생성 및 값 할당 후 이전 객체와 바꿈

    => 상태 변화 X를 꼭 기억할 것

 

* ASG(Auto Scale Group): 트래픽별 서버 수의 min-mid-max를 그룹화

 

* Scale up/down: 기존 시스템의 성능 업/다운

* Scale out/in: 비슷한 시스템 병렬적 배치

 

 


출처: https://webmobilez.com/awsmaterial/elastic-beanstalk-deployment/?ref=joojae.com

 

Elastic Beanstalk Deployment Models – Webmobilez

 

webmobilez.com

 

'ASAC > 정리용' 카테고리의 다른 글

[03-01] HTTP Cache 동작  (0) 2024.12.18
[03-01] HTTP Cache  (1) 2024.12.18
[02-02] 운영체제 기초  (0) 2024.12.17
[02-02] Web Application Framework  (1) 2024.12.17
[02-02] 직렬화-역직렬화  (0) 2024.12.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함