AWS는 아마존닷컴의 자회사인 아마존 웹 서비스가 제공하는 포괄적인 클라우드 컴퓨팅 플랫폼이다. 2006년 처음 서비스를 시작한 이후, 전 세계적으로 가장 널리 사용되는 퍼블릭 클라우드 인프라 서비스로 성장했다. AWS는 데이터 센터, 서버, 스토리지, 데이터베이스, 네트워킹 등 전통적인 온프레미스 IT 인프라를 필요로 하는 자본 지출과 유지 관리 부담 없이, 인터넷을 통해 확장 가능한 컴퓨팅 자원과 서비스를 제공한다.
이 플랫폼은 200개가 넘는 다양한 기능의 서비스로 구성되어 있으며, 주요 카테고리로는 컴퓨팅, 스토리지, 데이터베이스, 네트워킹, 보안, 모니터링, 머신 러닝, 인공지능 등이 있다. 사용자는 필요에 따라 이러한 서비를 조합하여 애플리케이션을 구축하고 배포하며, 사용한 만큼만 비용을 지불하는 종량제 모델을 따른다. 이는 빠른 확장성과 비용 효율성을 제공하는 핵심 특징이다.
AWS의 글로벌 인프라는 지리적으로 분리된 여러 리전과 각 리전 내의 여러 가용 영역으로 구성되어 있다. 이 구조는 애플리케이션의 고가용성과 내결함성을 보장하는 데 기여한다. 또한, AWS Well-Architected Framework라는 공식 설계 원칙을 제공하여 클라우드 아키텍처를 보안, 성능, 복원력, 효율성 측면에서 검토하고 개선하는 방법을 제시한다.
AWS의 컴퓨팅 서비스는 애플리케이션을 실행하고 워크로드를 처리하는 가상 서버, 컨테이너, 코드 실행 환경을 제공하는 핵심 서비스군이다. 이 서비스들은 사용자가 하드웨어를 직접 관리할 필요 없이 다양한 요구 사항에 맞는 컴퓨팅 용량을 탄력적으로 프로비저닝하고 관리할 수 있게 해준다. 주요 서비스로는 Amazon EC2, AWS Lambda, Amazon ECS, Amazon EKS 등이 있다.
가장 기본적이고 널리 사용되는 서비스는 Amazon EC2이다. EC2는 사용자가 완전한 제어권을 가지는 가상 서버인 인스턴스를 제공한다. 사용자는 운영 체제, 애플리케이션 스택, 보안 설정 등을 직접 구성하고 관리한다. 다양한 인스턴스 유형(범용, 컴퓨팅 최적화, 메모리 최적화 등)과 구매 옵션(온디맨드, 예약 인스턴스, 스팟 인스턴스)을 통해 비용과 성능을 최적화할 수 있다.
애플리케이션 로직을 서버 프로비저닝 없이 실행하고자 할 때는 AWS Lambda가 적합하다. Lambda는 서버리스 컴퓨팅 서비스로, 사용자가 코드를 업로드하기만 하면 트리거(예: Amazon S3 이벤트, Amazon API Gateway 요청)에 따라 코드를 자동으로 실행하고 확장한다. 사용한 컴퓨팅 시간만큼만 비용을 지불하며, 서버 운영 체제 유지 관리에 대한 부담이 없다.
컨테이너화된 애플리케이션을 실행하기 위한 주요 서비스는 Amazon ECS와 Amazon EKS이다. ECS는 AWS의 자체 컨테이너 오케스트레이션 서비스로, Docker 컨테이너를 쉽게 배포, 관리 및 확장할 수 있다. 반면, EKS는 업계 표준 쿠버네티스를 AWS에서 완전 관리형 서비스로 제공한다. 기존 쿠버네티스 도구와의 호환성이 필요한 경우 EKS를 선택한다.
서비스 | 주요 특징 | 주요 사용 사례 |
|---|---|---|
완전한 제어권, 다양한 인스턴스 유형, 유연한 구성 | 전통적인 웹 서버, 엔터프라이즈 애플리케이션, 고성능 컴퓨팅 | |
서버리스, 이벤트 기반, 초 단위 과금, 자동 확장 | 실시간 파일 처리, 백엔드 API, 예약된 작업(크론) | |
AWS 네이티브 Docker 관리, AWS Fargate와 통합 | 마이크로서비스, 배치 처리, 호스트 서버 관리 부담 감소 | |
완전 관리형 쿠버네티스, 오픈소스 호환성 | 복잡한 컨테이너 오케스트레이션, 멀티 클라우드/하이브리드 환경 |
Amazon EC2(Elastic Compute Cloud)는 AWS에서 제공하는 핵심 클라우드 컴퓨팅 서비스이다. 사용자가 가상 서버인 인스턴스를 프로비저닝하고 실행할 수 있게 해주는 IaaS(Infrastructure as a Service) 제품이다. 사용자는 다양한 운영 체제와 CPU, 메모리, 스토리지, 네트워킹 용량으로 구성된 인스턴스를 선택하여 필요한 컴퓨팅 환경을 빠르게 구축할 수 있다. EC2의 핵심 가치는 탄력성에 있으며, 수요에 따라 인스턴스를 수 분 내에 확장하거나 축소할 수 있다.
EC2 인스턴스는 다양한 목적에 맞춰 설계된 여러 인스턴스 패밀리로 제공된다. 주요 패밀리와 용도는 다음과 같다.
패밀리 | 주요 용도 | 특징 |
|---|---|---|
범용 웹 서버, 애플리케이션 서버 | 컴퓨팅, 메모리, 네트워킹의 균형 | |
고성능 컴퓨팅, 게임 서버, 배치 처리 | 고성능 CPU | |
메모리 집약적 데이터베이스, 캐싱 | 대용량 메모리 | |
대규모 데이터 세트 처리, 데이터 웨어하우징 | 고성능 로컬 스토리지 | |
그래픽 렌더링, 머신러닝 | GPU 가속 |
사용자는 인스턴스에 연결할 스토리지 옵션으로 Amazon EBS 볼륨이나 인스턴스 스토어를 선택할 수 있다. 또한, Amazon Machine Image(AMI)라는 템플릿을 사용하여 운영 체제, 애플리케이션 서버, 애플리케이션을 포함한 사전 구성된 소프트웨어 패키지로 인스턴스를 시작할 수 있다. 보안은 AWS IAM 정책과 인스턴스 수준의 보안 그룹(가상 방화벽)을 통해 관리된다.
EC2는 온디맨드 인스턴스, 예약 인스턴스, 스팟 인스턴스 등 다양한 요금 모델을 제공하여 비용을 최적화할 수 있다. Auto Scaling 그룹과 결합하면 애플리케이션 부하 변화에 따라 인스턴스 수를 자동으로 조정하여 가용성과 효율성을 높일 수 있다. 이러한 유연성과 제어 기능 덕분에 EC2는 웹 애플리케이션 호스팅부터 HPC(고성능 컴퓨팅)에 이르기까지 광범위한 워크로드의 기반이 된다.
AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있는 서버리스 컴퓨팅 서비스이다. 사용자는 코드를 업로드하기만 하면, AWS가 코드 실행에 필요한 모든 컴퓨팅 리소스를 자동으로 할당하고 관리한다. 코드는 이벤트에 대한 응답으로 실행되며, 사용한 컴퓨팅 시간에 대해서만 비용을 지불하는 종량제 모델을 따른다.
주요 특징은 다음과 같다.
특징 | 설명 |
|---|---|
이벤트 기반 실행 | Amazon S3 버킷에 객체가 업로드되거나, Amazon DynamoDB 테이블이 업데이트되거나, Amazon API Gateway를 통한 HTTP 요청 등 다양한 이벤트 소스에 의해 코드가 트리거된다. |
자동 확장 | 들어오는 요청 수에 따라 자동으로 애플리케이션을 확장한다. 각 트리거 이벤트는 별도의 Lambda 함수 인스턴스로 처리된다. |
다양한 런타임 지원 | Node.js, Python, Java, Go, .NET Core, Ruby 등 여러 프로그래밍 언어를 지원한다. 또한 사용자 지정 런타임도 구축할 수 있다. |
이 서비스는 마이크로서비스 아키텍처 백엔드, 실시간 파일 처리, 실시간 스트림 처리, IoT 백엔드, 웹 애플리케이션 등 다양한 애플리케이션에 적합하다. 코드는 최대 15분 동안 실행될 수 있으며, 더 긴 실행 시간이 필요한 작업에는 Amazon EC2나 Amazon ECS와 같은 다른 컴퓨팅 서비스를 사용하는 것이 일반적이다.
Amazon ECS는 AWS가 완전 관리형으로 제공하는 컨테이너 오케스트레이션 서비스이다. 사용자는 도커 컨테이너를 실행하기 위한 클러스터를 손쉽게 구성하고 관리할 수 있다. Amazon ECS는 서버리스 방식의 AWS Fargate를 통해 인프라 관리 없이 컨테이너를 실행할 수도 있고, 사용자가 관리하는 Amazon EC2 인스턴스 클러스터를 사용할 수도 있다. 이를 통해 애플리케이션의 배포, 확장, 부하 분산을 자동화할 수 있다.
Amazon EKS는 AWS에서 관리형 쿠버네티스 서비스를 제공한다. 쿠버네티스는 오픈소스 컨테이너 오케스트레이션 플랫폼으로, 업계 표준에 가까운 광범위한 생태계와 도구를 보유하고 있다. Amazon EKS는 쿠버네티스 컨트롤 플레인을 완전 관리형으로 운영하여 사용자가 마스터 노드의 가용성과 확장성을 신경 쓰지 않도록 한다. 사용자는 표준 쿠버네티스 도구와 API를 그대로 사용하면서 AWS의 다른 서비스와 통합된 환경에서 워커 노드를 운영할 수 있다.
두 서비스의 주요 차이점은 다음과 같다.
특성 | Amazon ECS | Amazon EKS |
|---|---|---|
기술 기반 | AWS 독자적인 오케스트레이션 엔진 | 업계 표준 쿠버네티스 |
관리 복잡도 | AWS 통합으로 인해 상대적으로 간소화됨 | 쿠버네티스 자체의 복잡성을 일부 수반함 |
이식성 | AWS 환경에 최적화됨 | 멀티 클라우드 또는 온프레미스 환경으로의 이식성이 높음 |
통합 | AWS IAM, Amazon CloudWatch 등 AWS 서비스와의 네이티브 통합 제공 |
선택은 주로 기술 스택과 요구사항에 따라 결정된다. AWS 고유의 통합과 단순함을 추구하며 빠르게 시작하려면 Amazon ECS가 적합하다. 반면, 쿠버네티스의 풍부한 기능과 생태계, 그리고 벤더 종속성을 피한 이식성이 필요하다면 Amazon EKS를 선택한다. 두 서비스 모두 AWS Fargate와 연동하여 서버리스 방식으로 컨테이너를 실행하는 옵션을 제공한다.
Amazon S3는 객체 스토리지 서비스로, 거의 무제한의 데이터를 저장하고 웹에서 액세스할 수 있게 설계되었다. 데이터는 버킷이라는 컨테이너에 객체 형태로 저장되며, 높은 내구성과 가용성을 제공한다. 주로 백업, 아카이빙, 정적 웹사이트 호스팅, 빅 데이터 분석의 데이터 레이크 구축 등에 사용된다. 다양한 스토리지 클래스를 제공하여 비용을 최적화할 수 있다.
Amazon EBS는 Amazon EC2 인스턴스에 사용할 수 있는 블록 수준의 스토리지 볼륨을 제공한다. 운영 체제, 애플리케이션, 데이터베이스 설치에 적합한 지속적이고 성능이 예측 가능한 스토리지이다. 볼륨 유형과 크기를 독립적으로 선택하여 성능과 비용을 조정할 수 있으며, 특정 시점의 스냅샷을 생성하여 데이터 보호와 마이그레이션에 활용한다.
Amazon EFS는 간단하고 확장 가능한 탄력적 파일 스토리지를 제공한다. 여러 Amazon EC2 인스턴스가 동시에 액세스할 수 있는 네트워크 파일 시스템으로, 온프레미스 NFS 프로토콜과 호환된다. 용량이 자동으로 확장되므로 애플리케이션 중단 없이 페타바이트 규모의 데이터를 저장할 수 있다. 주로 콘텐츠 관리 시스템, 개발 환경, 빅 데이터 분석 워크로드에 적합하다.
서비스 | 유형 | 주요 특징 | 주요 사용 사례 |
|---|---|---|---|
객체 스토리지 | 높은 내구성, 웹 액세스, 무제한 확장 | 데이터 레이크, 백업, 정적 웹 호스팅 | |
블록 스토리지 | EC2 인스턴스 전용, 낮은 지연 시간 | 데이터베이스, 운영 체제, 트랜잭션 시스템 | |
파일 스토리지 | 다중 EC2 인스턴스 공유, 자동 확장 | 공유 개발 환경, 웹 서버 팜, 미디어 처리 |
Amazon S3(Simple Storage Service)는 AWS가 제공하는 객체 스토리지 서비스이다. 인터넷을 통해 어디서나 원하는 양의 데이터를 저장하고 검색할 수 있도록 설계되었다. 높은 내구성, 가용성, 확장성을 핵심 특징으로 하며, 정적 웹사이트 호스팅, 데이터 레이크 구축, 백업 및 아카이브, 빅 데이터 분석 등 다양한 용도로 사용된다.
S3는 데이터를 객체 단위로 관리하며, 각 객체는 데이터 자체, 메타데이터, 고유 식별자인 키로 구성된다. 객체는 버킷이라는 최상위 컨테이너에 저장된다. 버킷 이름은 전역적으로 고유해야 하며, 리전을 생성 시점에 선택하여 데이터의 물리적 저장 위치를 결정한다. 데이터 접근은 REST API, AWS SDK, AWS Management Console 등을 통해 이루어진다.
S3는 다양한 스토리지 클래스를 제공하여 비용 최적화를 지원한다. 자주 액세스하는 데이터에는 S3 Standard를, 자주 액세스하지 않는 데이터에는 S3 Standard-IA(Infrequent Access)나 S3 Glacier 아카이브 스토리지 클래스를 사용할 수 있다. 또한 S3 Intelligent-Tiering은 액세스 패턴을 모니터링하여 성능 저하나 운영 오버헤드 없이 자동으로 객체를 가장 비용 효율적인 액세스 티어로 이동시킨다.
스토리지 클래스 | 설계 목적 | 내구성 | 가용성 | 일반적인 사용 사례 |
|---|---|---|---|---|
S3 Standard | 자주 액세스하는 데이터 | 99.999999999% | 99.99% | 클라우드 애플리케이션, 동적 웹사이트, 콘텐츠 배포 |
S3 Standard-IA | 자주 액세스하지 않는 데이터 | 99.999999999% | 99.9% | 백업, 장기 저장, 재해 복구 파일 |
S3 Glacier | 장기 아카이브 및 백업 | 99.999999999% | 99.99% (객체 복원 후) | 규정 준수 아카이브, 디지털 보존, 백업 아카이브 |
서비스는 강력한 보안 및 규정 준수 기능을 포함한다. 기본적으로 모든 버킷과 객체는 비공개이며, AWS IAM 정책, 버킷 정책, Access Control List(ACL)를 사용하여 세밀한 접근 제어가 가능하다. 데이터 전송 중 및 저장 중 암호화를 지원하며, S3 버전 관리 기능을 활성화하면 객체의 모든 버전을 보존하여 실수로 인한 삭제나 덮어쓰기를 방지할 수 있다.
Amazon Elastic Block Store는 Amazon EC2 인스턴스에 사용할 영구적인 블록 수준 스토리지 볼륨을 제공하는 서비스이다. EBS 볼륨은 EC2 인스턴스에 네트워크로 연결된 독립적인 스토리지 리소스로, 인스턴스의 수명과 관계없이 데이터를 지속적으로 보존한다. 물리적 서버의 하드 드라이브와 유사한 역할을 하지만, 네트워크를 통해 탄력적으로 연결되고 용량을 조정할 수 있다는 점이 특징이다. 주로 운영 체제 부트 볼륨, 데이터베이스 스토리지, 애플리케이션 데이터와 같은 지속성이 필요한 워크로드에 사용된다.
EBS는 다양한 성능과 비용 요구 사항에 맞춰 여러 유형의 볼륨을 제공한다. 주요 볼륨 유형은 다음과 같다.
볼륨 유형 | 최적화 대상 | 주요 사용 사례 |
|---|---|---|
범용 SSD (gp2/gp3) | 가격 대비 성능 | 대부분의 워크로드, 부트 볼륨 |
프로비저닝된 IOPS SSD (io1/io2) | 높은 성능과 일관된 낮은 지연 시간 | |
처리량 최적화 HDD (st1) | 빈번한 접근과 처리량이 중요한 빅 데이터 | 로그 처리, 데이터 웨어하우징 |
콜드 HDD (sc1) | 자주 접근하지 않는 데이터의 저비용 스토리지 | 콜드 데이터 아카이빙 |
볼륨은 생성 후 용량, 성능(예: IOPS, 처리량)을 동적으로 변경할 수 있으며, 특정 시점의 데이터 상태를 보존하는 EBS 스냅샷 기능을 통해 백업 및 복제가 가능하다. 스냅샷은 Amazon S3에 저장되며, 이를 기반으로 새로운 볼륨을 생성하거나 다른 리전으로 복제할 수 있다.
EBS 볼륨은 특정 가용 영역에 생성되므로, 다른 가용 영역의 인스턴스에는 직접 연결할 수 없다. 고가용성을 구성하려면 스냅샷을 통해 다른 가용 영역에 볼륨을 복제하거나, 애플리케이션 수준의 복제 방식을 사용해야 한다. 또한, EC2 인스턴스 종료 시 기본적으로 볼륨은 삭제되지 않도록 설정되어 있어, 의도치 않은 데이터 손실을 방지한다.
Amazon EFS는 AWS에서 제공하는 완전 관리형 NFS 파일 시스템 서비스이다. Amazon EC2 인스턴스, AWS Lambda 함수, Amazon ECS 컨테이너 등 여러 AWS 컴퓨팅 리소스가 동시에 접근하여 공유 데이터를 읽고 쓸 수 있도록 설계되었다.
이 서비스는 탄력적인 용량을 핵심 특징으로 한다. 사용자는 파일을 추가하거나 삭제함에 따라 스토리지 용량이 자동으로 확장되거나 축소되므로, 사전에 용량을 프로비저닝하거나 관리할 필요가 없다. 또한, Amazon EFS는 POSIX 호환 파일 시스템을 제공하여 기존 애플리케이션과 도구를 수정 없이 사용할 수 있도록 지원한다. 성능 모드와 처리량 모드 등 다양한 옵션을 통해 워크로드에 맞는 성능을 선택할 수 있다.
주요 사용 사례는 다음과 같다.
사용 사례 | 설명 |
|---|---|
콘텐츠 관리 시스템 | 웹 서버 팜이 공유 콘텐츠 저장소로 사용 |
애플리케이션 개발 및 테스트 | 개발팀이 공통 코드 리포지토리 및 도구에 접근 |
빅 데이터 분석 | 여러 분석 인스턴스가 공통 데이터셋을 처리 |
컨테이너 스토리지 | Amazon ECS 또는 Amazon EKS에서 실행되는 컨테이너의 영구적 공유 스토리지 |
Amazon EFS는 멀티 AZ 아키텍처를 기반으로 하여 높은 가용성과 내구성을 제공한다. 데이터는 한 AWS 리전 내의 여러 가용 영역에 자동으로 복제되어 저장된다. 접근 제어는 AWS IAM 정책과 파일 시스템 수준의 NFS 권한을 조합하여 관리할 수 있다.
AWS는 다양한 워크로드에 맞춘 관리형 데이터베이스 서비스를 포괄적으로 제공한다. 이 서비스들은 설치, 패치, 백업, 복구와 같은 운영 부담을 줄이고, 개발자가 애플리케이션 로직에 집중할 수 있도록 설계되었다. 주요 서비스는 관계형, 키-값, 문서, 인메모리, 그래프 등 다양한 데이터 모델을 지원하며, 성능, 확장성, 가용성 요구사항에 따라 선택할 수 있다.
관계형 데이터베이스 서비스인 Amazon RDS는 MySQL, PostgreSQL, MariaDB, Oracle Database, Microsoft SQL Server 등 널리 사용되는 엔진을 관리형 서비스로 제공한다. 자동 패치, 자동 백업, 읽기 전용 복제본 생성, 다중 AZ 배포를 통한 고가용성 구성 등을 쉽게 설정할 수 있다. 완전 관리형 관계형 데이터베이스 엔진인 Amazon Aurora는 MySQL 및 PostgreSQL과 호환되면서도 상용 데이터베이스 수준의 성능과 가용성을 제공한다. Aurora는 분산형, 내결함성 스토리지 아키텍처를 사용하여 자동으로 데이터를 복제하고, 데이터베이스 인스턴스의 장애를 빠르게 복구한다.
NoSQL 데이터베이스 요구사항을 위해 Amazon DynamoDB라는 완전 관리형 키-값 및 문서 데이터베이스를 제공한다. DynamoDB는 서버리스 모델로, 요청 수에 따라 자동으로 확장되며, 밀리초 단위의 지연 시간을 보장한다. 이는 사용량이 변동하는 애플리케이션에 적합하다. AWS의 데이터베이스 포트폴리오에는 이 외에도 Amazon ElastiCache(인메모리 캐시), Amazon Neptune(그래프 데이터베이스), Amazon DocumentDB(문서 데이터베이스), Amazon Keyspaces(Apache Cassandra 호환 서비스) 등이 포함되어 있다.
서비스 이름 | 주요 데이터 모델 | 특징 |
|---|---|---|
관계형(Relational) | 관리형 관계형 데이터베이스, 여러 인기 엔진 지원 | |
관계형(Relational) | 고성능 MySQL/PostgreSQL 호환 데이터베이스, 자동 복제 | |
키-값(Key-Value), 문서(Document) | 완전 관리형 NoSQL, 서버리스, 자동 확장 | |
인메모리(In-Memory) | Redis 또는 Memcached 호환 캐시 및 데이터 스토어 |
Amazon RDS(Relational Database Service)는 AWS에서 제공하는 완전관리형 관계형 데이터베이스 서비스이다. 사용자는 데이터베이스 서버의 프로비저닝, 패치 적용, 백업, 복구, 장애 조치와 같은 시간 소모적인 관리 작업을 AWS에 위임하고, 애플리케이션 개발과 데이터 모델링에 집중할 수 있다.
이 서비스는 여러 인기 있는 데이터베이스 엔진을 지원한다. 사용자는 필요에 따라 다음 엔진 중 하나를 선택하여 배포할 수 있다.
지원 데이터베이스 엔진 | 설명 |
|---|---|
AWS가 개발한 MySQL 및 PostgreSQL 호환 고성능 데이터베이스 | |
강력한 오픈 소스 객체-관계형 데이터베이스 시스템 | |
세계에서 가장 인기 있는 오픈 소스 관계형 데이터베이스 | |
MySQL의 포크로 개발된 오픈 소스 데이터베이스 | |
상용 관계형 데이터베이스 관리 시스템 | |
마이크로소프트의 상용 관계형 데이터베이스 관리 시스템 |
Amazon RDS의 주요 기능으로는 자동화된 백업과 데이터베이스 스냅샷, 읽기 전용 복제본을 통한 성능 확장, 다중 가용 영역(AZ) 배포를 통한 고가용성 구성 등이 있다. 인스턴스 유형과 스토리지 크기를 손쉽게 조정할 수 있어 트래픽 변화에 탄력적으로 대응할 수 있다. 이러한 관리 편의성과 유연성 덕분에 Amazon RDS는 클라우드 환경에서 전통적인 관계형 데이터베이스를 운영하는 표준 서비스로 자리 잡았다.
Amazon DynamoDB는 AWS에서 제공하는 완전관리형 NoSQL 데이터베이스 서비스이다. 키-값(key-value) 및 문서(document) 데이터 모델을 지원하며, 단일 자릿수 밀리초의 응답 시간을 보장하는 고성능을 주요 특징으로 한다. 서버리스 아키텍처로 운영되므로 사용자는 인프라 프로비저닝, 패치 적용, 클러스터 확장과 같은 관리 작업을 신경 쓸 필요가 없다. 사용한 만큼의 읽기/쓰기 처리량과 스토리지에 대해서만 비용을 지불하는 종량제 모델을 채택한다.
DynamoDB의 핵심 구성 요소는 테이블, 항목(item), 속성(attribute)이다. 각 테이블은 기본 키(Partition Key)를 반드시 가지며, 필요에 따라 정렬 키(Sort Key)를 추가하여 복합 기본 키를 구성할 수 있다. 이 키 구조는 데이터 분산과 효율적인 쿼리의 기반이 된다. 데이터 접근은 주로 API 호출을 통해 이루어지며, GetItem, PutItem, UpdateItem, Query, Scan 등의 작업을 제공한다. 특히 Query 작업은 정렬 키를 사용하여 관련 항목들을 효율적으로 검색할 수 있게 한다.
성능 관리 측면에서 DynamoDB는 프로비저닝된 용량(Provisioned Capacity)과 온디맨드(On-Demand) 두 가지 용량 모드를 제공한다. 프로비저닝된 용량 모드는 애플리케이션의 예상 트래픽에 따라 읽기 용량 단위(RCU)와 쓰기 용량 단위(WCU)를 사전에 설정하는 방식이다. 반면, 온디맨드 모드는 트래픽 패턴이 불규칙하거나 예측하기 어려울 때 적합하며, 실제 수행된 요청 횟수에 따라 자동으로 확장된다. 또한 글로벌 테이블(Global Tables) 기능을 이용하면 여러 AWS 리전에 걸쳐 데이터를 복제하여 지연 시간이 짧은 글로벌 애플리케이션을 구축할 수 있다.
특징 | 설명 |
|---|---|
데이터 모델 | 키-값, 문서 |
일관성 모델 | 최종적 일관성(기본), 강력한 일관성(선택 가능) |
확장성 | 수평적 확장(자동 샤딩), 처리량 자동 조정 옵션 |
내구성 | 자동으로 여러 가용 영역에 데이터 복제 |
주요 사용 사례 | 사용자 프로필, 세션 저장소, 실시간 분석, IoT 데이터, 게임 리더보드 |
Amazon Aurora는 AWS가 제공하는 관계형 데이터베이스 서비스로, MySQL 및 PostgreSQL과 호환되면서도 클라우드 환경에 최적화된 고성능을 제공하는 것이 특징이다. 기존의 Amazon RDS 엔진을 대체하거나 보완하는 옵션으로, 상용 데이터베이스의 성능과 가용성을 오픈 소스 데이터베이스의 단순성과 비용 효율성과 결합했다고 평가받는다. 내부적으로는 전통적인 데이터베이스 아키텍처와 차별화된 로그 기반의 스토리지 계층을 사용하여 I/O 병목 현상을 줄이고 처리량을 크게 향상시켰다.
Aurora의 핵심 아키텍처는 스토리지와 컴퓨팅이 분리된 형태이다. 데이터베이스 인스턴스(컴퓨팅 노드)는 클러스터를 형성하며, 이 인스턴스들은 단일의 가상화된 스토리지 볼륨에 연결된다. 이 스토리지 볼륨은 데이터를 6개의 복제본으로 3개의 가용 영역에 자동으로 분산 저장하여 내구성과 가용성을 보장한다. 하나의 인스턴스가 장애가 발생하면 일반적으로 30초 이내에 다른 인스턴스로 자동 장애 조치가 이루어진다. 또한 읽기 전용 복제본을 추가할 때 스토리지를 추가로 복제하지 않아도 되어, 복제본 생성 시간과 스토리지 비용을 절감할 수 있다.
주요 기능과 이점은 다음과 같이 정리할 수 있다.
기능 영역 | 설명 |
|---|---|
성능 | MySQL 대비 최대 5배, PostgreSQL 대비 최대 3배의 처리량을 제공한다고 주장한다[1]. |
확장성 | 스토리지는 자동으로 최대 128TB까지 확장되며, 읽기 작업은 최대 15개의 읽기 전용 복제본으로 분산할 수 있다. |
가용성 | 다중 AZ 복제를 기반으로 99.99%의 가용성을 설계 목표로 하며, 자동 장애 조치를 지원한다. |
보안 | AWS KMS를 이용한 저장 데이터 암호화, 네트워크 격리(VPC), 감사 로그(CloudTrail 연동) 등을 제공한다. |
호환성 | MySQL 및 PostgreSQL의 오픈 소스 버전과의 호환성을 유지하여, 기존 애플리케이션과 도구를 큰 변경 없이 사용할 수 있다. |
이 서비스는 OLTP 워크로드, 엔터프라이즈 애플리케이션, 고가용성이 요구되는 SaaS 애플리케이션 등에 적합하다. 사용자는 Amazon RDS 콘솔을 통해 기존 MySQL이나 PostgreSQL 데이터베이스를 마이그레이션하거나, 새 Aurora 데이터베이스 클러스터를 생성하여 활용할 수 있다.
Amazon VPC는 사용자가 정의한 가상 네트워크로, AWS 리소스를 격리된 논리적 섹션에서 실행할 수 있게 한다. 사용자는 VPC 내에서 IP 주소 범위, 서브넷, 라우팅 테이블, 네트워크 게이트웨이를 완전히 제어한다. 이를 통해 온프레미스 데이터 센터의 전통적인 네트워크와 유사한 환경을 클라우드에 구축할 수 있다. VPC는 다른 VPC나 자체 데이터 센터와의 안전한 연결을 위한 기반을 제공한다.
Amazon CloudFront는 전 세계에 분산된 엣지 로케이션을 통해 콘텐츠를 사용자에게 저지연으로 전송하는 콘텐츠 전송 네트워크 서비스이다. 정적 웹 페이지, 동영상, API 응답 등 다양한 데이터를 캐싱하여 원본 서버의 부하를 줄이고 성능을 향상시킨다. DDoS 공격으로부터 보호하는 기능도 내장되어 있다. CloudFront는 Amazon S3, Amazon EC2, 온프레미스 서버 등 다양한 원본과 통합되어 작동한다.
AWS Direct Connect는 기업의 사내망과 AWS 리전을 전용 네트워크 연결로 이어주는 서비스이다. 인터넷을 통하지 않는 개인 연결을 제공하므로 대역폭 처리량이 예측 가능하고, 네트워크 비용을 절감할 수 있으며, 인터넷 기반 연결보다 일관된 성능을 보인다. 이는 데이터 센터 마이그레이션, 하이브리드 클라우드 구성, 대용량 데이터 전송과 같은 시나리오에 적합하다.
이 세 서비스는 종종 함께 사용되어 강력한 네트워크 인프라를 구성한다. 예를 들어, VPC 내부의 애플리케이션은 Direct Connect를 통해 안정적으로 온프레미스 시스템과 통신하고, 그 애플리케이션에서 제공하는 콘텐츠는 CloudFront를 통해 전 세계 최종 사용자에게 빠르게 배포될 수 있다.
Amazon VPC(Amazon Virtual Private Cloud)는 AWS 클라우드 내에서 논리적으로 격리된 사용자 전용의 가상 네트워크를 프로비저닝할 수 있는 서비스이다. 사용자는 이 가상 네트워크에서 AWS 리소스를 실행한다. 사용자는 VPC의 IP 주소 범위, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등을 완전히 제어할 수 있다.
VPC의 기본 구성 요소는 서브넷(Subnet), 인터넷 게이트웨이(Internet Gateway), 라우팅 테이블(Route Table), 네트워크 ACL(Network Access Control List), 보안 그룹(Security Group) 등이다. 서브넷은 VPC IP 주소 범위 내의 하나의 논리적 세그먼트로, 퍼블릭 서브넷과 프라이빗 서브넷으로 구분된다. 라우팅 테이블은 네트워크 트래픽이 전달될 경로를 결정하는 규칙의 집합이다.
VPC를 통해 구현할 수 있는 일반적인 네트워크 아키텍처 패턴은 다음과 같다.
아키텍처 패턴 | 주요 구성 요소 | 설명 |
|---|---|---|
퍼블릭 서브넷 구성 | 퍼블릭 서브넷, 인터넷 게이트웨이 | 서브넷의 트래픽이 인터넷 게이트웨이를 통해 인터넷과 직접 통신하도록 라우팅된다. 웹 서버와 같은 퍼블릭 리소스에 적합하다. |
프라이빗 서브넷 구성 | 프라이빗 서브넷, NAT 게이트웨이 | 서브넷에 인터넷 게이트웨이에 대한 라우트가 없다. 아웃바운드 인터넷 트래픽은 NAT 게이트웨이를 통해 이루어지며, 인바운드 인터넷 트래픽은 직접 허용되지 않는다. 데이터베이스 서버와 같은 백엔드 리소스에 적합하다. |
하이브리드 연결 | 프라이빗 서브넷, AWS Direct Connect 또는 사이트 투 사이트 VPN | 온프레미스 데이터 센터의 네트워크를 VPC의 프라이빗 서브넷에 안전하게 연결한다. AWS Direct Connect는 전용 네트워크 연결을, VPN 연결은 인터넷을 통한 암호화된 터널을 제공한다. |
VPC는 멀티 티어 아키텍처 구현의 기초가 된다. 웹 티어는 퍼블릭 서브넷에, 애플리케이션 티어와 데이터 티어는 프라이빗 서브넷에 배치하여 계층별로 네트워크 격리를 강화할 수 있다. 또한, VPC 피어링 연결(VPC Peering Connection)을 통해 동일한 리전 내의 두 VPC를 프라이빗 IP 주소를 사용하여 연결할 수 있다. 이를 통해 마이크로서비스 간 통신이나 데이터 공유를 안전하게 구성할 수 있다.
Amazon CloudFront는 AWS가 제공하는 글로벌 콘텐츠 전송 네트워크 서비스이다. 정적 및 동적 웹 콘텐츠, 비디오 스트리밍, API, 애플리케이션을 사용자에게 더 빠르고 안전하게 전송하도록 설계되었다. 전 세계에 분산된 엣지 로케이션 네트워크를 활용하여 지연 시간을 최소화하고 데이터 전송 속도를 높인다.
CloudFront는 오리진이라고 불리는 원본 서버에서 콘텐츠를 가져와 캐시한다. 오리진은 Amazon S3 버킷, Amazon EC2 인스턴스, Elastic Load Balancing 또는 사용자 자신의 온프레미스 서버 등이 될 수 있다. 사용자가 콘텐츠를 요청하면 DNS 라우팅을 통해 지리적으로 가장 가까운 엣지 로케이션으로 요청이 자동 라우팅된다. 해당 엣지 로케이션에 콘텐츠가 캐시되어 있으면 즉시 제공되며, 그렇지 않은 경우 오리진에서 콘텐츠를 가져와 캐시한 후 사용자에게 전달한다.
이 서비스는 보안 기능도 통합하고 있다. AWS Shield 표준이 자동으로 활성화되어 DDoS 공격으로부터 보호한다. 또한 AWS Web Application Firewall과 통합되어 일반적인 웹 취약점으로부터 애플리케이션을 보호할 수 있다. HTTPS를 통한 전송 암호화를 지원하며, 서명된 URL이나 서명된 쿠키를 사용하여 프리미엄 콘텐츠에 대한 접근을 제어할 수 있다.
주요 사용 사례로는 웹사이트 가속화, 주문형 및 라이브 비디오 스트리밍, 소프트웨어 및 게임 패치 배포, API 가속화 등이 있다. 사용량에 따라 요금이 부과되는 종량제 모델로 운영된다.
AWS Direct Connect는 고객의 온프레미스 데이터 센터나 코로케이션 환경과 AWS 클라우드 사이에 전용 네트워크 연결을 설정하는 서비스이다. 인터넷을 통한 일반 연결 대신, 물리적인 전용선을 활용하여 Amazon VPC 및 AWS의 다른 서비스에 접근할 수 있게 한다. 이 연결은 AWS Direct Connect 파트너가 제공하는 네트워크나 주요 AWS Direct Connect 로케이션에 직접 설치된 교차 커넥트를 통해 이루어진다.
이 서비스의 주요 이점은 네트워크 성능의 예측 가능성과 대역폭 비용 절감이다. 인터넷을 경유할 때 발생할 수 있는 지터나 대기 시간 변동성을 줄여주며, 특히 대량의 데이터를 전송하거나 실시간 애플리케이션을 운영할 때 유리하다. 또한, AWS Direct Connect를 사용하면 같은 AWS 리전 내의 모든 가용 영역에 걸쳐 프라이빗 연결을 구축할 수 있어, 하이브리드 클라우드 아키텍처의 핵심 구성 요소로 작동한다.
연결 구성은 크게 두 가지 방식으로 제공된다. 표준 연결은 1Gbps, 10Gbps와 같은 고정된 대역폭을 제공하며, 호스팅 연결은 50Mbps에서 100Gbps까지 더 유연한 대역폭 옵션을 AWS Direct Connect 파트너를 통해 제공받을 수 있다. 연결을 설정한 후, 가상 인터페이스를 생성하여 Amazon VPC에 대한 프라이빗 연결이나 AWS 퍼블릭 서비스(예: Amazon S3)에 대한 퍼블릭 연결을 구성한다.
연결 유형 | 대역폭 범위 | 특징 |
|---|---|---|
표준 연결 | 1Gbps, 10Gbps | 고객이 직접 AWS Direct Connect 로케이션에 장비를 설치하여 연결 |
호스팅 연결 | 50Mbps ~ 100Gbps | AWS Direct Connect 파트너가 제공하는 인프라를 통해 유연한 대역폭으로 연결 |
고가용성을 위해 서로 다른 물리적 장치에 종단되는 두 개 이상의 AWS Direct Connect 연결을 다른 가용 영역에 구성하는 것이 권장된다. 이 서비스는 AWS Site-to-Site VPN과 함께 사용되어 전용 연결에 장애가 발생했을 때 암호화된 인터넷 백업 경로를 제공하는 아키텍처를 구성할 수도 있다.
AWS IAM은 AWS 리소스에 대한 접근을 안전하게 제어하는 서비스이다. 사용자, 그룹, 역할을 생성하고 관리하며, 정책을 통해 세밀한 권한을 부여한다. IAM은 최소 권한 원칙을 적용하여 보안을 강화하는 데 핵심적이다.
Amazon GuardDuty는 지능형 위협 탐지 서비스로, AWS CloudTrail 이벤트 로그, VPC 흐름 로그, DNS 로그를 지속적으로 모니터링한다. 이를 통해 비정상적인 API 호출, 잠재적인 손상된 인스턴스, 악성 IP 주소와의 통신 등 위협을 식별하고 경고한다.
AWS KMS는 데이터 암호화에 사용되는 암호화 키를 생성하고 관리하는 서비스이다. 사용자는 고객 관리형 키(CMK)를 생성하거나 AWS 관리형 키를 사용할 수 있다. KMS는 Amazon S3, Amazon EBS, Amazon RDS 등 다양한 AWS 서비스와 통합되어 저장 데이터와 전송 중인 데이터를 암호화한다.
서비스 | 주요 기능 | 주요 활용 사례 |
|---|---|---|
사용자/역할 기반 접근 제어, 정책 관리 | API/콘솔 접근 권한 부여, 교차 계정 접근 설정 | |
지능형 위협 탐지, 이상 행위 분석 | 계정 침해 탐지, 악성 활동 모니터링 | |
암호화 키 관리, 통합 암호화 | 데이터 저장 암호화, 애플리케이션 계층 암호화 |
이 세 서비스는 함께 작동하여 다층적 방어 체계를 구성한다. IAM은 접근을 통제하고, GuardDuty는 위협을 탐지하며, KMS는 데이터 기밀성을 보장한다. 이는 AWS Well-Architected Framework의 보안 핵심 요소를 구현하는 기반이 된다.
AWS IAM(Identity and Access Management)은 AWS 계정 내의 사용자, 그룹, 역할에 대한 인증과 권한 관리를 중앙에서 제어하는 서비스이다. 리소스에 대한 접근을 안전하게 관리하기 위한 핵심 도구로, "누구에게 무엇을 허용할 것인가"를 정의하는 정책 기반의 접근 제어를 제공한다.
IAM의 주요 구성 요소는 사용자, 그룹, 역할, 정책이다. IAM 사용자는 AWS 서비스와 리소스에 상호작용하는 사람이나 애플리케이션을 나타내며, 장기적인 자격 증명(액세스 키)을 가질 수 있다. IAM 그룹은 동일한 권한을 공유하는 사용자들의 집합이다. IAM 역할은 특정 작업 수행을 위해 임시 보안 자격 증명을 부여받는 AWS 서비스나 사용자에게 할당되는 권한 집합이다. IAM 정책은 JSON 형식으로 작성되며, 특정 리소스에 대해 허용하거나 거부할 작업(API 호출)을 명시적으로 정의한다.
IAM은 최소 권한 원칙을 적용하는 데 필수적이다. 이는 사용자나 애플리케이션이 자신의 작업을 수행하는 데 필요한 최소한의 권한만 부여하도록 설계하는 보안 모범 사례이다. 또한, 다중 인증(MFA)을 강제하여 계정 보안을 강화하고, 조직 내에서 권한을 위임하기 위한 교차 계정 액세스를 구성할 수 있다. IAM은 별도의 비용 없이 AWS 계정과 함께 무료로 제공된다.
Amazon GuardDuty는 AWS 환경의 보안을 지능적으로 위협 탐지 및 지속적인 모니터링을 제공하는 관리형 서비스이다. 이 서비스는 AWS CloudTrail 이벤트 로그, Amazon VPC 흐름 로그, DNS 로그를 지속적으로 분석하여 잠재적인 위협을 식별한다.
GuardDuty는 머신 러닝, 이상 탐지, 악성 IP 및 도메인 목록과 같은 통합된 위협 인텔리전스를 활용한다. 이를 통해 일반적으로 눈에 띄지 않을 수 있는 활동을 탐지한다. 주요 탐지 범주에는 비정상적인 API 호출이나 권한 에스컬레이션과 같은 자격 증명 손상 징후, 인스턴스에서의 암호화폐 채굴 활동과 같은 악성 행위, 그리고 외부 공격자가 수행하는 포트 스캔이나 무차별 대입 공격과 같은 인스턴스 손상 징후가 포함된다.
서비스는 탐지된 위협의 심각도 수준(낮음, 중간, 높음)을 평가하며, 결과는 Amazon CloudWatch Events를 통해 통합되거나 AWS Security Hub 및 Amazon EventBridge로 전송되어 자동화된 대응 워크플로를 구동할 수 있다. 사용자는 별도의 보안 인프라를 관리하거나 유지할 필요 없이 몇 분 내에 서비스를 활성화할 수 있다.
AWS KMS(AWS Key Management Service)는 클라우드 컴퓨팅 환경에서 암호화 키를 생성, 관리, 사용하는 서비스이다. 사용자는 AWS 서비스 및 자체 애플리케이션에서 데이터를 암호화하는 데 사용할 키를 중앙에서 제어할 수 있다. KMS는 하드웨어 보안 모듈(HSM)을 기반으로 구축되어 키의 안전한 보관과 암호화 작업을 보장한다.
KMS의 주요 기능은 대칭 및 비대칭 암호화 키의 수명 주기 관리이다. 사용자는 고객 마스터 키(CMK)를 생성, 회전, 비활성화, 삭제할 수 있으며, 각 키의 사용 정책을 세부적으로 정의할 수 있다. 이 키들은 Amazon S3, Amazon EBS, Amazon RDS와 같은 다른 AWS 서비스의 서버 측 암호화에 직접 사용될 수 있다. 또한 AWS CloudTrail을 통해 모든 키 사용 이벤트를 모니터링하여 규정 준수 요구사항을 충족시킬 수 있다.
KMS는 키 관리의 부담을 줄이기 위해 완전관리형 서비스를 제공한다. 사용자는 키 저장 인프라를 프로비저닝하거나 유지 관리할 필요가 없다. 서비스는 자동 키 회전[2]과 같은 기능을 제공하여 보안 모범 사례를 쉽게 따를 수 있게 한다. 또한 AWS IAM 정책과 통합되어 '누가 어떤 키를 어떤 조건에서 사용할 수 있는지'에 대한 세분화된 접근 제어를 구현할 수 있다.
Amazon CloudWatch는 AWS 리소스와 애플리케이션을 실시간으로 모니터링하는 서비스이다. 지표 수집 및 추적, 로그 파일 수집, 알람 설정, 이벤트에 대한 자동화된 응답과 같은 기능을 제공한다. 사용자는 EC2 인스턴스의 CPU 사용률, Amazon S3 버킷의 요청 수, 사용자 정의 애플리케이션 지표 등을 모니터링할 수 있다. CloudWatch 알람을 통해 임계값을 초과하는 상황이 발생하면 Amazon SNS를 통해 알림을 보내거나 AWS Lambda 함수를 실행하는 등의 조치를 자동으로 트리거할 수 있다.
AWS CloudTrail은 AWS 계정의 거버넌스, 규정 준수, 운영 감사, 위험 감사를 지원하는 서비스이다. AWS 관리 콘솔, AWS SDK, 명령줄 도구 및 기타 AWS 서비스를 통해 수행된 사용자 활동 및 API 호출을 기록한다. 기록된 이벤트에는 API 호출자의 신원, 호출 시간, 요청 파라미터, 서비스로부터 반환된 응답 등이 포함된다. 이러한 로그는 Amazon S3 버킷에 전달되어 장기 보관 및 분석이 가능하며, Amazon CloudWatch Logs와 통합되어 실시간 모니터링에도 활용될 수 있다.
AWS Config는 AWS 리소스의 구성과 관계를 지속적으로 감사, 평가 및 기록하는 서비스이다. 리소스 구성의 변경 사항을 자동으로 기록하고, 사용자가 정의한 규칙을 기준으로 구성이 적절한지 지속적으로 평가한다. 이를 통해 보안 정책 및 규정 준수 요구사항을 충족하는지 확인할 수 있다. AWS Config는 리소스 간의 관계를 시각적으로 보여주고, 구성 변경 내역을 타임라인으로 제공하여 변경의 영향을 분석하는 데 도움을 준다.
서비스 | 주요 목적 | 핵심 기능 |
|---|---|---|
성능 모니터링 및 운영 상태 관리 | 지표 수집, 로그 관리, 알람 설정, 대시보드 | |
사용자 활동 및 API 호출 기록을 통한 감사 | 이벤트 기록, 로그 파일 무결성 검증, Amazon S3 통합 | |
리소스 구성 관리 및 규정 준수 평가 | 구성 기록, 구성 규칙 평가, 리소스 관계도, 변경 관리 |
Amazon CloudWatch는 AWS 리소스와 애플리케이션을 실시간으로 모니터링하는 관리형 서비스이다. 이 서비스는 지표 수집 및 추적, 로그 파일 수집 및 모니터링, 알람 설정 등의 기능을 제공한다. 사용자는 Amazon EC2 인스턴스, Amazon RDS 데이터베이스, AWS Lambda 함수 등 거의 모든 AWS 서비스의 성능 데이터를 중앙 집중식으로 확인할 수 있다.
주요 구성 요소는 다음과 같다.
* 지표: CPU 사용률, 네트워크 입출력, 디스크 활동 등 리소스의 성능 데이터를 의미하는 시계열 데이터 포인트이다. CloudWatch는 AWS 서비스의 기본 지표를 자동으로 수집하며, 사용자 정의 지표도 게시할 수 있다.
* 로그: 애플리케이션 로그, 시스템 로그, AWS 서비스 로그를 수집, 저장, 분석한다. Amazon CloudWatch Logs를 통해 로그 데이터를 실시간으로 모니터링하고 특정 패턴을 검색할 수 있다.
* 이벤트: AWS 리소스의 상태 변화를 실시간 스트림으로 표현한다. 예를 들어, Amazon EC2 인스턴스가 시작되거나 중지될 때 이벤트가 생성된다. 이 이벤트는 규칙을 통해 AWS Lambda 함수 실행이나 Amazon SNS 알림 전송과 같은 작업을 자동으로 트리거하는 데 사용된다.
* 알람: 하나 이상의 지표를 기반으로 지정된 임계값을 초과했을 때 사용자에게 알림을 보내거나 자동화된 작업을 수행한다. 알람은 Amazon SNS, AWS Auto Scaling, AWS Systems Manager 등과 연동된다.
CloudWatch는 운영 상태를 가시화하고 시스템 성능 저하나 장애를 조기에 감지하여 대응할 수 있도록 돕는다. 또한, 수집된 데이터를 바탕으로 리소스 사용량을 분석하고 비용을 최적화하는 데 활용할 수 있다. 이 서비스는 AWS CloudTrail과 같은 다른 관리 서비스와 통합되어 포괄적인 모니터링 및 감사 체계를 구성하는 핵심 요소가 된다.
AWS CloudTrail은 AWS 계정 내에서 수행되는 API 호출 및 계정 활동을 기록하고, 지속적으로 모니터링하며, 관련 로그 파일을 저장하는 서비스이다. 이 서비스는 사용자 활동, AWS Management Console의 작업, AWS SDK 및 AWS CLI를 통한 API 호출, 그리고 대부분의 다른 AWS 서비스의 이벤트를 추적한다. 기록된 정보에는 API 호출자의 IAM 자격 증명, API 호출 시간, 요청 파라미터, 반환된 응답 요소 등이 포함되어, 계정의 거버넌스, 규정 준수, 운영 감사, 위험 감지를 위한 핵심적인 가시성을 제공한다.
CloudTrail은 기본적으로 모든 리전에서 활성화되는 이벤트 기록 기능을 제공한다. 이 기본 이벤트 기록은 최근 90일 동안의 관리 이벤트(계정의 리소스를 생성, 수정, 삭제하는 API 호출)를 무료로 캡처하여 AWS Management Console에서 조회할 수 있다. 더 포괄적인 감사와 장기 보존을 위해서는 하나 이상의 트레일을 생성해야 한다. 트레일을 생성하면 지정된 Amazon S3 버킷에 로그 파일을 전송하고, 선택적으로 Amazon CloudWatch Logs로 전송하거나 AWS CloudTrail Lake와 같은 분석 서비스를 활용할 수 있다.
특징 | 설명 |
|---|---|
이벤트 기록 | 계정 활동을 이벤트로 기록. 관리 이벤트, 데이터 이벤트(예: Amazon S3 객체 수준 활동), AWS Lambda 함수 실행 이벤트 등을 캡처할 수 있다. |
트레일 | 로그 파일을 지정된 대상(주로 Amazon S3)으로 전송하는 구성. 모든 리전 또는 단일 리전의 활동을 하나의 트레일로 집계할 수 있다. |
로그 파일 무결성 | 전송된 로그 파일은 무결성 검증이 가능하여 생성 후 수정되거나 삭제되지 않았음을 확인할 수 있다. |
통합 및 분석 | 로그는 Amazon Athena로 쿼리하거나, Amazon CloudWatch Logs 및 Amazon EventBridge와 통합하여 실시간 알림 및 자동 대응을 구성할 수 있다. |
CloudTrail 로그는 보안 사고 조사, 규정 준수 증명, 리소스 변경 내역 추적에 필수적이다. 예를 들어, 예상치 못한 Amazon EC2 인스턴스가 종료되거나, Amazon S3 버킷 정책이 변경된 경우, CloudTrail 로그를 검토하여 어떤 주체가, 언제, 어디서 해당 작업을 수행했는지 정확히 파악할 수 있다. 이는 AWS Well-Architected Framework의 보안 및 운영 우수성 원칙을 구현하는 데 기반이 되는 서비스이다.
AWS Config는 AWS 계정 내 AWS 리소스의 구성과 관계를 평가, 감사 및 검토할 수 있게 해주는 완전 관리형 서비스이다. 이 서비스는 리소스 구성의 기록과 변경 사항을 지속적으로 기록하고, 사용자가 정의한 원하는 구성 규칙에 대해 현재 설정을 자동으로 평가한다. 이를 통해 보안 및 거버넌스 요구사항을 준수하는지 지속적으로 모니터링하고, 규정 준수 상태를 확인할 수 있다.
서비스의 핵심 기능은 구성 항목의 기록을 유지하는 것이다. 구성 항목은 Amazon S3 버킷, Amazon EC2 인스턴스, 보안 그룹 등 지원되는 리소스의 속성 스냅샷이다. AWS Config는 리소스가 생성, 수정 또는 삭제될 때마다 이 구성을 기록하여 구성 변경 내역을 시간 순서대로 볼 수 있는 타임라인을 제공한다. 이를 통해 특정 시점의 리소스 구성을 확인하거나, 변경으로 인한 문제의 원인을 추적하는 것이 가능해진다.
사용자는 AWS 관리형 규칙을 사용하거나 AWS Lambda 함수를 활용해 사용자 지정 규칙을 작성하여 AWS Config 규칙을 정의할 수 있다. 이 규칙들은 리소스 구성이 특정 기준을 충족하는지 지속적으로 평가한다. 예를 들어, Amazon EBS 볼륨이 암호화되었는지, EC2 인스턴스가 승인된 Amazon Machine Image로 실행되는지 등을 자동으로 점검할 수 있다. 평가 결과는 '준수' 또는 '비준수' 상태로 분류되어 Amazon CloudWatch 지표로 전송되거나, AWS Security Hub와 같은 다른 서비스에 집계될 수 있다.
주요 사용 사례로는 보안 분석, 변경 관리, 운영 문제 해결, 규정 준수 감사 등이 있다. 예를 들어, 의도치 않게 인터넷에 공개된 S3 버킷을 규칙을 통해 탐지하거나, 특정 태그 정책을 준수하지 않는 리소스를 식별할 수 있다. AWS Config는 AWS CloudTrail과 통합되어 구성 변경을 야기한 API 호출을 연결지어 보여주므로, 변경의 전체적인 맥락을 이해하는 데 도움을 준다.
AWS는 클라우드 환경에서 견고하고 효율적이며 안전한 시스템을 구축하기 위한 지침과 모범 사례를 제공한다. 이는 AWS Well-Architected Framework라는 체계적인 프레임워크로 정리되어 있으며, 운영 우수성, 보안, 안정성, 성능 효율성, 비용 최적화, 지속 가능성이라는 여섯 가지 핵심 기둥을 기반으로 한다. 각 기둥은 설계 결정 시 고려해야 할 질문과 모범 사례를 제시하여 아키텍처가 비즈니스 요구 사항을 충족하면서도 클라우드의 장점을 최대한 활용할 수 있도록 돕는다.
주요 아키텍처 패턴으로는 마이크로서비스 아키텍처와 서버리스 아키텍처가 널리 채택된다. 마이크로서비스 아키텍처는 단일한 애플리케이션을 작고 독립적으로 배포 가능한 서비스의 집합으로 구성하는 방식이다. 각 서비스는 자체 프로세스로 실행되며 Amazon ECS나 Amazon EKS와 같은 컨테이너 오케스트레이션 서비스를 통해 관리된다. 이 패턴은 팀의 독립성, 기술 스택의 다양성, 확장성 및 회복 탄력성을 높이는 장점이 있다.
서버리스 아키텍처는 개발자가 서버 인프라를 프로비저닝하거나 관리할 필요 없이 코드를 실행할 수 있게 해주는 패턴이다. 핵심 서비스인 AWS Lambda는 이벤트에 반응하여 코드를 실행하며, 사용한 컴퓨팅 시간에 대해서만 비용을 지불한다. 이 패턴은 인프라 관리 부담을 크게 줄이고, 자동 확장성을 제공하며, 이벤트 기반 아키텍처를 구현하는 데 이상적이다. Amazon API Gateway, Amazon S3, Amazon DynamoDB와 같은 다른 관리형 서비스와 결합하여 완전한 서버리스 애플리케이션을 구성할 수 있다.
이러한 설계 원칙과 패턴을 적용할 때는 AWS CloudFormation과 같은 IaC 도구를 통해 인프라를 코드로 정의하고, Amazon CloudWatch를 통한 지속적인 모니터링, AWS IAM을 활용한 최소 권한 보안 원칙 준수가 필수적으로 동반되어야 한다. 최종적으로는 비용, 복잡성, 팀의 숙련도 등 비즈니스 컨텍스트에 맞춰 적절한 아키텍처를 선택하고, Well-Architected Framework의 정기적인 검토를 통해 아키텍처를 지속적으로 개선해 나가는 것이 중요하다.
AWS Well-Architected Framework는 클라우드에서 안정적이고 안전하며 효율적이며 비용 효과적인 시스템을 구축하기 위한 일련의 설계 원칙과 모범 사례를 제공하는 지침이다. 이 프레임워크는 AWS가 수년간 수많은 고객 사례를 통해 축적한 경험을 바탕으로 개발되었다. 시스템을 평가하고 개선하기 위한 일관된 접근 방식을 제공하여, 아키텍처 결정이 비즈니스 목표에 부합하도록 돕는 것이 핵심 목표이다.
이 프레임워크는 크게 여섯 가지 핵심 기둥으로 구성된다. 각 기둥은 아키텍처 검토 시 고려해야 할 핵심 질문들을 포함한다.
기둥 | 주요 초점 |
|---|---|
운영 우수성 | 시스템을 모니터링하고 운영 프로세스를 지속적으로 개선하는 능력 |
보안 | 정보와 자산을 보호하는 능력 |
안정성 | 장애를 복구하고 컴퓨팅 수요를 충족시키는 능력 |
성능 효율성 | 컴퓨팅 리소스를 효율적으로 사용하고 수요 변화에 맞게 유지하는 능력 |
비용 최적화 | 최저 가격으로 시스템을 운영하는 능력 |
지속 가능성 | 환경적 영향을 최소화하는 효율적인 리소스 사용 |
각 기둥은 설계 원칙, 정의, 모범 사례, 그리고 위험을 식별하는 데 도움이 되는 핵심 질문들로 세분화된다. 예를 들어, 보안 기둥은 데이터 보호, 자격 증명 및 액세스 관리, 위협 탐지 등의 모범 사례를 다룬다. 비용 최적화 기둥은 소비 모델 채택, 불필요한 비용 제거, 효율성 극대화 등을 강조한다.
이 프레임워크를 적용하는 일반적인 방법은 AWS Well-Architected Tool을 사용하는 것이다. 이 무료 도구는 사용자가 워크로드를 선택하거나 정의하고, 프레임워크의 핵심 질문에 답변하며, 위험을 식별하고 개선 계획을 수립할 수 있도록 안내한다. 정기적인 검토를 통해 아키텍처는 기술적 부채를 방지하고 변화하는 요구 사항과 새로운 AWS 서비스에 맞춰 진화할 수 있다.
마이크로서비스 아키텍처는 하나의 애플리케이션을 여러 개의 작고 독립적인 서비스로 구성하는 소프트웨어 개발 기법이다. 각 서비스는 특정 비즈니스 기능을 담당하며, 잘 정의된 API를 통해 서로 통신한다. 이는 전통적인 모놀리식 아키텍처와 대비되는 개념으로, 각 서비스는 독립적으로 개발, 배포, 확장, 유지보수될 수 있다.
이 아키텍처의 주요 구성 요소와 특징은 다음과 같다.
구성 요소 | 설명 |
|---|---|
독립적인 서비스 | 각 서비스는 단일 책임 원칙에 따라 하나의 기능(예: 사용자 관리, 결제 처리, 주문 관리)을 수행한다. |
느슨한 결합 | 서비스 간 의존성을 최소화하여 하나의 서비스 변경이 다른 서비스에 미치는 영향을 줄인다. |
독립적 배포 | 각 서비스는 별도의 프로세스로 실행되며, 전체 애플리케이션 재배포 없이 개별 서비스만 업데이트할 수 있다. |
AWS는 마이크로서비스 구축과 운영을 위한 다양한 관리형 서비스를 제공한다. Amazon ECS나 Amazon EKS는 컨테이너화된 서비스를 오케스트레이션하는 데 사용되며, AWS Lambda는 서버리스 함수로 개별 마이크로서비스를 구현할 수 있는 옵션을 제공한다. 서비스 간 통신에는 Amazon API Gateway를 통한 RESTful API나 Amazon SQS, Amazon Kinesis를 이용한 비동기 메시징이 흔히 활용된다. 데이터 저장소도 각 서비스에 적합한 Amazon RDS, Amazon DynamoDB 등을 선택하여 분리하는 것이 일반적이다.
이 접근 방식은 개발 팀의 자율성 향상, 기술 스택의 유연성, 개별 서비스의 확장성 등 장점이 있지만, 분산 시스템의 복잡성 증가, 서비스 간 통신 관리, 모니터링 및 디버깅의 어려움 등의 도전 과제도 동반한다. AWS Cloud Map으로 서비스 디스커버리를, AWS X-Ray로 분산 추적을 구현하여 이러한 복잡성을 관리할 수 있다.
서버리스 아키텍처는 서버의 프로비저닝, 유지보수, 용량 관리와 같은 인프라 관리 책임을 클라우드 제공자에게 위임하는 소프트웨어 설계 패턴이다. 이 아키텍처의 핵심은 AWS Lambda와 같은 이벤트 기반 컴퓨팅 서비스를 활용하여, 개발자가 애플리케이션 코드 실행에만 집중할 수 있도록 하는 것이다. 인프라는 완전히 추상화되며, 사용자는 코드가 실제로 실행된 시간과 리소스에 대해서만 비용을 지불한다. 이는 전통적인 서버 중심 모델과 대비되며, 확장성과 운영 효율성을 크게 향상시킨다.
주요 구성 요소로는 AWS Lambda, Amazon API Gateway, Amazon EventBridge, AWS Step Functions 등이 있다. AWS Lambda는 서버리스 컴퓨팅의 핵심으로, 다양한 이벤트(예: HTTP 요청, 파일 업로드, 데이터베이스 변경)에 반응하여 코드를 실행한다. Amazon API Gateway는 서버리스 백엔드에 대한 RESTful API 엔드포인트를 생성하고 관리하는 데 사용된다. 이러한 서비스들은 함께 작동하여 완전한 서버리스 애플리케이션을 구성한다.
서버리스 아키텍처의 장점과 고려사항은 다음과 같이 정리할 수 있다.
장점 | 고려사항 및 과제 |
|---|---|
운영 오버헤드 감소[3] | |
비용 효율성[5] | 디버깅 및 모니터링의 복잡성 |
자동화된 고가용성 및 내결함성 | 벤더 종속성 증가 |
탄력적이고 즉각적인 확장성 | 장기 실행 작업에 대한 제한 |
이 아키텍처는 마이크로서비스, 데이터 처리 파이프라인, 실시간 파일 처리, IoT 백엔드 등 다양한 워크로드에 적합하다. AWS Well-Architected Framework는 서버리스 애플리케이션을 설계할 때 성능, 보안, 비용 최적화 등의 측면에서 고려해야 할 모범 사례를 제공한다.
배포 및 자동화는 클라우드 컴퓨팅 환경에서 애플리케이션의 수명 주기를 효율적으로 관리하는 핵심 요소이다. AWS는 인프라스트럭처의 코드화, 지속적 통합 및 배포, 애플리케이션 관리 자동화를 위한 다양한 서비스를 제공한다. 이를 통해 개발팀은 반복적인 수동 작업을 줄이고, 일관되고 안정적인 배포 프로세스를 구축하며, 빠른 출시 주기를 달성할 수 있다.
주요 서비스로는 AWS CloudFormation, AWS CodePipeline, AWS Elastic Beanstalk이 있다. AWS CloudFormation은 JSON이나 YAML 형식의 템플릿을 사용하여 AWS 리소스의 모음을 선언적으로 프로비저닝하고 관리한다. 이 템플릿은 버전 관리가 가능하며, 스택 단위로 리소스를 생성, 업데이트, 삭제함으로써 인프라스트럭처를 코드로 관리하는 핵심 도구 역할을 한다. AWS CodePipeline은 소프트웨어 릴리스 프로세스를 모델링, 시각화 및 자동화하는 완전관리형 지속적 전달 서비스이다. 소스 코드 변경부터 빌드, 테스트, 프로덕션 배포에 이르는 여러 단계를 연결하여 파이프라인을 구성한다. AWS Elastic Beanstalk은 Java, .NET, PHP, Node.js, Python, Ruby, Go 등 다양한 언어와 웹 서버를 지원하는 플랫폼 서비스이다. 개발자는 애플리케이션 코드와 필요한 설정만 업로드하면, 서비스가 자동으로 용량 프로비저닝, 로드 밸런싱, 자동 확장, 애플리케이션 상태 모니터링을 처리한다.
이러한 서비스들은 단독으로도 사용되지만, 종종 조합되어 더 강력한 자동화 체계를 구축한다. 예를 들어, AWS CloudFormation으로 기본 네트워크와 데이터베이스 인프라를 구축한 후, AWS CodePipeline이 애플리케이션 코드 변경을 감지하여 빌드하고, 최종적으로 AWS Elastic Beanstalk 환경이나 Amazon EC2 인스턴스에 자동으로 배포하는 구조가 일반적이다. 이러한 접근 방식은 배포의 일관성과 신뢰성을 높이고, 운영 부담을 줄이며, 개발자들이 비즈니스 로직 개발에 더 집중할 수 있도록 한다.
AWS CloudFormation은 AWS 리소스를 모델링하고 프로비저닝하기 위한 서비스이다. 인프라를 코드로 관리하는 IaC 방식을 구현하는 핵심 도구로, JSON 또는 YAML 형식의 템플릿 파일을 사용하여 AWS 환경의 모든 리소스를 선언적으로 정의한다. 사용자는 템플릿을 제출하기만 하면 CloudFormation이 템플릿에 명시된 순서와 의존 관계를 자동으로 처리하여 모든 리소스를 생성, 구성 및 관리한다.
CloudFormation 템플릿은 여러 주요 섹션으로 구성된다. Resources 섹션은 생성할 Amazon EC2 인스턴스, Amazon S3 버킷, Amazon RDS 데이터베이스와 같은 AWS 리소스를 정의하는 필수 항목이다. Parameters 섹션은 스택 생성 시 외부에서 입력할 값을 정의하여 템플릿의 재사용성을 높인다. Outputs 섹션은 생성된 스택에서 내보낼 정보를 선언한다. Mappings와 Conditions를 활용하면 환경별로 다른 값을 매핑하거나 특정 조건에 따라 리소스를 생성할 수 있다.
CloudFormation은 변경 사항을 안전하게 관리하는 메커니즘을 제공한다. 사용자는 기존 스택에 수정된 템플릿을 적용하여 인프라를 업데이트할 수 있으며, CloudFormation은 변경 세트를 생성하여 실제 실행 전에 변경 내용의 영향을 미리 확인할 수 있게 한다. 이를 통해 예기치 않은 리소스 교체나 삭제를 방지할 수 있다. 또한, 모든 리소스는 논리적 단위인 '스택'으로 그룹화되어 관리되므로, 전체 애플리케이션 인프라를 한 번에 쉽게 배포, 업데이트 또는 삭제할 수 있다.
CloudFormation을 사용하면 인프라 구성의 버전 관리, 재현성, 일관성을 보장할 수 있다. 템플릿 파일을 Git과 같은 버전 관리 시스템에 저장함으로써 인프라 변경 이력을 추적하고, 동일한 템플릿을 개발, 스테이징, 프로덕션 등 다양한 환경에 반복적으로 배포하여 일관된 아키텍처를 유지할 수 있다. 이는 DevOps 실무와 지속적 배포 파이프라인 구축에 필수적인 요소이다.
AWS CodePipeline은 AWS에서 제공하는 완전 관리형 지속적 통합 및 지속적 배포 서비스이다. 이 서비스는 소프트웨어 릴리스 파이프라인의 시각화, 자동화 및 모델링을 단순화하도록 설계되었다. 사용자는 코드 변경 사항이 커밋될 때부터 프로덕션 환경에 배포될 때까지의 전체 릴리스 프로세스를 정의하고 자동화할 수 있다. CodePipeline은 다른 AWS 서비스 및 타사 도구와의 통합을 통해 빌드, 테스트, 배포 단계를 조율한다.
CodePipeline의 핵심 구성 요소는 파이프라인, 스테이지, 액션이다. 파이프라인은 릴리스 프로세스를 정의하는 워크플로우이다. 각 파이프라인은 순차적으로 실행되는 여러 스테이지로 구성되며, 각 스테이지는 빌드, 테스트, 배포와 같은 특정 단계를 나타낸다. 각 스테이지 내에는 AWS CodeBuild, AWS CodeDeploy, AWS Lambda, Amazon S3 등 특정 작업을 수행하는 하나 이상의 액션이 포함된다. 파이프라인의 상태는 각 스테이지와 액션의 진행 상황을 실시간으로 보여주는 시각적 대시보드를 통해 모니터링할 수 있다.
서비스는 GitHub, Bitbucket, AWS CodeCommit과 같은 소스 코드 저장소와의 통합을 기본적으로 지원한다. 코드 저장소에 변경 사항이 푸시되면 파이프라인이 자동으로 트리거되어 사전 정의된 워크플로우를 시작한다. 이를 통해 개발 팀은 빠르고 안정적인 애플리케이션 업데이트를 지속적으로 제공할 수 있다. CodePipeline은 사용한 리소스에 대해서만 비용을 지불하는 종량제 모델로 운영된다[6].
구성 요소 | 설명 | 예시 서비스/도구 |
|---|---|---|
소스 (Source) | 코드 변경을 감지하고 아티팩트를 출력하는 단계 | |
빌드 (Build) | 소스 코드를 컴파일하고 테스트하며 배포 가능한 아티팩트를 생성하는 단계 | |
테스트 (Test) | 빌드된 아티팩트의 품질과 기능을 검증하는 단계 | 자체 테스트 스크립트, AWS Device Farm |
배포 (Deploy) | 검증된 아티팩트를 목표 환경(개발, 스테이징, 프로덕션)에 배포하는 단계 | AWS CodeDeploy, Amazon ECS, AWS Elastic Beanstalk, AWS CloudFormation |
승인 (Approval) | 다음 스테이지로 진행하기 전에 수동 검토 및 승인이 필요한 단계 | 수동 승인 액션 |
AWS Elastic Beanstalk은 개발자가 AWS 클라우드에서 웹 애플리케이션과 서비스를 쉽게 배포하고 확장할 수 있도록 하는 완전관리형 서비스이다. 개발자는 코드를 업로드하기만 하면, Elastic Beanstalk이 용량 프로비저닝, 로드 밸런싱, 자동 조정, 애플리케이션 상태 모니터링을 포함한 배포 프로세스를 자동으로 처리한다. 이 서비스는 Java, .NET, PHP, Node.js, Python, Ruby, Go, Docker 등 다양한 익숙한 언어와 플랫폼을 지원한다.
서비스는 애플리케이션을 실행하는 데 필요한 AWS 리소스 스택을 자동으로 생성하고 관리한다. 이는 Amazon EC2 인스턴스, Amazon S3, Amazon RDS, 로드 밸런서, Auto Scaling 그룹 등을 포함할 수 있다. 사용자는 AWS Management Console, AWS CLI, 또는 AWS SDK를 통해 애플리케이션을 업로드하고, 환경 구성을 관리하며, 배포된 애플리케이션의 상태를 모니터링한다. 인프라 관리의 복잡성을 대신 처리하면서도, 필요한 경우 하부 AWS 리소스에 대한 제어권과 접근 권한을 유지할 수 있다.
주요 기능과 이점은 다음과 같다.
기능 | 설명 |
|---|---|
플랫폼 지원 | 다양한 프로그래밍 언어, 웹 서버, 애플리케이션 서버, Docker 컨테이너를 위한 플랫폼을 제공한다. |
자동 배포 | 코드 업로드 시 자동으로 배포, 로드 밸런싱, Auto Scaling을 구성한다. |
인프라 제어 | 완전관리형 서비스이지만, 필요시 EC2 인스턴스나 다른 리소스에 직접 접근하여 세부 제어가 가능하다. |
통합 모니터링 | Amazon CloudWatch와 통합되어 애플리케이션 성능, 로그, 이벤트를 모니터링할 수 있다. |
환경 관리 | 개발, 테스트, 프로덕션 등 여러 환경을 쉽게 생성하고 관리할 수 있다. |
비용 |
Elastic Beanstalk은 PaaS(Platform as a Service) 모델에 가까우며, 빠른 배포와 쉬운 관리에 초점을 맞춘다. 이는 인프라 구성에 대한 세밀한 제어가 필요한 복잡한 마이크로서비스 아키텍처보다는, 단일 애플리케이션 또는 웹 서비스의 신속한 프로토타이핑과 운영에 특히 적합하다. 또한, AWS CodePipeline, AWS CodeBuild와 같은 CI/CD 도구와 통합하여 지속적인 배포 파이프라인을 구축하는 데 활용될 수 있다.