inflearn logo
강의

講義

知識共有

大容量チャットTPS処理のためのWebSocket通信を作りながら学ぶ

サーバーロギングによるイベント処理順序の確認

defer 사용

解決済みの質問

129

SauvageUp

投稿した質問数 21

1

defer의 사용이 자원 반환(Resource Return)의 목적으로 사용되는데, 혹시 defer 가 이뤄질 때, 현재까지 이뤄진 채팅 메시지를 저장하는 DB insert를 넣는 것은 bad practice일까요?

 

go 명령어가 멀티 스레드를 사용할 수 있게 도와주는 키워드인데, 채팅 기능이 확장되어서 (e.g., 카카오톡) 이미지, 동영상, 이모티콘 같은 텍스트 데이터(Text Data)가 아닌 것들을 채팅서비스에서 주고받게 된다면...?

node.js go websockets

回答 1

0

July

defer가 자원목적으로 사용이 된다기 보다는, 특정 함수에 대해서 코드 가독성을 위해서 사용이 되는 경우도 많습니다.

 

그래서 그냥 일반적인 함수에 대해서도 defer를 사용하여 처리하는 경우가 꽤나 있습니다.

  • 예를들면 Mutex 같은 로직을 활용할 때 많이 사용 됩니다.

 

이떄까지 이뤄진 채팅메시지를 DB에 저장을 한다면, 당연히 더 좋은 방향이라고 생각합니다.

그에 따라서 로직을 수정하시면 좋을 꺼 같아요.

 

또한 go 라는 키워드를 사용하여 다른 데이터를 다루어도 큰 문제는 없습니다.

애초에 내부에서 발생하는 에러를 추가적으로 조치를 한다면 일반적인 함수를 구현하는것보다 더 쉽고 빠르게 Response를 줄 수 있기 떄문에 큰 문제는 없다고 생각이 드네요.

0

July

또한 추가로 질문을 많이 주셔서 너무 감사드립니다 🙂

Golang이라는 언어는 사실 Best Practice라는 개념이 크게 존재하지는 않은거 같다고 생각을 합니다.

워낙 자유로운 언어고 개발자의 자유로움을 보장하는 언어이기 떄문에 많이 코드를 작성해보시고 여러가지를 적용해보시며, 자신이 편한 스타일의 코드를 구현하시는게 좋을 꺼 같다고 생각합니다.

3강 질문

0

18

1

2강 nodejs 3단계 설명 질문

0

33

1

useEffect와 lifecycle문의

0

26

2

프론트엔드 학습 수준 문의

0

37

2

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

0

48

2

gRPC 실무에서 질문

0

35

2

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

0

118

3

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

0

123

2

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

0

132

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

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

0

221

1

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

1

843

2

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

1

314

1

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

1

247

1

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

1

303

1

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

3

1306

2

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

1

336

2

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

1

473

2