1. 컴퓨팅

1. 1. EC2 (Elastic Compute Cloud)

  • 로컬 데이터 센터에서 실행되는 서비스를 가상 버전으로 옮긴 것
  • CPU, 메모리, 스토리지 등을 네트워크 인터페이스 프로파일로 프로비저닝 해둠
  • 간단한 웹 서버 인스턴스부터 인스턴스 클러스터까지 다양한 요구를 충족
  • 가상화 기반이므로 빠르고 효율적으로 배포됨

1.2. Lambda

  • 서버리스 애플리케이션 아키텍처
  • 사전에 정의한 코드 기반으로 연중무휴로 운영하지 않고도 요청을 처리할 수 있음
  • 최대 15분 작업이 완료되면 모든 리소스가 자동 종료됨

1.3. Auto Scaling

  • 실행 중인 EC2 인스턴스를 이미지 템플릿 사본으로 보관
  • 기존 인스턴스가 높은 수요에 대응할 수 없을 때 자동으로 보관한 템플릿 시작
  • 수요 감소 시 인스턴스 종료

1.4. Elastic Load Balancing

  • 여러 서버 중 일부에 과부하가 결렸을 때 장애가 발생한 서버로의 트래픽 전달 방지
  • 유입 트래픽을 여러 웹서버로 분산

1.5. Elastic Beanstalk

  • AWS 컴퓨팅, 네트워킹 리소스를 프로비저닝 하는 작업을 추상화

2. 네트워킹

2.1. VPC (Virtual Private Cloud)

  • EC2, RDS를 호스팅할 수 있는 네트워크 환경
  • 인바운드, 아웃바운드 네트워크 접근 규칙이나 인스턴스 간 네트워크 액세스 제어할 수 있음

2.2. Direct Connect

  • 타 공급자가 제공하는 네트워크로 AWS에 연결할 수 있음
  • 로컬 데이터 센터, 사무실 네트워크 등과 AWS VPC를 연결할 수 있음

2.3. Route 53

  • 도메인 등록, 라우팅 프로토콜 등을 관리할 수 있는 AWS DNS 서비스

2.4. CloudFront

  • AWS의 CDN 서비스로 사이즈가 큰 미디어 콘텐츠를 전송할 때 사용
  • 사이트 콘텐츠 캐싱 버전을 각 엣지 로케이션에 저장하고 짧은 대기시간으로 콘텐츠를 제공

3. 스토리지

3.1. S3

  • 안정적인 다목적 객체 스토리지
  • 데이터 저장과 백업 용도로 사용

3.2. Glacier

  • 저렴하게 데이터를 장기 저장할 수 있는 대형 데이터 아카이브
  • 데이터 추출에 오랜 시간이 걸림

3.3. EBS (Elastic Block Store)

  • EC2 인스턴스 OS와 작업 데이터를 호스팅하는 가상 데이터 드라이브
  • 물리 서버에서 사용하는 스토리지 드라이브, 파티션 개념 사용

3.4. Storage GateWay

  • 로컬 온프로미스처럼 사용하는 하이브리드 스토리지 시스템
  • 데이터 마이그레이션, 백업 용도로 사용

4. 데이터베이스

4.1. RDS (Relational Database Service)

  • 안정적인 데이터베이스 인스턴스를 구축할 수 있는 관리형 서비스
  • Mysql, Server, Oracle 등 다양한 데이터베이스 엔진 실행 가능

4.2. DynamoDB

  • 빠르고 유연한 비관계형(NoSQL) 데이터베이스 관리형 시스템

5. 애플리케이션 관리

5.1. CloudWatch

  • 배포 모니터링을 돕는 도구
  • 이벤트를 사용해 프로세스 성능, 활용률을 모니터링
  • 사전 설정된 임계값에 도달하면 메시지 발송을 하는 등 이벤트를 설정할 수 있음

5.2. CloudFormation

  • 복잡한 배포과정을 템플릿 파일에 자동화
  • AWS 리소스 사용을 스크립트화 해 앱 시작을 자동화, 표준화, 가속화

5.3. CloudTrail

  • 계정 내 모든 API 이벤트 기록 수집
  • 계정에 문제가 생겼을 때 문제 해결에 용이

5.4. Config

  • Config에 초기 목표 구성 상태를 정의하면 그 후 변경된 모든 상태와 목표 상태 차이를 평가함

6. 보안과 자격 증명

6.1. IAM (Identity and Access Management)

  • AWS 리소스에 액세스하고 작업할 수 있는 사람, 대상을 제어
  • 사용자, 그룹, 역할, 정책을 사용

6.2. KMS (Key Management Service)

  • 리소스를 보호하기 위해 암호화 키를 생성하고 관리하는 서비스

6.3. Directory Service

  • 타 서비스와 통합해 자격 증명을 관리
  • Amazon Cognito, Microsoft AD 등

7. 애플리케이션 통합

7.1. SNS (Simple Notification Service)

  • 모바일 장치, 이메일, 타 사용자에게 자동으로 알림을 보냄

7.2. SWF (Simple Workflow)

  • 수행 작업을 조정하기 위해 복잡한 프로세스 중간 부분을 연결해서 속도를 높임

7.3. SQS (Simple Queue Service)

  • 메시지를 유실하지 않도록 돕는 비동기 메시징 서비스

7.4. API Gateway

  • AWS에 구현한 앱에 사용할 API를 생성, 관리할 수 있다.

 

9. Deploy to cloud server

9.1. Why do we need a cloud server?

앞 절에서 만든 Spring Boot 게시판 서비스를 모두가 사용하게 하려면 어떻게 해야 할까요?
외부에서 제가 만든 서비스에 접근하려면 24시간 작동하는 서버가 필요합니다.
이동욱 저자님은 24시간 서버에 세가지 선택지가 있다고 소개해주셨습니다.

  • 집에 24시간 PC 구동시키기
  • 호스팅 서비스 이용하기
  • 클라우드 서비스 이용하기

클라우드와 호스팅의 가장 큰 차이는 유연성입니다.
호스팅 서비스는 IDC에 물리 서버를 실제로 구축해서 서비스하지만
클라우드 서비스는 서버를 가상화해 사용자의 필요에 따라 실시간으로 확장과 축소가 가능하다는 점에서 이점이 있습니다.

9.2. Type of cloud server

Amazon에 따르면, Elastic Computer Cloud(EC2)는 안전하고 크기 조정이 가능한 컴퓨팅 용량을 클라우드에서 제공하는 웹서비스입니다. EC2는 개발자가 더 쉽게 클라우드 컴퓨팅 작업을 할 수 있도록 돕습니다.
예를 들어 서버 로그 관리, 모니터링, 하드웨어 교체, 네트워크 관리 등을 지원해줍니다. 제 게시판 앱은 IaaS에 해당하는 AWS EC2에 올라갔지만 사용자가 얼마나 서버를 관리하는지, 얼마나 기술을 제공받는지에 따라 클라우드 컴퓨팅은 몇가지 형태로 나뉩니다.

  • Infrastructure as a Service(IaaS)
    • 기업이 준비한 환경에서 개발자들이 장비를 선택할 수 있는 서버
    • 고객은 가상 서버 하위 레벨에 대해서 고려할 필요가 없다.
    • AWS의 EC2처럼 원하는 OS를 깔아 서버로 바로 사용할 수 있다.
  • Platform as a Service(PaaS)
    • 클라우드에서 컴파일해서 결과를 가져올 수 있게 하는 형태의 서버
    • 개발자는 node.js, java와 같은 런타임을 깔아놓고 소스코드만 적어서 빌드한다.
    • heroku, google app engine, ibm bluemix 등이 있다.
  • Software as a Service(SaaS)
    • 모든 것을 클라우드에서 제공하고 사용자는 별도 설치에 대한 부담이 없다.
    • public cloud에 있는 SW를 웹 브라우저로 불러와 언제 어디서든 사용할 수 있다.
    • 웹 메일, 구글 클라우드, 네이버 클라우드, 드롭박스 등이 있다.

references

* 스프링 부트와 aws로 혼자 구현하는 웹 서비스 - 이동욱님 (👍)

* <https://www.comworld.co.kr/news/articleView.html?idxno=49797>

* <https://wnsgml972.github.io/network/2018/08/14/network_cloud-computing/>

+ Recent posts