company Pinned Post 확신을 설계하고, 가치를 실현하는 넥스트리 다양한 도메인에서 쌓아온 실전 경험을 바탕으로, 고도의 안정성과 무한한 확장성을 동시에 갖춘 시스템 엔지니어링을 제공합니다.
blog Private Registry SSL 장애 정복 1. 배경 및 문제 상황 최근 프로젝트 운영 중 Kubernetes 환경에서 특정 Pod가 정상적으로 기동되지 못하고 ImagePullBackOff 오류를 반복적으로 발생시키는 상황이 발생하였습니다. 기존에 이미 실행 중이던 Pod들은 문제 없이 정상 동작하고 있었기 때문에 초기에는 Registry 자체 장애가 아닌 것으로 판단하였습니다. 하지만 새로운 Deployment 배포 이후 새롭게 생성되는 Pod들만 지속적으로 이미지
blog N8n 기반 LLM 검증기 활용 1. 개요 RAG(Retrieval-Augmented Generation) 기반 AI 시스템인 Lakey를 개발하면서 가장 먼저 고민했던 부분은 “LLM의 답변을 얼마나 신뢰할 수 있는가”였습니다. 초기 개발 단계에서는 단순히 문서를 검색하고 LLM이 답변을 생성하도록 구성하였습니다. 하지만 실제 테스트를 진행해보니 몇 가지 문제가 발생하기 시작했습니다. 가장 대표적인 문제는 Hallucination 현상이었습니다. LLM은 실제 문서에 존재하지 않는
blog SPI를 활용한 Keycloak 커스터마이징 1. 도입 배경 프로젝트에서 인증 및 권한 관리 시스템을 설계하면서 가장 중요하게 고려했던 요소는 보안의 신뢰성이었습니다. 특히 병원 시스템은 일반 서비스보다 훨씬 더 엄격한 보안 기준을 요구합니다. 환자 개인정보와 의료 데이터를 다루기 때문에 인증 체계의 안정성과 확장성이 매우 중요했습니다. 초기 단계에서는 자체 인증 시스템을 직접 구현하는 방안도 검토하였습니다. 하지만 인증
blog PMO 운영 지원 실전 경험 1. 수행 배경 프로젝트는 단순히 개발자 몇 명이 기능을 구현하는 작업이 아니라, 다양한 조직과 인력이 함께 움직이는 협업 과정입니다. 특히 대규모 프로젝트나 병원·공공기관·SI(System Integration) 프로젝트와 같이 이해관계자가 많은 환경에서는 일정 관리와 커뮤니케이션의 중요성이 더욱 커집니다. 프로젝트가 커질수록 단순 개발 업무 외에도 관리와 운영 영역에서 해결해야 하는 문제들이
blog 서브 에이전트 실습 서브 에이전트 이론을 바탕으로, Claude Code 환경에서 자바 코드 리뷰어(Java Code Reviewer) 서브 에이전트를 직접 생성하고 구동하는 실습을 진행합니다. 파일을 일일이 수동 생성할 필요 없이, Claude Code가 제공하는 /agent 명령어의 Create New Agent 기능을 활용하여 편리하게 빌드하는 절차를 알아봅니다. 리드온리(Read-only) 도구 설정, 프로젝트 범위의 오토 메모리(Auto Memory)
blog 서브 에이전트의 이해 Claude Code의 효율성을 극대화하는 핵심 기능인 서브 에이전트(Sub-agents)의 개념과 동작 원리를 알아봅니다. 대화가 길어질수록 컨텍스트 윈도우, 즉 작업 기억 공간이 가득 차 이전 프롬프트를 잊어버리는 문제가 발생할 수 있습니다. 이를 해결하기 위해 특정 작업을 독립된 인스턴스로 분리하여 처리하는 에이전트 위임 모델을 학습합니다. 이번 글에서는 메인 세션과 분리되는 서브
blog Swing에서 JCEF로 1. 프로젝트 배경 Maro moti 플러그인은 IntelliJ 환경에서 Beat라는 화면 단위 컴포넌트를 자동 생성해주는 생산성 도구로 개발되었습니다. 해당 플러그인은 반복적으로 생성해야 하는 화면 구조와 필드 배치를 자동화하여 개발자의 생산성을 높이는 것을 목표로 하고 있었습니다. 사용자는 CreateBeatAction을 실행한 뒤 다이얼로그를 통해 화면 구조를 정의하고, 각 섹션에 필요한 필드를 배치한 후 최종적으로
blog Flux 기반 대용량 조회 최적화 1. 왜 Flux였는가? 기존의 비즈니스 로직은 순차적인 루프 기반 구조로 동작하고 있었습니다. 데이터 목록을 하나씩 순회하면서 외부 API 또는 DB를 호출하고, 각 결과를 수집한 뒤 다음 로직을 수행하는 매우 전형적인 구조였습니다. 초기에는 데이터 양이 많지 않았기 때문에 큰 문제가 발생하지 않았습니다. 하지만 서비스 규모가 점점 커지고 처리해야 하는 옵션 및
blog Observability 경량화 1. Observability 경량화가 필요한 이유 현대 클라우드 및 Kubernetes 기반 인프라 환경에서 Observability는 시스템 운영의 핵심 요소로 자리 잡고 있습니다. 서비스 규모가 커질수록 로그(Log), 메트릭(Metric), 트레이싱(Tracing)을 기반으로 시스템 상태를 관찰하고 문제를 빠르게 분석할 수 있는 능력이 매우 중요해집니다. 특히 MSA(Microservice Architecture) 기반 구조에서는 수많은 서비스가
blog Debezium CDC 실전 적용기 1. 들어가며 의료 시스템 MSA 전환 프로젝트에 참여하면서 맞닥뜨린 문제는 데이터 이원화였습니다. 신규 MSA 시스템(PostgreSQL)과 기존 레거시 시스템(Oracle)이 나란히 운영되어야 했고, 두 시스템이 동시에 서비스 중인 상황에서 데이터 일관성을 실시간으로 유지해야 하는 요구사항이 있었습니다. 배치 동기화는 수십 분의 지연이 발생해 의료 도메인에서는 적합하지 않았고, DB 트리거
blog Claude Code Skill 실습 Claude Code에서 반복적인 작업 패턴을 자동화하고 일관된 워크플로우를 생성해 주는 'Skills(스킬)'의 실제 구현 및 적용 방법을 실습을 통해 알아봅니다. 단순히 프롬프트를 통해 스킬 생성을 시도했을 때 발생할 수 있는 파일 구조적 한계를 짚어보고, Anthropic에서 제공하는 공식 템플릿인 'Skill Creator(스킬 크리에이터)'를 가져와 프로젝트에
blog Claude Code Skill의 이해 Anthropic의 Agent Skill 표준을 기반으로 확장된 Claude Code의 핵심 기능인 'Skills(스킬)'에 대해 알아봅니다. 반복되는 작업 패턴을 하나의 업무 매뉴얼처럼 모듈화하여, AI 에이전트가 필요할 때마다 일관되고 효율적으로 프로세스를 수행할 수 있도록 구성하는 방법을 학습합니다.
blog 디자인 시스템, 제품이 되다 많은 팀이 디자인 시스템 도입을 결심하는 순간, 가장 먼저 Figma를 열고 컴포넌트를 만들기 시작합니다. 그러나 정작 시스템이 실무에 정착하지 못하고 유명무실해지는 경우를 어렵지 않게 목격하게 됩니다. 이는 디자인 시스템을 잘못된 프레임으로 바라보는 것에서 비롯되는 경우가 많습니다. 디자인 시스템은 '잘 정리된 컴포넌트 모음'이 아니라, 팀의 비효율을 구조적으로 해결하는
blog OCR을 넘어선 레이아웃 분석 파이프라인 "OCR 하나만 붙이면 끝나겠지"라고 생각했던 순간부터 실제 문제 해결은 시작됐습니다. 비정형 문서를 구조화하는 파이프라인을 사전 검증하기 위해 테스트 케이스로 수학 문제 PDF를 선택했습니다. 문제 영역과 번호가 명확히 구분되어 있으면서도, 1단·2단 레이아웃이 혼재된 구조를 가지고 있어 레이아웃 분석과 의미 매핑을 동시에 검증하기에 적합한 데이터였기 때문입니다. 하지만 실제
blog Vue 환경에서 ag-Grid 성능 최적화 1. ag-Grid 데이터 갱신 문제 실무 프로젝트에서 사용하는 데이터 테이블은 단순 조회 기능만 제공하는 경우가 드뭅니다. 특히 관리자 시스템이나 업무용 플랫폼에서는 사용자가 테이블 내부에서 직접 데이터를 수정하거나 상태를 변경하는 경우가 매우 많습니다. 예를 들어 특정 셀의 버튼을 클릭했을 때 다른 행의 계산 결과가 즉시 반영되거나, Pinia/Vuex 기반 전역 상태에
blog React 대규모 데이터 처리 최적화 전략 1. 기술 선택 배경: 주어진 환경(Ag-Grid)의 극대화와 TypeScript의 필요성 프로젝트의 가장 큰 과제 중 하나는 수만 건 이상의 데이터를 사용자가 빠르고 직관적으로 조회할 수 있는 화면을 제공하는 것이었습니다. 특히 단순 조회 수준이 아니라 엑셀과 유사한 사용자 경험을 제공해야 했기 때문에 요구사항의 난이도가 상당히 높았습니다. 사용자는 다음과 같은 기능을
blog MongoDB CSFLE 적용기 1. 기술 선택 배경 시스템 내 개인정보 데이터 보호 요구사항이 강화되면서 데이터 암호화 적용이 필수 과제가 되었습니다. 특히 이름, 전화번호, 이메일과 같은 개인정보는 저장 시 암호화가 필요했고, 운영 환경에서도 안전하게 관리되어야 했습니다.초기에는 데이터베이스 자체 암호화 기능만 적용하는 방안도 검토되었지만, 아래 이유들로 애플리케이션이 직접 암복호화를 수행하는 구조를 검토하게 되었습니다. 가.
blog useEffect VS useLayoutEffect -화면 품질 개선을 위한 React 렌더링 타이밍 이해- 1. 운영 과정에서 발견한 문제: 화면 깜빡임 현상 올해 프로젝트의 프론트엔드 운영 업무를 맡으면서 기존에 복잡하게 얽혀 있던 컴포넌트 구조를 읽기 쉽게 정리하고, 반복되는 상태 처리와 스타일 계산 로직을 개선하는 작업을 진행했습니다. 대부분의 개선 작업은 기능 변경보다 유지보수성을 높이는 리팩토링에 가까웠지만, 코드를
blog Modbus TCP로 구현한 IoT 엣지 드라이버 1. 프로젝트 배경과 Modbus TCP 선택 이유 IoT 프로젝트를 수행하면서 가장 먼저 마주했던 과제는 현장의 다양한 설비로부터 데이터를 안정적으로 수집하는 일이었습니다. 현장에는 PLC, 센서, 컨트롤러 등 서로 제조사와 통신 방식이 다른 이기종 설비들이 혼재되어 있었으며, 각 장비의 상태 데이터를 실시간으로 수집해 상위 플랫폼으로 전달해야 했습니다. 산업 현장에서는 OPC-UA, LS XGT
blog PMO의 역할 1. 프로젝트 성공을 위한 PMO의 전략적 필요성 프로젝트 규모가 커지고 이해관계자가 많아질수록 프로젝트 관리의 난이도는 급격히 증가합니다. 특히 대규모 SI(System Integration) 프로젝트에서는 고객사, 수행사, 개발팀, 운영팀, 외부 협력사 등 수많은 조직이 동시에 참여하게 됩니다. 문제는 각 조직마다 목표와 우선순위가 서로 다르다는 점입니다. 고객사는 일정 준수와 품질을 중요하게 생각하고, 개발팀은
blog QueryDSL 도입기 JPA의 한계에서 시작한 QueryDSL 도입기 : 설정부터 동적 쿼리까지 1. 왜 QueryDSL이 필요했나 Spring Data JPA를 사용하면 단순 조회 기능은 매우 빠르게 개발할 수 있습니다. 메서드 네이밍 규칙만으로도 findById, findByUserIdAndStatus 같은 조회 메서드를 손쉽게 생성할 수 있기 때문입니다. 초기 프로젝트에서는 이러한 방식만으로도 대부분의 요구사항을 충분히 처리할 수 있었습니다. 하지만 서비스가 커지고
blog Vizend agent hub AI 협업 인프라의 진화 -단순 컨텍스트 주입에서 팀 전체 AI 개발 운영 플랫폼으로- 오늘날 Claude, Codex, Cursor 같은 AI 에이전트는 코드를 작성하고 리뷰하고 테스트를 짭니다. 기술적 능력 자체는 뛰어납니다. 하지만 대규모 플랫폼에서 AI와 함께 일해보면 금세 한계가 드러납니다. AI는 매 세션마다 아무것도 모르는 상태로 시작합니다. 이 문제를 해결하기 위해 Vizend
blog Claude Code의 메모리 시스템 (2) 프로젝트 규모가 커지고 규칙이 많아질수록 토큰 비용이 늘어나고 컨텍스트 관리가 어려워집니다. 이번 강의에서는 이 문제를 완벽하게 해결하는 규칙의 모듈화(rules 패턴)와 AI가 스스로 학습하는 오토 메모리(Auto-Memory) 기능을 학습합니다.
blog Claude Code의 메모리 시스템 (1) 세션이 종료되어도 프로젝트의 맥락을 영구적으로 기억하는 방법, 클로드 코드의 메모리 시스템을 알아봅니다. 기존의 컨텍스트 윈도우, 즉 단기 기억은 세션을 종료(exit)하면 모든 대화 맥락이 사라진다는 한계가 있었습니다. 이를 극복하기 위해 클로드 코드(Claude Code)가 제공하는 장기 기억 장치가 바로 메모리 시스템(Memory System)입니다. 이번 강의에서는 AI 에이전트가