
로드밸런서와 VM인스턴스를 연결, 다이렉트로 연결하는게 아니라 주소를 입력하게되면
/, /boards는 스토리지로 가게 하고, /boards/fdsjlk (상세페이지)는 VM인스턴스로 가게하는 분기처리를 해보자.

일단 스토리지는 무시하고 , 스토리지에 설정했었던 도메인 작업을 삭제하고 로드밸런서 세팅을 다시한다.
브라우저->DNS->로드밸런서->VM

로드밸런서 역할: 부하 분산 => 부하분산기
vm인스턴스가 여러대 있다고 하면, 로드밸런서가 트래픽을 나눈다. => 빙글빙글 돌린다해서 라운드로빈(round-robin)이라고 한다.
가장 적게 접속되어있는 인스턴스에 트래픽을 몰아주겠다. => 리스트 커넥션(least-connection)
모든 인스턴스가 트래픽이 꽉꽉 차있어서 똑같은 것을 복사해서 하나 더 만들어준다 => 스케일 아웃(scale out)
이것을 자동으로 처리해주는 것 => 오토 스케일링(auto-scaling)

accessToken이 저장되어있는 stateful일때는 scale out이 어렵다. (정보를 어떻게 함께 옮길것인지..)
그래서 stateless 상태(추가적인 것이 없는 기본적인 상태)면 scale out이 쉽다.
scale up : 한 대의 컴퓨터의 사양을 높이는 것
scale out: 똑같은 컴퓨터를 여러개 만드는 것
stateless를 sacle out하기 위해서는 복사 붙여넣기 하기 위한 템플릿을 만들어야한다. => 인스턴스 템플릿
템플릿을 찍어내는 것


인스턴스 그룹과 VM을 만들고 로드밸런서와 연결하기

버킷 => 스토리지
서비스 => VM인스턴스

여기서 말하는 프론트엔드란 로드밸런서를 기준으로 앞 뒤

https로 받아서 http로 보내줄 수도 있고, 그 반대가 될 수도 있다.
이것이 로드밸런서가 하는 일
왜 https에서 http로 보내려면?
s로 보내려면 SSH 컴퓨터에도 인증서를 설치해놓아야한다.
인증서를 발급받고 하나하나 설치해주어야하기때문에 쉽지않음.
https로 받으면 로드밸런서에서 s로 받았기 때문에 뒤로는 http로 가도 크게 상관은 없다.
https가 들어오면 보안이라는 작업이 들어가기 때문에 성능이 조금 저하된다. (눈에 보이는 큰 차이는 없음)

로드밸런서에서는 우리가 작업해준 DNS 도메인을 통해 https로 들어오지만 백엔드로는 http로 넘어가게 된다.

https로 넘기려면 인증서를 설치해야하는데 이 과정이 굉장히 복잡하다!
그래서 http로 넘겨주려고 하는것.
어차피 앞에서(프론트) https에서 인증서를 받고 넘어오기 때문에 뒤로는 http로 넘어가도 괜찮다.

로드밸런서 옆에는 health checker(상태확인)가 붙어있다.
HC는 인스턴스에 먼저 요청을 보내고 응답이 안오면 로드밸런서에 알림을 준다.
그러면 로드밸런서는 응답이 온 VM에만 요청을 보내게 된다.
yarn start가 되어있지 않으면 안됨!
전체적인 흐름을 알아야 함께 대화가 되기 때문에.
그것과는 별개로 개발이 Docker 안에서 이루어지게 되면 편하다.
일반적인 회사들은 Docker로 세팅이 되어있는 상태에서 개발을 하고있다.
그렇기 때문에 Docker위에서 개발을 하고 있음을 알아야한다.

가상머신을 도입, 그 안에 세팅
문제는 컴퓨터 안에 컴퓨터가 있으니 너무 느리다.
그래서 나온 것이 Docker

ex) 마우스, 프린터...


기본적으로 Linux으로 세팅이 된다.
윈도우는 Linux와 너무 달라서 WSL(Window Subsystem for Linux)을 따로 설치해주어야한다.
Dockerfile을 잘 만들어 놓고 Dockerfile을 주고 실행시키거나 git에 Docker를 올려놓고 다운 받는 형태로 운영



이런식으로 코드를 만들어놓으면 ubuntu안에서 한줄한줄 실행이된다.

hub.docker.com에 다른 사람들이 만들어놓은 도커파일을 가져다 쓸 수도 있다.


. = 현재있는 모든파일
폴더를 만들고 카피를 해야하지만, 카피를 하면서 새로 만들어지기 때문에 따로 만들지 않아도 된다.

이미 설치해놓은 파일을 압축하고 최적화해서 이미지로 만들고 실행시킨다.

실행중인 명령어는(ex yarn start) RUN에 들어갈 수 없다.
yarn 마음대로 언제든지 사용가능
CMD => 한 파일에 한 번 밖에 못 씀
yarn start는 CMD로 작성해주어야 한다.
docker-compose-up 하면 CMD가 실행

yarn build를 하면 html,css,js의 id값이 생긴다 => build id
이 id를 통일시켜주기 위해 build id값을 통일시켜줌
중간에 도커 설치문제로 어려움을 겪었다 -.-
윈도우는 WSL 2로 업그레이드하라는 오류가 계속 떠서, 설치 후 도커를 삭제해주고 재부팅을 하니까 연결에 성공했다.
docker-compose.yaml 파일을 미리 만들어서 설정을 어떻게 할지 적는다. 그리고 docker-compose up
(yaml 파일은 들여쓰기를 꼭 지켜주어야 함!)
docker-compose build
vscode에서
yarn build:ssg
git add commit push
GCP SSH에서
git pull origin master
build 폴더로 진입
sudo apt install docker-compose
sudo docker-compose build
sudo docker-compose up -d ( 계속 백그라운드에서 실행하게 함, -d를 빼면 터미널이 켜져있는 동안만 실행)
sudo docker ps (현재 백그라운드에 실행중인 백엔드가 무엇인지)
sudo docker-compose stop (백그라운드 서버 끄기)