소개
독삼입니다. 웹 서비스, 백엔드 데몬, 데이터 수집 파이프라인, LLM 서비스, 그리고 그것들이 올라가는 서버까지를 한 사람이 이어서 만듭니다.
셀프호스팅한 GitLab 에서 저장소 90개를 혼자 관리합니다. 그중 Go 를 쓰는 저장소가 17개, TypeScript 를 주 언어로 쓰는 저장소가 19개, 셸을 주 언어로 쓰는 저장소가 15개입니다. 혼자 관리하다 보니 언어가 역할별로 수렴했습니다.
서비스는 루트 권한 없는 컨테이너로 띄우고, 리버스 프록시와 자동 갱신되는 인증서를 붙여 직접 운영합니다. 데이터베이스는 하나의 PostgreSQL 클러스터를 여러 서비스가 나눠 쓰는 구조로 굴립니다. 외부 API 로 보낼 수 없는 데이터를 위해 24GB GPU 2장이 달린 서버에 오픈소스 LLM 을 직접 서빙하고, AI 에이전트가 데이터베이스·이슈 트래커·모니터링·알림을 도구로 쓸 수 있도록 MCP 서버를 만들어 붙였습니다. 만들어 놓고 방치되는 시스템이 아니라, 스스로 일하고 스스로 상태를 보고하는 시스템을 만드는 게 목표입니다.
본업은 따로 있습니다. 2005년부터 21년 동안 문서 엔진, 통신 플랫폼, 공공·제조 업무 시스템을 거쳐 은행 5곳의 프로젝트를 수행했고, 지금은 은행 비대면 채널의 플랫폼 개발과 분석을 맡고 있습니다.
일하는 순서
- 01
이슈로 연다
할 일은 전부 이슈로 등록하고 번호를 붙입니다. 말로 시작해서 기억으로 끝나는 작업을 만들지 않습니다.
- 02
브랜치에서 만들고, 병합 요청으로 반영한다
작업은 별도 브랜치에서 진행하고, 반영은 병합 요청을 거칩니다. 빌드와 테스트는 CI 가 사람보다 먼저 봅니다.
- 03
머지되면 배포까지 이어진다
배포는 별도 이벤트가 아니라 같은 흐름의 마지막 칸입니다. 이 페이지도 그 경로로 올라왔습니다.
- 04
만든 것은 스스로 보고하게 둔다
운영에 들어간 서비스에는 지표 수집과 알림을 붙입니다. 문제가 생기면 사용자가 알려주기 전에 알림이 먼저 오도록 해 둡니다.
이 순서가 지켜지면, 몇 달 뒤에 왜 이렇게 만들었는지 다시 읽어낼 수 있습니다.
지키는 것
- 이슈로 시작한다
- 모든 작업은 이슈로 등록하고, 브랜치와 병합 요청에 그 번호를 답니다.
- 이 사이트의 문구 수정도 이슈 번호가 붙은 브랜치와 병합 요청을 거칩니다.
- 두 번 반복되면 자동화한다
- 같은 일을 두 번 하게 되면 스크립트나 에이전트로 옮깁니다.
- 셸이 주 언어인 저장소가 15개입니다. 대부분 서버 설치·배포·운영 절차를 스크립트로 옮긴 것입니다.
- 배포까지가 작업 범위다
- 코드만 넘기지 않습니다. CI 와 실제 운영 환경까지 세팅합니다.
- 이 페이지는 머지되면 CI 가 빌드하고 배포까지 수행합니다.
- 만든 것에 관제를 붙인다
- 지표와 로그를 모으고, 이상이 생기면 메신저로 알림이 오게 합니다.
- 지표·로그 대시보드와 알림 경로를 직접 구축해 운영 중입니다.
숫자로 본 현황
- 직접 관리하는 저장소
- 미러 저장소 제외, 전부 단독 관리
- 90개
- Go 를 쓰는 저장소
- 그중 10개는 Go 가 주 언어
- 17개
- TypeScript 주 언어 저장소
- 웹 서비스와 관리 화면
- 19개
- 셸 주 언어 저장소
- 서버 설치·배포·운영 자동화 스크립트
- 15개
- 자체 GPU (24GB)
- 오픈소스 LLM 을 직접 서빙하는 서버
- 2장
- 발행한 기술 글
- src/content/posts 파일 수
- 8편
집계 2026-08-16 · scripts/measure_repos.py
- TypeScript
- 19
- 셸
- 15
- JavaScript
- 14
- Go
- 10
- 언어 미검출
- 12
- 그 외
- 20
역할별로 쓰는 것
- 웹화면부터 API 까지
- TypeScript · React · Next.js · Tailwind CSS · Node.js · Bun
- 백엔드 데몬계속 떠 있어야 하는 것
- Go · PostgreSQL · REST API
- 데이터 · AI수집·분석·모델
- Python · 오픈소스 LLM 서빙 · RAG·벡터 검색 · MCP 서버 개발 · Claude·LLM API
- 운영 · 인프라올리고 지켜보는 것
- 컨테이너(Podman/Docker) · CI/CD · 리버스 프록시·자동 TLS · Prometheus·Grafana · 셸 스크립트
이 사이트에 대하여
이 홈페이지도 제 저장소 중 하나입니다. Next.js 로 만들었고, 문구 하나를 고치는 일도 이슈를 열고 브랜치를 파고 병합 요청을 올려 CI 를 통과시킨 뒤에야 반영됩니다. 머지되면 배포가 자동으로 이어집니다. 말한 방식대로 일하는지 확인하고 싶으시면, 이 페이지 자체가 가장 가까운 표본입니다.
의뢰처 이름과 내부 주소·자격증명은 적지 않습니다. 사례도 특정 저장소를 지목하지 않고 일반화해 설명합니다. 대신 개수와 구성, 쓰는 언어, 만든 것이 어떻게 동작하는지는 그대로 적습니다. 저장소 수와 언어별 개수는 제가 직접 운영하는 GitLab 에서 2026-08-16 에 집계한 값입니다.