배포란 사용자가 주소를 입력하면 접속가능하게 만들어주는 것을 말한다.
접속이 가능하려면 프론트엔드 서버는 종료되지 않아야 하며 24시간 동안 켜져있어야 한다.
SSR이란 로드밸런서를 이용한 배포방법으로 동적으로 변하는 파일들을 처리한다.
브라우저에 접속하면 도메인 주소를 IP주소로 변경하여 로드밸런서로 넘겨준다.
ex) 주소가 동적으로 바뀌는 다이나믹 라우팅(상품 디테일 [_id]), OpenGraph 등
로드밸런서(부하분산기)
란 로드의 균형을 맞춰주는 것을 말한다.
예를들어 프론트엔드 서버 중 접속량이 적은 곳을 찾아서 분산시키거나 두명이 접속했을 경우 하나의 서버로 보내지 않고 나눠서 보내주거나(=round-robin) 접속량이 가장적은 곳에 몰아서 보내서(=least connection) 프론트엔드 서버의 부하를 막아준다.
DNS
란 도메인 주소를 해당 IP주소로 변경시켜주는 것을 말하며 IP주소를 로드밸런서로 넘겨준다.
로드밸런서에 IP주소를 일일히 외울 수 없기 때문에 DNS에 도메인주소로 변경한다.
이렇게 로드밸런서를 통해서 접속을 해야하기 때문에 프론트엔트 서버로 직접 접근하려는 것을 막는 구조가 필요한데 이를 방화벽
이라고 한다.
SSR는 컴퓨터를 24시간 켜놔야(=yarn dev)한다는 단점이 있다.
SSG란 로드밸런서를 이용하지 않고 html, css, js등 정적인 파일을 처리하는 배포방법이다.
html, css, js를 미리 만들어(=yarn build) 놓고 Cloud-Storage에 저장을 한다.
브라우저에 접속하면 도메인 주소를 DNS에서 Clound-Front 주소로 변경하여 연결된 Cloud-Storage에서 html, css, js를 받아오는 방식이다.
이렇게 클라우드를 제공해주는 업체를 Cloud-Provider
라고 하며 아마존 웹서비스(AWS), 구글 클라우드 플랫폼(GCP), 마이크로소프트(Azure)가 있다.
접속량 많으면 프론트 서버를 추가로 만들어야되는데 추가로 만드는 것을 기다리기 힘들어 Cloud-Provider에서 빌려와서 접속할 수 있는 권한을 준다.
SSG 배포방법은 서버라는 개념이 없어서 무제한으로 접속해도 충분히 트래픽(=무한트래픽)을 받을 수 있는 장점이 있다.
결론은 SSR(동적)방식으로 배포하되 SSG(정적) 방식인게 있으면 트래픽이 과부화 되기 때문에 그 부분만 정적방식으로 한다. 이는 Clound-Front에서 동적이면 로드밸런서로 정적으면 스토리지로 넘겨준다.
도메인 정보 확인하는 법 dig naver.com
배포를 할때는 배포에 적합한 코드인지 test
를 꼭 해야한다.
모든 테스트가 통과되면 git에 commit이 될 수 있도록 한다면 안전하게 배포할 수 있으며, git에 commit이 안되면 코드에 문제가 있다는 것을 알 수 있다.
하지만 첫 배포를 하는데는 문제가 없지만 추후에 새로 만든 버튼이 있으면 이것만을 테스트하기는 문제가 없지만 기존에 있었던 버튼들과 버튼들과 연결된 기능들이 많기 때문에 다시 일일히 테스트 해야하는 한계가 있기 때문에 상황에 맞는 테스트 방법을 이용하는 것이 좋다.
- 단위테스트(버튼 클릭 등)
- 통합테스트(여러기능을 한번에)
- E2E테스트(=end to end, 시나리오가 있는것(회원가입->로그인->충전->구매->환불 등 총 과정))
이렇게 테스트를 할 수 있도록 지원해주는 Jest
를 사용하면 된다.