인프런 커뮤니티 질문&답변

gang ho lee님의 프로필 이미지

작성한 질문수

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

서버 로깅을 통해 이벤트 처리 순서 확인하기

defer 사용

24.09.08 18:16 작성

·

31

·

수정됨

1

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

 

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

답변 1

0

July님의 프로필 이미지
July
지식공유자

2024. 09. 08. 22:40

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

 

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

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

 

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

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

 

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

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

July님의 프로필 이미지
July
지식공유자

2024. 09. 08. 22:48

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

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

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