본문 바로가기
프로그래밍/Go

고 (Golang) | 이것만 알면 나도 개발 전문가 | Gin 을 이용한 CRUD RESTful API 개발 Part-3

by K-인사이터 2023. 3. 2.
반응형

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

 

 

안녕하세요

K-IN 입니다.

Gin-gonic 대표 이미지 (출처: https://github.com/gin-gonic/gin)

 

서론 

"이것만 알면 나도 개발 전문가" 시리즈입니다.

"Gin 을 이용한 CRUD RESTful API 개발 Part-3" 를 진행하겠습니다. 

 

Part-3 에서는 Taskfile 을 이용해 명령어를 단축해서 실행하는 방법을 학습해보겠습니다. 

Part-2 의 내용을 아직 학습하지 않았다면 아래의 링크로 접속하여 학습을 순서대로 이어가주세요. 

 

2023.03.01 - [Go] - 고 (Golang) | 이것만 알면 나도 개발 전문가 | Gin 을 이용한 CRUD RESTful API 개발 Part-2

 

Part-2 코드 내려받기

코드는 이전 시간에 작성한 코드에 이어서 진행하도록 하겠습니다. 아래의 링크에 접근하여 clone 후 코드를 내려 받아 주세요.

https://bitbucket.org/kinstory/gin-tutorial/src/part2/

 

Bitbucket

 

bitbucket.org

Makefile vs Taskfile 

Gnu make 는 공인된 가장 보편적인 Utility 입니다.  Devops 및 컴파일 등에 사용되어 CI/CD 에서 필수적이라고 보여집니다. 

그런데, Makefile 의 문법이 익숙하지 않거나 어렵다고 느껴지지 않았나요? 

한번 비교해볼까요? 

 

makefile (왼쪽) vs taskfile (오른쪽) 출처: https://tsh.io/blog/taskfile-or-gnu-make-for-automation/

 

한눈에 보아도 왼쪽보다는 오른쪽(Taskfile)이 더욱 간명하고 구조적인 정보가 포함되어 있어 이해가 용이합니다. 

전통적인 Makefile 그리고 새로운 강자 Taskfile 여러분은 누구의 손을 들어줄 건가요? 

출처: https://tsh.io/blog/taskfile-or-gnu-make-for-automation/

 

Taskfile 을 설치해보자 

앞으로 우리의 Gin 웹 어플리케이션을 계속해서 복잡해질 것입니다. 

docker 를 이용해 MongoDB 와 Redis 를 올릴 것이며 Swagger 도 등록할 것입니다. 

그리고, 이 과정을 떠나서 gRPC 를 다룰 때에도 요긴하게 쓰일 예정입니다. 

 

이러한 복잡한 과정들을 일일이 명령어로 반복해서 타이핑하는 것은 매우 비효율적인 일일 것입니다. 

 

 

우선 진행하기전에 Taskfile 유틸리티를 먼저 설치해볼까요? 

우선, taskfile 공식 홈페이지에 접속해 봅시다.

다양한 환경에서 설치하는 방법을 다루고 있어 크게 도움이됩니다. 

 

https://taskfile.dev/installation/

 

Installation | Task

Task offers many installation methods. Check out the available methods below.

taskfile.dev

 

이번에는 macOS 를 기준으로 설명하겠습니다. 

윈도우나 리눅스 환경의 사용자라면 위의 링크를 참고하셔서 설치해보세요. 

 

$ brew install go-task

 

Taskfile 을 이용해 명령어를 등록

Taskfile 은 아래와 같은 파일의 이름을 허용합니다. 

  • Taskfile.yml
  • Taskfile.yaml
  • Taskfile.dist.yml
  • Taskfile.dist.yaml

이번 시간에는 Taskfile.yml 파일을 생성해보겠습니다. 

$ touch Taskfile.yml

우리는 지금 상황에서 아래와 같은 명령어들이 필요합니다. 

  • go 프로그램 빌드 및 실행 권한 부여 
  • 빌드된 프로그램의 실행 
  • dev 모드로 빌드 없이 실행 
version: "3"

tasks:
  build:
    desc: Build the app 
    cmds:
    - GOFLAGS=-mod=mod go build -o bin/gin-tutorial cmd/main.go
    - chmod +x bin/gin-tutorial
  run:
    desc: Run builded app
    cmds:
    - bin/gin-tutorial
  dev:
    desc: Run dev app
    cmds:
    - GOFLAGS=-mod=mod go run cmd/main.go

그렇다면, taskfile 을 이용해 명령을 실행해보겠습니다. 

--list 옵션은 Taskfile 에 정의된 명령어의 목록을 출력해줍니다. 

$ task --list
task: Available tasks for this project:
* build:       Build the app
* dev:         Run dev app
* run:         Run builded app

우선 빌드 후에 실행을 해볼까요? 

task build 라고 입력합시다. 

 

빌드한 파일이 정상적으로 생성됩니다. tree 명령어 결과에서 Taskfile.yml 파일 위치도 겸사겸사 확인해보세요. 

등록한 실행 명령어도 잘 동작하는 것을 볼 수 있습니다. 

 

맺음말 

오늘은 "Gin 을 이용한 CRUD RESTful API 개발" 시리즈의 Part-3 를 진행하였습니다. 

Taskfile 유틸리티를 설치하였고 이를 이용해 Gin 웹 어플리케이션 프로젝트에 Makefile 보다 더 편리한 Devops 유틸리티 셋업을 진행하였습니다. 

 

앞으로 Taskfile 은 RESTful API 개발에 필수적인 Swagger 생성, MongoDB 를 편리하게 구성하기 위한 docker-compose 파일들을 실행해주는 편리한 역할을 해줄 것입니다. 

 

오늘 진행한 튜토리얼의 소스는 아래의 경로에서 다운받아서 살펴볼 수 있습니다. 

아래 웹 사이트에 방문하셔서 Clone 버튼을 꾹 눌러주세요. 

 

 

https://bitbucket.org/kinstory/gin-tutorial/src/part3/

 

Bitbucket

 

bitbucket.org

 

이상으로 K-IN 이었습니다.

즐거운 하루되세요 

 

반응형