# [Golang으로 백엔드 개발하기] 1. 웹 프레임워크 선정

# 기존의 언어 백엔드 프레임워크 상황은?

기존의 언어 같은 경우 각 언어마다 누구나 알만하고 절대적인 입지를 가진 프레임워크가 존재한다.

- Java -> Spring
- Python -> Django, Flask
- Node.js -> Express, Koa
이 정도가 기존에 사용하던 프레임워크 들이고
- Kotlin -> Ktor
- Python -> FastAPI
- Node.js -> Fastify, Nest.js

정도가 최신에 개발되어 널리 쓰이기 시작한 프레임워크들이다.

Golang은 다른 것에 비해 소위 잘나가는 프레임워크가 있긴하지만 Java의 Spring과 같이 절대적인 입지를 가진 프레임워크는 없기 때문에 몇 개의 프레임워크 중에서 선택해야 한다.

# 백엔드 프레임워크 정하기

절대적인 입지를 가진 프레임워크가 없을 뿐이지 Golang 생태계에서 널리 쓰이는 프레임워크는 4개 정도 있다.
- [Gorilla Web Toolkit](https://github.com/gorilla)
- [gin-gonic/gin](https://github.com/gin-gonic/gin) - Star 56.8k
- [labstack/echo](https://github.com/labstack/echo) - Star 21.9k
- [gofiber/fiber](https://github.com/gofiber/fiber) - Star 19.1k

> Gorilla Web Toolkit은 Websocket이나 Sesstion 때문에 아래 있는 3개 프레임워크를 사용할지라도 사용한다

## Star History

[![Star History Chart](https://api.star-history.com/svg?repos=gofiber/fiber,gin-gonic/gin,labstack/echo&type=Date)](https://star-history.com/#gofiber/fiber&gin-gonic/gin&labstack/echo&Date)

`gin`은 가장 오랫동안 개발되어 왔으며 현재 Star 수도 압도적 1위이지만 한국에서는 무겁다는 이유로(Benchmark에서 다른 2개의 프레임워크보다 뒤쳐진다) 잘 사용되지는 않는 것 같다.

`echo`가 한국 기준에서는 널리 사용되는 것 같은데 문서가 친절하진 않다. 물론 Golang의 코드는 정말 간결하고 알아보기 쉽기 때문에 어느 정도 백엔드를 이해하고 있는 사람이라면 상관 없겠지만 입문자에게는 조금 불친절할 수도 있다.

`fiber`는 `fasthttp`를 기반으로 하고 있기 때문에 현재 Golang 프레임워크 Benchmark를 휩쓸고 있다. 위 사진에서도 보이겠지만 2020년에 나왔지만 1년도 안되서 10k를 넘기고 현재 `echo`와 비슷한 Star 개수를 달성했다. 또한 공식 문서의 내용도 탄탄하기 때문에 개발하기 편해보였다.

2년전 대입때 동아리 활동을 위해서 `echo`를 사용해봤고 요즘 핫한 프레임워크를 사용해고 싶은 마음도 있어서 이번에는 `fiber`를 사용해 볼 것이다.
