본문 바로가기
Cloud/AWS

[AWS] AWS(Amazon Web Service) 이란? / EC2, RDS, S3

by jungha_k 2022. 12. 2.

Index

  • Cloud Computing
  • Deploy
  • EC2
  • RDS
  • S3
  • 3 Tier-Architecture 배포 전략 

Cloud Computing? 

 

클라우드 컴퓨팅 :

데이터 센터와 비슷하지만, 물리적 컴퓨터 X 가상의 컴퓨터 O 대여

가상화(Virtualization) 기술의 발전

 

장점 : 

1) 필요시 컴퓨팅 능력 유연한 조절 가능

2) 고정적 비용 X, 사용한 만큼의 요금 지금 O

3) '스냅샷' - 다른 컴퓨터로 즉시 이주(migration) 가능

 

단점 :

1) 운영 환경 체제 - 클라우드 서비스에 종속됨 (클라우드에 문제? ➡ 내 환경에도 문제)

2) 백엔드 구성 특정 회사의 기술로만 구성해야 하는 경우 발생할 수도 있음


목표 : 모든 것을 서비스화 하는 것! (Everything as a Service~!)

 

클라우드 서비스의 형태 : IaaS / PaaS / SaaS

  • IaaS (Infastructure as a Service) : 클라우드 제공자가 가상 컴퓨터까지 제공
  • PaaS (Platform as a Service) : 클라우드 제공자가 db, 개발 플랫폼 까지 제공
  • SaaS (Software as a Service) : 클라우드 제공자가 당장 사용 가능한 소프트웨어 제공

https://www.whatap.io/ko/blog/9/

 

 


Deployment 

 

배포? : 서비스를 사용자가 이용 가능하게 하는 과정

 

Development - Integration - Staging - Production 단계를 거쳐 개발한 서비스를 배포

 

  • Development : 각자의 Local 환경에서 더미데이터 이용해서 테스트
  • Integration : 각자 작성한 코드 합치는 과정 (conflict 확인)
  • Staging : Production 단계와 가장 유사, 복사된 실제 데이터 이용, 다양한 관계자가 검증
  • Production : 개발된 서비스 출시, 코드 구동 및 서비스 제공, 실제 데이터 이용

 

Development 환경 ≠  Production 환경

so, 환경 설정을 코드와 분리하는 것이 중요

 

  1. 절대경로 X 상대경로 사용 O ('.properties')
  2. 환경 변수(env) 설정

결국 AWS ? ➡ 배포를 위한 플랫폼 중 하나!

 


EC2 (Elastic Compute Cloud) ? 

: AWS 에서 제공하는 클라우드 컴퓨팅 서비스

(= 아마존에서 가상의 컴퓨터 한 대를 빌린다!)

 

 

*클라우드 컴퓨팅 = 인터넷(클라우드)를 통해 서버, 스토리지, db 등 컴퓨팅 서비스 제공

 

*Elastic? 탄력적이다

사용한 만큼 비용을 지불하고, 필요에 따라 성능, 용량 조절도 탄력적이다!

 

 

장점 : 

1) 필요 구성 시간이 짧다

2) 다양한 운영체제 선택 가능하다 (+ CPU, RAM, 용량...) through AMI

 

 

* Instance ? : AWS 에서 빌리는 컴퓨터 (1 인스턴스 = 1 컴퓨터)

인스턴스를 생성한다 = 컴퓨터를 빌린다

 

* AMI (Amazon Machine Image)? : 소프트웨어 구성이 기재된 템플릿 (=세팅)

AMI를 통해 다양한 운영체제 선택이 가능함 (직접 구성도 가능)

 


RDS (Relational Database Service) 

: AWS에서 제공하는 관계형 데이터베이스 서비스

 

 

* EC2에 DB 설치해서 하면 될텐데, 왜 굳이 db서비스를 나누는 것이지?

 

EC2 + DB : 사용자가 일일히 DB 엔진 설치, 버전관리, db 백업 해야함

가용성, 내구성 확보 X ➡ 데이터 유실 가능성, db 확장하기 어려움

 

 

RDS : db 유지보수 모두 RDS 에서 관리해줌, 편의성 ⬆

사용자는 only 초기 설정 + db의 데이터 관리

필요한 db 엔진(oracle, mysql,...) 취사선택 이용할 수 있음

 


S3 (Simple Storage Service)

: AWS 에서 제공하는 클라우드 스토리지 서비스

 

* 클라우드 스토리지? = 인터넷 공간에 데이터 저장하는 저장소

: 웹 환경이라면 언제, 어디서든 저장한 데이터에 접속 가능하다!

 

 

스토리지 클래스 :

1) Standard - 데이터 액세스, 처리 속도 모두 빠르다 / 보관 비용 ⬆

2) Glacier - 데이터 액세스, 처리 속도 비교적 느리다 / 보관 비용 ⬇ : 데이터 장기보관에 굿

 

 

장점 :

1) 높은 확장성, 가용성 (스토리지 규모 확장 / 축소 good)

2) onDemand 지불방식이기 때문에 비용측면에서 효율적

3) 강력한 내구성 ➡ 파일 유실 가능성 ⬇

 

How come?

 

* 리전 (Region) : AWS 클라우드 서비스 운영 물리적인 서버 위치

* 가용 영역 (Availability Zone) : 리전안에 존재하는 데이터센터(IDC)

 

한 리전에 문제가 생기더라도 다른 가용 영역에 데이터 백업 되어있음~

따라서 AWS 서비스들 가용성, 내구성 모두 보장된다!

 

 

4) 정적 웹 사이트 호스팅이 가능

 

* 정적 파일 : 서버 개입 없이 생성된 파일 ↔ 동적 파일 : 서버가 클라이언트 요청에 맞추어 그 자리서 생성

* 웹 호스팅 : 서버의 한 조각 임대해주는 서비스

 

S3의 '버킷' : 정적 웹 사이트 배포할 수 있는 공간 제공 (배포, 운영 가능하도록)

정적 파일 업로드하고, 정적 웹 사이트 호스팅 용도로 구성한다!

 

 

* 버킷 ? : S3에 저장되는 파일이 담기는 바구니 (= 파일 저장 최상위 디렉터리)

  • 무한히 많은 파일 저장 가능
  • 버킷의 이름은 리전에서 유일하도록
  • 버킷 정책으로 액세스 권한 부여 가능

*  객체 = 버킷에 담기는 파일 (데이터 저장시 키-값 형식)

   객체 구성 요소 : 파일 + 메타데이터 

  • 파일 - 객체 고유하게 만드는 식별자 역할
  • 메타데이터 - 객체 정보 담긴 데이터 (생성일, 크기, 유형...)

모든 객체는 고유한 URL 주소 有 : http://[버킷 이름].S3.amazonaws.com/[객체의 키]


3 Tier-Architecture 배포 전략 (Deploy Strategy)

 

 

1) Client 배포 - S3 이용

: 클라이언트 앱을 정적 파일로 빌드하여 제공

 

* 빌드? : 불필요한 데이터 없애고, 통합/압축하여 배포하기 최적화된 상태 만드는 것

데이터 용량 ⬇, 웹 사이트 로딩 속도 ⬆

 

HTML, CSS, JS 등의 파일을 정적 파일로 만들어서 배포 (예) React 의 npm)

 

 

* CloudFront (AWS의 CDN(콘텐츠 전송 네트워크) 서비스)

: 각지의 데이터센터에 데이터 분산 저장하고, 가까운 지역에서 데이터를 줄 수 있다.

사용자에게 더 빠르게 서비스 제공 가능!

 

 

2) Server Application 배포 - EC2 이용

: 가상의 PC(EC2) 를 빌려 서버코드 구동한다.

 

 

3) Database 배포 - RDS 이용

: EC2를 통해 배포된 Server Application 의 데이터를 저장, 제공하는 db 를 배포할 수 있다.

 

 

* DNS? 

: S3, EC2를 이용해 배포된 서비스는 IP 나 긴~ 도메인 주소를 통해 접근하게 된다.

 

 

 AWS의 Route 53 - 직관적 도메인 주소 지정 가능

 

'Cloud > AWS' 카테고리의 다른 글

[AWS] EC2 서버 배포 하는 방법  (0) 2022.12.02

댓글