🏃🏻 들어가며
go 를 처음 배울때는 gin - gorm 조합을 썼었다.
일정 기간 go 를 사용하지 않다가 다시금 go 를 쓰고자 연습을 하는 과정에서 gin 대신 node.js 의 express 와 유사하다고 홍보하는 fiber 를 보게 되었고, 보일러 플레이트 제작 및 연습 프로젝트 제작에 gin 대신 fiber 를 사용하였다.
API 문서 자료도 gin 보다는 fiber 가 휘황찰란하게 되어 있어 눈길이 더 갔던것도 사실이다.
구현 예제 코드는 2개 다 잘 되어 있다.
무엇인가 구현하고자 한다면 대부분의 예시 코드를 해당 프로젝트에서 만들어 놓아 참고 하기 좋았다.
✴️ 고민이 되었던 부분
문제는 gorilla/websocket 을 사용해서 화상채팅 프로젝트를 진행하는 과정에서 발생했다.
net/http 기반으로 제작된 Gin 의 경우 타고 들어가면 Request *http.Request / Writer ResponseWriter 가 존재하지만,
fasthttp 기반으로 제작된 Fiber 의 경우 타고 들어가도 Request *http.Request / Writer ResponseWriter 가 존재하지 않아 해당 라이브러리 사용이 어려웠다.
https://github.com/gorilla/websocket/issues/640
https://github.com/gorilla/websocket/pull/98
https://github.com/valyala/fasthttp/issues/18
이론상 net/http 보다 10x 빠르다고 설명되어 있는 Fasthttp 기반으로 제작된 Fiber 와 net/http 기반으로 제작된 Gin 중에서 나는 결정을 내려야 했다.
golang 에서 거의 표준으로 사용하는 websocket 라이브러리는 gorilla/websocket 였고, 예제와 실섭 구현에 대한 이야기도 이쪽이 훨씬 더 많았기에 프레임워크를 Fiber 에서 Gin 으로 변경하고 gorilla/websocket 를 쓰기로 결정했다. ( Fiber 는 별도의 websocket 미들웨어를 제공 하고 있다. )
추후, 많은 기능을 필요로 하는 프로젝트 진행시에는 pion/webrtc 와 gorilla/websocket 를 쓸 생각이다.
✅ Gin / Fiber 의 Router 구현체 파고들기
1) Fiber Router ( fasthttp )
Router -> Handler
Handler -> Ctx
Ctx -> *fasthttp.RequestCtx
*fasthttp.RequestCtx
*fasthttp.RequestCtx
2) Gin Router ( net/http )
gin 의 경우 타고 들어가면 Request *http.Request / Writer ResponseWriter 가 존재한다.
Router -> HandlerFunc
HandlerFunc -> *Context
Context -> *http.Request / ResponseWriter
'한걸음씩 > 생각정리' 카테고리의 다른 글
[생각정리] Testdome 을 사용한 온라인 테스트 후기 (1) | 2024.11.27 |
---|---|
[ 생각정리 ] 인수인계 / 문서가 전무한 상황에서 원인 파악후 해결하기 (2) | 2023.02.02 |
댓글