10/27

Ahn·2021년 10월 27일
0

dev => 개발모드여서 페이지가 바뀔때마다 우측 하단에 세모난게 생기면서 좀 느렸는데
start => production(prod) 모드에선 우측 하단에 세모난게 없어지고 속도도 빨라짐

yarn start는 빌드를 먼저 하고 나서 해야 함
yarn build => yarn start

ssg배포 하게 되면 static파일을 받아와서 csr이 이뤄지게 됨
csr이란
전체 페이지를 미리 그려놓고 router.push를 하게되면
그 페이지만 화면에 보여주는거


allow-3000 이라는 스티커는
모두에게 3000포트를 열어놓음
그럼 외부에서 누구든지 3000포트로 들어올 수 있게 됨

Compute Engine => 해당 vm 선택 => 수정
스티커 부착 해야지만 설정이 됨


SSR을 해야할 부분 세팅을 어떻게 해야할지 설명하는 부분

SSR할 부분은 프론트엔드 서버로 보내야 하기 때문에
부하분산기에서 프론트엔드로 가게 세팅을 해줘야함

프론트엔드 컴퓨터 복사해서 복붙해서 생긴게 인스턴스 그룹
인스턴스 그룹에 한 컴퓨터가 트래픽이 많으면 인스턴스 그룹안에 있는
다른 컴퓨터로 트랙픽 담당 바꿈


인스턴스 그룹 만들기

인스턴스 그룹 만드는 세가지 방법

  • stateless
    일반적으로 많이 쓰이고 , 오토스케일링(자동확장)이 가능.
    인스턴스 그룹의 컴퓨터에 cpu가 다 차면, 사용중인 컴퓨터
    메모리가 다 차면, 똑같은 컴퓨터를 새로 만들어야 하는데,
    만들기 위해 템플릿을 만들어야함.


    정리하자면 템플릿을 만들어놓으면, 컴퓨터의 메모리가 차면 템플릿대로
    컴퓨터 찍어내는거다.
  • statefull
    설명 안해주심

  • 새 비관리형 인스턴스 그룹
    오토스케일링 x why? 템플릿 없기 때문
    근데 부하분산은 됨
    기존에 만들어놨던 컴퓨터를 인스턴스 그룹에 넣는거

Compute Engine => 인스턴스 그룹 => 인스턴스 그룹 만들기

이렇게 하고 만들기 버튼 누르기

부하분산 => https선택 => 수정

백엔드 구성

설명

LB에선 HTTPS로 접근하지만 ,
LB에서 연결되는 부분은 HTTP로 연결
why? LB를 통해서 LB에서 연결되는 부분을 들어올 수 있기때문
쓸데없는 보안절차를 거칠필요가 없음.

VPC 부분에서 HTTP로 해놓고, 보안은 철저히 하면 됨

백엔드구성에서 백엔드 서비스 만들기 클릭

그룹이름 정해주고, 포트번호 3000번 적어준다.

상태확인

인스턴스 그룹내에 컴퓨터가 죽었는지, 안죽었는지(yarn start가 종료되었다가나, 잠깐 멈췄다던가 등등) 이런 컴퓨터는 부하를 넘기면 안됨
그래서 상태확인(Health Checker)을 해야함

Health Checker를 하는 기준 5초동안 두번연속 실패하면 죽었다.
근데 이건 세팅 할 수 있음.

상태확인 생성 누르고

저장하고나서

최종 저장함

그럼

이렇게 됨

호스트 및 경로 규칙 세팅

맨 왼쪽은 내 도메인주소적으면 됨


서버 켜놓은채로 유지시키는 방법

shell을 닫으면 서버가 꺼짐
포그라운드에서 실행이 되고있기 때문에 다른걸 못함
그래서 백그라운드에서 실행이 되어야 함

그래서 $ yarn start & 으로 실행해주는데,
그래도 쉘을 닫으면 꺼짐
그래서 밑에있는 프로그램을 써야함

nohup
pm2
forever
docker
kubernetes
이러한 프로그램들이 있음.

보통
규모가 작으면 docker , pm2를 쓰기도하고
규모가 커지면 docker , kubernetes를 같이 씀


Docker를 쓰는 이유

실무에서 컴퓨터에 일을 하기위한 필요한 것들을 설치하려면
설치할것도 많고, 버전도 여러가지라 번거롭고 귀찮음.

예전엔 가상머신을 통해서 설치했음.
근데 컴퓨터안에 가상머신으로 설치하니까 속도가 너무 느렸음.

그래서 docker라는걸 쓰는데

필수적으로 필요한 기능은 가상머신(Docker)과 공유를 함

Docker안에다가 필요한것을 미리 다 설치를 해놓으면
다른 환경에서 필요한 기능을 설치할때 Docker를 통해서
필요한걸 다운 받으면 됨.

실무에선 Docker를 무조건 씀

Docker 이미지란?

컨테이너 실행에 필요한 파일과 설정값등을 포함하고 있는 것

꼭 !! 개발할때와 배포할때의 환경을 통일 시켜야 한다.
그래야 개발단계에서 만든걸 배포할때 그대로 내놓을 수 있다.

Docker를 보통 컨테이너라고 부름

컨테이너라고 부르는 이유는 안에 여러가지 설치한것들을
가지고 있어서

도커를 통해서 할 수 있는거 정리

window는 리넉스 커널 기반이 아니기 때문에
뭘 설치하라고 나오는데 설치하면 된다고 하심
안하면 에러남

맥 os는 리눅스 커널 기반이라서 따로 설치할거 없음


쿠버네티스

Docker가 많아지면 여러가지 Docker들을 관리할게 필요한데
많은 Docker들을 관리해주는게 쿠버네티스임

죽었으면 살려주고 , 등등.. 여러가지 기능이 있다고 함


Docker 설치

https://www.docker.com/get-started
여기서 설치 해주고

$ docker --version 으로 버전 확인되면 잘 깔린거


Dockerhub , Github

깃허브처럼 도커허브 사이트가 있음
명령어도 위의 사진처럼 똑같음.

Docker hub

Docker허브에서 깐것들은 다른 환경에서도 똑같이 쓸 수 있음.

docker search 명령어


Dockerfile 만들기

내 컴퓨터(로컬)에 있는것들을 copy해서 도커에 paste해줘야함

.은 내 컴퓨터 /는 도커
. 내 컴퓨터 안에 있는 모든걸 /도커의 class_build라는곳에 복붙

모든 파일을 카피하면 node_modules가 있을텐데
왜 yarn install을 해야하나?

내 컴퓨터에서 node_modules는 도커에 복붙 하면 안됨
docker hub에서 가져온 버전으로 node_modules가 생겨야 하기 때문

그래서 .dockerignore라는 파일을 만들고 이렇게 세팅해준다.

class_build내에서 실행되어야 하기 때문에
커서를 /class_build로 옮김
그래서 WORKDIR /class_build/ 를 해준거임

Docker 폴더내에 package.json이 있고
yarn install을 하면
node 버전에 맞게 node_modules가 깔림
그래서 Docker를 깔면 node_modules가 깔리기 때문에
내 로컬에 있는 node_modules를 지워도 돌아감(docker가 실행되었으면?)

이렇게 하면 안되고

이렇게 실행명령전까지 cd 굽듯이 꾸어놓고
마지막 실행명령만 CMD로 실행


docker-compose.yaml 파일 만들기

야멀 파일
얘도 Docker 여러개 관리해주는거

Docker를 여러개 관리해주는게 쿠버네티스가 있다고 했는데
얘는 또 뭐냐

쿠버네티스 , 도커 컴포즈 차이


여러개의 나눠져있는 컴퓨터안에 있는 도커들 싹다 관리 가능

각각의 컴퓨터안에서만 도커 관리해주는 거

##########

(들여쓰기 주의!!!)
class_build는 하나의 도커
build는 어떤 이미지가 대상인지
context 지금 위치 콕 찝어서
dockerfile docker파일 찾아서
결국엔 Dockerfile을 실행시키겠다 라는 뜻

근데 이렇게만 하면 연결 안됨
도커내에서만 3000을 실행시키기 때문에
밖에서 들어온 3000포트로 연결해줘여함
이걸 포트를 포워딩한다해서 포트포워딩이라고 부름

ports 3000번으로 들어왔다면
도커 3000번으로 실행

이렇게 까지 해주고

$ docker-compose build

해준다

그럼 이렇게 설치가 되고

$ docker-compose up -d

으로 백그라운드에서 실행 해주고나서

$ docker ps

명령어를 실행시켜주면

ctrl+c가 아니라 docker-compose stop 해주면 꺼짐

이렇게 잘 나오면 실행이 잘 되고 있는거임
쉘을 꺼도 잘 작동함

profile
Hello~~👋

0개의 댓글