기존에 로컬 개발 환경에서 코딩을 하여 코드가 제대로 구동되는지 확인했다면 로컬 개발 환경에서만이 아닌 다른 컴퓨터에서도 내가 구현한 코드가 잘 구동되는지 확인해보아야 할 것이다. 이를 이행하게 하는 것이 Deploy(배포)라고 한다.
Deploy 되는 과정을 최소한의 단위로 나누어 본다면
Development
코딩 / 구현 및 테스트 과정
Integration
기존의 코드와 트러블 및 팀원 코드와의 트러블, 다른 기능 침범 유무 등을 확인하는 과정
Staging
배포 환경과 가장 유사한 단계 즉 준배포 단계에서 다시 테스트하는 과정
Production
준배포 단계에서 이상이 없을 경우 배포과정
위와 같이 최소 이렇게 4단계로 진행되지만
서비스가 점점 더 커질수록 단계들이 복잡해지고 정교해진다.
배포하기에 앞서서 나의 코드가 다른 환경에서도 제대로 작동할 수 있는지 보장되기 위해서는 어떤 것들을 신경 써야 할까?
노드 버전 / 디펜던시 / 포트 넘버 / 호스트네임 / URL 및 파일 경로 / API 키 등 여러 가지가 존재할 것이다.
팁(Tip)! 을
절대 경로보다는 상대 경로를 사용하고
환경에게 따라서 포트를 분기할 수 있게 환경변수 설정하며
save 옵션을 활용하여 디펜던시에 우리가 인스톨한 디펜던시가 잘 적혀있는지 확인하는 것이 있다.
Deploy 플랫폼에서는 여러 가지가 있지만 요새 많이 사용되는 것은 AWS이다.
어떻게 하면 Deploy를 잘할 수 있을까? 전략을 한번 짜 보자면 SPA 배포 전략(Client)과 Server Application 배포 전략(Server) 로크 게 나누어 볼 수 있다.
Deploy 전략
1.SPA 배포 전략(Client)
우리가 react 파일을 보다 보면 엄청나게 많은 파일들이 존재하는데 이를 사용자들이 다 받기엔 무리가 있다. 그렇기에 react에서는 build라는 스크립트를 제공하는데 이 것은 수많은 js 파일들을 하나로 합쳐줘서 html, css, js 하나의 static 한 파일로 합쳐주게 된다. 그럼 이 static한 파일을 유저가 받아서 진행하게 되는데 이 static 한 파일 즉, build 파일을 서브하기 위한 cloud를 사용한다. AWS의 S3가 이와 같은 역할을 맡게 된다. 차선책으로 node와 express를 이용하여 서브하는 방법도 존재한다.
이는 모바일 앱과 유사한 방식으로 다운로드 진행하는 것이라고 보면 되는데 S3는 버킷이라고 하며 이는 파일을 담을 수 있는 공간으로 사용자들은 이 버킷 주소로 접속하게 되면 빌드된 파일들을 다운로드하게 되는 것이다.
2. Server Application 배포 전략
로컬에서 작업을 할 때는 내가 혼자 만들어 진행했기에 외부 접속을 고려하지 않아도 되었다. 기존에 사용했던 local:3000 / local:5000 포트 등을 client가 접속할 수 있도록 할 순 있겠지만 외부인이 내 컴퓨터에 접속하게 되는 것으로 여러 가지 보안 문제가 생긴다.
그럼 다른 컴퓨터를 임대하여 진행해야 할 텐데 그것이 AWS의 EC2이다.
그렇게 되면 EC2에 있는 node app에 접속해서 api를 받아가게 될 것이다.
EC2란?그렇게 되면 DATABASE 또한 나 자신의 로컬로 안되며 DB 또한 필요하다. 물론 EC2 Mysql을 셋업 할 수 있겠지만 환경설정 등 많은 애로사항이 발생할 수 있기에 아마존에서 제공하는 RDS를 이용하면 된다.
쉽게 말해 client 배포를 위한 S3라는 서비스를 활용, server를 배포하기 위해 EC2라는 서비스를 활용, DB를 구축하기 위해 RDS라는 서비스를 활용해야 한다.
이번 스프린트 또한 간단하게 설명하자면
SPA static 파일을 제공하는 S3 버킷을 만들고 유저가 버킷에서 받아간 애플리케이션으로 통신할 수 있는 노드 서버가 돌아갈 수 있는 환경인 EC2를 구축하고 데이터를 가지고 올 수 있는 DB를 셋업 해서 EC2에 있는 노드 애플리케이션이 우리의 배포된 DB서버로 접속될 수 있도록 설정하는 것이라고 볼 수 있다.
아무래도 AWS가 과금적인 애로사항이 많이 나오는 만큼 확실하게 알아두어 피치 못할 상황이 나오지 않도록 노력하여야겠다.
'개념정리' 카테고리의 다른 글
1/4[TIL]React(1) (0) | 2021.01.04 |
---|---|
12/30[TIL] Server & Node (0) | 2020.12.30 |
12/11[TIL]Authentication(3) (0) | 2020.12.11 |
12/10[TIL]Authentication(2) (0) | 2020.12.10 |
12/9[TIL]Authentication (0) | 2020.12.09 |