go

카테고리 없음

Go 개발자 필독 문서(1/2) - Effective Go

Go는 유연하고 이해하기 쉬운 언어입니다. 허들이 낮아 Go의 문법을 익히고 입문하기 매우 쉽죠. 그럼 Go의 문법을 파악하고 Advanced가 되기 위해 어떠한 것들을 알아야 할까요? Effective Go Go는 언어론적으로 굉장히 유연한 언어이지만 적지않은 역사가 생기며 확립된 여러 규칙이 있습니다. Effective Go라는 문서로 정리되어 있습니다. 무려 Go Official Document 입니다. Go 를 더 쉽게 이해하는 것을 방해하지 않으려면 위의 규칙을 지키는것이 매우 중요합니다. 여기에는 Go의 naming 부터 시작하여 다양한 관습과 규칙, 스킬들이 정리되어 있습니다. Go 프로젝트 기여를 위해서는 이러한 규칙을 파악하는것은 필수입니다. 초급자가 아니더라도 안읽어 보신 분은 필독을 ..

Programming/Go

Go/Golang이 느려지는 이유와 성능 향상

1. GC(Garbage Collection) Go는 개발하기 편하지만 GC의 사용으로 성능에 문제가 생길 수 있습니다. Go는 일반적으로 확보된 메모리 크기가 2배가 될때 GC를 수행합니다. (아래 포스팅의 5. Go GC Pacing 부분을 참고하세요) Go/Golang Memory Management 이번엔 Go의 메모리 관리에 대해 정리해보려 합니다 Go가 1.17이 Release되는 현재 시점에서 해당 내용에 관해 국내에서 정리된 문서가 없는 것 같습니다 (몇가지 번역 문서는 존재하는것 같습니다) syntaxsugar.tistory.com 성능에 영향을 줄이려면 GC의 수행을 줄이는게 좋습니다. 먼저, 메모리를 미리 확보해두는 방법이 있습니다. sync.Pool을 사용하여 추가 메모리 할당 없이..

Programming/Go

Go/Golang - Visualizing Concurrency

안녕하세요! 요즘 회사에선 프로덕션 개통이 한창이고, 또 개인적으로 이것저것 준비하다보니 너무 바빠서 포스팅이 제대로 안되고 있습니다...ㅎㅎ 원래는 밤새서라도 한두개 포스팅했었는데 그럴시간도 없네요. 개인적으로 포스팅할 거리가 생기면 메모는 확실히 해두고 있습니다. 시간나면 정리해서 모두 포스팅으로 바뀔예정! 이번엔 Reddit에서 Go관련 글을 Subscribe하다가 재밌는 글하나 발견해서 공유합니다. 2016년에 나온 내용이지만 전 이제야 봤는데 재밌네요. https://divan.dev/posts/go_concurrency_visualize/ Visualizing Concurrency in Go · divan's blog Posted on Jan 24, 2016 divan.dev 위에 나온 Go ..

Programming/Go

Go/Golang Module 정리(작성 중)

Go는 버전이 오르면서 dependeny 관리 기능에도 꾸준히 향상이 있어왔습니다. 1.18 beta가 나온 현재시점에서 사용하게 되는 go mod 명령을 쓰기좋게 정리합니다. go mod go는 mod라는 툴을 사용해 dependency 관리를 자동화합니다. GOPATH가 아닌곳에서 go build를 수행하려면 mod를 만들어야 합니다. go mod init {MODULE} 을 입력하여 모듈을 생성하고 외부 라이브러리인 경우 go get을 통해 해당 dependency를 로컬에 다운로드합니다. 이후, go mod tidy를 수행하면 go.mod 파일이 위치한 해당 디렉터리에 Dependency들을 설정합니다. 이게 일반적인 사용 형식이고, go 코드 모듈 생성 go mod init {MODULE_PAT..

Programming/Go

Go/Golang Test

보통 TDD(Test Driven Developmen) 까진 안 해도 기본적인 틀을 갖추면 테스트를 병행해서 진행하는 편입니다 토이 프로젝트 기본적인 형태가 갖춰져서 우리의 소중한 동반자 [테스트]를 작성하면서 진행하려고 합니다 테스트는 안정성이 중요한 상용 프로젝트에서 가장 중요한 부분이라고 볼 수 있습니다 안정적이지 않은 App과 장애 발생은 서비스 가용성을 보장하지 못하게 되고 이는 단순한 비용 손해뿐만 아니라 가장 중요한 고객의 신뢰 손실까지 이어집니다 기업 입장에서 고객 신뢰성 상실은 가장 큰 손해로 이어지기 때문에 개발자들은 수많은 테스트들과 이중화 구성 등 만발의 준비를 합니다 높은 안정성 보장을 위해 테스트 케이스를 먼저 작성하는 TDD 방식의 개발도 채택되고 있습니다 위에서 말했듯 테스트..

Programming/Go

Go/Golang awesome-go

go에서 사용할 수 있는 framework, library, software 소스코드들의 리스트가 정리되어 있습니다 계속 관리도 되고 있네요! Survey 시에 유용한듯! A curated list of awesome Go frameworks, libraries and software GitHub - avelino/awesome-go: A curated list of awesome Go frameworks, libraries and software A curated list of awesome Go frameworks, libraries and software - GitHub - avelino/awesome-go: A curated list of awesome Go frameworks, libraries..

Programming/Go

Go/Golang Long Time Performance Test - Memory Leak 해결 과정

장시간 서비스하는 Production 환경의 프로그램에서 특히 유의해야 하는 녀석들이 있죠 이번에 얘기할 녀석은 힘순찐 메모리 누수(Memory Leak)입니다 처음엔 안 보이다가 한창 돌아가면 나타나는 녀석이죠 처음부터 잘 개발했으면 문제가 없겠지만 개발이란 게 그렇지 만만하진 않습니다 장시간 성능 시험을 돌리면서 발생한 Memory Leak을 발견하고 해결한 과정을 가볍게 공유합니다:) 상황 회사에서 SKB 관련 상용 서비스 GW 개발을 하고 있습니다 전부 C로 설계된 상황에 AS 프로세스와 gRPC로 연동하는 gRPC Interface 블럭만 Go로 설계되어 제가 담당하게 되었습니다 선행과제 개발을 하면서 k8s나 Go에 대한 호감이 MAX에 이를 쯤이라 재밌는 기회라 생각했지만 Production..

Syntax Sugar
'go' 태그의 글 목록