반응형

Go 의 인기 Framework 'Gin'


많은 프로그래밍 언어들은 저마다의 멋진 프레임워크라이브러리를 가지고 있습니다. 

 

일반적으로 프로그래밍 언어를 사용할 때 말하는 라이브러리(Library)란 쉽게 가져와서 사용할 수 있는 도구들을 모아놓은 공구함같은 것이라고 생각하시면 됩니다. 프로그래밍을 할 때 필요할만한 도구들을 가져와서 개발환경에 맞게 사용할 수 있도록 제공하는 도구죠. 

 

이에 반해 프레임워크(Framework)는 흔히 말하는 뼈대, 기본골격을 의미합니다. 이 안에는 여러 인터페이스와 컴포넌트들이 포함이 되어있습니다. 일정한 뼈대가 잡혀있고 그 안에서 개발자가 자신의 목표에 맞는 도구들을 사용해서 결과물을 만들어낼 수 있도록 돕는 역할을 하는 것이죠.

 

JAVA의 프레임워크 spring

국내에서 정말 많이 사용되는 유명 프레임워크로는 JAVASpring이 있습니다. 채용 홈페이지에서도 대부분의 JAVA 개발자 채용의 경우 Spring Framework에 대한 경험을 필수 혹은 우대한다는 내용의 Job description을 심심치 않게 확인할 수 있습니다. 

 

비단 JAVA만 그런 것이 아닙니다. Ruby on Rails, Pythondjango 또한 해당 언어를 사용하는 개발자라면 누구나 사용해봤거나 공부해보고자할 정도로 널리 알려진 프레임워크입니다. 해당 언어를 사용하지 않는 개발자들도 딱 들으면 알 정도로 유명합니다.


Go Lang에서는 이런 JAVA의 spring, Python의 django 같은, 언어를 대표할만한 프레임워크가 어떤 것이 있을까요?

 

GitHub에 한 repo는 GitHub의 STAR를 받은 수를 기준으로 Go Lang의 Web Framework 순위를 집계하고 있습니다.

 

https://github.com/mingrammer/go-web-framework-stars

 

GitHub - mingrammer/go-web-framework-stars: Web frameworks for Go, most starred on GitHub

:star: Web frameworks for Go, most starred on GitHub - GitHub - mingrammer/go-web-framework-stars: Web frameworks for Go, most starred on GitHub

github.com

 

작년까지는 가장 많은 star를 받은 Gin과 두번째로 많이 받은 Beego 간의 star 차이가 크지 않았는데 2021년 8월 현재를 기준으로 Gin 5만 vs Beego 2.6만 정도로 거의 2배에 가까운 차이를 벌렸습니다. Gin이 압도적으로 치고 올라가는 모습입니다. 개발에 있어 가장 많은 사용자가 있고, 가장 이슈와 포크가 활성화된 오픈소스는 분명히 큰 장점을 가집니다. 

 

Gin은 사용이 간편하면서도 빠른 속도가 장점인 프레임워크입니다. Go Lang의 프레임워크 체험해보기에 아주 좋을 것입니다.


1. Gin 설치하기

Gin의 패키지를 설치하려면 Go version이 1.13이상이어야 합니다.

 

Mac은 터미널, 윈도우에서는 CMD를 통해 다음 명령어를 입력하여 패키지를 설치합니다.

 

$ go version   : Go 버전 확인

 

$ go get -u github.com/gin-gonic/gin    : Gin 패키지 설치

 

패키지 설치가 끝나면 작성할 코드에 Gin을 임포트합니다

 

import github.com/gin-gonic/gin

 

Gin 가이드에 따르면 필요에 따라 net/http 임포트를 하도록 권장하고 있는데, IDE 환경에서 작성 시 별도의 임포트를 하지 않아도 자동으로 임포트되므로 놓치더라도 큰 문제가 발생하지 않을 것입니다.

 

2. 간단 예제 작성으로 동작시켜보기

다음의 예제를 작성하여 Gin 패키지가 제대로 동작하는지 직접 확인해보도록 합시다.

 

package main

import "github.com/gin-gonic/gin"

func main() {
	r := gin.Default()
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"message": "pong",
		})
	})
	r.Run() // listen and serve on 0.0.0.0:8080 (for windows "localhost:8080")
}

 

위의 예제를 직접 작성해서 실행하시면 GET/ping 서버가 동작하고, 메시지가 잘 출력되고 있음을 확인할 수 있습니다.

 

ping.... pong?!

 

Gin으로 기본적인 Router를 만드는 방법은 다음과 같습니다.

 

r := gin.Default()

 

예제에는 r을 사용했지만 Gin의 다른 많은 예제에서는 router 로 정의하고 있습니다.

 

서버 포트 변경을 위해서 r.Run에서 원하는 포트번호값을 입력해줄 수 있습니다.

 

r.Run(":포트번호")

 

3. GET, POST, PUT, PATCH, DELETE, OPTIONS 사용하기

 

Gin을 통해 REST API 설계를 작성해볼 수 있습니다

 

func main() {
	router := gin.Default()

	router.GET("/someGet", getting)
	router.POST("/somePost", posting)
	router.PUT("/somePut", putting)
	router.DELETE("/someDelete", deleting)
	router.PATCH("/somePatch", patching)
	router.HEAD("/someHead", head)
	router.OPTIONS("/someOptions", options)

	router.Run()
}

 


다음 포스팅에서는 Gin 프레임워크를 활용하여 직접 간단한 웹 서버를 만들어보는 예제를 통해 조금 더 상세한 내용을 알아보도록 하겠습니다. 

 

 

반응형

+ Recent posts