[TIL]deploy sprint 정리(ing)

Violet Lee·2020년 12월 15일
0

Before..

INTRO DEPLOYMENT SPRINT

AWS가 없었더라면, 우리는 위와같이 서버를 직접 구축하고
관리해야 했을것이다.

❌ 레파지토리 없음. ❌


INTRO DEPLOYMENT

우리는 지금까지 본인 로컬상의 프로젝트나 로직만을 서버에 띄우는 연습을
했기 때문에 본인의 서버정보를 잘 알고 있었다.
하지만 우리는 앱을 만들고 다른사람이 사용을 하도록 하기위해서는
배포 라는 작업을 통해 서버에 나의 앱을 띄워야 할 것이다.

그렇지만 Running Code on another computer...

  • node version: 🤔❓
  • dependencied:🤔❓
  • port number:🤔❓
  • hostname:🤔❓
  • file paths:🤔❓
  • api keys:🤔❓

일단 deploy 과정을 대략 4가지 과정으로 나눠본다면..

development

: 코드 테스트 과정

integration

: 다른사람과 충돌이 나진 않는지 확인하는 과정

staging

: 하나의 소스코드로 합쳐진것을 준 배포단계에서 다시 테스트단계를 거치는 과정

production

: 진짜로 배포하는 과정

👉deployment platform

  • heroku
  • digital ocean
  • amajon web service
  • microsoft azure
  • ...

INTRO DEPLOY STRATEGY(전략)

  1. SPA serve strategy(싱글 페이지 앱 제공 === 클라이언트 앱 배포전략)

    리액트 프로젝트를 진행하다보면 나오는 수많은 파일들은, 모두 받아서 갖고오는게 아닌,
    빌드라고 하는 스크립트로 하여금(ex) static > css > js)일케 압축해서 갖고올수있다.

- 이 파일들을 어떻게 서브할까?

: 빌드파일 서브를 위해 cloud 서비스를 사용해야함!

  • amajon s3 (파일을 저장하고,원하는 스태틱파일을 제공해주는 서비스)
    : s3를, SPA 어플리케이션을 배포하기위한 곳으로 활용한다는건,
    플레이스토어에서 앱을 다운받는것과 비슷하다.

사용자들은 이 s3라고 하는 버켓(파일을 담을수있는 공간)에서,
사용자들이 이 버켓주소에 접속하게되면 리액트 파일을 빌드할때나오는
이 (ex) build > static > css > js)들을 다운받게됨.

다운을 받으면,
클라이언트는 서버로부터 파일을 제공받았기 때문에, 이제 s3의 역할은 끝나고,
이제 사용자들은 다운받은 이 앱을 갖고 서버와 통신할수있게됨.

2. Server application deploy (서버 앱 배포전략)

혼자 만들어서 할떄는 혼자 포트를 생성해서 접속하니, 외부접속 고려를 안해도 되었음.
런코라고 하는 싱글웹페이지를 받아오면 외부인이 내 5000포트에 접속가능?

❌ 일단 외부인이 내 컴퓨터에 막 들어오게 해선 안된다.

⭕ ec2에 있는 node app에 접속해서 api를 받아가게 해야한다!

  • ec2
    : 컴퓨터를 활용할수있게, 컴퓨터를 임대해주는 역할. 컴퓨터 하나를 만들어줌.
    아마존 es2에 있는 컴퓨터에다가 노드를 설치하고,
    우리 서버웹앱을 올려서 구동하게 해야함.

일단 es2는, 컴퓨터에서 만들어진 가상머신의 이름.
주소는 로컬호스트 아닌 실제 ipv4를 외부에서 설정해주면,
접속할수 있는 그 주소를 할당받은 가상머신이 es2임.

=> 즉, es2에 웹을 올려서 구동시키기위해(서버배포를 위해),
이제 이 빌드된파일을 s3버켓에서 잘 받아가서,
ec2라고 하는 클라우드 컴퓨터를 빌려서,
노드 애플리케이션을 배포할거고,

이제 데이터베이스를 구축해야하는데,
api를 요청을 하면, 당연히 ec2는 우리 로컬의 db에 접속못하기 때문에,
환경설정을 ui에서 할수있는,
아마존의 데이터베이스를 제공해주는 rds라는것을 활용할것이다.


DEPLOY SPRINT ACHITECTURE

bare minimum

  1. 우리는 리액트 노드의 익스프레스를 붙인, 서버 애플리케이션,그리고 데이터베이스를 배포해야함.

  2. 전략은, 리액트는 s3라고 하는 static파일을 제공할수있는 클라우드 서비스를 활용하여,
    리액트 파일을 서브,리액트 빌드 파일을 서브할수있는 버켓을 셋업하고,
    그 버켓에서 받아간 클라이언트가, 유저가, 클라이언트 앱을 받아간 유저가 es2로 접속해서, api를 요청해서
    es2위에서 구동되고있는 노드서버의api를 받아가고,
    그거르르 요청할뗴, 필요한 데이터는 rds라고 하는 데이터베이스 인스턴스에서 그 데이터를 쿼리해가는 식으로
    프로젝트의 초기를 셋업한다.

=>
(1) SPA 어플리케이션 스태틱파일을 제공하는 s3 버켓만들기
(2) 유저가 버켓에서 받아간, 어플리케이션으로 통신할수있는 노드서버가 돌아갈수있는 ec2 구축
(3) 데이터를 갖고올수있는 데이터베아스를 셋업해서, es2의 어플리케이션이 배포된 db서버로 접속할수있도록 설정하는것.

NIGHTMARE
: aws-cli: s3버켓을 직접 옮겨서 뭘로 옮기고... 이를커맨드라인에서 ㄷ운받아서 이 과정을 할수있는듯.


advanced

  1. ssl을 적용하기위해 ssl인증서를 발급해야하는데, 클라이언트 포인터(ssl을 적용시킴. cdn을 활용해서 클라이언트를 전세계에 ㅃ르게 적용시켜주는 서비스)와 로드 밸런서?를 써야한다고 함.
    -> 이는 아마존에서 주는 나만의 도메인에 적용하기위해 해야하는 과정,
profile
예비개발자

0개의 댓글