Amazon EC2 (Elastic Compute Cloud) 2

·2025년 11월 15일

Infra

목록 보기
5/5

Elastic Load Balancing

AWS는 로드 밸런서로 Elastic Load Balancing을 제공한다. ELB는 들어오는 애플리케이션 트래픽을 EC2 인스턴스, 컨테이너, IP 주소 등 여러 대상에 걸쳐 자동으로 분산시키는 AWS 관리형 서비스이다. 특정 서버에 트래픽이 집중되는 것을 방지하여 애플리케이션의 내결함성과 가용성을 높이는 역할을 한다.

ELB 기능과 장점

  • 애플리케이션의 고가용성
    • 상태 확인(Health Check) : 등록된 대상(ex. EC2 인스턴스)의 상태를 주기적으로 확인한다. 미리 정의된 경로, 포트, 프로토콜로 요청을 보내고 정상적인 응답(ex. HTTP 200 OK)이 오는지 모니터링한다. 만약 특정 인스턴스가 응답하지 않거나 비정상적인 응답을 보내면, ELB는 해당 인스턴스를 비정상(unhealthy)으로 간주하고 정상 상태인 다른 인스턴스들로만 트래픽을 자동 라우팅한다.
  • 보안 강화
    • HTTPS 지원: ELB는 AWS Certificate Manager(ACM)과 통합되어 SSL/TLS 인증서를 쉽게 적용할 수 있다. 이를 통해 클라이언트와 로드 밸런서 간의 트래픽을 암호화할 수 있다. 백엔드 EC2 인스턴스가 암복호화에 대한 CPU 부하를 덜게 되어 애플리케이션 성능에 더 집중할 수 있다.
  • 탄력적인 확장성 (Elastic Scalability)
    • Auto Scaling 연동 : ELB는 Auto Scaling Group과 연동된다. 트래픽 증가로 Auto Scaling 정책에 따라 새로운 EC2 인스턴스가 자동 생성되면 해당 인스턴스는 즉시 ELB 대상 그룹에 등록되어 트래픽을 분산받는다. 반대로 트래픽 감소로 인해 인스턴스가 종료되면 ELB는 해당 인스턴스를 대상 그룹에서 자동으로 제외한다. 이렇게 자동 크기 조정을 통해 어떤 트래픽 규모에도 유연하게 대응하며 비용 효율적인 인프라를 유지할 수 있다.

ELB 종류

다양한 워크로드의 요구사항을 충족시키기 위해 여러 종류의 로드 밸런서를 제공한다.

  • ALB(Application Load Balancer)
    • OSI 7계층인 애플리케이션 계층에서 작동하며, HTTP 및 HTTPS 트래픽 분산에 최적화되어 있다.
    • 콘텐츠 기반 라우팅으로 HTTP 헤더, URL 경로, 쿼리 문자열 등 요청의 세부 내용을 분석해 트래픽을 서로 다른 대상 그룹으로 보낼 수 있다.
    • 보안 그룹을 만들어 줄 수 있다.
  • NLB (Network Load Balancer)
    • OSI 4계층인 전송 계층에서 작동하며 TCP, UDP, TLS 트래픽의 초고성능 처리에 중점적이다.
    • 초당 수백만 개의 요청을 매우 낮은지연 시간으로 처리할 수 있어 실시간 게임, 스트리밍과 같이 성능에 민감한 워크로드에 이상적이다.
    • 각 가용 영역에 대해 정적 IP 주소를 할당할 수 있다. 클라이언트 측에서 방화벽 규칙 등에 고정 IP 주소를 사용해야 하는 경우 유용하다. 또한 클라이언트의 원본 IP 주소를 백엔드 서버로 그대로 전달하여 서버에서 클라이언트 IP 기반의 로깅이나 분석이 가능하다.
  • CLB (Classic Load Balancer) Legacy
    • 이전 세대의 로드 밸런서로, OSI 4계층, 7계층 모두에서 작동한다.
    • 현재는 사용이 권장되지 않는다.

EC2 Auto Scaling

Auto scaling

  • 네트워크 이해를 해야 한다.
  • 서버의 액세스 상태에 따라 서버 대수를 늘리거나 줄이는 기능이다.

인스턴스를 쉽게 늘리거나 줄이는 AWS의 유연성이 높다는 장점이 있는데 이런 인스턴스의 증감을 자동으로 실행하는 것이 오토 스케일링이다.

Amazon EC2 Auto Scaling

애플리케이션의 부하를 처리할 수 있는 EC2 인스턴스 수량을 min과 max 수량 사이에서 자동 추가 및 제거를 통해 유지한다. 클라이언트의 수가 적으면 EC2 개수를 줄여주고, 많으면 EC2 서버를 늘려준다.
오토 스케일링을 하기 위해서는 'Auto Scaling 그룹' 즉, 인스턴스의 집합을 생성하고 그룹에 인스턴스(서버)의 최소 대수와 최대 대수를 설정한다. 이 최소 대수와 최대 대수 범위 안에서 인스턴스의 수가 증감하게 된다. Auto Scaling 그룹은 서버 시작에 필요한 AMI와 키 페어, 보안 그룹 등을 설정해야 한다.

  • 확장/축소 개념
    • Scale-out(확장) vs. Scale-in(축소)
      인스턴스의 수평적 확장으로 트래픽이 증가하면 인스턴스 수를 늘려 부하를 분산시키고 트래픽이 감소하면 불필요한 인스턴스 수를 줄여 비용을 절감하는 방식이다.
    • Scale-up(확장) vs. Scale-down(축소)
      인스턴스의 수직적 확장으로 인스턴스 수를 늘리는 대신 기존 인스턴스의 사양(CPU, 메모리 등)을 더 높은 사양으로 업그레이드하거나 다운그레이드하여 처리 용량을 조절하는 방식이다.
  • 장점
    • 향상된 가용성 : 사용자의 요청이 급증하더라도 자동으로 인스턴스를 늘려 서비스를 안정적으로 유지한다. 특정 인스턴스에 장애가 발생해도 Auto Scaling이 이를 감지하여 새로운 인스턴스를 즉시 생성해 서비스 중단을 방지한다.
    • 비용 절감 : 트래픽이 적은 시간에는 불필요한 인스턴스를 자동으로 줄여 낭비되는 비용을 최소화한다.
  • ASG(Auto Scaling Group) : Auto Scaling을 구현하는 가장 기본적인 단위
    • min(가용성) : 서비스에 필요한 최소한의 인스턴스 수를 지정하여 가용성을 보장한다.
    • max(비용) : 예상치 못한 트래픽 급증에도 비용이 무한정 증가하는 것을 방지하기 위해 생성 가능한 최대 인스턴스 수를 제한한다.
    • desired(원하는 용량) : ASG가 유지하고자 하는 인스턴스의 수로, Auto Scaling 정책이 적용되지 않을 때, ASG는 이 desired 값에 맞추어 인스턴스 수를 조절한다.

오토 스케일링 요소

  • 시작 템플릿(Launch Template) : 새로 생성될 EC2 인스턴스의 구성 정보를 미리 정의해놓은 템플릿이다. AMI, 인스턴스 유형, 보안 그룹, 키 페어 등 인스턴스 구성 정보를 지정해놓는다.
  • 오토 스케일링 정책(Auto Scaling Policy) : 언제, 어떻게 인스턴스 수를 조절할지를 정의하는 규칙이다. 이 정책에 따라 Auto Scaling이 동작한다.

오토 스케일링 정책

  • 수동(Manual Scaling) :관리자가 직접 ASG의 min, max, desired 값을 변경하여 인스턴스 수를 조절하는 방식이다.
  • 자동 (Automatic Scaling)
    • 예약된 일정(Scheduled Scaling) : 특정 시간이나 날짜에 맞춰 인스턴스 수를 예측하고 조절하는 예약 스케쥴링이 가능하다.
    • 초기값 유지 : min, max, desired 값을 모두 동일하게 설정하면, ASG는 항상 지정된 수의 인스턴스는 예약 스케쥴링이 가능하다.
      ex. min : desired : max = 2 : 2 : 2 -> 늘 언제나 2개의 개수를 유지하는 것
    • 동적 조정정책 (Dynamic Scaling Policy) : 실시간 모니터링 지표(ex. CPU 사용률, 네트워크 트래픽)의 변화에 따라 인스턴스 수를 동적으로 조절하는 가장 일반적인 방식이다.
      • 단순 조정정책(Simple Scaling) : 'CPU 사용률이 60% 이상이면 2개의 인스턴스를 늘려라'와 같이 특정 조건이 충족되면 지정된 작업을 수행한다.
      • 단계 조정정책(Step Scaling) : 단순 조정정책보다 좀 더 세밀한 조정이 가능하다. 'CPU 사용률이 60%~80% 구간이면 인스턴스 1개를 늘리고, 80% 이상이며 3개를 늘려라'와 같이 조건의 심각도에 따라 다른 수의 인스턴스를 조절한다.
      • 대상추적 조정정책(Target Tracking Scaling) : 특정 대상(Target) 값을 지정하면 ASG가 현재 지표를 지속적으로 추적하여 목표값을 유지하기 위해 필요한 인스턴스 수를 자동으로 조정한다. 사용자는 min/max, 목표값만 설정하면 된다.
        • 대상의 타겟에 맞도록 EC2 min/max/desired 값에 맞게 조정
  • 예측 기반 조정(Predictive Scaling) : 머신러닝 기술을 활용하여 과거의 트래픽 패턴을 분석하고, 미래의 트래픽을 예측하여 필요한 인스턴스 수를 미리 준비하는 방식이다.

Tagging

Auto Scaling 정책에 따라 EC2 인스턴스가 동적으로 생성되고 종료될 때, 이 리소스들을 효과적으로 식별, 관리하고 비용을 추적하는 것이 중요하다. 태그(Tag)는 AWS 리소스를 구성하고 관리하기 위한 핵심 메타데이터이며, Auto Scaling 환경에서 특히 유용하게 사용된다.
Auto Scaling Group(ASG)에서는 그룹 자체에 태그를 지정할 수 있을 뿐만 아니라, ASG가 새로 시작하는 모든 EC2 인스턴스에 자동으로 특정 태그가 상속되도록 설정할 수 있다.

태그 (Tag)

태그는 리소스 구성을 위한 메타데이터 키 값-페어(Key-Value Pair)이다.

  • ex: Name=WebServer, Team=Dev, Environment=Develop
  • 리소스의 이름, 별명, 소유자, 팀 구분, 환경(개발/운영) 등을 구분하는 데 사용된다.

Tagging의 장점

태그를 일관되게 적용하면 아래와 같은 이점을 얻을 수 있다.

  • 관리 편의성 향상
    • 태그를 기준으로 특정 리소스(ex. 'Team=Prod'태그가 붙은 모든 인스턴스)를 쉽게 쿼리하고 식별할 수 있어 가시성이 높아진다.
    • AWS 리소스 그룹 기능을 사용하여 태그 기반으로 리소스를 논리적으로 그룹화할 수 있다.
  • 세분화된 권한 제어
    • IAM(Identity and Access Management) 정책에서 태그를 기반으로 특정 리소스에 대한 접근(ex. 시작, 중지, 종료)을 제어할 수 있다.
  • 비용 관리 용이
    • '비용 할당 태그(Cost Allocation Tag)'를 활성화하면, 태그별로 AWS 사용 요금을 추적하고 분석할 수 있다.
    • 이를 통해 부서별, 프로젝트 별 비용을 정확하게 파악하고 예산을 관리하는 데 활용할 수 있다.
profile
Whatever I want | Interested in DFIR, Security, Infra, Cloud

0개의 댓글