Skip to main content

Command Palette

Search for a command to run...

23년 6월 후반기 뉴스레터

Published
3 min readView as Markdown

새로운 빌트인 함수들

go 1.21 릴리즈 캔디데이트가 출시되었습니다.

그와 함께 새로운 릴리즈 노트가 공개되었고, 새로운 내장 함수들도 공개되었습니다!

Built-in functions in Go 1.21 (antonz.org)


카프카와 고로 1억 활성 유저 받기

저는 나름 업무로 고와 NATS로 매우 많은 유저를 받는 서버 군을 받아서 이어서 개발해본 경험이 있습니다.

하지만 결국 다른 곳에서 병목이 생겨서 실패했는데요. 그때도 서버나 메시지큐의 성능적인 문제는 아니었습니다.

그래서 비슷한 이야기를 담고 있는 이 토픽이 흥미롭게 느껴지네요.

How We Scaled to 100 Million Active Users Using Kafka and Golang — Eventual Consistency | by Mohammad Hoseini Rad | Jun, 2023 | ITNEXT


고 언어를 IDL로 쓸 수 없을까?

고 언어의 구조체는 사실 단순하게 쓰라고만 하면 얼마든지 단순하게 쓸 수 있습니다.

동일한 스펙의 JSON을 공유하는 여러 방법은 있지만, 의외로 고를 끼고 있는 서버를 운영한다면 이런 시도가 좋은 방향으로 이어질 수 있을 거라고 생각합니다.

wilhelmguo/typescriptify-golang-structs: Convert your Go structs to TypeScript (github.com)


WASI에서 소켓 통신하기

머지안아 지원은 해주겠지만, 지금 당장, 롸잇나우 WASI에서 소켓 통신을 할 수 있는 라이브러리가 나왔습니다.

stealthrocket/net: Go package implementing WASI socket extensions (github.com)


이제는 고 프로그램도 스토킹을 해야할 시기

여러분들은 자신들이 만든 프로그램이 의도대로 동작하지 않아 곤혹스러울 때가 있었을 겁니다.

이제 곧 저희는 우리가 만든 프로그램이 어떻게 돌아가는 지 파악할 수 있게 될 것입니다.

Execution tracer overhaul (googlesource.com)


뮤텍스와 채널에 대한 이야기

여러분들은 뮤텍스를 자주 쓰나요?
채널을 자주 쓰나요?

저는 양쪽 다 자주 쓰는 편입니다.
채널을 꽤 유용하게 활용했던 기억이 있습니다.
성능은 좀 포기하더라도 채널을 썼을 때 좀 더 스타베이션이 덜 생성된 경험이 있어요.

그 이야기와는 별개로 이번에 소개드릴 아티클은 단순히 채널의 단점에 관한 이야기입니다.

Go channels are bad and you should feel bad | jtolio.com


매우 거대한 맵

혹시 아주 큰 크기의 맵을 만들어야 할 상황이 생기지 않던가요?

물론 전 없었습니다.

이번 아티클은 아주 거대한 맵을 만드는 이야기입니다.
굳이 만들 상황이 없더라도 할당과 관련된 이야기가 있으니 한번 재밌게 읽어 보세요!

Initializing Large Static Maps in Go | DoltHub Blog


구조화된 로깅

고 1.21에는 slog가 추가되었습니다.

이제 막 빌트인으로 합류했다보니 가이드가 필요한 시점입니다.

그런 시기의 깔끔한 가이드가 있어 공유합니다!

About Structured Logging in Go 1.21 - lzap (zapletalovi.com)


제네릭, 제네릭, 제네릭, ...

고퍼 여러분들은 모종의 이유로 인해 사실 제네릭이 여전히 그렇게 익숙하지 않으리라 생각합니다.

저도 막 Option이나 Result를 제외하곤 딱히 써보진 않았습니다.

그런 우리들을 위한 제네릭 가이드, 따란!

Golang Generics: The Future of Go (hackthedeveloper.com)


아니 뭐 이런걸 다...

THE SHOR's ALGORITHM: Factorize Number Fast

gophre/shor: Shor's algorithm (github.com)


파일 동기화 쉽게 하기

예전에 bittorrent silo라는 솔루션이 있었습니다.

토렌트 기술을 이용해 각 머신의 폴더를 동기화 하는 기능이었는데요.

아쉽게도 현재는 찾아보기 어렵습니다.

그래도 일단은 이 솔루션이 사일로만큼의 사용성은 모르겠지만, 어느정도 대안이 되어 주지 않을까요?

no-src/gofs: A cross-platform real-time file synchronization tool out of the box based on Golang (github.com)

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