회사 업무뿐만 아니라, 개인적인 아이디어를 서비스로 구현하는 개발자입니다.
인프라 구축부터 백엔드, 프론트엔드, AI 활용까지
주도적으로 문제를 해결하며 성장하고 있습니다.
단순 코드 작성을 넘어, 개인 서버(Oracle Cloud)를 활용하여 서비스 배포, 도메인 연결, DB 관리 등 전체 인프라 라이프사이클을 직접 관리합니다.
개인 VPS 서버 운용
컨테이너 기반 배포
자동화된 빌드/배포
Reverse Proxy
Main Database
"사내 분석 요청에 따른 오픈소스 모델 HyperCLOVA X SEED 구동 및 기술 검토를 위한 환경 구축"
사내에서 네이버 클라우드가 오픈소스로 공개한 HyperCLOVA X SEED 모델에 대한 기술 분석 요청을 받아 구축하였습니다. 보고 전 실제 모델의 동작 확인 및 분석을 위해
Hugging Face 를 분석, 개인 서버에 구동 환경을 구축하여 기능을 검증했습니다.
HyperCLOVA X SEED는 네이버 클라우드에서 오픈소스로 공개한 효율성 중심의 모델 시리즈입니다. 사내 분석 요청에 맞춰 0.5B, 1.5B 모델이 실제 리소스 환경에서 어떻게 동작하는지 확인하고, Chainlit을 사용하여 인터페이스 환경에서의 활용성을 분석했습니다.
기존 시스템 및 타 프로젝트와의 환경 충돌을 방지하고 시스템 안정성을 확보하기 위해 Python venv를 통한 의존성 격리를 적용했습니다. 특히 분석용 UI로 Chainlit을 도입하여, 모델의 성능과 응답 품질을 효율적으로 검증할 수 있었습니다.
"서비스와 로그 시스템을 완전히 분리하여, 로그 장애가 서비스에 영향을 주지 않는 아키텍처 구현"
이 프로젝트는 10년 이상 된 레거시 그룹웨어 시스템의 한계에서 시작되었습니다. 수백 개의 모듈(전자결재, 인사, ERP 등)이 있었지만, 정작 "누가 무엇을 바꿨는가"를 추적할 수 있는 기능이 전무했습니다.
기존 비즈니스 로직 수정 없이(AOP), 등록/수정/삭제/조회 행위를 자동으로 기록하고, 일자별/모듈별로 검색 가능한 인덱스 구조를 설계하는 것이 목표였습니다.
메인 요청(결재 등) 처리 시 로그 전송(HTTP)을 동기적으로 수행하면, 네트워크 지연이 사용자 응답 속도를 저하시킵니다. 이를 해결하기 위해 요청 스레드는 Queue에 넣고 즉시 리턴하고, 별도의 Worker Thread가 전송을 담당하도록 분리했습니다.
로그 폭주 시 OOM(OutOfMemory)을 방지하기 위해 큐의 크기를 제한(Bounded)했습니다. 큐가 가득 차면 로그 생산 속도를 조절하는 백프레셔(Backpressure) 효과를 통해 시스템 전체의 안정성을 확보했습니다.
애플리케이션과 저장소 사이의 결합도를 낮추기 위해 Fluent Bit을 도입했습니다. 네트워크 장애 시 재시도(Retry)와 버퍼링을 미들웨어 레벨에서 처리하여 데이터 유실을 방지합니다.
"레거시 환경에서의 안정성 확보"
서비스 로직과 로그 시스템을 물리적으로 분리하는 설계를 통해,
로그 시스템 장애가 서비스 장애로 전파되지 않는 Fail-Safe 아키텍처를 경험하고 완성했습니다.
"DOM Pre-processing으로 토큰 비용을 최적화한 채용공고 크롤링 플랫폼"
이직을 준비하면서 여러 채용 사이트(사람인, 잡코리아, 원티드 등)와 기업별 커리어 사이트를 일일이 확인하는 것이 너무 번거로웠습니다. "흩어진 채용 공고를 한곳에서 모아보고 싶다"는 개인적인 니즈에서 출발한 프로젝트입니다.
단순 크롤링을 넘어, 사이트마다 제각각인 HTML 구조에 의존하지 않고, AI를 통해 핵심 정보(기술스택, 자격요건 등)를 표준화된 JSON으로 추출하여 나만의 채용 대시보드를 구축하는 것이 목표였습니다.
동적 렌더링(SPA) 사이트 대응을 위해 실제 브라우저로 접근하여 HTML 원본을 확보합니다.
AI 요청 전, 불필요한 스타일/스크립트/주석을 제거하고 의미 있는 DOM 노드만 추출하여 토큰 사용량을 최소화합니다.
"이 HTML에서 기술스택을 JSON으로 추출해줘" 프롬프트로 비정형 데이터를 구조화합니다.
Vector Search(의미 기반)와 Keyword Search(단어 기반) 결과를 결합하고, Reranker로 재정렬하여 검색 정확도를 극대화했습니다.
"AI Native 개발 경험"
기존 개발 방식(하드코딩 파싱)의 한계를 AI 기술(LLM)로 극복했습니다.
데이터 파이프라인에 AI를 접목하여 유지보수 비용을 획기적으로 줄이는 경험을 했습니다.
"AI 임베딩(Semantic)과 PGroonga(Keyword)의 장점을 결합하여 검색 성능을 극대화한 엔터프라이즈 지식 관리 시스템"
현재 재직 중인 회사의 서비스는 기능이 매우 방대했지만, 정작 사용자가 참고할 수 있는 통합 가이드/매뉴얼 사이트가 부재했습니다. "이런 기능이 있으면 업무가 훨씬 편해지지 않을까?"라는 단순한 아이디어로 시작한 개인 사이드 프로젝트입니다.
단순한 게시판이 아닌, 엔터프라이즈 환경에서 실제로 쓸 수 있는 수준의 SaaS형 지식 관리 시스템(Knowledge Base)을 직접 기획하고 구축해보는 것이 목표였습니다.
하나의 시스템으로 다수의 고객사(Tenant)를 동시에 지원하는 구조를 설계했습니다.
단순 임베딩으로 놓칠 수 있는 고유명사/약어를 PGroonga의 고속 형태소 분석으로 보완하여 검색 완전성을 확보했습니다.
기획부터 인프라 구축, 프론트/백엔드 개발까지 홀로 수행하며 SaaS 서비스의 전체적인 구조를 이해하게 된 소중한 성장의 계기였습니다.
"크롤링 시스템과 웹가이드 프로젝트의 Spring WAR 파일 자동 빌드 파이프라인 구축을 통한 생산성 향상"
Spring 소스 코드 Push 시 Jenkins가 배포 작업 시작
서버 환경에서 최신 라이브러리 의존성을 포함한 WAR 파일 생성
생성된 실행 파일을 대상 서버의 Deploy 경로로 자동 전송
Tomcat 등 WAS 환경에 맞춰 신규 WAR 적용 및 서비스 갱신
JSAI 크롤링 시스템 (Spring), WebGuide 가이드 시스템 (Spring)
"인프라 제약을 넘어 PM2 프로세스 관리와 소스 수정을 통한 안정적 서비스 운영"
ARM64 기반 오라클 클라우드 환경에서 운영 중인 메신저
제한된 서버 리소스 환경에서 24/365 안정적인 서비스를 위해 프로세스 매니저를 고도화했습니다.
pm2 start app.js --max-memory-restart 1G