[golang] 1.27에서 추가된 표준 uuid 패키지

서론
UUID는 애플리케이션에서 데이터를 식별하기 위한 용도로 널리 사용되고 있다.
하지만 Go 언어에서는 UUID를 처리하기 위한 표준 패키지가 제공되지 않았기 때문에 UUID가 필요한 경우 외부 패키지를 사용하는 경우가 많았다.
Go 1.27부터는 RFC 9562를 지원하는 표준 uuid 패키지가 추가되었다. 이제 UUID를 사용하기 위해 별도의 외부 패키지를 추가하지 않아도 된다.
특히 UUID를 단순히 식별자 생성 용도로 사용하고 있었다면 별도의 외부 의존성 없이 표준 패키지만으로 처리할 수 있게 되었다.
의존성이 필요했던 시절
기존 Go 프로젝트에서 UUID를 생성하려면 외부 패키지를 사용하는 것이 일반적이었다.
대표적으로 github.com/google/uuid를 사용하면 다음과 같이 UUID를 생성할 수 있다.
package main
import (
"fmt"
"github.com/google/uuid"
)
func main() {
fmt.Println("Google UUID:", uuid.NewString())
}
출력결과
Google UUID: 28735f45-2611-447a-a67e-6c6db0d80921
UUID를 생성하는 코드 자체는 간단하지만, 이를 위해 프로젝트에 별도의 외부 패키지 의존성을 추가해야 했다.
실제로 UUID를 단순한 식별자 생성 용도로만 사용하는 경우라면 소스에서 필요한 코드는 uuid.NewString()과 같은 호출 하나인 경우도 흔하다. 그럼에도 UUID 기능을 사용하기 위해 외부 패키지를 의존해야 하는 상황이었다.
표준 패키지 사용
Go 1.27에서는 UUID를 위한 표준 uuid 패키지가 추가되었다.
이제 외부 패키지를 추가하지 않고 표준 패키지만으로 UUID를 생성할 수 있다.
package main
import (
"fmt"
"uuid"
)
func main() {
fmt.Println("Go Standard UUID:", uuid.New().String())
}
출력결과
Go Standard UUID: cb365ddd-4911-4483-8887-af87250d13d6
단순히 UUID를 생성하는 것뿐만 아니라 UUID의 파싱과 문자열 변환 등 기본적인 UUID 처리 기능도 표준 패키지에서 제공한다.
따라서 UUID를 사용하기 위해 별도의 외부 패키지를 추가하지 않고도 UUID를 다루는 기본적인 기능을 표준 패키지 안에서 처리할 수 있게 되었다.
외부 패키지를 계속 사용해야 하는 경우
표준 uuid 패키지가 추가되었다고 해서 기존에 사용하던 모든 UUID 관련 외부 패키지를 반드시 제거해야 하는 것은 아니다.
기존 프로젝트에서 표준 패키지에서 제공하지 않는 특정 기능을 사용하거나 UUID v4/v7 외 버전이 필요하다면 기존 패키지를 계속 사용하는 것이 필요할 수 있다.
따라서 기존 프로젝트에서 외부 패키지를 사용하고 있다면 단순히 의존성을 제거하기보다는 현재 사용하고 있는 기능이 표준 uuid 패키지로 충분한지 확인한 후 교체하는 것이 좋다.
결론
Go 1.27부터는 UUID를 위한 표준 uuid 패키지가 제공된다.
특히 UUID를 단순히 식별자 생성 용도로 사용하고 있었다면, 이제 별도의 외부 패키지를 추가하지 않고 표준 패키지만으로 해결할 수 있다.
기존에 UUID 하나를 생성하기 위해 추가했던 외부 의존성이 있다면, Go 1.27부터는 표준 uuid 패키지를 사용해 의존성을 하나 줄이는 것도 고려해볼 수 있다.
'Language > Go' 카테고리의 다른 글
| [golang] fasthttp! 속도를 뒤집어 놓으셨다 (1) | 2024.11.26 |
|---|---|
| [golang] 타입 스위치(type switch)로 interface{} 값 처리하기 (0) | 2024.11.25 |
| [golang] panic 없이 interface{} 타입 변환하기 (0) | 2024.11.24 |
| [golang] Base64 인코딩과 디코딩 처리하기 (0) | 2024.11.23 |
| [golang] 런타임에 콜 스택 출력하기 (1) | 2024.11.22 |