이전에는 전산실에서 컴퓨터를 배치하고 인터넷을 연결해 서비스를 제공했다.
이러한 방식은 주기적인 관리가 필요하고 공간의 한계가 있게 된다.
그래서 서버의 자원과 공간 및 네트워크 환경을 빌려 사용하는 데이터 센터가 생기게 되었다.
이러한 환경을 온프레미스라고 부른다.
반면 최근에는 이러한 서비스를 제공할때 가상의 컴퓨터를 사용하는데,
필요할 때마다 컴퓨팅 능력을 유연하게 조절할 수 있고, 사용한 만큼의 요금만 지불하면 된다. 컴퓨터의 스냅샷을 이용해 다른 컴퓨터로 즉시 이주가 가능하다.
운영 환경 자체가 클라우드 제공자에게 종속되어 클라우드 서비스에 문제가 생길 때 영향을 받을 수밖에 없다.
SaaS : Software as a Service
클라우드 제공자가 당장 사용 가능한 소프트웨어를 제공하는 경우 이에 해당
AWS: IaaS
서비스 네트워크 하드웨어 운영체제 플랫폼/DB 어플리케이션 SaaS 👌 👌 👌 👌 👌 PaaS 👌 👌 👌 👌 IaaS 👌 👌
Deploy
Development -> Integration -> Staging -> Production
Development
로칼 컴퓨터 환경에서 개발 및 테스트
sample data 이용Integration
각자의 환경에서 개발된 부분 취합
코드간 충돌이 없는지 확인
작성한 코드가 다른 코드에 문제를 발생시키지 않는지 확인Staging
프로덕션 단계와 가장 유사한 환경서 테스트, 다양한 환경서 테스트
복제된 실제 데이터 이용해 테스트
모든 관계자들에게 검증Production
개발환경과는 구분된 환경
실제 데이터 이용
실제로 서비스가 제공
작성한 코드가 다른 환경에서도 정상 작동하려면 설정을 환경변수에 저장해야 한다. (.env)
절대경로대신 상대경로를 사용한다.
환경에 따라 포트를 분기할 수 있도록 환경변수를 설정한다.
도커와 같은 개발환경 자체를 통일시키는 솔루션 사용 가능
아마존에서 원격으로 제어할 수 있는 가상의 컴퓨터를 한대 빌리는 것.
Elastic Compute Cloud : 사용한 만큼 지불. 필요에 따라 성능과 용량 조절
아마존에서 빌리는 컴퓨터를 인스턴스라 한다.
소프트웨어 구성이 기재된 템플릿.
사용 용도에 맞게 운영체제ㅡ 런타임 등이 구성된 셋팅을 선택할 수 있다.
운영체제만 깔려있는 템플릿이나 특정 런타임이 설치되어있는 템플릿이 제공되기도 함(우분투 + node.js, 윈도우 + JVM)
aws에서 제공하는 관계형 데이터베이스 서비스.
DB 유지보수를 RDS에서 자동관리한다. 초기설정을 제외하고 DB에 저장된 데이터를 관리하기만 하면 됨
데이터베이스 엔진을 취사선택해 이용할 수 있다.
Cloud Storage : 인터넷 공간에 데이터를 저장하는 저장소. 하드디스크와 같은 역할을 한다. 웹 환경이라면 어디서든 저장된 데이터에 접근이 가능하다.
aws에서 제공하는 클라우드 스토리지. Simple Storage Servise의 약자인다.
확장성이 높고 스토리지의 용량을 무한히 확장할 수 있다. 내구성이 99.9999..%라 유실될 가능성이 현저히 떨어진다.
여러 지역에 aws 데이터센터가 있다. 한 영역이 가동이 불가능해지더라도 다른 가용 영역에 백업을 해놓은 데이터를 활용해 문제가 없다.
버킷이라는 저장 공간에 정적파일을 업로드하고 버킷을 정적 웹 사이트 호스팅 용도로 구성시 정적 웹 사이트를 배포할 수 있다.
버킷은 각 리전에서 고유해야 한다.
버킷의 정책을 생성해 액세스 권한을 부여할 수 있다.
저장소에 데이터를 저장할 때 키-값 페어 형식으로 데이터를 저장하기 때문에 객체.
객체 = 파일 + 메타데이터로 구성된다.
파일의 값에는 실제 데이터를 저장한다. (최대 5TB)
파일의 키는 각각의 객체를 고유하게 만들어주는 식별자 역할을 한다.(이 키를 이용해 원하는 객체 검색 가능.)
메타데이터
: 객체의 생성일, 크기, 유형과 같은 객체에 대한 정보가 담긴 데이터.
모든 객체는 고유한 URL 주소를 갖는다!
URL 주소는 http://[버킷의 이름].S3.amazonaws.com/[객체의 키]의 형태를 띠고, URL 주소를 통해서도 원하는 데이터에 접근할 수 있다.
EC2 ? nop
빌드해서 정적파일의 형태로 만든다. (npm run build)
CloudFront 통해 각지의 데이터센터에 데이터 분산 저장
EC2 RDS 사용.
Route 53 이용.
bash
cd ~
sudo apt update
nvm 설치해야한다.
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm 홈페이지에서 보면 install script를 다운받아야 nvm을 다운받을 수있다고 함. 위 코드는 스크립트를 다운받는 코드.
ls -a를 쳐보면 .nvm이 설치되어있는데 nvm --version 하면 다운이 되지 않았지만 비슷한건 있다는 오류가 뜸.
https://www.codegrepper.com/code-examples/shell/Command+%27nvm%27+not+found%2C+but+there+are+13+similar+ones.
여기서 보고 해결.
결론적으로 아래 코드를 쳐서 nvm을 실행시키면 되는 듯.
ls -a | grep .nvm
[[ -s $HOME/.nvm/nvm.sh ]] && . $HOME/.nvm/nvm.sh
설치가 되어있는지 확인하면 버전이 나옴. 그럼 이제 node 설치하고 npm도 설치해준다.
nvm install node
nvm install node
ssh-keygen
명령어로 ssh 생성하고 cat ~/.ssh/id_rsa.pub
명령어로 복사.최상단에 .env 파일 만들고 REACT_APP_API_URL={서버 주소} 저장
npm i, npm run build
빌드 디렉터리에 있는 모든 파일을 버켓 루트 경로에 넣는다. 빌드 폴더 자체를 넣으면 안됨!!