안녕하세요 여러분 베하!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/001.gif)
Go 언어에 관심이 있는 분들은 어떤 프레임워크를 사용할지 고민이 될 수 있습니다.
그래서 오늘은 Go 언어의 프레임워크들을 비교해볼게요.
이 비교글을 보고 자신에게 맞는 프레임워크를 잘 선택하시길 바랍니다!
Overview - 23년 6월 5일 기준
Stars | Forks | Documentation | OpenIssue | |
Gin | 69,185 | 7,503 | https://gin-gonic.com/docs/ | 513 |
Beego | 29,819 | 5,583 | https://beego.gocn.vip/beego/en-US/developing/ | 10 |
Fiber | 26,573 | 1,330 | https://docs.gofiber.io/ | 44 |
Echo | 25,794 | 2,150 | https://echo.labstack.com/ | 46 |
Go-zero | 24,445 | 3,449 | https://go-zero.dev/ | 265 |
Iris | 24,004 | 2,477 | https://www.iris-go.com/docs/#/ | 83 |
Revel | 12,911 | 1,415 | https://revel.github.io/ | 86 |
Martini | 11,585 | 1,131 | https://pkg.go.dev/gopkg.in/martini.v0#section-documentation | 12 |
Buffalo | 7,671 | 561 | https://gobuffalo.io/documentation/ | 25 |
Github stars가 높은 9가지를 표로 정리해보았습니다.
상위 4개의 프레임워크에 대해 좀 더 자세히 알려드릴게요.
1. Gin
https://github.com/gin-gonic/gin.git
GitHub - gin-gonic/gin: Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better perf
Gin is a HTTP web framework written in Go (Golang). It features a Martini-like API with much better performance -- up to 40 times faster. If you need smashing performance, get yourself some Gin. - ...
github.com
특징
- Gin은 Go 기본 내장된 net/http를 사용해서 만들어졌습니다.
- Django 프레임워크와 동일한 구문을 가지고 있습니다.
- Gin은 소규모 웹 응용 프로그램에 적합합니다.
- 한국어 지원 문서가 존재합니다.
- gin은 라우팅 기능이 우수해서 데이터 통신에 상당히 빠릅니다.
- 라우팅 성능은 좋지만 대용량 데이터 처리에 관해서 fiber에 비해 상대적으로 저조한 느낌입니다.
지원라이브러리
- https://gin-gonic.com/ko-kr/docs/introduction/
- 빠른 속도, 적은 메모리 사용량
- Logger, 인증 등 미들웨어 지원
- 충돌방지
- 등의 기능을 지원합니다.
2. Beego
https://github.com/beego/beego
GitHub - beego/beego: beego is an open-source, high-performance web framework for the Go programming language.
beego is an open-source, high-performance web framework for the Go programming language. - GitHub - beego/beego: beego is an open-source, high-performance web framework for the Go programming langu...
github.com
특징
- Scaffold 기능을 제공합니다.
- 내장된 ORM(Object-Relational Mapping) 기능을 통해 데이터베이스와의 상호작용이 용이합니다.
- 중국 개발자들 중심으로 개발되어 영어, 한글 자료가 부족합니다.
⇒ 최근에는 fiber나 gin과 같은 다른 프레임워크들이 더 빠른 속도와 경량화로 인해 더 많이 사용되고 있는 추세입니다.
지원하는 라이브러리
- https://beego.gocn.vip/beego/en-US/developing/
- ORM
- Websocket
- GRPC
- RabbitMQ
- OAuth
- 등을 지원합니다.
3. Fiber
https://github.com/gofiber/fiber.git
GitHub - gofiber/fiber: ⚡️ Express inspired web framework written in Go
⚡️ Express inspired web framework written in Go. Contribute to gofiber/fiber development by creating an account on GitHub.
github.com
특징
- fasthttp를 사용하여 구현했습니다.
- 단점 : net/http, HTTP/2에 대한 지원과 잘 호환되지 않고 사용하기 번거로운 면이 존재
- 장점 : net/http 대비 최대 10배나 빠른 퍼포먼스
- 한국어 설명 지원
- 가장 압도적인 performance를 추구
- fiber의 벤치마크 : https://docs.gofiber.io/extra/benchmarks/
- 고성능과 경량화를 중요시하며, 비동기 이벤트 처리 및 멀티 스레딩 기능을 지원
- 제로 메모리 할당과 애플리케이션 성능을 고려하여 개발자들이 보다 빠르게 개발할 수 있도록 설계됨
지원하는 라이브러리
- https://github.com/gofiber/fiber/blob/master/.github/README_ko.md
- cors
- filesystem
- monitor
- recover
- helmet
- 등을 지원합니다.
4. Echo
https://github.com/labstack/echo.git
GitHub - labstack/echo: High performance, minimalist Go web framework
High performance, minimalist Go web framework. Contribute to labstack/echo development by creating an account on GitHub.
github.com
특징
- 매우 간단하고 문서가 많습니다.
- Net/Http기반입니다.
- httprouter를 이용합니다.
- 최적화된 HTTP 라우터와 동적 메모리 할당을 지원하여 라우터의 우선순위를 알아서 정할 수 있습니다.
- 미들웨어 스택을 사용하여 HTTP 요청 처리를 단계별로 실행합니다.
- RESTful API를 이용하여 확장성이 좋으며 렛츠인크립트(Let’s Encrypt)로부터 자동적으로 TLS 인증서를 설치합니다.
지원하는 라이브러리
- https://echo.labstack.com/guide/
- logger
- recover
- CORS
- 등을 지원합니다.
전체적으로 Go lang 프레임워크들은 현재까지도 활발한 개발, 업데이트가 이루어지고 있기 때문에 많은 프레임워크들이 얼마나 성숙해질지 기대됩니다.
공식 문서들을 달아두었으니, 하나씩 들어가서 살펴보는 것도 추천드립니다.
그럼 다음시간에 만나요 안녕!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif)
'Programming' 카테고리의 다른 글
JPA란? (0) | 2023.06.14 |
---|---|
[Vue] Vuex 개념 및 설치 (0) | 2023.06.09 |
[C#] .NET Winform 개발환경 구성 (0) | 2023.06.06 |
Spring이란? (0) | 2023.05.30 |
[C#] .NET Framework에 대한 이해 (0) | 2023.05.20 |
댓글