아마존 핵심 서비스들

EC2 (Elastic Compute Cloud) – 가상 서버 임대

EC2는 AWS의 클라우드에서 가상 컴퓨팅 인스턴스(가상 서버)를 제공하는 서비스이다. 물리적인 서버를 직접 구매하고 관리하는 대신, AWS 데이터 센터의 자원을 활용하여 원하는 사양의 가상 컴퓨터를 빌려 사용할 수 있다

  • 인스턴스 생성 및 운영 체제 선택: AWS 웹 콘솔에서 CPU, 메모리, 스토리지 등 원하는 사양(인스턴스 유형)을 선택하여 가상 서버를 생성한다. 운영 체제는 리눅스(AWS Linux, Ubuntu, Red Hat 등 다양한 배포판), Windows, macOS 중에서 선택이 가능하며, 일반적으로 웹 서버 운영에는 리눅스가 주로 사용된다. 이를 AWS에서는 ‘OS 이미지’라고 부른다
  • 인스턴스 유형: t2.micro, t2.small 등과 같이 다양한 인스턴스 유형이 존재하며, 유형에 따라 스펙(CPU, 메모리)과 요금이 달라진다. 실행하려는 애플리케이션의 요구사항에 맞춰 적절한 스펙을 선택하는 것이 중요하다. 스토리지(디스크) 또한 필요한 만큼 증설할 수 있다
  • 키 페어 (로그인): 생성된 EC2 인스턴스에 원격으로 안전하게 접속하기 위해 사용되는 보안 키(Key Pair)이다. 이 키를 통해 사용자 PC에서 EC2 인스턴스로 SSH(Secure shell) 연결을 통해 접속하여 프로그램을 설치하고 웹 서버를 실행할 수 있다

RDS (Relational Database Service) – 관리형 데이터베이스

AWS RDS는 클라우드 환경에서 관계형 데이터베이스를 손쉽게 설정, 운영, 확장할 수 있도록 돕는 완전 관리형 서비스이다. 사용자가 직접 데이터베이스 서버를 설치하고 관리하는 복잡성을 줄여주며, 안정성과 고가용성을 보장하는 다양한 기능을 제공한다

  • 자동 백업: RDS는 설정된 보존 기간 동안 데이터베이스 변경 사항을 자동으로 백업한다. 이를 통해 특정 시점으로 데이터베이스를 복원할 수 있다
  • 데이터베이스 스냅샷: 특정 시점의 데이터베이스 상태를 이미지처럼 저장하는 기능이다. 사용자가 수동으로 스냅샷을 생성할 수도 있으며, 이를 기반으로 새로운 데이터베이스 인스턴스를 생성하거나 기존 데이터를 복원할 수 있다
  • 자동 소프트웨어 패치 및 버전 업그레이드: 데이터베이스 엔진의 최신 패치 및 마이너 버전 업그레이드를 AWS가 자동으로 적용하여 보안 취약점을 해결하고 성능을 최적화한다. 사용자는 필요에 따라 수동으로 메이저 버전 업그레이드를 수행할 수도 있다
  • 다중 AZ(Availability Zone) 배포
    • 리전(Region): AWS 클라우드 인프라의 가장 큰 지리적 단위이다. 각 리전은 전 세계적으로 분산되어 있으며, 물리적으로 격리되어 있다(예: 서울 리전)
    • 가용 영역 (Availability Zone, AZ): 하나의 리전 내에 위치한 물리적으로 독립적인 하나 이상의 데이터 센터 그룹이다. 각 AZ는 자체적인 전력, 네트워킹, 냉각 시스템을 갖추고 있어 다른 AZ의 장애로부터 격리된다
    • 다중 AZ 배포 지원: RDS는 데이터베이스 인스턴스를 하나의 AZ에만 두지 않고 여러 가용 영역에 분산하여 운영할 수 있는 기능을 제공한다. 이는 주 (Primary) 데이터베이스 인스턴스에 장애가 발생할 경우, 다른 가용 영역의 대기(Standby) 인스턴스로 자동 전환(Failover) 되어 서비스 중단 시간을 최소화하고 고가용성을 확보하는 데 매우 중요하다

VPC (Virtual Private Cloud) – 가상 네트워크 환경 구축

VPC는 AWS 클라우드 내에 사용자를 위한 격리된 가상 네트워크 환경을 제공하는 서비스이다. 실제 PC에 랜선을 꽂아 공유기와 통신사에 연결하는 일련의 네트워크 설정 과정을 AWS에서 대신하여 사용자 맞춤형 네트워크를 구축해준다

  • AWS 계성 생성 시 기본 VPC가 제공되며, 사용자는 이 VPC 내에서 서브넷(Subnet), 라우팅 테이블(Route Table), 인터넷 게이트웨이(Internet Gateway) 등을 구성하여 클라우드 리소스 간의 통신 및 인터넷 접근을 제어할 수 있다
  • 보안 그룹 (Security Group): EC2 인스턴스나 RDS 데이터베이스 등 AWS 리소스에 대한 네트워크 트래픽을 제어하는 가상 방화벽이다. 인바운드(들어오는) 및 아웃바운드(나가는) 트래픽 규칙을 정의하여 특정 포트(예: 웹 서버의 8080 포트, SSH 접속의 22번 포트)와 IP 주소 범위에 대해서만 접근을 허용하거나 차단할 수 있다. 일반적으로 아웃바운드는 트래픽에는 제약을 두지 않지만, 인바운드 트래픽은 보안을 위해 필요한 포트만 허용하는 것이 일반적이다. 서비스 별로 보안 그룹을 만들어 재사용하고 여러 인스턴스에 적용하여 일관된 보안 정책을 유지하는 것 또한 일반적이다. 보안 그룹은 EC2뿐만 아니라 RDS, EKS 등 다양한 AWS 적용되는 개념이다

IAM (Identity and Access Management) – 사용자 및 권한 관리

IAM은 AWS 리소스에 대한 접근을 안전하게 관리하는 서비스이다. 회사 계정으로 AWS 서비스를 이용할 때, 모든 팀원이 Root 계정(최고 관리자 권한)을 가지게 되면 보안상 위험이 커지고 실수로 서비스가 삭제될 수 있다

  • 권한 분리: IAM을 통해 Root 계정은 유지하되, 개발 팀장에게는 높은 권한을 가진 계정을, 일반 개발사원에게는 최소한의 권한을 부여한 계정을 생성하여 권한을 세분화할 수 있다
  • 사용자, 그룹, 역할: IAM은 사용자(User), 그룹(Group), 역할(Role)을 생성하고 각 엔티티에 AWS 리소스에 대한 접근 권한 (Policy)을 부여하여 정교한 접근 제어를 가능하게 한다

S3(Simple Storage Service) – 확장 가능한 객체 스토리지

S3는 웹사이트의 정적 파일 호스팅, 파일 스토리지, 데이터 아카이빙 등 다양한 목적으로 사용되는 확장성 높고 내구성이 뛰어난 객체 스토리지 서비스이다.

  • 정적 웹사이트 호스팅: HTML, CSS, JavaScript 등으로 구성된 프론트엔드 애플리케이션의 빌드된 정적 파일들을 S3 버킷에 저장하고 S3의 웹사이트 호스팅 기능을 통해 간편하게 웹사이트를 배포할 수 있다. 이를 통해 확장 가능하고 비용 효율적인 방식으로 정적 콘텐츠를 제공할 수 있다
  • 파일 스토리지 및 백업: 다양한 종류의 파일을 저장하고 관리할 수 있으며, 데이터 백업 및 아카이빙 솔루션으로도 활용된다

ElastiCache – 관리형 인메모리 데이터 스토어

Amazon ElastiCache는 오픈 소스 인메모리 데이터인 Redis나 Memcached를 AWS 환경에서 완전 관리형으로 제공하는 서비스이다. 캐싱, 세션 저장소, 실시간 데이터 처리 등 다양한 용도로 활용되어 애플리케이션의 성능을 향상시킨다

  • Amazon ElastiCache는 여러 가용 영역(AZ)에 걸친 데이터 복제 및 자동 스냅샷 생성을 지원하여 높은 가용성을 보장한다. 장애 발생 시 자동으로 복구되어 시비스 중단을 최소화 한다

MSK – 관리형 메시지 스트리밍 서비스

대규모 실시간 스트리밍 데이터를 처리하는 데 사용되는 Apache Kafka를 위한 완전 관리형 서비스이다. Kafka 클러스터 프로비저닝, 패치, 백업 및 확장을 AWS가 자동으로 처리한다

  • MSK는 여러 가용 영역에 걸쳐 클러스터 배포를 지우너하여 높은 고가용성과 내구성을 보장한다

OpenSearch Service – 관리형 검색 및 분석 서비스

OpenSearch Service는 Elastic Stack(이전의 ELK 스택: Elasticsearch, Logstash, Kibana)의 오픈 소스 버전인 OpenSearch를 AWS에서 완전 관리형으로 제공하는 서비스이다. 대규모 로그 분석, 실시간 애플리케이션 모니터링, 웹사이트 검색 등 다양한 용도로 활용된다

  • 확장성: 대규모 데이터 인덱싱과 검색을 처리할 수 있도록 클러스터를 자동으로 확장하는 기능을 제공하여 데이터 양이나 트래픽 증가에 유연하게 대응할 수 있다

CloudWatch – 실시간 모니터링 및 로깅 서비스

CloudWatch는 AWS 클라우드 리소스와 애플리케이션을 실시간으로 모니터링하는 서비스이다. 시스템 전반에 걸쳐 로그 파일을 수집하고 성능 데이터를 추적하며, 리소스 상태를 보고 특정 임계값 초과 시 알람을 설정할 수 있다

  • 메트릭 수집: CPU 사용률, 네트워크 트래픽 등 다양한 성능 메트릭을 수집한다
  • 로그 수집: EC2 인스턴스, Lambda 함수 등에서 발생하는 로그 파일을 중앙에서 수집하고 분석한다
  • 알람 설정: 정의된 메트릭이 특정 임계값을 초과하면 SMS, 이메일, 자동 스케일링 등의 작업을 트리거하도록 알람을 설정한다
  • 대시보드: 수집된 메트릭과 로그를 시각화하여 시스템 상태를 한눈에 파악할 수 있는 대시보드를 제공한다

EKS (Elastic Kubernetes Service) – 관리형 Kubernetes 서비스

EKS는 AWS에서 제공하는 관리형 Kubernetes 서비스이다. 사용자가 직접 Kubernetes 클러스터의 컨트롤 플레인을 구축하고 관리하는 복잡성을 줄여준다

  • 워커 노드: EKS 클러스터의 워커 노드들은 AWS EC2 인스턴스로 구성된다. 따라서 EKS를 이해하려면 EC2의 기본 개념을 알아야 한다
  • 네트워킹: EKS 클러스터도 여러 EC2 인스턴스의 집합이므로, 당연히 VPC 내에서 네트워크가 구성되며, Pod 간 통신 및 외부 접근을 위한 네트워킹이 필요하다
  • 데이터베이스 연동: EKS에서 애플리케이션(Pod)을 실행하고 데이터베이스가 필요한 경우, EC2 내부에 직접 데이터베이스를 구성하기보다는 AWS RDS와 같은 별도의 관리형 데이터베이스 서비스를 활용하여 데이터 지속성과 안정성을 확보하는 것이 일반적이다

로드 밸런서 (Load Balancer) – 트래픽 분산 및 고가용성

단일 서버로만 서비스를 운영하는 것은 장애 위험이 크므로, 여러 대의 서버를 두고 트래픽을 분산하는 것이 일반적이다. 로드 밸런서는 사용자의 요청을 여러 서버(EC2 인스턴스)에 고르게 분배하여 부하를 분산하고 특정 서버에 문제가 발생했을 때 자동으로 정상 서버로 트래픽을 전환하여 서비스의 고가용성을 유지하는 역할을 한다

  • 트래픽 분산: 사용자의 요청을 받아 여러 백엔드 서버(타겟 그룹에 등록된 EC2 인스턴스 등)로 분산시켜 개별 서버의 부하를 줄인다
  • 헬스 체크: 백엔드 서버들의 상태를 지속적으로 모니터링하여, 비정상적인 서버로는 트래픽을 보내지 않고 정상 서버로만 요청을 라우팅한다
  • 엔드포인트 제공: 사용자는 개발 서버의 IP 주소가 아닌 로드 밸런서의 단일 엔드포인트(DNS 이름)로 접근하며, 로드 밸런서가 내부적으로 트래픽을 관리한다
  • 타겟 그룹: 로드 밸런서가 트래픽을 분산시킬 백엔드 리소스(예: EC2 인스턴스)들의 논리적인 그룹이다

출처 – eks를 활용한 spring 운영서버 배포(feat. devops의 모든것)