inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

대용량 채팅 TPS 처리를 위한 웹소켓 통신 만들며 학습하기

미들웨어, Cors 설정하기

오늘 강의 듣기 시작했는데요!

132

learnlearnlearn

작성한 질문수 11

0

제 프로젝트에 채팅 기능을 넣고 싶어서 듣게 되었습니다. (일반 js, html로 이루어진)
view 부분은 아무거나 제가 해서 하면 되겠지만
이 채팅 서버를 api처럼 사용할 예정이에요
이것을 배포할 때는 어떤식으로 해줘야 하는지 잘 모르겠네요. spring 은 톰캣으로 webapp에 war를 넣어서 해당 컨텍스트를 실행시켜주면되고 플라스크는 wsgi 를 사용해서 requirement.txt 에 외부라이브러리 세팅해주고
돌리면 돌아갔는데 이 강의 서버는 리눅스에서 어떤식으로 리눅스에서 돌리면 될까요 ? 도커를 사용할 예정입니다..!
이 웹 어플리케이션을 배포해서 돌리기위한 절차가 궁금합니다!

node.js go websockets

답변 2

0

July

docker를 사용하신다면, 그냥 이미지를 생성하실 떄, 빌드 바이너리 파일을 넘겨주면 되지 않을까 싶습니다.

golang에서 빌드 파일을 생성하는 명령어는 go build -o <이름> 을 통해서 생성한 바이너리 실행파일을 넘겨주고,

해당 이미지 내부에서 go run <./이름> 을 통해 실행시키면 되지 않을까 습니다.

 

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. learnlearnlearn님.

채팅 서버를 실제 프로젝트에 배포하는 방법에 대해 문의 주셨군요. 간단히 요약하면, 도커를 사용하여 웹소켓 서버를 배포하려면 몇 가지 주요 단계가 필요합니다. 이 과정을 통해 여러분의 웹소켓 서버를 컨테이너화하여 리눅스 서버에서 안전하고 일관된 환경에서 실행할 수 있습니다.

1. Dockerfile 작성

먼저, 여러분의 웹소켓 서버 애플리케이션을 위한 Dockerfile을 작성해야 합니다. 이 파일은 도커 이미지 빌드에 필요한 모든 설정을 포함하며, 기본 베이스 이미지와 애플리케이션 설치 및 실행 방법을 정의합니다.

# 예시 Dockerfile
FROM golang:1.18 AS builder
WORKDIR /app
COPY . .
RUN go build -o mychatapp main.go

# 실행용 이미지
FROM golang:1.18
WORKDIR /app
COPY --from=builder /app/mychatapp .
CMD ["./mychatapp"]

2. Docker 이미지 빌드

Dockerfile을 기반으로 도커 이미지를 빌드합니다.

docker build -t mychatapp .

3. Docker 컨테이너 실행

이미지를 빌드한 후, 도커 컨테이너를 실행합니다. 필요에 따라 포트를 노출해주어야 합니다.

docker run -d -p 8080:8080 mychatapp

4. 환경 변수 설정 및 볼륨 마운트 (필요 시)

애플리케이션이 사용하는 환경 변수나, 저장해야 할 데이터가 있다면, 컨테이너 실행 시 환경 변수를 설정하거나 볼륨을 마운트하여 데이터를 유지할 수 있습니다.

docker run -d -p 8080:8080 \
  -e ENV_VARIABLE=value \
  -v /host/data:/app/data \
  mychatapp

5. 리버스 프록시 설정 (옵션)

배포 환경에 따라 Nginx와 같은 리버스 프록시를 설정하여 SSL 인증서를 구성하고 로드 밸런싱을 진행할 수 있습니다.

도커에 대해 좀 더 구체적인 설정이나 배포에 필요한 설정은 프로젝트의 요구 사항에 따라 조정해야 할 수 있습니다.

관련된 유사한 경험과 질문을 다룬 답변이 있어 공유드립니다:
- 웹 소켓 서버의 수평적 확장 및 무중단 배포에 대해 질문드립니다!: 웹 소켓 서버의 확장과 배포에 대해 보다 상세한 논의를 포함하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

2강 nodejs 3단계 설명 질문

0

6

0

useEffect와 lifecycle문의

0

20

2

프론트엔드 학습 수준 문의

0

28

2

리액트 챕터별 코드에서 eslint 설정파일이 없어요

0

43

2

gRPC 실무에서 질문

0

35

2

fetchBoardsOfMine, fetchBoardsCountOfMine 에러 문의드립니다

0

36

1

Streaming 중인 서비스에서 모든 파드에 broadcast하는 방법

0

118

3

프론트쪽이 리액트로 되어있는데요..

0

123

2

RunInit() 관련 질문

0

180

5

소켓 연결과 http

0

154

2

학습자료는 어디서 받나요?

1

200

1

현재 강의에서 재생관련 문제가 있어서 전달드립니다.

1

202

2

강의에 음성만 나오고 영상이 나오질 않습니다 ㅠ

0

142

1

데이터 불러오기

1

143

1

panic 사용

1

116

1

defer 사용

1

129

1

nodejs 파일이 프론트엔디 파일인가요??

0

220

1

채팅 메시지 DB로 저장 하기.

1

843

2

채팅이 2번씩 전송되는 현상 질문

1

314

1

뭔가 중간에 오타를 쳤는지 오류가 자꾸 발생하는데 혹시 go 소스코드 볼수있는곳 있나요?

1

247

1

다른 질문을 읽고 궁금한 점이 생겼습니다.

1

303

1

소켓 서버의 수평적 확장 및 무중단 배포에 대해 질문드립니다!

3

1304

2

app.js를 여러 번 실행했음에도 불구하고, 로그가 단 한 번만 출력됨

1

335

2

몇천명이 Room 에 동시접속할 수 있도록 설계하려면 어떤 것들이 필요할까요?

1

473

2