Skip to main content

Command Palette

Search for a command to run...

23년 1월 첫번째 뉴스레터

Updated
•3 min read•View as Markdown

여러분들은 고를 왜 하시나요? 아니면 아직 해보신 적이 없으신가요?

아직 시작하지 않았다면, 지금 당장 고를 시작해야하는 이유 5가지를 소개해 드립니다.
지금부터 Go언어를 배워야 하는 5가지 이유 (Golang) : 네이버 블로그 (naver.com)


"당신들은 구글이 아니다."

Oz Nova는 미디움에 "당신들은 구글이 아니다"라는 자극적인 제목의 아티클을 게시했습니다.
당장 문제 해결을 위해 여러 어렵고 복잡한 솔루션을 택하기 보다, UNPHAT을 시도하길 권했습니다.
그가 그렇게 권장하는 UNPHAT은 무엇을 의미하는 걸까요?
You Are Not Google. Software engineers go crazy for the… | by Oz Nova | Bradfield (bradfieldcs.com)


고에서 쓸 수 있는 인메모리 캐시

고 언어로 짜여진 프로그램 내부에서 쓸 수 있는 간단하지만, 빠르고, 편리하고, 동시성에 안전한 캐시 라이브러리가 필요했던 적 없으신가요?
ristretto는 빈 인터페이스(interface{})를 캐싱할 수 있는, 구조체의 인스턴스를 별도 인/디코딩 없이 캐싱할 수 있는 편리한 캐시 라이브러리입니다.
dgraph-io/ristretto: A high performance memory-bound Go cache (github.com)


고 언어에 내장할 수 있는 빠른 key-Value Store 라이브러리

Badger는 LSM 트리를 기반으로 만들어진 KV Store입니다.
당연히 디스크에 기록되는 영속적인 데이터베이스이며, 동시성에 MVCC를 지원하므로 매우 높은 읽기 성능을 자랑합니다!
가볍게 쓸만한 인 앱 KV Store가 필요하다면 Badget는 어떤가요?
dgraph-io/badger: Fast key-value DB in Go. (github.com)


이런 ORM은 어떤가요?

고 언어 생태계의 ORM에는 GORM, XORM, ent-go가 주로 쓰였습니다.
이런 ORM 라이브러리들이 있음에도 불구하고, 고 언어 커뮤니티에서는 ORM에 대한 끊임 없는 질문과 아쉬움이 나오고 있었죠.
이 시점에 다음 3개의 ORM 라이브러리들은 틈새 시장을 파고들 수 있을까요?
kamalshkeir/korm: KORM is an Elegant and Blazingly Fast ORM using generics and network bus (github.com)
go-jet/jet: Type safe SQL builder with code generation and automatic query result data mapping (github.com)
gokch/ornn (github.com)


힙 얼록을 거의 하지 않는 레디스 클라이언트

레디스 클라이언트는 보통 go-redis를 주로 사용하였습니다.
하지만 역시 개발자라면 더 나은 생산성과 성능을 낼 수 있다면, 그 라이브러리에 관심을 가질 수밖에 없다고 생각합니다.
그럼 go-redis보다 훨씬 빠르면서, 힙 얼록을 거의 하지 않는 레디스 클라이언트가 있다면 써볼만 하지 않을까요?
rueidis라는 레디스 클라이언트는 0.0.90 버전에 almost zero allocation을 달성 했습니다!
버전이 너무 낮은 거같다구요? ㅠ.ㅜ
(1) rueidis v0.0.90: an almost zero allocation redis client library : golang (reddit.com)
rueian/rueidis: A fast Golang Redis client that supports Client Side Caching, Auto Pipelining, Generics OM, RedisJSON, RedisBloom, RediSearch, etc. (github.com)


ngrok으로 바로 서빙하기

로컬 환경에서 실행 중인 서버를 외부 인터넷으로 터널링 해주는 ngrok에서 고 언어 전용 라이브러리를 릴리즈했습니다.
net/http에 간단한 설정을 추가함으로 쉽게 터널링을 할 수 있게 해줍니다.
Introducing ngrok-go: Ingress network straight from your app


고와 러스트의 공생

지난 2022년 크리스마스에 LondonGophers에서 러스트 코드를 고에서 호출하는 방법에 대한 영상을 올렸습니다.
서로 다른 두 플랫폼의 코드를 융합하기 위한 시도, WASM을 활용한 프레젠테이션으로 미래의 개발 환경을 구경해 보세요!
Go and Rust: Together at Last - Barnaby Keene - Go x Rust: A Very Scalable Christmas 2022 - YouTube


SourceHut, 고 모듈 미러를 블랙리스트에 올린다

SourceHut이 2023년 2월 24일에는 고 모듈 미러에 대한 지원을 중단하기로 했습니다.
SourceHut는 모든 고 모듈을 고퍼 개개인이 다운로드 받을 때마다 google의 요청을 수반하고, 이 트래픽이 각 모듈 마다 하루 최대 4GiB까지 기록되어, 과도한 트래픽이 생성된 다고 합니다.
SourceHut will blacklist the Go module mirror

More from this blog

[GDC] Weekly Newsletter September 2nd

[GDC] Weekly Newsletter September 2nd Go 애플리케이션 성능 향상: 프로파일 기반 최적화 활용하기 소개 Go 컴파일러는 실행 시 어떤 코드가 자주 사용되는지 알 수 없기 때문에, 정적인 추측에 의존하여 최적화를 수행합니다. 이로 인해 실제 실행 환경에서 성능이 저하될 수 있습니다. 프로파일 기반 최적화(PGO)는 Go 컴파일러에게 애플리케이션 실행 프로파일을 제공하여 컴파일러가 더 정확한 최적화를 수행할 수 있...

Sep 8, 202417 min read

[GDC] Weekly Newsletter September 1st

Go 언어에서의 모델 검증 요약 Go 언어에서 모델 검증은 소프트웨어 개발에서 필수적인 부분입니다. 적절한 검증을 통해 데이터 유효성을 보장하고 이후 작업을 간소화할 수 있습니다. 이 글은 Go 언어에서 모델 검증을 수행하는 다양한 방법과 validator v10 라이브러리에 대해 설명합니다. 소개 Go 언어는 강력한 타입 시스템을 제공하지만, 모델 검증을 위한 내장 기능은 부족합니다. 따라서 개발자는 직접 검증 로직을 작성하거나 외부 라이브러...

Sep 1, 202428 min read

[GDC] Weekly Newsletter August 5th

BleuIO와 Go를 사용하여 BLE 애플리케이션 구축하기 Summary 이 글은 BleuIO USB 동글과 Go 프로그래밍 언어를 사용하여 Bluetooth 저에너지(BLE) 개발을 시작하는 방법을 단계별로 안내합니다. BleuIO는 사용하기 쉬운 AT 명령어로 BLE 애플리케이션 개발을 단순화하는 다재다능하고 사용자 친화적인 BLE USB 동글입니다. Description 이 글은 개발 환경을 설정하고 BLE 동글과 상호 작용하는 간단한 ...

Aug 25, 202435 min read

# [GDC] Weekly Newsletter August 3rd

본 아티클은 시험삼아 모두 Gemini Flash로 생성했습니다. 잘못된 부분은 제 메일로 알려주셨으면 합니다! gRPC over HTTP/3: 차세대 분산 시스템을 위한 혁신 요약 gRPC over HTTP/3는 분산 시스템의 성능과 효율성을 향상시키기 위한 새로운 기술입니다. gRPC는 이미 빠르고 효율적인 RPC 프레임워크로 알려져 있으며, HTTP/3는 최신 HTTP 프로토콜로서 낮은 지연 시간과 높은 성능을 제공합니다. 이 조합은 네...

Aug 18, 202461 min read

Go 언어 뉴스레터: //go:linkname 사용 제한에 대한 논의

이 기사는 Gemini를 이용해 작성된 것입니다. 토론 Go 표준 라이브러리 내부(특히 런타임 내부)에 접근하기 위해 //go:linkname을 과도하게 사용하면 Go 생태계의 많은 패키지에 의존하는 패키지가 표준 라이브러리 내부를 변경할 때 문제가 발생할 수 있습니다. 예를 들어, https://go.dev/cl/583756는 github.com/goccy/go-json이 런타임의 내부 타입 API를 대부분 복사했기 때문에 해당 패키지를 ...

Jun 22, 20241 min read
G

Go Developer Community

28 posts