2023. 3. 31. 19:26ㆍ코드스테이츠/코드스테이츠S4 Chapter & Unit
Cloud Computing & Deployment
아무리 열심히 개발하고 구현하여, 획기적이고 대단한 웹 서비스를 만들어도 배포를 하지않는다면 의미를 가지기가 힘들다. 따라서 웹개발자는 배포에 대한 지식을 탑재하고 있어야 하며, 간단한 배포정도는 혼자 할 수 있어야 한다.
배포방법에는 여러가지가 있는데, 대표적으로 클라우딩 컴퓨팅의 역사를 새로 쓴 Amazon Web Service(이하 AWS)가 있다.
아마존 웹 서비스(AWS)
아마존 웹 서비스(AWS)란 아마존이 자사의 노하우를 살려 제공하고 있는 '클라우드 컴퓨팅 서비스'이다.
AWS는 컴퓨팅, 스토리지, 데이터베이스.분석,네트워킹,모바일,개발자도구,관리도구,IoT,보안,엔터프라이즈 에플리케이션 등 다양한 서비스를 제공한다. 이전에는 각각의 사업자에게 수고스럽게 인프라를 대여해야 했다면, AWS의 등장으로 일괄적으로 대여 및 관리가 가능해졌고, 필요에 따라 운영체제,웹서버,DB 서버 등 필요한 소프트웨어까지 통쨰로 대여하여 사용 할 수 있는 편리한 서비스이다.
아마존 E2C(Elastic Compute Cloud)
AWS에서 제공하는 클라우드 컴퓨팅 서비스.
클라우드 컴퓨팅은 인터넷(클라우드)을 통해 서버, 스토리지, 데이터베이스 등의 컴퓨팅 서비스를 제공하는 서비스.
정리하면 AWS에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한 대 빌리는 것.
그중에서도 E2C는 AWS에서 비용,성능,용량면에서 탄력적인 클라우드 컴퓨터를 제공하는 서비스이다.
ex. 내가 고사양 게임을 하기위해 고사양 컴퓨터를 구입하는게 아닌, 성능좋은 후불제 피시방을 가는것.
AMI(Amazon Machine Image)
AMI는 소프트웨어 구성이 기재된 템플릿이다.
단순히 운영체제(윈도우, 우분투 리눅스 등)만 깔려있는 템플릿을 선택할 수도 있고, 아예 특정 런타임이 설치되어 있는 템플릿이 제공되는 경우도 있다. (우분투 + node.js, 윈도우 + JVM 등)
RDS
Relational Database Service의 약자로 AWS에서 제공하는 관계형 데이터베이스 서비스
EC2 인스턴스에 MySQL 같은 관계형 데이터베이스 엔진을 설치하면 굳이 RDS를 사용할 이유가 없지 않을까??
EC2 인스턴스에 관계형 데이터베이스 엔진을 설치해서 데이터를 관리할 때와 RDS를 통해 데이터를 관리할 때의 차이는 개인 소유 차량과 렌터카 회사에서 대여한 차량으로 비유할 수 있다.
EC2 인스턴스에 데이터베이스를 설치하여 데이터를 관리하는것은 개인 소유 챠랑을 이용하는것과 유사하다.보험처리,유지보수,정비들을 본인이 모두 감당해야한다.주기적으로 정비소에서 점검을 받아야하고, 다른 차량과 다른일이 생길 때 들여야하는 수고와 비용이 크다.
그에 비해 RDS를 이용하는 것은 렌터카 회사에서 차량을 대여하는 것과 비슷하다.
회사에서 차량을 대여하면 대여 차량과 관련하여 시간이 들어가는 일들을 렌터카 회사에서 도맡아 처리한다.
운전자는 오로지 운전만 하면되어서 편하다.
S3(Simple Storage Service)
클라우드 스토리지란?
클라우드 스토리지란 쉽게 말해서 인터넷 공간에 데이터를 저장하는 저장소. 컴퓨터 부품으로 비유하면 하드디스크의 역할을 하는 서비스다.(구글의 Google Drive, 네이버의 MYBOX, 마이크로소프트의 Onedrive 등 )
S3란 imple Storage Service의 약자로 AWS에서 제공하는 클라우드 스토리지 서비스다.
높은 확장성
- 먼저 S3 사용 시 얻을 수 있는 이점으로 높은 확장성이 있다. 확장성이 높으면 많은 시간과 수고를 들이지 않고 스토리지 규모를 확장/축소할 수 있다.
- 또한 용량을 무한히 확장할 수 있기 때문에 용량에 대한 제약이 없고, 사용한 만큼만 비용을 지불하는 온디멘드 방식이기때문에 비용적인 측면에서 매우 효율적이다.
높은 가용성
- S3는 연간 99.99%의 스토리지 가용성을 보장하도록 설계가 되어 있다. 이는 다른 말로 1년 동안 S3에 파일을 저장했을 시, 8.76 시간 동안만 스토리지를 이용하는 데 있어서 장애가 발생한다는 뜻이다.
- 황색 동그라미 안에 숫자가 새겨져 있는데, 이 숫자는 리전에 위치한 가용 영역의 수를 뜻한다. 가용 영역(Availability Zone)이란 각 리전 안에 존재하는 데이터 센터(IDC)를 뜻합니다. 가용 영역은 각각 개별적인 위치에 떨어져서 존재한다. 그래서 한 곳의 가용 영역이 재난이나 사고로 인해 가동이 불가능해지더라도 다른 가용 영역에 백업을 해놓은 데이터를 활용하여 문제없이 서버가 가동되게 한다. 이런 가동 방식 덕분에 AWS에서 제공하는 서비스들은 높은 가용성과 내구성을 보장한다.
S3의 종류
S3 Standard
- 가장 일반적으로 사용되는 스토리지 클래스
- 데이터에 자주 엑세스해야 할 경우 사용
- 데이터 엑세스 처리속도가 빠르지만, 장기간 보관목적으로는 알맞지않음
S3 Glacier
- 데이터의 장기보관 목적으로 사용되는 스토리지 클래스
- 데이터를 보관하는 데 드는 비용이 저렴하다.
- 데이터 엑세스 처리속도는 느리지만, 장기간 보관목적으로는 알맞음
AWS 서버 실행 및 배포 과정
EC2 인스턴스와 연결한 터미널에서 아래 명령어를 입력합니다. 패키지 매니저가 관리하는 패키지의 정보를 최신 상태로 업데이트하기 위해서 아래 명령어를 사용합니다.
$ sudo apt update
Install & Update Script 부분을 참조하여 진행합니다. 설치 과정이 마무리되면 터미널에 nvm --version 명령어를 입력하여 nvm 설치가 정상적으로 끝났는지 확인합니다. 명령어를 입력했는데 오류가 난다면 nvm 설치 과정이 정상적으로 마무리되지 않은 것입니다.
다음으로는 node.js를 설치합니다. 터미널에 아래 명령어를 입력하여 설치를 진행합니다.
$ nvm install node
node.js의 설치가 끝나면 npm 명령어가 정상적으로 입력되지 않는 상황을 방지하기 위해서 터미널에 명령어를 입력해서 npm 설치를 진행합니다.
$ sudo apt install npm
홈 디렉토리로 이동
ssm-user@ip-172-31-33-2:~$ cd ~
git clone을 위해 진행했던 sshgen등록이 필요합니다
# git clone
ssm-user@ip-172-31-33-2:~$ git clone https://github.com/codestates-seb/fe-sprint-practice-deploy.git
Cloning into 'fe-sprint-practice-deploy'...
...
서버 디렉토리로 이동
cd fe-sprint-practice-deploy/server/
npm install 명령어를 이용한 설치 과정이 완료되면 npm start 명령어를 이용해서 서버를 실행합니다. 그럼 아래와 같은 오류 메세지가 터미널에 보입니다.
https://jasonkang14.github.io/aws/aws-amplify-with-react
AWS에서 React.js배포 - Byeongjin Jason Kang
강의용으로 찍어둔 영상이 있어서 이걸로 대체한다. 편집에 능숙하지 못해 살짝 어색한 부분이 있는데 내용은 충분히 잘 이해할 수 있을 것이라고 판단한다. pricing 규정을 찾아보지는 않았는데,
jasonkang14.github.io
'코드스테이츠 > 코드스테이츠S4 Chapter & Unit' 카테고리의 다른 글
[Deploy]CI/CD (0) | 2023.04.03 |
---|---|
[React] React Hooks (0) | 2023.03.22 |
[React] Virtual DOM (0) | 2023.03.22 |
[React] 번들링과 웹팩 (0) | 2023.03.20 |
[HTML/CSS] 웹의 동작원리 (0) | 2023.03.20 |