[Go] Prometheus 대시보드를 활용한 메트릭 분석 가이드
·
Language/Go
~Go 프로파일링 적용 시리즈 - 배치 서버 ver.~[1] 배치 서버 OOM 분석을 위한 메트릭 설계와 프로파일링 전략[2] Prometheus 라이브러리를 활용한 Go 메트릭 구현[3] Prometheus 대시보드를 활용한 메트릭 분석 가이드🟨 OOM 발생 시나리오 분석OOM 발생 원인을 찾기 위해 다음 시나리오를 고려해볼 수 있습니다.▫️ 시나리오 1 : 순간적인 메모리 급증아주 짧은 순간에 발생하는 메모리 급증 시나리오입니다. 평소에는 메모리 사용량이 낮다가, 특정 순간에 시스템이 감당할 수 없을 만큼 한꺼번에 많은 메모리를 OS에 요청할 때 발생합니다. 예를 들어, 특정 작업을 위해 수백 개의 고루틴을 띄우는 순간이 있습니다.Prometheus는 보통 수 초~ 수십초(scrape interva..
[Go] 캔들 차트 적재 서버 후속편: Refactoring (2)
·
Project
If it stinks, change it. ~블록체인 플랫폼 실시간 ohlcv 차트 개발기 시리즈~[1] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 1. 문제편[2] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 2. 해결편[3] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편: Refactoring (1)[4]블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편:Refactoring (2)[5] 블록체인 플랫폼에서 실시간 ohlcv 차트 적재 서버 후속편: Restructuring#3. 차트 재적재 로직 분리🔹 AS-IS (1): ChartManager에 집중된 책임 2 + α앞서 Chart..
[Go] 캔들 차트 적재 서버 후속편: Refactoring (1)
·
Project
If it stinks, change it. 네.. 그래서 합니다..~블록체인 플랫폼 실시간 ohlcv 차트 개발기 시리즈~[1] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 1. 문제편[2] 실시간 ohlcv 차트(캔들 차트) 데이터 적재 서버 개발 in 블록체인 플랫폼 - Part 2. 해결편[3] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편: Refactoring (1)[4] 블록체인 플랫폼 실시간 ohlcv 차트 적재 서버 후속편: Refactoring (2)[5] 블록체인 플랫폼에서 실시간 ohlcv 차트 적재 서버 후속편: Restructuring🟧 들어가며앞선 시리즈에서 소개한 코드를 개선하게 되었다. 이게 회고의 장점 중 하나..
[Go] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학
·
Language/Go
~Go Context 시리즈~[1] Context에 관한 고찰 - 1 : Context 란[2] Context에 관한 고찰 - 2 : Context의 중요성과 고루틴 누수[3] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학이전 시리즈에서 우리는 Context가 무엇이고 Context를 이용해 개별 작업의 생명 주기를 어떻게 제어해야 좀비 고루틴을 방지할 수 있는지 살펴보았다. 이제 마지막으로, Context가 애플리케이션 전체의 생명주기를 어떻게 관장하며 ~우아한 종료~ 라는 현대 서버 애플리케이션의 필수 덕목을 구현하는지 살펴보려고 한다. 우아한 종료는 단순히 서버를 끄는 행위를 넘어, 시스템의 안정성과 데이터의 정합성을 보장하는 섬세한 오케스트라 지휘와 같다. 그리고 그..
[Go] WaitGroup vs ErrGroup 비교
·
Language/Go
우선 간단하게 내용만 정리하고 나중에 뼈와 살을 보충 예정입니다. 요약특징sync.WaitGrouperrgroup.Group목적여러 고루틴이 완료될때까지 기다리기여러 고루틴이 완료될때까지 기다리되, 오류 처리와 작업 취소를 통합 관리오류 처리내장 기능 없음.오류를 전달하려면 별도의 채널(channel) 등을 직접 구현 필요내장 기능 있음.Wait() 메서드가 가장 먼저 발생한 error를 반환작업 취소내장 기능 없음.context.Context를 직접 전달하고 관리해야함.errgroup.WithContext를 통해 자동 취소 기능 제공코드 복잡성단순하지만, 오류/취소 처리를 추가하면 코드가 복잡해짐기능이 많지만, 오히려 코드는 더 간결하고 명확해짐패키지 위치syncgolang.org/x/sync/errg..
[Go] Context에 관한 고찰 - 1
·
Language/Go
~Go Context 시리즈~[1] Context에 관한 고찰 - 1 : Context 란[2] Context에 관한 고찰 - 2 : Context의 중요성과 고루틴 누수[3] Context에 관한 고찰 - 3 : Graceful Shutdown의 미학Go 언어로 서버를 만들다보면 우리는 필연적으로 context라는 단어와 마주하게 된다.나도 그랬듯이, 아마 많은 주니어 개발자들이 context를 단순히 타임 아웃이나 취소 신호를 전달하는 도구 정도로 이해하고 넘어가는 경우가 많다. 하지만 context의 본질은 그보다 훨씬 깊은 곳에 있으며, Go가 지향하는 동시성 철학의 핵심을 담고 있다.이 시리즈에서는 context가 왜 그토록 중요한지, 그리고 실제 대규모 프로젝트에서 context 생명주기를 어..