web framework 역할과 종류 에서 Go에서 star별로 조사를 했다.
많은 WebFramework가 있지만 Gin이 star가 가장많기 때문에 선택을 해본다.

gin github
gin-gonic 에 들어가서 다운로드 받고, 배울수 있다.

Gin?

Gin은 golang으로 작성된 HTTP web framework를 말하고, 성능이 빠르다는 장점이 있다.
Logger, Authorization, GZIP, DB와 연동해서 사용할 수 있다.
뭐 다 좋다고 하겠으니 일단 사용해보기로!

어떻게 시작?

무조건 개발은 해보면서 습득하는게 좋으니 gin examples가 있는곳을 살펴보기로한다. Gin으로 작성된 Awesome Project의 리스트도 확인이 가능하다.
Awesome Project에 보면 TF와 함께 개인 사진 저장소를 구현한 페이지 photoprism가 있는데 완성도가 훌륭하다. 데모페이지를 들어가보면 정말 이런걸 만들고 싶다라는 생각이 드는 페이지가 보인다.

Quick Start

quick start를 하고 나면,

  • go get -u github.com/gin-gonic/gin
  • go get github.com/kardianos/govendor

설치를 govendor가 없다고 나온다. command not found
그 이유는 govendor의 환경변수를 지정하지 않아서 생기는 문제~ GOPATHGOBIN의 경로를 ~/.bashrc에 지정해주자

export GOPATH=~/go
export GOBIN=$GOPATH/bin
export PATH=$PATH:$GOBIN

다음과 같이 ~/.bashrc에 입력했다면 source ~/.bashrc를 입력해서 적용하면
govendor를 입력할 수 있을것이다.

예제 코드를 입력하고 http://localhost:8080/ping 실행하면 pong의 응답을 받는 예제이다.

Examples

git clone https://github.com/gin-gonic/examples.git의 소스코드를 내려받고,
https://gin-gonic.com/docs/examples/에서 예제에 대한 설명이 확인 가능하다.
다음에는 예제에서 각각 어떤 내용을 배우는지에 대한 정리를 해볼까한다.

Go Framework는 굉장히 다양하다.
net/http 패키지를 사용해서 구현해도 좋지만,
복잡하고 다양한 기능을 간편하게 구현하기 위해서는 Web Framework를 사용하는게 좋다.
awesome-go.com을 보면 전부 정리가 되어있다...
아주 훌륭한 사람들

Web Framework의 역할과 선택기준

Web Framework는 Request, Handler를 맵핑하는 Routing, 데이터 바인딩, 컨텍스트 기능 등 다양하게 제공하고 있어 우리가 별도의 개발 리소스 없이 간편하게 구현이 가능하도록 제공하고 있다. 그런데 문제는 너무 많은 웹프레임워크가 있다는점!!! 항상 선택을 고민하다 개발을 하기도 전에 개발이 끝나버린다. 프레임워크를 선택하는 기준은 내가 하고자 하는 기능이 충분하게 이미 구현되어 있는지 확인하면 된다. 아마도 제일 많은 star를 받은 repo의 framework를 선택하는게 안전빵이 아닌가싶다. (나는 잘 모르니까..)

Go 언어의 Web Framework

위처럼 다양한 웹프레임워크를 제공하고 있다. 2019.08.31을 기준으로 (star)를 적어놓았다. 이중에 무엇을 선택할지 정말 많은 Web Framework가 있구나... 이중에 Web Framework를 어떤것을 사용해야 할지!!!! 또 찾다보니.. (역시 찾기만하는)

Go-Web-Framework-Stars 이미 정리해놓은게 역시 있었다. 여기를 살펴보면 유명한순으로 나열되어 있는데, 아래 표시한것보다 많다.

몇가지 글을 참고하면, 최근에는 Echo(python의 flask와 유사하다. 사촌같다. 등등), gorillia/mux, chia, Alice가 최고다... gin, gobuffalo가 최고다라고 말하고 있는데, 사실 뭐.. 내가 쓰기 편한게 최고지 한번씩 그래도 코드를 보는것도 도움이 될것 같다. 다음편에는 한번 선정해서 코드도 보고 어떻게 사용하는지 살펴볼 생각이다. reddit

만약 당신이 사용하고 있다면, 당신은 어떤 Web Framework가 가장 좋았는가?
나에게 추천을 부탁한다.

+ Recent posts