본문 바로가기

전체 글58

FAQ 가이드 사이드 프로젝트 2편 - 기술 정리 ⚙️ FAQ 가이드 프로젝트 – 기술 구조 정리이번 글에서는 FAQ Guide를 실제 서비스로 구축하기 위해 적용한 검색 엔진 구조, PGroonga 형태소 검색 방식, 데이터 모델 설계, API 구조, 전체 서버 아키텍처 등 기술적인 내용을 정리했다.실제 서비스 URL: https://gw.webguide.kro.kr🚀 기술 개요FAQ 가이드는 단순 문서 나열이 아니라, 사용자가 원하는 정보를 빠르고 정확하게 찾을 수 있어야 하는 구조가 필요했다. 이를 위해 문서 기반 검색 품질이 핵심이었고, 검색 엔진의 구조적 설계가 프로젝트의 핵심이었다.검색 품질을 높이기 위해 PostgreSQL 확장 기능인 PGroonga를 기반으로 형태소 분석과 전문 검색 기능을 구축했고, 문서·검색·카테고리·API 구조를 .. 2025. 11. 26.
FAQ 가이드 사이드 프로젝트 1편 - 개발 방향 🎯 FAQ 가이드 프로젝트 – 개발 방향 전환AI 기반 검색으로 시작했다가, 실제 서비스 목적에 맞게 형태소 기반 검색 중심으로 구조를 재정립한 과정을 정리한 기록.🚀 프로젝트 개요FAQ 가이드 프로젝트는 사내 시스템의 기능과 메뉴가 많음에도 불구하고, 이를 설명해 주는 정리된 가이드가 부족한 상황을 해결하기 위해 시작한 사이드 프로젝트이다.초기에는 “검색 자체를 지능형으로 만들자”는 목표 아래, AI 기반 Hybrid Search, Embedding, Vector 검색, RAG 등을 활용해 지능형 Help Center 형태로 설계했다.그러나 개발을 진행하면서 실제 서비스 목적과 운영 관점에서의 요구사항을 다시 정리하게 되었고, 그 결과 AI 중심 구조에서 형태소 기반 검색 중심 구조로 전체적인 방향.. 2025. 11. 26.
[4편]그룹웨어 감사 로그 로직 개선(Bounded Queue + Worker Pool) 1. 기존 방식 요약1-1. 처리 흐름AOP → 로그 데이터 생성 → HTTP/DB 직접 전송 → 서비스 응답 1-2. 문제점메인 트랜잭션에서 네트워크/DB I/O 직접 수행외부 서버 지연 시 API 전체 응답 지연요청당 매번 연결 생성 → 비효율트래픽 증가 시 TPS 하락, 장애가 서비스로 바로 전파1-3. 기존 방식 코드 예시 (동기 처리)public Object auditAround(ProceedingJoinPoint joinPoint) throws Throwable { Object result = joinPoint.proceed(); // 로그 데이터 생성 String json = buildLog(joinPoint, result); // 기존 방식: AOP 내부에서 직접 동.. 2025. 11. 17.
[3편]Admin 감사로그 뷰어 💻 [3편] Vue3로 만든 Admin 감사로그 뷰어―OpenSearch 데이터를 실시간으로 조회하고 시각화하다📘 개요1편에서는 감사 로그 시스템의 필요성과 설계 이유를, 2편에서는 Spring AOP와 비동기 구조, OpenSearch 연동 방식을 다뤘다.이번 3편에서는 실제로 로그 데이터를 Vue3 기반의 화면(UI)에서 조회하고 관리할 수 있도록 구현한 Admin 감사로그 뷰어를 소개한다.🧭 개발 목표OpenSearch에 저장된 감사 로그를 실시간으로 조회날짜, 모듈, 행위, 사용자 기준으로 검색 필터링로그 행 클릭 시 상세 모달로 diff(변경 내역) 표시조회 대상이 많은 경우 페이지네이션 처리📂 주요 구조src/views/web/audit/├── util/audit.js .. 2025. 11. 12.
[2편]@AuditLog 내부 동작과 비동기 처리, OpenSearch 연동 📘 개요1편에서는 감사 로그 시스템의 도입 배경과 @AuditLog 어노테이션의 설계 이유를 다뤘다.이번 편에서는 그 어노테이션이 Spring 내부에서 어떻게 작동하고, 비동기 방식으로 성능을 보장하며, Fluent Bit → OpenSearch로 로그가 전송되는 과정을 살펴본다.🧠 1. Spring AOP 내부 동작 원리@AuditLog 어노테이션은 단순히 선언만 하는 어노테이션이 아니다.Spring AOP가 이를 감지하여, 메소드 실행 전후로 Aspect가 동작한다.비즈니스 메소드 실행 ↓@Before (이전 데이터 조회) ↓@Around / @AfterReturning (메소드 실행 후 diff 비교) ↓AuditLogService 호출 (로그 생성) ↓Fluent Bit.. 2025. 11. 12.
[1편] 감사 로그 시스템 개요 (Annotation + AOP 설계) 🏗️ 시작하게 된 이유이 프로젝트는 감사 로그(Audit Log) 개념이 전혀 존재하지 않던 10년 이상 된 레거시 그룹웨어 시스템에서 시작됐다.시스템은 수백 개의 모듈(User, 전자결재, 게시판, 인사, ERP 연동 등)로 구성되어 있었지만,정작 “누가 무엇을 바꿨는가” 를 알 수 있는 기록이 하나도 없었다.즉,누가 수정했는지 모름언제 삭제가 발생했는지도 모름조회 이력도 남지 않음운영 중에 장애나 데이터 불일치가 발생해도 단서는 오직 SQL 로그뿐이었다.🔍 문제점 요약문제설명🧾 로그 부재변경, 삭제, 조회 이력이 전혀 기록되지 않음🧠 디버깅 한계장애 시 SQL 로그 외엔 단서가 없음🔐 보안 강화 필요클라우드 이전 이후, 감사 추적 기능이 필수로 요구됨🔸 즉, 기존에는 “로그 기능 자체가 없.. 2025. 11. 11.