Grow with AppMaster Grow with AppMaster.
Become our partner arrow ico

Go 모듈 및 종속성 관리

Go 모듈 및 종속성 관리

Go의 종속성 관리 소개

종속성 관리는 프로젝트가 의존하는 라이브러리 및 패키지의 버전을 관리하는 데 도움이 되므로 모든 소프트웨어 프로젝트의 중요한 측면입니다. Go(Golang) 에서 종속성 관리는 버전 관리 문제를 더 쉽게 해결하고 다른 패키지와의 호환성을 유지하며 전체 개발 프로세스를 간소화하여 Go 프로젝트를 재현하고 유지 관리할 수 있도록 합니다.

Software development process

Go 모듈 이전에는 Go의 종속성 관리가 덜 간소화되었습니다. 개발자는 종종 dep , glide 또는 govendor 와 같은 도구를 사용하여 종속성을 관리합니다. 이러한 도구는 유용했지만 공식 Go 프로젝트의 일부가 아니었기 때문에 일부 개발자가 Go를 언어로 채택하는 데 마찰이 생겼습니다.

Go 모듈의 시대

2018년에 Go 팀은 Go 프로젝트의 종속성 관리를 위한 새로운 표준인 "모듈" 개념을 도입했습니다. 모듈은 함께 버전이 지정된 관련 패키지 모음으로, 코드베이스에 필요한 모든 종속성을 제공합니다. Go 1.11에 Go 모듈이 도입되면서 종속성 관리가 더 단순해지고 다양해졌으며 Go 프로젝트에서 공식적으로 지원되었습니다. Go 모듈은 다음과 같은 기능을 도입했습니다.

  • Semantic Versioning(SemVer)을 사용한 종속성 버전 관리
  • 간소화된 종속성 관리 명령(예: go get , go mod tidy )
  • 자세한 종속성 정보가 포함된 매니페스트 파일( go.mod ) 자동 생성
  • 필요한 종속성의 자동 다운로드 및 캐싱

Go 모듈을 사용하면 이전에 Go 개발의 제약이었던 $GOPATH 디렉토리에 더 이상 코드를 배치할 필요가 없습니다. 이 새로운 시스템은 보다 유연한 프로젝트 구조를 가능하게 하여 다른 리포지토리 간에 전환할 때 Go 프로젝트에서 작업하기가 더 쉬워집니다.

Go 모듈 프로젝트 설정

Go 모듈을 시작하는 것은 간단합니다. 새로운 Go 모듈 프로젝트를 설정하려면 아래 단계를 따르세요.

  1. 먼저 시스템에 Go 버전 1.11 이상이 설치되어 있는지 확인하십시오. 터미널에서 go version을 실행하여 go version 확인할 수 있습니다.
  2. 원하는 위치로 이동하고 설명이 포함된 이름(예: my-go-project 으로 새 프로젝트 폴더를 만듭니다.
  3. 명령줄에서 새로 만든 폴더로 이동합니다.
  4. go mod init 명령과 모듈 경로를 차례로 실행하여 새 Go 모듈을 초기화합니다. 예를 들어 GitHub에서 프로젝트를 호스팅하려는 경우 go mod init github.com/your-username/my-go-project 실행할 수 있습니다. 이 명령은 프로젝트 폴더 내에 go.mod 라는 새 파일을 생성합니다.

go.mod 파일은 Go 모듈 프로젝트의 핵심입니다. 이름과 같은 모듈에 대한 메타데이터를 포함하고 필요한 모든 종속성을 나열합니다. Go 프로젝트의 수명 주기 동안 go.mod 파일과 상호 작용하여 종속성을 관리합니다. 이제 Go 모듈 프로젝트가 설정되었으므로 Go 모듈 시스템을 사용하여 종속성을 추가하고 관리할 준비가 되었습니다.

Go 모듈 내 종속성 관리

Go 모듈은 프로젝트의 종속성을 관리하기 위한 간단하고 효과적인 접근 방식을 제공합니다. 특정 종속성 버전을 추가, 업데이트 또는 제거할 수 있으므로 프로젝트 및 다른 패키지와의 상호 작용에 대한 제어를 유지할 수 있습니다. 이 섹션에서는 Go 모듈 프로젝트 내에서 종속성을 관리하는 프로세스를 안내합니다.

종속성 추가

새 종속성을 추가하려면 Go 코드에서 원하는 패키지를 가져오기만 하면 됩니다. 예를 들어 github.com/gorilla/mux 프로젝트에 추가하려면 다음과 같이 가져오세요.

 가져오기(
  "github.com/gorilla/mux"
)

다음에 go build 또는 go test 실행할 때 Go는 필요한 패키지를 자동으로 다운로드하고 go.modgo.sum 파일을 업데이트하며 지정된 패키지를 사용하도록 프로젝트를 구성합니다. 또는 go get 명령을 사용하여 새 종속성을 명시적으로 추가할 수 있습니다.

 github.com/gorilla/mux로 이동

이렇게 하면 패키지를 가져올 뿐만 아니라 프로젝트의 go.modgo.sum 파일도 업데이트됩니다.

종속성 업데이트

특정 종속성을 새 버전으로 업데이트하려면 go get 명령 뒤에 패키지 가져오기 경로와 원하는 버전 번호를 사용합니다.

 github.com/gorilla/[email protected]으로 이동

이 명령은 패키지의 새 버전으로 go.mod 파일을 업데이트하고 해당 소스 코드를 다운로드합니다. 업데이트된 패키지에 주요 변경 사항이 도입된 경우 이에 따라 코드를 조정해야 할 수 있습니다.

종속성 제거

프로젝트에서 종속성을 제거하려면 먼저 소스 코드에서 해당 import 문을 삭제합니다. 그런 다음 go mod tidy 명령을 실행하여 go.mod 파일을 정리합니다.

 모드 깔끔한 이동

이 명령은 go.mod 파일에서 사용하지 않는 종속성을 제거하고 프로젝트를 깨끗하고 체계적으로 유지하도록 합니다.

시맨틱 버전 관리 및 Go 모듈

SemVer(Semantic Versioning)는 소프트웨어 릴리스에 고유한 버전 번호를 할당하는 널리 채택된 버전 관리 시스템입니다. Major.Minor.Patch(예: 1.2.3)의 세 부분으로 된 번호 매기기 형식을 사용합니다. SemVer에서:

  • 주요 버전 변경은 주요 변경 사항을 나타내며 수동 코드 조정이 필요합니다.
  • 마이너 버전 변경은 이전 버전과의 호환성을 유지하면서 새로운 기능을 도입합니다.
  • 패치 버전 변경에는 버그 수정 및 사소한 성능 개선이 포함되며 이전 버전과도 호환됩니다.

Go Modules는 Semantic Versioning을 통합하여 종속성 버전 관리를 처리하므로 개발자가 업데이트, 이전 버전과의 호환성 및 브레이킹 체인지를 보다 쉽게 ​​관리할 수 있습니다. Go 모듈로 종속성 버전을 지정할 때 버전 범위 또는 특정 버전 번호를 사용할 수 있습니다. 예: - 최신 안정 버전의 패키지를 가져오려면 버전 번호 없이 패키지 가져오기 경로를 사용하십시오: go get github.com/gorilla/mux . - 특정 버전을 가져오려면 @ 기호 뒤에 버전 번호를 추가하세요: go get github.com/gorilla/[email protected] . - 특정 주 버전 내에서 최신 부 또는 패치 업데이트를 가져오려면 ^ (캐럿) 기호를 사용하십시오: go get github.com/gorilla/mux@^v1.0.0 .

일반적인 Go 모듈 명령 및 용도

다음은 가장 일반적으로 사용되는 Go Modules 명령과 해당 사용 시나리오 중 일부입니다.

모드 초기화로 이동

go mod init 현재 디렉터리 내에서 새 Go 모듈 프로젝트를 초기화합니다. 모듈, 해당 종속성 및 버전 제약 조건에 대한 정보가 포함된 go.mod 파일을 생성합니다.

 go mod init example.com/myproject

example.com/myproject 모듈의 경로로 바꿉니다.

가다

go get 은 종속성을 추가, 업데이트 또는 제거하는 데 사용되는 다목적 명령입니다. 패키지 가져오기 경로를 제공하고 필요에 따라 버전 번호 또는 범위를 입력합니다.

 github.com/gorilla/[email protected]으로 이동

이 명령은 github.com/gorilla/mux 패키지를 v1.8.0 버전으로 추가하거나 업데이트합니다.

모드 깔끔한 이동

go mod tidy go.mod 파일에서 사용하지 않는 종속성을 제거하고 프로젝트 소스 코드의 import 문을 반영하도록 업데이트합니다.

 모드 깔끔한 이동

원치 않는 종속성에 대한 가져오기 문을 제거한 후 이 명령을 실행합니다.

모드 그래프로 이동

go mod graph 프로젝트의 종속성 트리를 표시하여 직접 및 간접 종속성을 모두 읽을 수 있는 형식으로 보여줍니다. 이 명령은 복잡한 종속성 문제를 디버깅할 때 유용할 수 있습니다.

 모드 그래프로 이동

모드 확인하러 가기

go mod verify go.sum 파일에 나열된 종속성의 무결성을 확인합니다. 종속성의 체크섬이 기록된 값과 일치하지 않으면 명령이 오류를 보고합니다.

Try AppMaster today!
Platform can build any web, mobile or backend application 10x faster and 3x cheaper
Start Free
 모드 확인하러 가기

종속성 충돌 해결

프로젝트가 공유 종속성에 대한 버전 요구 사항이 다른 여러 패키지에 종속되는 경우 종속성 충돌이 발생할 수 있습니다. Go 모듈은 go.mod 파일의 replaceexclude 지시문을 사용하여 이러한 충돌을 처리하는 기본 제공 메커니즘을 제공합니다.

교체 지시어

replace 지시문을 사용하면 모듈 버전을 다른 버전으로 변경하거나 로컬 경로에 매핑할 수 있습니다. 이는 원격 리포지토리에 커밋하기 전에 특정 버전, 분기된 프로젝트 또는 로컬 변경 사항을 테스트해야 하는 상황에서 유용할 수 있습니다. replace 지시문을 사용하려면 go.mod 파일에 다음 줄을 추가합니다.

 교체 example.com/original/module v1.2.3 => example.com/new/module v1.4.0

이는 example.com/original/module 버전 v1.2.3example.com/new/module 버전 v1.4.0 으로 대체합니다. 모듈을 로컬 경로로 바꿀 수도 있습니다.

 교체 example.com/original/module v1.2.3 => ../local/path/to/new/module

제외 지시어

exclude 지시문을 사용하여 모듈의 특정 버전이 프로젝트에서 사용되는 것을 방지할 수 있습니다. 이는 특정 버전에 호환성 문제나 보안 취약성이 있음을 알고 있을 때 유용합니다. 모듈 버전을 제외하려면 go.mod 파일에 다음 행을 추가하십시오.

 example.com/target/module v1.2.3 제외

이러한 변경 사항을 적용한 후 go mod tidy 실행하여 go.sum 파일을 업데이트하고 종속성 트리를 다시 계산해야 합니다.

Private Go 모듈 및 저장소 관리

비공개 Go 모듈 및 리포지토리로 작업하는 것은 공개 모듈로 작업하는 것과 유사하지만 적절한 인증 및 개인정보 보호를 보장하기 위한 몇 가지 추가 단계가 있습니다.

GOPRIVATE 구성

공용 서버에 대한 가져오기 경로 유출을 방지하려면 GOPRIVATE 환경 변수를 구성하십시오. 이 변수는 개인 저장소에 대한 가져오기 경로 패턴의 쉼표로 구분된 목록을 지정합니다.

 go env -w GOPRIVATE=example.com/private/path/*

액세스 토큰 사용

프라이빗 리포지토리를 사용하려면 일반적으로 GitHub 또는 GitLab과 같은 소스 코드 호스팅 서비스로 인증해야 합니다. 적절한 권한(예: GitHub의 repo 범위)이 있는 개인용 액세스 토큰을 만듭니다. 액세스 토큰을 만드는 구체적인 단계는 호스팅 서비스 설명서를 참조하세요. 액세스 토큰을 얻은 후 인증을 위한 환경 변수를 구성합니다. VCS 서비스에 따라 적절한 환경 변수를 사용하십시오.

 내보내기 GIT_TERMINAL_PROMPT=0
내보내기 GITHUB_TOKEN=YOUR_ACCESS_TOKEN

이렇게 하면 go 명령이 개인 리포지토리를 Go 모듈로 다운로드하고 인증할 수 있습니다. 여러 VCS 서비스로 작업하는 경우 필요에 따라 별도의 환경 변수를 정의하여 각각에 대한 개별 액세스 토큰을 구성할 수 있습니다.

이전 종속성 관리 시스템에서 마이그레이션

Go Modules 이전에는 Dep, glide 또는 맞춤형 벤더 디렉토리 솔루션과 같은 다양한 종속성 관리 시스템이 있었습니다. 이러한 시스템을 계속 사용하고 있다면 Go 모듈로 마이그레이션하여 최신 상태를 유지하고 최신 Golang 종속성 관리의 이점을 누릴 때입니다. 이전 종속성 관리 시스템에서 Go 모듈로 마이그레이션하려면 다음 단계를 따르세요.

  1. 필요한 경우 이전 상태로 되돌릴 수 있도록 원래 프로젝트의 백업을 만듭니다.
  2. 기존 종속성 관리 파일(예: Gopkg.toml 또는 Gopkg.lock )을 제거합니다.
  3. 터미널에서 프로젝트의 루트로 이동하고 go mod init 실행하여 새 go.mod 파일을 만듭니다. 또한 이전 종속성 파일(있는 경우)을 Go 모듈 항목으로 변환하려고 시도합니다.
  4. go mod tidy 실행하여 go.mod 파일을 이전 시스템의 종속 항목으로 채웁니다. 이 명령은 필요한 패키지만 종속성 트리의 일부가 되도록 합니다.
  5. 이 시점에서 go.mod 파일을 조정하여 종속성 충돌을 해결하거나 특정 버전을 적용해야 할 수 있습니다. 이러한 문제를 처리하기 위해 필요에 따라 replaceexclude 지시문을 사용하십시오.
  6. 프로젝트가 여전히 예상대로 테스트를 빌드하고 통과하는지 확인합니다.

이러한 단계를 따르면 이제 프로젝트가 Go 모듈과 함께 작동하여 종속성 관리를 간소화하고 장기적으로 유지 관리가 더 쉬워집니다. 남아 있는 문제는 go.mod 파일을 조정하거나 가져오기 경로가 올바른 형식을 따르는지 확인하여 해결해야 합니다.

AppMaster: Golang 기반 애플리케이션 개발 가속화

Go 모듈 및 종속성 관리 모범 사례를 일일 워크플로에 통합하는 것은 유지 관리 및 확장 가능한 Golang 기반 소프트웨어 프로젝트를 보장하는 데 중요합니다. 하지만 Golang의 기능을 활용하면서 전체 애플리케이션 개발 프로세스를 가속화할 수 있다면 어떨까요?

시각적 개발 환경을 사용하여 Golang 기반 백엔드 애플리케이션 생성에 중점을 둔 포괄적인 코드 없는 플랫폼인 AppMaster.io를 시작하십시오. 백엔드 애플리케이션 외에도 AppMaster 사용하면 개발 프로세스를 간소화하도록 설계된 통합 접근 방식을 사용하여 웹 및 모바일 애플리케이션을 만들 수 있습니다.

AppMaster 통해 사용자는 시각적 UI를 통해 데이터 모델 (데이터베이스 스키마)을 생성하고, 비즈니스 프로세스를 설계하고, REST APIWebSocket endpoints 정의할 수 있습니다. 웹 애플리케이션은 완전한 대화형 사용자 경험을 위해 웹 비즈니스 프로세스 디자이너와 함께 끌어서 놓기 인터페이스를 사용하여 생성됩니다. 모바일 애플리케이션은 모바일 비즈니스 프로세스 디자이너 및 UI 디자인 기능을 사용하여 유사하게 디자인됩니다.

AppMaster 의 플랫폼은 청사진을 가져오고 '게시' 버튼을 누르면 애플리케이션에 대한 소스 코드를 생성합니다. 애플리케이션을 컴파일하고, 테스트를 실행하고, Docker 컨테이너 (백엔드 애플리케이션용)에 압축하고, 모든 것을 클라우드에 배포합니다. 이 모든 작업이 몇 초 만에 이루어집니다.

백엔드 애플리케이션은 Golang(Go)을 사용하여 생성되며 Golang이 제공하는 성능, 단순성 및 유지 관리의 이점을 활용합니다. 웹 애플리케이션은 Vue3 프레임워크와 JavaScript/TypeScript를 사용하여 생성되는 반면, 모바일 애플리케이션은 AppMaster 서버 기반 프레임워크, Android용 KotlinJetpack Compose, iOS 애플리케이션용 SwiftUI 사용합니다.

강력한 AppMaster 플랫폼 덕분에 코딩 경험이 없는 사람도 서버 백엔드, 웹사이트, 고객 포털 및 기본 모바일 애플리케이션을 포함하는 완벽하고 확장 가능한 소프트웨어 솔루션을 만들 수 있습니다. AppMaster 전체 소프트웨어 개발 프로세스의 속도를 높일 뿐만 아니라 요구 사항이 수정될 때마다 처음부터 애플리케이션을 생성하여 기술적 부채를 완전히 제거합니다.

소프트웨어 개발 요구 사항을 위해 no-code 플랫폼, 특히 Golang의 이점을 활용하는 플랫폼을 채택하는 것을 고려하고 있다면 AppMaster 목록의 맨 위에 있어야 합니다. 무료 계정 에 가입하고 10배 더 빠르고 3배 더 비용 효율적인 솔루션으로 애플리케이션 개발의 미래를 탐색하십시오.

일반적인 Go 모듈 명령과 용도는 무엇인가요?

일반적인 Go 모듈 명령에는 다음이 포함됩니다.
  • go mod init - 새 Go 모듈 프로젝트를 초기화합니다.
  • go get - 종속성 추가, 업데이트 또는 제거
  • go mod tidy - 사용하지 않는 종속성을 제거합니다.
  • go mod graph - 종속성 트리를 표시합니다.
  • go mod verify - 종속성 트리에서 문제를 확인합니다.

이전 종속성 관리 시스템에서 Go 모듈로 마이그레이션하려면 어떻게 해야 하나요?

Dep, glide 또는 다른 종속성 관리 시스템에서 마이그레이션하려면 먼저 원본 프로젝트를 백업하십시오. 그런 다음 go mod init 실행하여 새 go.mod 파일을 만듭니다. 다음으로 go mod tidy 사용하여 go.mod 파일을 이전 시스템의 종속 항목으로 채우고 필요한 조정을 합니다.

Go 모듈이란 무엇이며 Go에서 종속성 관리가 중요한 이유는 무엇인가요?

Go 모듈은 Go(Golang) 프로젝트를 위한 공식 종속성 관리 시스템입니다. 프로젝트의 종속성을 쉽게 관리하여 Go 프로젝트를 재현하고 유지 관리할 수 있도록 합니다. 종속성 관리는 버전 관리 문제를 해결하고 다른 패키지와의 호환성을 보장하며 개발 프로세스를 간소화하는 데 매우 중요합니다.

비공개 Go 모듈을 사용하고 저장소를 관리하려면 어떻게 해야 하나요?

비공개 Go 모듈을 사용하려면 go env -w GOPRIVATE 비공개 모듈의 경로 사양 패턴 목록을 쉼표로 구분하여 환경을 구성하세요. Git 구성 또는 액세스 토큰을 사용하여 개인 리포지토리에 대해 인증하고 다른 Go Modules 프로젝트와 마찬가지로 종속성을 관리합니다.

Go 모듈에서 종속성을 추가, 업데이트 또는 제거하려면 어떻게 해야 하나요?

종속성을 추가하거나 업데이트하려면 go get 명령 다음에 패키지의 가져오기 경로 및 버전 번호를 사용하십시오. 종속성을 제거하려면 소스 코드에서 해당 import 문을 삭제하고 go mod tidy 실행하여 go.mod 파일에서 사용하지 않는 종속성을 정리합니다.

시맨틱 버전 관리란 무엇이며 Go 모듈에서 그 역할은 무엇인가요?

SemVer(Semantic Versioning)는 Major.Minor.Patch(예: 1.2.3)의 세 부분으로 된 번호 지정 형식을 사용하는 버전 관리 시스템입니다. 개발자가 소프트웨어의 변경 사항을 전달하는 데 도움이 됩니다. Go Modules는 버전 관리 종속성을 위해 SemVer를 통합하여 업데이트, 이전 버전과의 호환성 및 주요 변경 사항을 더 쉽게 처리할 수 있도록 합니다.

AppMaster.io는 어떻게 Golang 기반 애플리케이션 개발을 가속화할 수 있나요?

AppMaster.io는 Golang 기반 백엔드 애플리케이션을 생성하는 no-code 플랫폼입니다. AppMaster 활용하면 사용자가 데이터 모델, 비즈니스 프로세스 및 API endpoints 시각적으로 디자인하고 애플리케이션 소스 코드를 생성하고 전체 확장성 및 유지 관리 이점을 제공할 수 있으므로 애플리케이션 개발 속도를 크게 높일 수 있습니다.

Go 모듈에서 종속성 충돌을 어떻게 해결할 수 있나요?

종속성 충돌은 go.mod 파일의 replace 또는 exclude 지시문을 사용하여 해결할 수 있습니다. replace 지시문을 사용하면 종속성을 다른 버전 또는 로컬 경로로 바꿀 수 있으며 exclude 지시문은 프로젝트에서 특정 버전이 사용되지 않도록 합니다.

새 Go Module 프로젝트를 설정하려면 어떻게 해야 하나요?

새 프로젝트 폴더를 만들고 명령줄을 통해 탐색한 다음 go mod init 명령과 모듈 경로를 사용합니다. 폴더가 Go Modules 프로젝트임을 나타내는 go.mod 파일을 생성합니다. 파일을 편집하여 종속성을 관리하십시오.

관련 게시물

PWA에서 푸시 알림을 설정하는 방법
PWA에서 푸시 알림을 설정하는 방법
PWA(프로그레시브 웹 애플리케이션)의 푸시 알림 세계를 살펴보세요. 이 가이드는 풍부한 기능을 갖춘 AppMaster.io 플랫폼과의 통합을 포함한 설정 과정을 안내해 드립니다.
AI로 앱 사용자 정의: AI 앱 제작자의 개인화
AI로 앱 사용자 정의: AI 앱 제작자의 개인화
코드 없는 앱 구축 플랫폼에서 AI 개인화의 힘을 살펴보세요. AppMaster가 AI를 활용하여 애플리케이션을 맞춤화하고 사용자 참여를 강화하며 비즈니스 성과를 개선하는 방법을 알아보세요.
모바일 앱 수익화 전략을 실현하는 열쇠
모바일 앱 수익화 전략을 실현하는 열쇠
광고, 인앱 구매, 구독 등 검증된 수익 창출 전략을 통해 모바일 앱의 수익 잠재력을 최대한 활용하는 방법을 알아보세요.
무료로 시작하세요
직접 시도해 보고 싶으신가요?

AppMaster의 성능을 이해하는 가장 좋은 방법은 직접 확인하는 것입니다. 무료 구독으로 몇 분 만에 나만의 애플리케이션 만들기

아이디어를 실현하세요