사이드 프로젝트를 위한 AWS 구축 해보기
사이드 프로젝트를 위한 AWS 구축 해보기
들어가며
이 포스트는 나카가키 겐지의「AWS로 시작하는 인프라 구축의 정석」을 기반으로 작성하였습니다
- 책: AWS로 시작하는 인프라 구축의 정석
- 저자: 나카가키 겐지
- 출판사: 제이펍
- 챕터: Chapter 1 AWS 시작하기
1.1 AWS 개요
- 인프라스트럭처(infrastructure)
- 애플리케이션/서비스를 구축하고 운영하는 환경
- 애플리케이션 사용자, 개발자/개발업체, AWS 서비스 그룹 간의 관계를 보여주는 인프라스트럭처 다이어그램
flowchart TB %% 사용자 그룹 subgraph Users["애플리케이션 사용자"] Browser["브라우저"] MobileApp["모바일 앱"] end %% 개발자/개발업체 그룹 subgraph Developers["애플리케이션 개발자/개발업체"] DevTeam["개발팀"] CI_CD["CI/CD 파이프라인"] CodeRepo["코드 저장소\n(Git/GitHub)"] end %% AWS 서비스 그룹 subgraph AWS["AWS 서비스 그룹"] %% 네트워크 계층 subgraph Network["네트워크 계층"] Route53["Route 53\n(DNS)"] CloudFront["CloudFront\n(CDN)"] ELB["Elastic Load Balancer"] WAF["AWS WAF"] end %% 컴퓨팅 계층 subgraph Compute["컴퓨팅 계층"] EC2["EC2 인스턴스"] ECS["ECS/Fargate\n(컨테이너)"] Lambda["Lambda\n(서버리스)"] end %% 데이터 계층 subgraph Data["데이터 계층"] RDS["RDS\n(관계형 DB)"] DynamoDB["DynamoDB\n(NoSQL)"] S3["S3\n(객체 스토리지)"] ElastiCache["ElastiCache\n(캐싱)"] end %% 모니터링 및 관리 subgraph Management["모니터링 및 관리"] CloudWatch["CloudWatch"] CloudTrail["CloudTrail"] SystemsManager["Systems Manager"] end end %% 연결 관계 설정 %% 사용자 -> AWS Browser --> Route53 MobileApp --> Route53 Route53 --> CloudFront Route53 --> ELB CloudFront --> WAF WAF --> ELB ELB --> EC2 ELB --> ECS ELB --> Lambda %% 컴퓨팅 -> 데이터 EC2 --> RDS EC2 --> DynamoDB EC2 --> S3 EC2 --> ElastiCache ECS --> RDS ECS --> DynamoDB ECS --> S3 ECS --> ElastiCache Lambda --> RDS Lambda --> DynamoDB Lambda --> S3 %% 개발자 -> AWS DevTeam --> CodeRepo CodeRepo --> CI_CD CI_CD --> EC2 CI_CD --> ECS CI_CD --> Lambda CI_CD --> S3 DevTeam --> SystemsManager DevTeam --> CloudWatch %% 스타일 정의 classDef users fill:#FFD580,stroke:#FF8C00,stroke-width:2px; classDef devs fill:#90CAF9,stroke:#1976D2,stroke-width:2px; classDef network fill:#C8E6C9,stroke:#4CAF50,stroke-width:2px; classDef compute fill:#FFECB3,stroke:#FFA000,stroke-width:2px; classDef data fill:#E1BEE7,stroke:#8E24AA,stroke-width:2px; classDef mgmt fill:#BBDEFB,stroke:#2196F3,stroke-width:2px; %% 스타일 적용 class Browser,MobileApp users; class DevTeam,CI_CD,CodeRepo devs; class Route53,CloudFront,ELB,WAF network; class EC2,ECS,Lambda compute; class RDS,DynamoDB,S3,ElastiCache data; class CloudWatch,CloudTrail,SystemsManager mgmt;
다이어그램 설명
이 다이어그램은 다음과 같은 주요 요소와 흐름을 나타냅니다:
1. 애플리케이션 사용자
- 브라우저: 웹 애플리케이션에 접근하는 일반 사용자
- 모바일 앱: 모바일 기기를 통해 애플리케이션에 접근하는 사용자
2. 애플리케이션 개발자/개발업체
- 개발팀: 애플리케이션을 설계, 개발하는 팀
- CI/CD 파이프라인: 지속적 통합/배포 시스템
- 코드 저장소: Git이나 GitHub 같은 버전 관리 시스템
3. AWS 서비스 그룹
- 네트워크 계층: Route 53, CloudFront, Load Balancer, WAF 등
- 컴퓨팅 계층: EC2, ECS/Fargate, Lambda 등
- 데이터 계층: RDS, DynamoDB, S3, ElastiCache 등
- 모니터링 및 관리: CloudWatch, CloudTrail, Systems Manager 등
1.2 클라우드
1.2.1 컴퓨터 리소스로서의 클라우드
소유
- 모든 리소스를 기업 안에서 관리하는 방식
- 온프레미스라고 부르기도 한다
임대
- 임대란 컴퓨터 리소스를 빌려주는 기업과 계약을 맺고 필요한 만큼 컴퓨터 리소스를 빌리는 형태
클라우드
- 클라우드를 이용하면 컴퓨터 리소스를 시간 단위 또는 분 단위로 임대 가능
- 대부분의 경우 브라우저 기반의 관리 화면을 제공하므로, 관리 하면에서의 조작만으로 직접 필요한 컴퓨터 리소스를 준비 가능함
1.2.2 클라우드의 장점
- 고정 비용 -> 변동 비용
- 짧은 기간에 성과를 극대화해야 하는 기업의 경우 적절
- 규모의 경제 -기기를 대량 구매 가능하므로 개별 이용자의 비용 감소
- 성장을 고려한 용량 예측 불필요
- 클라우드는 기기를 간단히 늘리고 줄일 수 있다
- 검증 및 개발 기간 단축
- 시간 단위로 기기를 임대하는 클라우든ㄴ 신기술을 검증하는 최신 기자재 등을 정해진 기간에 제공 가능
- 데이터센터 유지 보수 불필요
- 서버나 네트워크 등의 장비를 모두 클라우드 제공자가 운용해 기기 설치나 케이블 배선, 기자재 조달이나 계약과 같은 일체의 보수 작업이 불필요
- 글로벌 전개 가능
- 서비스를 전 세계적으로 글로벌하게 전개 가능
1.2.3 IaaS, PaaS, SasS
- IaaS(Infrastructure as a Service)
- 서버나 네트워크를 임대 형식과 마찬가지로 서비스로 제공
- 구축된 서버에 OS나 미들웨어 등은 직접 설치해야함
- PaaS(Platform as a Service)
- 애플리케이션을 작동하는 데 필요한 플랫폼 자체를 서비스로 제공
- SaaS(Service as a Service)
- 클라우드 제공자가 전용 애플리케이션까지 제공
1.2.4 AWS에서 제공하는 클라우드 형태
- 최초에는 IaaS 유형에 해당하는 시간제 서버 임대
- 이후 서버리스 시스템의 서비스를 출시
1.3 AWS 제공 솔루션
1.3.1 엔터프라이즈 애플리케이션 구축
- 엔터프라이즈 애플리케이션
- 서버, 데이터베이스, 네트워크, 장비 등을 조합해 만든 대규모 시스템
1.3.2 서버시르 애플리케이션 구축
- 서버리스 애플리케이션
- 애플리케이션을 움직이는 인프라스트럭처를 AWS 기능으로 모두 관리하는 시스템
- 서버의 안정된 기동이나 갑작스러운 부하에 대한 성능 향상 등이 자동으로 수행
- 애플리케이션 개발자는 단순히 사용한 부분에 대한 비용만 지불
This post is licensed under CC BY 4.0 by the author.