본문 바로가기

Backend6

DataDog 연동기 (1) with Signoz, Otel 아마 무조건 나랑 같은 경험을 할 사람은 없을거라 생각한다회사에서 기존 사용하던 signoz를 갈아타고 datadog을 연동하는 작업을 맡게 되었다다른 서버들은 datadog agent를 사용하여 간단하게 apm과 service를 확인하는 과정을 거치고 있었다하지만 내 go 서버는 문제가 있었는데...문제 1.. Signoz - Otel일단 우리 파트에서는 모니터링 툴이 올해 말에 결제가 된다는 이야기를 듣고, 그 전까지 사용할 무료 툴이 뭐가 있는지 찾아 보게 되었다그 중 signoz라는 모니터링 툴을 알게 되었고, otel을 통해 모니터링이 가능하다는 이야기를 들었다그렇기 때문에 우리 파트는 signoz - otel을 이용하여 모니터링 작업을 시작하였고, 생각보다 만족스러운 결과와 활용을 통해 서비스.. 2025. 10. 24.
회사 서버 언어를 Go로 바꾸면서...(1) 2024년 7월 이번에 들어간 회사의 팀에서 Spring 서버를 리팩토링하게 되는 계기가 있었다 그 당시 신입으로서 일이 없는 나에게 Spring서버를 어떻게 리팩토링 할 지 언어와 프레임워크를 비교하고, 분석하라는 명령이 떨어졌다 그 당시 나의 선택은 Spring Boot ( Java or Kotlin )였으나 협력사에서 임시로 주 기능만 작동하는 Go 코드를 Fiber를 기반으로 작성을 했다고 해서, 총 3개를 분석하였다 직접 결과를 보여드릴 수는 없으나, 성능차이가 최대 5배 이상의 tps를 보여주는 것이었다솔직히 믿기지 않았기에, 여러번 테스트를 하고, 확인을 해보았으나 Go가 압도적인 성능 차이를 보여주는 것이었다... 이렇게 된 이상 분석결과 상으로는 Go를 하는 것이 맞다는 결과를 내게 되지.. 2025. 6. 20.
[Bug Fix] GO - Random() - thread unsafe 이슈 상황현업에서 서버를 Spring -> Go로 리팩토링을 진행 했었다여기서 생겼던 이슈들 중 기억에 남는 이슈여서 적어본다로직서버 로직중 라우팅을 해야하는 로직이 존재 하는데(어떤 광고 서버로 라우팅을 할지 결정), 이 로직을 간단히 말하자면A: 50 B: 40 C:10으로 값이 들어온다면(DB에 존재 - 해당하는 기준에 맞추어 여러개가 존재) 라우팅을 통해 A에 50% 확률로 보내고, B는 40%, C는 10% 확률로 보내는 라우팅 기능을 하는 것이다이 기능을 위해서 우리는 Random 함수 기능을 사용했다! ( Spring 원본 코드에도 존재하는 로직 )Random에서 0에서 99 사이의 값이 나오게 하고 +1을 하여 1~100의 랜덤 숫자를 뽑은 후, A의 50부터 빼면서 계산하는 것이다 ( 랜덤 값.. 2025. 6. 19.
Node.js 동작 원리 Node.js 배경 원래 JS는 브라우저 위에서만 작동이 가능했다. 이게 싫어서 브라우저 말고도 다른 환경에서도 돌려보고자 노력을 하였지만 JS의 실행속도 때문에 사실상 불가능 했다고 한다. 그러나 구글이 V8엔진을 사용하면서 크롬을 공개하자, 180도 달라지기 시작하였다. 오픈소스에 엄청난 속도를 보여주는 V8엔진이 나오자마자 이 V8엔진을 기반으로하는 노드 프로젝트를 시작했다! 그래서 Node.js는 JS기반으로 만들어졌다. JavaScript이름으로 유추하다 싶이 스크립트 언어이기에, 즉 특정한 프로그램 내에서 동작하는 프로그램이어서 Node나 브라우저 같은 프로그램이 필요로 하다. 그래서 저번 글에서 브라우저 기반을 설명을 드렸고, Node 기반을 이번에 설명할 것이다 Node는 자체에 내장된 웹.. 2022. 12. 26.
728x90