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) : 클라우드 제공자가 당장 사용 가능한 소프트웨어 제공
Deployment
배포? : 서비스를 사용자가 이용 가능하게 하는 과정
Development - Integration - Staging - Production 단계를 거쳐 개발한 서비스를 배포
- Development : 각자의 Local 환경에서 더미데이터 이용해서 테스트
- Integration : 각자 작성한 코드 합치는 과정 (conflict 확인)
- Staging : Production 단계와 가장 유사, 복사된 실제 데이터 이용, 다양한 관계자가 검증
- Production : 개발된 서비스 출시, 코드 구동 및 서비스 제공, 실제 데이터 이용
⬇
Development 환경 ≠ Production 환경
so, 환경 설정을 코드와 분리하는 것이 중요
- 절대경로 X 상대경로 사용 O ('.properties')
- 환경 변수(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 |
---|
댓글