넥스트리

Growing Together, Creating New Days

MongoDB CSFLE 적용기
blog

MongoDB CSFLE 적용기

1. 기술 선택 배경 시스템 내 개인정보 데이터 보호 요구사항이 강화되면서 데이터 암호화 적용이 필수 과제가 되었습니다. 특히 이름, 전화번호, 이메일과 같은 개인정보는 저장 시 암호화가 필요했고, 운영 환경에서도 안전하게 관리되어야 했습니다.초기에는 데이터베이스 자체 암호화 기능만 적용하는 방안도 검토되었지만, 아래 이유들로 애플리케이션이 직접 암복호화를 수행하는 구조를 검토하게 되었습니다. 가.
14 min read
useEffect VS useLayoutEffect
blog

useEffect VS useLayoutEffect

-화면 품질 개선을 위한 React 렌더링 타이밍 이해- 1. 운영 과정에서 발견한 문제: 화면 깜빡임 현상 올해 프로젝트의 프론트엔드 운영 업무를 맡으면서 기존에 복잡하게 얽혀 있던 컴포넌트 구조를 읽기 쉽게 정리하고, 반복되는 상태 처리와 스타일 계산 로직을 개선하는 작업을 진행했습니다. 대부분의 개선 작업은 기능 변경보다 유지보수성을 높이는 리팩토링에 가까웠지만, 코드를
17 min read
Modbus TCP로 구현한 IoT 엣지 드라이버
blog

Modbus TCP로 구현한 IoT 엣지 드라이버

1. 프로젝트 배경과 Modbus TCP 선택 이유 IoT 프로젝트를 수행하면서 가장 먼저 마주했던 과제는 현장의 다양한 설비로부터 데이터를 안정적으로 수집하는 일이었습니다. 현장에는 PLC, 센서, 컨트롤러 등 서로 제조사와 통신 방식이 다른 이기종 설비들이 혼재되어 있었으며, 각 장비의 상태 데이터를 실시간으로 수집해 상위 플랫폼으로 전달해야 했습니다. 산업 현장에서는 OPC-UA, LS XGT
13 min read
PMO의 역할
blog

PMO의 역할

1. 프로젝트 성공을 위한 PMO의 전략적 필요성 프로젝트 규모가 커지고 이해관계자가 많아질수록 프로젝트 관리의 난이도는 급격히 증가합니다. 특히 대규모 SI(System Integration) 프로젝트에서는 고객사, 수행사, 개발팀, 운영팀, 외부 협력사 등 수많은 조직이 동시에 참여하게 됩니다. 문제는 각 조직마다 목표와 우선순위가 서로 다르다는 점입니다. 고객사는 일정 준수와 품질을 중요하게 생각하고, 개발팀은
15 min read
QueryDSL 도입기
blog

QueryDSL 도입기

JPA의 한계에서 시작한 QueryDSL 도입기 : 설정부터 동적 쿼리까지 1. 왜 QueryDSL이 필요했나 Spring Data JPA를 사용하면 단순 조회 기능은 매우 빠르게 개발할 수 있습니다. 메서드 네이밍 규칙만으로도 findById, findByUserIdAndStatus 같은 조회 메서드를 손쉽게 생성할 수 있기 때문입니다. 초기 프로젝트에서는 이러한 방식만으로도 대부분의 요구사항을 충분히 처리할 수 있었습니다. 하지만 서비스가 커지고
10 min read
Vizend agent hub
blog

Vizend agent hub

AI 협업 인프라의 진화 -단순 컨텍스트 주입에서 팀 전체 AI 개발 운영 플랫폼으로- 오늘날 Claude, Codex, Cursor 같은 AI 에이전트는 코드를 작성하고 리뷰하고 테스트를 짭니다. 기술적 능력 자체는 뛰어납니다. 하지만 대규모 플랫폼에서 AI와 함께 일해보면 금세 한계가 드러납니다. AI는 매 세션마다 아무것도 모르는 상태로 시작합니다. 이 문제를 해결하기 위해 Vizend
13 min read
Claude Code의 메모리 시스템 (1)
blog

Claude Code의 메모리 시스템 (1)

세션이 종료되어도 프로젝트의 맥락을 영구적으로 기억하는 방법, 클로드 코드의 메모리 시스템을 알아봅니다. 기존의 컨텍스트 윈도우, 즉 단기 기억은 세션을 종료(exit)하면 모든 대화 맥락이 사라진다는 한계가 있었습니다. 이를 극복하기 위해 클로드 코드(Claude Code)가 제공하는 장기 기억 장치가 바로 메모리 시스템(Memory System)입니다. 이번 강의에서는 AI 에이전트가
1 min read
조회 재사용을 위한 생성 시점 분리 설계
blog

조회 재사용을 위한 생성 시점 분리 설계

1. 문제 상황 관리자 페이지에서 특정 사용자 목록을 조회하는 기능을 구현하며 조건이 많고 정렬 기준이 복잡한 조회 로직을 사용하고 있었습니다. 조회 과정에서는 단순히 데이터를 가져오는 것뿐만 아니라 대상 조건 계산, 상태 판별, 정렬 처리 등이 함께 수행되고 있었으며, 요청이 들어올 때마다 동일한 연산이 반복되는 구조였습니다. 처음에는 단순 조회 기능이라고 생각했지만,
8 min read
계약 기반 자율 오케스트레이션
blog

계약 기반 자율 오케스트레이션

요즘 “AI 에이전트”라는 단어를 정말 자주 접하게 됩니다. 처음에는 단순한 유행어처럼 느껴졌지만, 다양한 고객 환경을 경험하면서 “우리 환경에 맞게 안전하게 동작하는 업무용 에이전트 엔진이 필요하다”는 요구가 분명히 늘어나고 있다는 생각이 들었습니다. 이러한 배경에서 현재 업무와 맞닿아 있는 DevOps 작업을 대상으로, Ops 에이전트를 하나의 백엔드 서비스로 구현해보자는 고민을 시작하게
10 min read
레거시 데이터의 탈바꿈
blog

레거시 데이터의 탈바꿈

- 바닐라 JS 기반 설문 폼을 현대적 구조로 전환하는 에디터 개발- 이번 포스팅에서는 최근 프로젝트에서 진행했던 설문 서식 에디터 개발 경험과 그 핵심 아키텍처를 공유하고자 합니다. 1. 배경 및 문제 상황 기존 시스템에 존재하던 설문 폼은 바닐라 자바스크립트(Vanilla JS)를 사용하여 화면을 직접 HTML로 그리고, 각 객체에 부여된 고유한
10 min read
디자인 토큰 리팩토링
blog

디자인 토큰 리팩토링

1. 개요 프로젝트를 진행하며 SCSS 기반 스타일 시스템을 운영하는 과정에서 컬러 및 스타일 변수 관리 방식이 점차 복잡해지는 문제를 경험하였습니다. 초기에는 단순 변수 선언만으로도 충분했지만, 서비스 규모가 커지고 다양한 UI 컴포넌트가 추가되면서 변수의 역할이 불명확해지고 중복 정의가 증가하였습니다. 특히 여러 서비스에서 공통 UI를 함께 사용하는 구조에서는 동일한 색상을 서로 다른
10 min read
Spring Boot 쿠버네티스 클라이언트
blog

Spring Boot 쿠버네티스 클라이언트

들어가며 쿠버네티스를 운영하다 보면 자연스럽게 이런 생각이 들 때가 있습니다. “지금 클러스터에서 Pod들이 정상적으로 작동하고 있는지, 각 Pod의 상태를 한 눈에 수집할 수 있으면 좋겠다.” 처음에는 단순한 호기심처럼 시작되는 이 질문이, 운영하는 서버 수가 늘어나기 시작하면 매일같이 반복되는 운영자의 고민으로 바뀝니다. 이런 요구를 해결해주는 것이 바로 Kubernetes 클라이언트 라이브러리였습니다. Spring
14 min read
영상 스트리밍 인증 구조 설계
blog

영상 스트리밍 인증 구조 설계

-ReactPlayer 기반 영상 매뉴얼 서비스 구축 사례- 1. 프로젝트 개요 본 사례는 기존 PDF 기반 사용자 매뉴얼 시스템을 영상 콘텐츠 기반 서비스로 전환하기 위해 수행된 프로젝트입니다. 기존 시스템에서는 사용자가 매뉴얼 버튼을 클릭하면 Frontend가 AWS S3에 직접 접근하여 PDF 파일을 다운로드하는 구조를 사용하고 있었습니다. 이 방식은 구현은 단순했지만, 사용자가 실제 업무
9 min read
Quartz Scheduler 사용기
blog

Quartz Scheduler 사용기

1. 도입: 왜 분산 스케줄링이 필요했나 Vizend 에서 기존에는 각 서비스가 개별적으로 스케줄링을 처리하고 있었습니다. 이 구조는 단순한 환경에서는 문제가 없지만, 서비스가 확장되며 동일 작업이 여러 인스턴스에서 실행되는 중복 실행, 장애 발생 시 스케줄이 유실되는 복구 불가 문제, 서비스마다 스케줄 로직이 분산되어 운영 복잡도 등의 문제가 발생하고 있었습니다. 이러한 문제를
14 min read
Apache POI 기반 에러 리포팅 기능 개발
blog

Apache POI 기반 에러 리포팅 기능 개발

1. 개요 및 추진 배경 대형병원 차세대 구축 프로젝트의 테스트 단계에서는 하루 수만 건 이상의 로그가 지속적으로 발생하였습니다. 테스트 과정에서 발생하는 장애를 빠르게 파악하고 품질을 검증하기 위해서는 매일 로그를 직접 확인하며 에러 유형을 분류하고 정리하는 작업이 필수적이었습니다. 당시 기준으로 에러 리포트를 수기로 작성하는 데 하루 평균 약 1시간 이상이 소요되었으며,
8 min read
LangChain4J 멀티 ChatModel 운영 전략
blog

LangChain4J 멀티 ChatModel 운영 전략

들어가며 AI 기능을 서비스에 붙이다 보면 금방 이런 상황을 마주하게 됩니다. 기능에 따라 서로 다른 ChatModel을 사용하고 싶은데, 어떻게 관리해야 할까? 관광지 추천 AI 서비스를 개발하면서 실제로 이 문제를 겪었습니다. 처음에는 텍스트 기반 대화 모델만으로 충분하다고 생각했습니다. 하지만 관광지 이미지가 입력되면, 해당 이미지를 분석해 이미지의 특징과 설명을 추출해야 했습니다. 이
8 min read
파편화된 권한 로직 하나로 묶기

파편화된 권한 로직 하나로 묶기

지난 프로젝트의 프론트엔드 코드 전반을 리팩토링하는 과정에서, 권한 관리 구조도 함께 수정하였습니다. 권한 관리는 라우터 설정, 메뉴 렌더링 로직, 개별 화면 컴포넌트 등 서비스 전반에 걸쳐 사용되는 횡단 관심사입니다. 리팩토링을 통해 이 로직을 보다 선언적이고 일관되게 관리할 수 있는 구조로 발전시켰습니다. 개선한 부분은 크게 세 가지입니다. 1. 페이지 접근 로직
8 min read
MCP 적용 실습(1)
blog

MCP 적용 실습(1)

이론으로 배운 MCP(Model Context Protocol), 이제 내 프로젝트에 직접 적용해 볼 차례입니다. 이번 강의에서는 Spring Boot 기반의 게시판(Board) 애플리케이션을 초기화하고, 클로드 코드(Claude Code)를 이용해 프로젝트의 뼈대와 데이터베이스(H2) 설정을 구성하는 실습을 진행합니다. 특히, 클로드 코드의 ‘플랜 모드(Plan Mode)’를 적극 활용하여, AI가 코드를 바로 작성하지
1 min read
AI Agent 시대:개발자의 생존 전략
blog

AI Agent 시대:개발자의 생존 전략

서론: 거대한 기술적 변곡점과 엔지니어의 실존적 고민 2026년 현재, 소프트웨어 엔지니어링 업계는 일찍이 경험하지 못한 거대한 폭풍 속에 있습니다. 단순히 새로운 프레임워크나 언어가 등장한 수준이 아닙니다. 소프트웨어를 정의하고, 설계하고, 구현하는 패러다임 자체가 근본적으로 흔들리고 있습니다. 20년 넘게 아키텍처를 고민하고 수만 줄의 코드를 써 내려온 시니어 엔지니어들에게도, 지금의 AI 에이전트(AI
9 min read
LLM 자동번역 이벤트 기반 아키텍처
blog

LLM 자동번역 이벤트 기반 아키텍처

LLM 자동번역을 비동기 이벤트 흐름으로 다루기 1. 들어가며 최근 다국어 문자열 자동번역 기능을 설계하면서, 단순히 LLM을 호출해 번역 결과를 얻는 것보다 더 중요한 문제가 있다는 것을 느꼈습니다. 그것은 LLM 호출을 기존 서비스 요청 흐름 안에서 어떻게 다룰 것인가였습니다. LLM 기반 처리는 일반적인 내부 로직과 다르게 응답 시간이 일정하지 않고, 외부
15 min read
Orval 기반 API 코드 자동화 도입
blog

Orval 기반 API 코드 자동화 도입

1. 도입 배경 프론트엔드 개발에서 API 연동과 타입 작성은 빈번하고 반복적인 작업입니다. 새로운 API가 추가되거나 요청 파라미터, 응답 구조가 변경될 때마다 타입 정의를 수정하고, API 호출 함수를 작성하고, TanStack Query 훅까지 구성해야 합니다. API 수가 적을 때는 직접 작성해도 큰 문제가 없지만, 프로젝트 규모가 커질수록 수정해야 하는 파일이 많아지고, 이
13 min read
Site footer