byworld 님의 블로그

20260329 TIL - AWS 서비스 본문

TIL

20260329 TIL - AWS 서비스

byworld 님의 블로그 2026. 3. 29. 23:53

[서론]

주말이라 그런가 오늘은 푹 잤다. 거의 overslept 정도로. 근데 피로가 안풀리긴 한다. 인프라에 관한 구축을 하려고 했는데, 오늘 내로 못할 것 같아서 TIL 을 쓰고 나서 더 해야겠다. AWS 구성요소에 관한 글을 쓰려고 한다.

 

[오늘의 추천곡] ADOY - Grace

우리나라에서 신스팝을 하는 몇 안되는 그룹 중 하나이다. 몇 년전부터 신스웨이브에 빠지게 되었다. 신스웨이브는 전자 음악을 기반으로 뇌파가 이상해지는 멜랑꼴리한 사운드이다. 도쿄 80s 노래와 비슷한 느낌이다. 그쪽이랑은 조금 다르지만 신스쪽을 좋아해서 위켄드니 다프트 펑크니 그 분야 음악을 주로 들었다. 인디쪽은 잘 모르지만 ADOY, 실리카겔, 검정치마 등등 나도 들을만한 곡들이 있다. ( 사실 내 엑스가 좋아했던 그룹들이다.) 코딩이나 집중하면서도 좋으니 바란다.

 

 

 

 

[AWS 서비스]

AWS에서의 핵심은 서버를 만드는 것이 아니라, 트래픽 증가와 장애 상황에서도 서비스가 무너지지 않도록 분산 + 확장 + 격리 구조를 설계하는 것이다.

이를 위해 ALB는 요청을 분산하고, ECS는 서비스를 유지하며, Auto Scaling은 처리 용량을 확장하고, ECR은 배포 일관성을 보장하고, EC2는 실행 환경을 제공한다. 이제 각 서비스에 대해서 설명해보겠다.

 

1. ALB

문제

  • 요청이 한 서버로 몰리면 Gateway가 먼저 죽음

해결

  • 요청을 여러 인스턴스로 분산 (Load Balancing)

보호 대상

  • Gateway / Thread / CPU (전체 진입 지점)

역할

  • 현재 살아있는(Healthy) 대상에게만 로드 밸런싱을 함.
  • 여러 인스턴스로 요청을 분산
  • 헬스 체크 실패 인스턴스는 제외.
  • Layer 7 기반 라우팅(경로/도메인 기준 분기 가능)

Trade-off

  • 가용성과 분산성 증가
  • 비용 증가
  • 네트워크 홉 1단계 증가
  • 구조 복잡도 증가
  • 디버깅 시 어느 인스턴스로 갔는지(A/B테스트 같은 것 할 때) 추적 어려움

 

2. Target Group

문제

  • 로드 밸런서를 붙여도 어디로 보낼지와 누가 살아있는지 모르면 의미 없음

해결

  • Target Group이 ALB가 요청 전달할 대상 집합 관리
  • 헬스 체크로 정상인지 판별
  • 정상 대상만 트래픽 받게 함

역할

  • 요청 전달할 대상 집합 관리
  • 헬스 체크 수행 및 상태 유지
  • ALB와 실제 인스턴스/Task 연결
  • 포트 단위로 트래픽 라우팅(서비스 단위 분리 가능)
  • 비정상 대상 자동 제외 및 복구 시 재등록

보호 대상

  • ALB 뒤 실제 서버
  • 죽은 인스턴스로 잘못 보내는 요청
  • 결과적으로는 사용자 성공률 -> 정상 대상만 받게 하는 정합성 보호

Trade-off

  • 헬스 체크 설정 복잡도
  • 잘못 설정하면 멀쩡해도 unhealthy 되는 문제
  • 배포시 일시적 health mismatch 생김

 

3. Auto Scaling

문제

  • ALB 분산해도 뒤에 서버 수가 고정이면 과부하될 시 트래픽 한계있음 (응답시간 증가, 타임아웃, 장애 전파)

해결

  • 트래픽 증가 감지
  • 새 인스턴스/태스크 생성
  • Target Group에 새 서버 자동 등록(처리 용량 보호)
  • ALB가 새 인스턴스로도 분산

역할

  • 트래픽/지표(CPU/Request) 모니터링
  • 스케일링 정책 기반 인스턴스/Task 수 조절
  • Scale-out/Scale-in 자동 수행
  • Target Group과 연동하여 신규 인스턴스 자동 등록/제거
  • 필요 시 EC2와 Task 확장을 함께 수행

보호 대상

  • 개별 서버의 CPU/Memory/Thread
  • 트래픽 처리 한계
  • 처리 용량 보호로 서비스 가용성 증가

Trade-off

  • 비용 증가
  • 운영 예측 어려움
  • scale-out이 즉시 되지는 않음
  • 상태 저장형 서버는 확장 어려움
  • 로그/세션/디버깅 복잡도 증가

 

4. ECS

문제

  • 서비스를 EC2에 수동 배포만 하면 운영 꼬임
  • 컨테이너 단위로 일관되게 올리고 교체 못하면 운영 취약

해결

  • ECS는 컨테이너 원하는 개수만큼 띄우고 유지함

역할

  • Task Definition 기반 컨테이너 실행
  • 비정상 Task 자동 재생성
  • Desired Count 유지 (지정 개수 자동 유지)
  • ALB와 연동하여 트래픽 분산
  • 롤링 배포 및 무중단 배포 지원
  • 서비스 단위 스케일링 지원

보호 대상

  • 배포 일관성
  • 서비스 실행 환경
  • 장애 후 복구 속도
  • 운영 인력의 수작업 부담

Trade-off

  • AWS 종속성
  • 네트워크/배포 구조 학습 비용
  • 로컬 실행과 운영 환경 차이 관리 필요
  • 디버깅 복잡도

5. ECR

문제

  • 서버마다 다른 Docker 이미지 사용 → 배포 불일치
  • 이미지 버전 관리 어려움 → 롤백 불가능

해결

  • Docker 이미지를 중앙 저장소에서 관리
  • ECS/EC2가 동일한 이미지를 pull

보호 대상

  • 배포 일관성
  • 이미지 버전 관리

역할

  • Docker 이미지 저장 및 버전 관리
  • ECS / EC2에서 이미지 pull
  • CI/CD(GitHub Actions)와 연동
  • 배포 기준점(Single Source of Truth) 제공

Trade-off

  • 저장 비용
  • 이미지 관리 필요

6. EC2

문제

  • 애플리케이션 실행할 물리적/가상 서버 필요
  • 단일 서버일 경우 장애 시 전체 서비스 중단

해결

  • 가상 서버 제공
  • Auto Scaling을 통해 서버 수 확장

보호 대상

  • 애플리케이션 실행 환경
  • 인프라 레벨 가용성

역할

  • 애플리케이션 실행 환경 제공
  • ECS Container Instance로 사용 (ECS on EC2)
  • Auto Scaling Group을 통해 서버 확장
  • 컨테이너(Task)가 올라갈 물리적 리소스 제공

Trade-off

  • 서버 관리 필요
  • 운영 부담 증가
  • 리소스 낭비 가능성

 

[결론]

이제 회복은 충분히 되었다 생각하자. 물론 아직도 힘들다... 내일은 열심히 프로젝트에만 열중해야겠다. 그 전까지 인프라 구축하고, 명세서 다 작성해야겠다... 참 피폐해져가는 것을 느낀다.

 

'TIL' 카테고리의 다른 글

20260331 TIL - 공통 모듈 구축  (0) 2026.03.31
20260330 TIL - 클로드 코워크, GW 구축  (0) 2026.03.30
20260328 TIL - DB 정규화  (0) 2026.03.28
20260327 TIL - ERD, API 명세, DDD  (0) 2026.03.27
20260326 TIL - ERD, 코드 컨벤션  (0) 2026.03.26