[클라우드 전반] 클라우드 아키텍처

오진선·2024년 12월 5일
0

Cloud

목록 보기
5/17
post-thumbnail

1. 요구사항 분석

애플리케이션을 설계 전 분석해야 할 사항들:

  • 기능 요구사항: 웹 페이지, 데이터 저장, 사용자 인증 등.
  • 트래픽 요구사항: 초기 사용 예상량 및 확장 가능성.
  • 비용: 클라우드 서비스 사용에 따른 예산.

2. 웹 애플리케이션

1) 특징

  • 정적 페이지(웹 사이트) + 동적 페이지
  • 데스크탑 애플리케이션(프로그램)처럼 상호작용이 가능
  • 특정 기능을 가짐(정보 검색 등)
  • 정보나 자료 등의 콘텐츠 관리 시스템과 함께 작동

2) 구조


1. Client (사용자):
브라우저에서 요청을 전송. 사용자 인터페이스와 정적 콘텐츠 제공.
2. Server (백엔드 서버):
비즈니스 로직을 처리하고, 데이터베이스와 통신.
3. Database (데이터 저장소):
데이터를 저장하고 관리하는 역할.

3) 3단 계층 (3-Tier Architecture)


1. Presentation Layer (UI):

  • 사용자 요청 처리 및 사용자 인터페이스 제공.
  • 예: AWS S3, CloudFront.
  1. Application Layer (Logic):
    • API 요청 처리 및 비즈니스 로직 실행.
    • 예: AWS EC2, AWS Lambda, API Gateway.
  2. Data Layer (Storage):
    • 데이터를 저장하고 관리.
    • 예: AWS RDS, DynamoDB.

3. 기본 아키텍처 구성요소

1) 프론트엔드 (Frontend)

  • 사용자와 상호작용하는 애플리케이션의 UI.
  • 사용 기술: HTML, CSS, JavaScript(React, Angular, Vue.js 등).
  • 호스팅:
    • CDN(Content Delivery Network): 빠른 콘텐츠 전송을 위해 AWS CloudFront, Azure CDN, 또는 Cloudflare 사용.
    • 정적 파일 호스팅: AWS S3, Azure Blob Storage 등을 활용.

2) 백엔드 (Backend)

  • 비즈니스 로직 처리, 데이터베이스와 상호작용.
  • 사용 기술: Node.js, Spring Boot, Django, Express.js 등.
  • 배포 방법:
    • 가상 머신(EC2, Azure Virtual Machines).
    • 컨테이너(AWS ECS, Azure AKS, Google Kubernetes Engine).
    • 서버리스 컴퓨팅(AWS Lambda, Azure Functions).

3) 데이터베이스

  • 데이터를 저장하고 관리.
  • 유형:
    • 관계형 데이터베이스: MySQL, PostgreSQL (AWS RDS, Azure SQL Database).
    • NoSQL 데이터베이스: MongoDB, DynamoDB.
  • 배포 방법: 클라우드 관리형 데이터베이스 서비스(RDS, Cloud SQL 등) 추천.

4) 네트워크와 보안

  • 로드 밸런서: 트래픽 분산 및 고가용성(AWS ALB, Azure Load Balancer).
  • 가상 네트워크: 보안 그룹과 서브넷 구성(VPC).
  • HTTPS와 SSL 인증서: 사용자 데이터 보호를 위해 SSL/TLS 적용(AWS ACM, Let's Encrypt).

4.클라우드 아키텍처 설계의 주요 특징

1) 확장성 (Scalability)

  • Auto Scaling Group:
    • 웹 서버와 애플리케이션 서버의 자원을 자동으로 확장/축소.
    • 트래픽 증가에 따라 클라우드 리소스가 동적으로 반응.
  • 클라우드 환경에서는 수요에 따라 리소스를 추가하거나 줄일 수 있음.

2) 고가용성 (High Availability)

  • Elastic Load Balancer (ELB):
    • 사용자 요청을 여러 서버로 분산하여 장애를 방지.
  • RDS Standby:
    • 데이터베이스의 장애 시 복구를 위해 스탠바이 복제본 설정.
  • 여러 가용 영역(AZ)에 자원을 분산하여 높은 서비스 가용성 유지.

3) 보안 (Security)

  • Amazon Route 53:
    • 도메인 네임 시스템(DNS)으로 사용자 요청을 올바른 리소스로 라우팅.
    • DNS 기반 보안 설정 가능.
  • IAM 및 SSL:
    • 보안 계층 및 데이터 암호화를 통한 사용자 보호.

4) 유지보수 및 관리 (Manageability)

  • CloudWatch:
    • 시스템 로그와 상태를 모니터링하여 성능 관리.
  • SNS Notifications:
    • 오류 또는 상태 변화 시 알림 제공.

5. 단계별 클라우드 아키텍처 설계 방법

단계 1: 기본 구성

  • 프론트엔드: S3와 CloudFront를 사용해 정적 콘텐츠를 호스팅.
  • 백엔드: EC2 또는 Lambda를 사용하여 API를 제공.
  • 데이터베이스: RDS 또는 DynamoDB를 통해 데이터 관리.

단계 2: 확장 및 최적화

  • 오토스케일링(Auto Scaling): EC2 인스턴스나 컨테이너를 사용해 트래픽 증가 시 자동으로 확장.
  • 캐싱: Redis 또는 Memcached를 사용해 데이터베이스 부하를 줄임.
  • CDN 활용: 전 세계 사용자에게 빠른 콘텐츠 제공.

단계 3: 모니터링과 로깅

  • 모니터링: 클라우드 제공업체의 모니터링 도구(AWS CloudWatch, Azure Monitor)로 애플리케이션 상태를 확인.
  • 로깅: 로그 데이터를 중앙화하여 디버깅 및 분석(S3, Elasticsearch 등).

6. 클라우드 아키텍처 설계

1) 계층별 구성 요소

(1) Presentation Layer (프레젠테이션 계층)

  • Amazon Route 53:
    • 사용자 요청을 처리하며 도메인 이름을 관리.
  • Amazon CloudFront:
    • 정적 콘텐츠를 빠르게 제공하기 위한 CDN(Content Delivery Network).
  • Amazon S3 Bucket:
    • 정적 파일(이미지, HTML, CSS, JavaScript)을 저장.

(2) Application Layer (애플리케이션 계층)

  • Elastic Load Balancer (ELB):
    • 사용자 요청을 Auto Scaling Group의 웹 서버에 분배.
  • Web Server & App Server:
    • 웹 서버는 사용자 요청을 처리하고, 애플리케이션 서버는 비즈니스 로직을 실행.
  • Auto Scaling Group:
    • 트래픽 증가/감소에 따라 서버를 동적으로 추가/제거.

(3) Data Layer (데이터 계층)

  • Amazon RDS:
    • 관계형 데이터베이스 서비스로 데이터를 저장.
    • 스탠바이 인스턴스를 설정하여 장애 발생 시 복구 가능.
  • Elastic Cache:
    • Redis 또는 Memcached를 사용하여 데이터 캐싱, 데이터베이스 부하 감소.

(4) Monitoring & Notification (모니터링 및 알림)

  • CloudWatch:
    • 로그와 메트릭 데이터를 수집하여 시스템 상태를 모니터링.
  • Amazon SNS Notifications:
    • 상태 변경이나 오류 발생 시 알림 전송.

2) 아키텍처 설계의 흐름

  1. 사용자 요청:
    • 사용자가 www.yourApp.com에 접속하면 요청이 Amazon Route 53으로 전달.
  2. 정적 파일 제공:
    • 정적 데이터는 Amazon CloudFrontS3 Bucket에서 제공.
  3. 로드 밸런싱:
    • Elastic Load Balancer가 트래픽을 Web ServerApp Server로 분배.
  4. 비즈니스 로직 처리:
    • App Server가 요청에 따라 데이터를 처리.
  5. 데이터 저장 및 캐싱:
    • 데이터는 Amazon RDS에 저장되고, Elastic Cache로 캐싱 처리.
  6. 모니터링과 알림:
    • CloudWatch가 애플리케이션 상태를 모니터링하고, 문제가 발생하면 SNS Notifications로 알림 전송.

3) 특징 요약

  • 확장성: Auto Scaling과 캐싱을 통해 트래픽 증가에 유연하게 대응.
  • 고가용성: ELB와 RDS 스탠바이로 장애에 대비.
  • 보안: Route 53, SSL, IAM으로 보안 계층 강화.
  • 유지보수: CloudWatch와 SNS로 효율적인 시스템 관리 가능.

7. 추가 고려 사항

비용 관리

  • 프리티어 사용: AWS, Azure, GCP의 프리티어를 활용하여 초기 비용 절감.
  • Pay-as-you-go: 사용량 기반 과금으로 효율적인 비용 관리.

보안

  • IAM (Identity and Access Management): 최소 권한 원칙으로 접근 제어.
  • 데이터 암호화: 전송 중(TLS) 및 저장 중(AES) 암호화.
profile
₍ ᐢ. ̫ .ᐢ ₎

0개의 댓글