Cloud Computing
기존에는 전산실 등에 컴퓨터를 놓고 인터넷 연결을 통해 서비스를 제공함 → 관리 및 인력 비용의 증대와 공간의 한계로 인해 '데이터 센터'라는 거대 건물을 세워 서버실로 사용 → 이후, 데이터 센터의 유휴 자원을 대여하는 서비스 등장 → 서버의 자원과 공간, 네트워크 환경을 빌려 사용하는 클라우드 컴퓨팅의 개념이 등장.
클라우드 컴퓨팅은 데이터 센터와 비슷한 역할을 하지만, 물리적 컴퓨터가 아닌 가상의 컴퓨터를 대여해준다.
대표적인 클라우드 서비스의 형태
1. SaaS (Software as a Service) : 당장 사용 가능한 소프트웨어를 제공
2. PaaS (Platform as a Service) : 데이터베이스, 개발 플랫폼까지 제공.
3. IaaS ( Infrastructure as a Service) : 가상 컴퓨터까지 제공.
Deploy
배포 : 개발자가 개발한 서비스를 사용자들이 이용 할 수 있도록 만드는 과정
배포는 기본적으로 4단계에 걸쳐 진행된다 :
1. Development : 각자의 컴퓨터에서 코드를 작성하고 테스트. 실제 데이터가 아닌 더미 데이터 사용.
2. Integration : 작성한 코드를 합치는 과정. 코드 간 오류나 충돌을 일으키지 않는지 확인
3. Staging : 실제 데이터를 이용해서 문제 여부 확인. 유관 부서/인과 확인 및 조율 과정을 거침. Production 단계과 가장 유사한 환경에서 테스트 진행.
4. Prodcution : 개발된 서비스를 출시하는 단계
유의 사항 : 여러 명이 함께 작업하는 프로젝트일 경우라면 개발 환경과 production 환경이 상이할 수 있다. 따라서, 환경의 차이를 이해하고, 환경 설정을 코드와 분리하는 것이 중요하다. 즉, 작성한 코드가 다른 환경에서도 정상 작동하도록 하려면, 설정을 환경 변수(envvars 또는 env)에 저장해야 한다.
이를테면, 코드 상에는 절대 경로가 아닌 모두 상대 경로를 사용해야 하고, '.env' 등을 이용해서 환경 변수를 설정한다.
EC2 (Elastic Compute Cloud)
Elastic Compute Cloud 의 줄임말로, AWS에서 제공하는 클라우드 컴퓨팅 서비스이다.
즉, 아마존에서 가상의 컴퓨터 한 대를 빌리는 것과 같은 의미이다.
사용한 만큼 비용을 지불하며, 필요에 따라 성능 및 용량을 자유롭게 조절이 가능하다 → 비용, 성능 용량 면에서 탄력적(elastic)인 컴퓨터를 제공하는 서비스.
장점 :
- PC를 구성하는데 필요한 시간이 짧다.
- 필요한 용도에 따라 AMI(Amazon Machine Imange)라는 템플릿을 통해 손쉽게 다양한 운영체제 선택이 가능하다.
Instance : 1대의 컴퓨터를 의미하는 단위. 인스턴스는 선택한 AMI를 토대로 구성된다.
정리하자면,
AWS EC2 인스턴스를 생성한다는 것은 AMI를 토대로 운영체제, CPU, RAM 혹은 런타임 등이 구성된 컴퓨터를 빌리는 것이다.
RDS (Relational Database Service)
AWS에서 제공하는 관계형 데이터베이스 서비스.
EC2 인스턴스에 RDS를 설치해서 데이터를 관리할 수도 있다. 하지만, RDS를 통해 데이터를 관리할 경우, 데이터베이스 유지 보수와 관련된 일들을 모두 RDS에서 전적으로 자동 관리해주기 때문에 편리하다.
RDS의 장점 :
- 유지보수를 전적으로 자동 관리.
- 신뢰할만한 가용성과 내구성.
- 다양한 데이터베이스 엔진 선택지를 제공.
S3 (Simple Storage Service)
AWS에서 제공하는 *클라우드 스토리지 서비스
*Cloud Storage : 인터넷 공간에 데이터를 저장하는 저장소. (구글 드라이브, 네이버 MYBOX, 마이크로소프트 Onedrive)
S3의 장점 :
- 뛰어난 접근성
- 높은 확장성
- 뛰어난 내구성
- 높은 가용성
- 정적 웹 사이트 호스팅 가능
높은 내구성 및 가용성을 지닌 이유
리전(Region, AWS에서 클라우드 서비스를 제공하기 위해 운영하는 물리적인 서버의 위치)의 여러 가용 영역에 데이터를 백업 해놓기 때문
정적 웹 사이트 호스팅
- 정적 파일 : 서버의 개입 없이 생성된 파일
- 웹 호스팅(Web Hosting) : 서버의 한 공간을 임대해주는 서비스. 웹 호스팅 업체들을 통해 개인이나 단체는 업체 서버의 한 공간을 빌려서 원하는 서비스 배포가 가능하다.
- 버킷 : 정적 웹 사이트를 배포할 수 있는 공간. 버킷에 정적 파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성하면 정적 웹 사이트 배포가 가능하다. 파일을 저장하는 최상위 디렉터리이다.
- 객체 : 버킷에 담기는 파일 (키-값 페어 형식으로 데이터가 저장됨). 모든 객체는 고유한 URL 주소를 지님.
- 파일 : 키- 값 페어 형식으로 데이터 저장
- 메타데이터 : 객체에 대한 정보
- URL 주소 : http://[버킷의 이름].S3.amazonaws.com/[객체의 키]
- 객체 : 버킷에 담기는 파일 (키-값 페어 형식으로 데이터가 저장됨). 모든 객체는 고유한 URL 주소를 지님.
배포
클라이언트 배포
- S3 : S3를 통해 사용자들에게 Client를 제공할 수 있다.
- 클라이언트 앱을 정적 파일로 *빌드하여 S3를 통해 클라이언트를 배포한다.
(*빌드 : 불필요한 데이터를 없애고, 여러 갈래로 퍼져있는 데이터들을 통합/ 압축하여 배포하기에 최적화된 상태를 만드는 것) - 웹앱은 배포가능한 정적 파일 형태로 만들어 주어야 한다.
- asset 자체가 정적인 경우 있는 그대로 배포하면 되며, 리액트의 경우 'npm run build'를 통해 빌드를 할 수 있다. (단, 사용 환경에 따라 빌드 과정은 상이)
서버 배포
- EC2 : EC2를 통해 서버를 구성하고 서비스를 제공할 수 있다.
- RDS : RDS를 통해 배포된 서버 앱의 데이터를 저장하고 제공하는 데이터베이스를 배포할 수 있다.
'코딩' 카테고리의 다른 글
CI / CD (0) | 2022.08.08 |
---|---|
시간복잡도 (0) | 2022.08.07 |
Optimization (최적화) (0) | 2022.08.04 |
[최적화] Lighthouse (0) | 2022.08.04 |
[기타] 관심 공고 리스트 (0) | 2022.08.04 |