반응형 분류 전체보기159 야크 털 깎기: golang으로 구현하는 로그 수집기 왜 구현했는가?고루틴과 채널이라는 개념을 가진 golang 학습을 위해,코드를 직접 작성하면서 배워보자는 생각에 지선생님(GPT)에게 작은 프로젝트를 추천받아 시작하게 되었습니다.어떻게 구현했는가?아래 서술된 단계에 맞춰 기능을 하나씩 추가하며 구현했습니다.기본적인 파이프라인마지막 읽은 곳을 저장필터링옵션을 config로멀티 input과 output, 그리고 filterbatch 작업처리 결과를 확인배포를 위한 설정TL;DR get code!기본적인 파이프라인로그 콜렉터는 아래의 필수적인 파이프라인을 가져야 합니다.로그파일(.log) -> 로그 읽기 -> 필터링 -> 로그 처리 (저장, 출력, 전송 등)이때 golang에는 편리한 문법과 장치가 있는데 바로 고루틴과 채널입니다.고루틴은 함수 실행 시 메인.. 2025. 8. 1. python으로 간단한 In-Memory Key-Value DB 만들기 계기는 아래 스레드 글이었다. 평소 Redis 같은 in-memory DB를 쓰면서 “와, 진짜 편하다”라고만 생각했지, 그 안에서 무슨 일이 일어나는지 깊게 고민해 본 적은 없었다. 그러다 어느 날 문득 “나도 비슷한 걸 한번 만들어볼까?” 물론 Redis를 똑같이 구현할 자신은 없다. 검색해 보니 Redis는 C로 짜여 있고, 내부 구조도 엄청나게 복잡하더라...Python으로 그걸 따라잡겠다는 건 터무니없는 도전이다. 그래서 목표를 간단히 잡았다.Python으로 간단한 key-value in-memory DB를 만들어보자. 이 문서에서는 이 DB를 설계하고 구현하는 과정을 챕터별로 나눠 정리한다. 기본 기능부터 시작해 TTL, 트랜잭션, 백업/복원, 확장 명령어, 사용자 명령 기록, 서버-클라.. 2025. 7. 13. fluent-bit 를 이용해 로그 모으기 배경: Docker Swarm 환경에서의 로그 수집회사에서 서버 이전 작업을 진행하면서 기존 서비스들을 Docker Swarm 위에 올리는 작업을 수행하게 되었습니다. 동시에 구성해 놨던 Loki + Grafana 환경에 전체 컨테이너 로그를 모니터링할 수 있도록 연동하는 과제가 주어졌습니다. fluent-bit란?fluent-bit는 lightweight 로그 수집 도구로, 다양한 로그 소스를 수집한 뒤 태그를 붙이고, 필터링하여 원하는 로그 저장소로 전송할 수 있도록 도와주는 log collector입니다. 공식 사이트에서는 다음과 같이 소개하고 있습니다. 로그를 수집하고, tag를 붙이고, 필터를 통해 가공한 뒤 Loki, Elasticsearch, Kafka, Splunk 등 다양한 저장소로 전송.. 2025. 6. 16. Docker & Registry 설치 및 문제 해결 후기 이번 포스팅에서는 운영서버에 Docker와 Registry를 설치하면서 겪었던 문제와 그 해결 과정을 공유하려고 합니다. 개발서버에서는 별문제 없이 진행됐지만, 운영서버에서는 몇 가지 예상치 못한 이슈가 발생했습니다. 같은 문제를 겪고 있는 분들에게 도움이 되길 바랍니다.1. 운영서버 Docker 설치 시 문제운영서버에 Docker를 새로 설치할 때 몇 가지 의존성 관련 문제에 직면했습니다.발생한 문제Docker 설치 중 다음과 같은 의존성 오류 발생:(docker-ce-stable) Requires: slirp4netns >= 0.4(docker-ce-stable) Requires: fuse-overlayfs >= 0.7해결 방법직접 패키지 설치 시도: # slirp4netns 0.4v 설치 sudo .. 2025. 2. 12. Docker Registry를 이용해 사설 private image서버 설정 개발 서버에 Docker를 설치하고, Jenkins에서 Docker를 제어하기 위해 Registry 설정이 필요하다는 지시를 받았습니다.이를 통해 CI/CD 파이프라인을 구축하며, 구성시 예상 시나리오는 다음과 같습니다.회사 GitHub에 프로젝트 파일과 Dockerfile 업로드Jenkins가 이를 가져와 Dockerfile을 이용해 이미지를 생성생성된 이미지를 Registry에 등록Jenkins에서 원격으로 컨테이너를 제어 1) stop 기존 container (존재 시)2) rm 기존 container (존재 시)3) private registry 서버에서 pull image4) 받은 image run container 오늘은 이 과정 중에서 Docker Registry가 무엇인지 간략하게 알아보.. 2025. 1. 11. PLG stack 찍먹! 현 문제점현재 회사의 로그 관리는 따로 되지 않고 있다.문제가 생기면 해당 서버의 로그폴더를 들어가, 문제가 된 일자.log에 들어가서...위에서부터 하나씩 차례대로 읽어볼 수 밖에 없는 구조다.그러다 보니 문제 확인하는데 한세월이 걸린다…이걸 개선하고자 로그시스템 정확히는 plg stack에 대해 짧게 조사한 내용에 대해 적어본다. log 시스템로그시스템은 크게 3가지 흐름? 단계?로 요약이 가능하다. 수집/저장/조회 이렇게 3단계로 볼 수 있다. 시스템을 보기 앞서 자주 쓸 단어부터 정리하자면,로그를 만들어내는 주체를 client, 로그를 저장하고 수집하는 주체를 server,해당로그를 client로부터 server로 전송하는 agent라고 부른다. 방식으로는client 에 agent가 존재해서 ag.. 2024. 11. 21. http API server (w/o spring) 지난번에 이어 과제테스트에 대한 짤막한 구현을 작성해보고자 한다.저번 게시글에서는 springboot로 간단하게 api를 구현했는데short url short url인스타로 시간 열심히 녹이던 중, 재밌는 게시물을 봤다. 취업할 때 회사에서 이런 과제테스트를낸다고 하던데… 이걸보고 심심하던 차 한번 구현해보고 싶어졌다.아래에 텍스트로 다시 정리hoonzi-text.tistory.com 이번엔 좀 당황스러운 경우를 만나 해당 케이스에 대해 적어본다…. 요즘 회사들중 면접 시 과제테스트를 실시하는 회사들에 대비해서 P사에서모의로 테스트 볼수 있게 만들어 놨다. vscode server를 통해 과제 내용을 구현하게 되는데과제테스트를 봐본적 없는 나로서는 해당 환경이 처음이었다.intellij 혹은 ecli.. 2024. 9. 28. spring batch 간략 정리 코드로 보실 분?code → https://github.com/hoonzinope/springbatch-case-test GitHub - hoonzinope/springbatch-case-test: springbatch 기본 구조 작성 및 테스트springbatch 기본 구조 작성 및 테스트. Contribute to hoonzinope/springbatch-case-test development by creating an account on GitHub.github.com 서문배치작업에 대해 학습하라고 하신 팀장님의 명으로 열심히 알아보던 중... 그만 이직에 성공해버리고 말아 중간에 그만하게 되었는데... 많이는 아니지만! 지금까지 작성해 놓은 코드나 내용이 아까워서 그마저라도 적어놓자 싶어 작성하는.. 2024. 9. 17. springboot 에 redis 세션 서버 사용 회사에서 지금 웹 서비스 중에 하나, 서버 이중화 한다고 세션 이중화 방안에 대해 알아보라고 하셔서...팀 내 공유하려고 정리한 사항 블로그에도 살짝. 문제 상황이중화 시 서버별 세션정보 불일치로 로그인 불가해결 방안sticky session웹 서비스 서버가 여러 대 있을 경우, 접속 시 세션이 생성된 서버로만 요청을 보내게끔 구성단점) 여러대의 서버를 둬도 하나의 서버로만 몰릴 가능성 존재session clustering여러 대의 서버의 세션 저장소를 하나로 관리한 서버에 생성된 세션을 다른 서버 세션 저장소에도 복제단점) 세션 생성 시마다 다른 서버에 복제, 메모리 필요, 성능저하 가능성 존재tomcat all-to-all session replicationtomcat 내 delta manager,.. 2024. 9. 1. 이전 1 2 3 4 ··· 18 다음 반응형