Cloud Computing
가상화 기술을 사용하는 클라우드 서비스
대표적인 클라우드 서비스의 형태
- SaaS (Software as a Service)
- 클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우
- PaaS (Platform as a Service)
- 클라우드 제공자가 데이터베이스, 개발 플랫폼까지 제공하는 경우
- IaaS(Infrastructure as a Service)
- 클라우드 제공자가 가상 컴퓨터까지 제공하는 경우
Deploy
배포
: 개발한 서비스를 사용자들이 이용 가능하게 하는 일련의 과정
Development
단계
- 각자의 컴퓨터에서 코드를 작성하고 테스트
- 더미 데이터를 이용해서 테스트
Integration
단계
Staging
단계
- 모든 관계자들이 검증하는 단계
- 실제 출시 단계인 Production 단계와 가장 유사한 환경에서 테스트를 진행
- 실제 데이터를 복사해서 문제가 있지 않은지 등 다양한 환경에서 테스트를 진행
Production
단계
작성한 코드가 다른 환경에서 정상 작동할 수 있게 하려면
- 절대경로 대신 상대경로를 사용
- 환경에 따라 포트를 분기할 수 있도록 환경변수 설정
- (Advanced) Docker와 같은 개발 환경 자체를 통일시키는 솔루션 사용
📌 EC2
Amazon EC2(Elastic Compute Cloud)
- 아마존 웹 서비스에서 제공하는 클라우드 컴퓨팅 서비스
- AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것
- 인스턴스: 1대의 컴퓨터를 의미하는 단위 / AWS에서 컴퓨터를 빌리는 것을 인스턴스를 생성한다고 한다.
- AMI(Amazon Machin Image)
- 인스턴스를 생성하는데 필요한 소프트웨어 구성(운영 체제, 애플리케이션 서버, 애플리케이션)이 포함된 템플릿
- 이미지 종류로는 단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택할 수도 있고, 아예 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있다. (우분투 + node.js, 윈도우 + JVM 등)
- AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것을 의미한다.
📌 RDS
- Relational Database Service
- AWS에서 제공하는 관계형 데이터베이스 서비스
- AWS가 데이터 베이스 규모 확장, 가용성과 내구성 확보, 데이터 백업, 데이터 베이스 설치/관리
- 다양한 데이터베이스 엔진 선택지를 제공한다
📌 S3
클라우드 스토리지란? 인터넷 공간에 데이터를 저장하는 저장소(Google Drive, 네이버의 MYBOX 등)
S3(Simple Storage Service)
- AWS에서 제공하는 클라우드 스토리지 서비스
- 사용 시 이점
3 Tier-Architecture 배포 전략
Client 배포
사용자들이 S3와 CloudFront를 통해서 client application을 제공받는다.
- 빌드
- 불필요한 데이터를 없애고, 여러 갈래로 퍼져있는 데이터들을 통합/ 압축하여 배포하기에 최적화된 상태를 만드는 것
- 데이터의 용량이 줄어들고, 웹 사이트의 로딩 속도가 빨라진다
- 일반적인 의미의 빌드는, 소스코드를 실행 가능한 번들로 변환하는 컴파일 과정을 의미한다. 웹 앱에서와같이 HTML, CSS, JS의 형태로 배포하는 경우는 조금 다르다. 웹 앱은 배포 가능한 정적 파일(static files)의 형태로 만들어 줘야 한다.
- CloudFront
- AWS에서 제공하는 CDN 서비스인 CloudFront를 통해서 각지의 데이터센터에 데이터를 분산시켜서 저장해 뒀다가 가까운 지역에서 데이터를 주는 방식을 통해 사용자들이 더 빠르게 파일을 받을 수 있게 된다.
Server Application 배포
안정적으로 서비스를 제공하기 위해 가상의 PC(AWS EC2)를 빌려 서버코드를 구동할 수 있다.
Database 배포
RDS서비스를 통해 Server Application의 데이터를 저장, 제공하는 데이터베이스를 배포할 수 있다.
실습
- 서버 배포
- EC2 인스턴스 연결
- EC2 인스턴스 상에서 서버 실행
- 보안그룹(Security Group)
- AWS에서 임대한 인스턴스의 가상 방화벽
- 인바운드(Inbound)와 아웃바운드(Outbound)에 대한 규칙을 설정할 수 있다.
- 인바운드: 인스턴스로 들어가는 트래픽
- 아웃바운드: 인스턴스에서 나가는 트래픽
- 클라이언트 배포
- 환경설정
- 정적 웹 사이트 호스팅 과정
- 정적 웹 페이지 빌드
- 버킷 생성 및 정적 웹 사이트 호스팅 용으로 구성
- 빌드된 정적 웹 페이지 업로드
- 퍼블릭 액세스 차단 해제 및 정책 생성
- 데이터베이스 연결
- RDS 인스턴스 생성
- 데이터 베이스 연결
- 서버 환경 설정
- 서버 코드에 저장된 application.properties 파일에 환경 변수 설정