24년 3월 전반기 뉴스레터

·

4 min read

강력하고 빠른 우선 순위 큐!

디스크 백업 기능이 포함된!

필요하십니까?

JustinTimperio/gpq: GPQ is a high performance embeddable double priority queue with complex priority ordering guarantees (github.com)


고 프로그램에 내장시킬 수 있는 분산 캐시 라이브러리는 어떤가요?

레디스를 두는 의미가 퇴색되는 건 아니지만, 데이터의 실시간 정합성이 중요한 케이스가 아니라면 충분히 유용할 것으로 기대됩니다.

buraksezer/olric: Distributed in-memory object store. It can be used as an embedded Go library and a language-independent service. (github.com)

EchoVault/EchoVault: Distributed in-memory data store with an emphasis on speed and reliability. (github.com)


자기만의 미디어 라이브러리 갖고 싶지 않나요?

전 과거 Lux라는 웹 라이브러리 셋을 구성할 때, 미디어도 서빙할 수 있는 기능을 추가하고 싶었습니다.

그때 생각해보니 저장이나 다른 무언가에 대한 대비가 하나도 안 되어 있었네요.

그런 저 같은 사람들을 위한 솔루션!

zoriya/Kyoo: A portable and vast media library solution. (github.com)


고에 드디어 QUIC가 std로!

들어옵니다.

quic package - golang.org/x/net/quic - Go Packages


이미 고에는 엑셀을 편집할 수 있는 라이브러리가 있습니다.

하지만 docx도 있으면 더 유용하겠군요.

gomutex/godocx: Go library for reading and writing Microsoft Docx (github.com)

qax-os/excelize: Go language library for reading and writing Microsoft Excel™ (XLAM / XLSM / XLSX / XLTM / XLTX) spreadsheets (github.com)


고에서 다른 언어 가져와 쓰기

WASM을 끼얹은

tetratelabs/wazero: wazero: the zero dependency WebAssembly runtime for Go developers (github.com)


최근 추가된 제네릭 슬라이스 패키지에 대해 얼마나 알고 계신 가요?

Robust generic functions on slices - The Go Programming Language


sqlc, 좋은 툴입니다, 그쳐?

postgres도 섹시한 DB구요.

go도 훌륭한 언어입니다.

Go application setup with PostgreSQL, sqlx, goose migrations - YouTube


저는 필드를 좀 더 제대로 보고 싶습니다

마치 프로그램에 X-ray라도 찍은 듯이요.

yassinebenaid/godump: Go library to dump variables and data structures. (github.com)


postgresql을 이용할 때 장애 대응을 어떻게 하시나요?

저는 RDB는 레플리케이션 외에는 그다지 좋은 선택지가 막 떠오르진 않습니다.

샤딩도 장애로부터 데이터를 완전히 보호하는 것과는 거리가 있는 선택지니까요.

Writing a Postgres Logical Replication System in Golang | DoltHub Blog


데이터 전송을 위한 객체의 스펙은 명시적이야 합니다

이 분야에서 가장 유명한 건 프로토콜 버퍼라고 생각합니다.

그리고 잘 안 쓰이지만 뒤이어 등장한 플랫버퍼같은 게 존재하죠.

또 다른 선택지인 karmen이나 bebop은 또 어떨까요?

Protocol Buffers Documentation (protobuf.dev)

FlatBuffers: FlatBuffers

inkeliz/karmem: Karmem is a fast binary serialization format, faster than Google Flatbuffers and optimized for TinyGo and WASM. (github.com)

Bebop


아마도 저는 B 트리이어야 합니다,

아님 말고.

Prolly Trees | DoltHub Blog


EdgeDB라고 아시나요?

그거 말고, postgres 위에 구성된 그래프 형태의 데이터베이스입니다.

EdgeQL이랑 독자적인 쿼리 언어를 가지고 있으며, 이 언어는 예전 SQL도 잘 모르던 저 조차도 DB를 다룰 수 있게 해준 친절한 친구입니다.

EdgeDB | The post-SQL era has arrived


message queue, 하지만 postgres를 베이스로 한.

postgres만 있으면 그렇게 고성능과 안정성이 필요하지 않다면, nats와 kafka 대신 간단하게 구성해 보는 건 어떤가요??

Devious SQL: Message Queuing Using Native... | Crunchy Data Blog

LISTEN & NOTIFY 명령으로 구현하는 비동기식 작업: 한국 포스트그레스큐엘 홈페이지 (postgresql.kr)


시스템 콜을 이용해서 더 빠른 패킷 전송 구현 하기

High-Speed Packet Transmission in Go: From net.Dial to AF_XDP (toonk.io)


Go 1.22에 for range에 올릴 수 있는 함수 스펙이 정의 되었습니다

아직 실험적 단계에 지나지 않지만, 머지 않아 알아야 할 수 있으니 배워 볼까요?

Exploring Go's Functional Iterators (Range-over Functions) | Perfects.Engineering Blog


고에는 사실 매우 성능이 좋은 웹 프레임워크가 있습니다

근데 중국에서 만든 거 아니냐 구요?

걱정 되면 오픈소스니까 검사하고 쓰시면 되죠.

gnet - A high-performance, lightweight, non-blocking, event-driven networking framework written in pure Go | gnet


더 확실한 추적을 위해!

More powerful Go execution traces - The Go Programming Language


OpenAPI를 생성하는 웹 프레임워크

go-fuego/fuego: Golang Fuego - web framework generating OpenAPI 3 spec from source code (github.com)


Go 1.22에는 라우팅 관련 기능도 추가되었습니다

서드파티에게 큰 위협이에요.

Routing Enhancements for Go 1.22 - The Go Programming Language


노션과 옵시디언, 좋다고 생각합니다.

전 못 쓰지만요.

Logseq: A privacy-first, open-source knowledge base

zadam/trilium: Build your personal knowledge base with Trilium Notes (github.com)

Outline – Team knowledge base & wiki (getoutline.com)


Super Fast Web Framework in Zig

zigzap/zap: blazingly fast backends in zig (github.com)