TECHNICAL NOTES

실제 문제에서 출발한 기술 기록

개념을 다시 설명하기보다 어떤 가설을 세웠고, 로그·코드·SQL 또는 공개된 기능과 제약에서 무엇을 확인했으며, 결론의 한계를 어떻게 검증했는지 남깁니다.

TECHNICAL NOTES

전체 기술 기록

업무 사례와 서비스 분석은 확인된 사실과 해석의 범위를 구분합니다. 실제 시스템의 식별자는 재현하지 않으며, 글은 프로젝트 진행 시기 또는 분석·활용 시점을 함께 표시하고 작성일 최신순으로 정렬했습니다. RSS로 구독하기

전체 · 33개 글 · 작성일 최신순

파일·리소스 처리프로젝트 2025.11.21 — 2025.11.25 · 7분조회 집계 중

Apache POI 업로드에서 약 6만 개 빈 행이 GC Overhead로 이어진 이유

화면에 보이는 데이터는 적지만 약 6만 개의 빈 행 영역을 가진 Excel 파일이 JVM 메모리 오류로 이어진 조건을 분석하고, 파일 크기와 파싱 범위를 함께 제한한 과정을 정리합니다.

JavaApache POIExcelJVM
트랜잭션·데이터 정합성프로젝트 2022 · 5분조회 집계 중

목록 행을 전체 주문으로 믿었을 때: 일괄 접수에서 데이터가 누락된 이유

분산된 미수주문 접수 로직을 서버에서 통합하는 과정에서 화면의 부분 객체를 전체 주문 데이터처럼 사용해 기존 업무값이 누락된 원인과, 현재 데이터를 다시 조회하도록 저장 경계를 고친 과정을 다룹니다.

JavaSpringData IntegrityRegression Testing
설계·시스템 분석활용 기록 2026.07 · 16분조회 집계 중

AI에게 일을 맡기기보다, 검증 가능한 작업 흐름을 설계한다

포트폴리오 구축, 경력 데이터 관리, Git·SVN 이력 분석과 소스 배포에 AI를 활용하면서 사실 원본·상태·검증·완료 조건을 AI 바깥에 둔 이유와 실제 작업 구조를 정리합니다.

AIGPT지식 관리검증 자동화
외부 API·시스템 연계프로젝트 2026.04 — 2026.05 · 7분조회 집계 중

실패했는데 HTTP 200을 반환하면 안 되는 이유

Well 좌표 충돌로 서버 처리가 실패했는데도 HTTP 200과 빈 본문이 반환되던 경로를 추적하고, HTTP 500과 표준 errorCode·errorMessage 계약으로 바꾼 과정입니다.

REST APIHTTP StatusError ContractSpring Boot
운영 장애 분석프로젝트 2025.10 — 2025.11 · 5분조회 집계 중

26시간 Blast 작업에서 24시간 DB 세션이 만료된 이유

192개 반응·94개 contig의 Blast가 약 26시간 이어진 작업에서 Oracle 24시간 세션 만료 후 ORA-01012가 발생한 원인을 확인하고, 각 Blast 실행 전 세션 확인 Query를 수행하도록 보완한 과정입니다.

JavaOracleJDBCLong-running Job
트랜잭션·데이터 정합성프로젝트 2023.04 · 7분조회 집계 중

JOIN 결과 행 수가 Report ID 증가폭이 되어버린 이유

한 Job에 여러 주문이 연결되면서 성적서 대상 행이 중복되고, Java 반복문의 채번 증가가 행 수만큼 실행돼 Report ID가 +N씩 건너뛴 원인을 조회 책임 분리로 해결한 과정입니다.

Oracle SQLJoin CardinalityID GenerationJava
트랜잭션·데이터 정합성프로젝트 2025.03 — 2025.08 · 9분조회 집계 중

DB Link를 제거한 뒤 남은 문제: 복수 DataSource의 트랜잭션 경계

DB Link를 직접 DataSource 접근으로 바꾼 뒤, Mapper를 분리하면서도 Service의 트랜잭션 경계를 유지하기 위해 Atomikos 기반 JTA 구성을 적용한 판단과 검증 한계를 정리했습니다.

Spring JTAAtomikosMyBatisXA DataSource
외부 API·시스템 연계프로젝트 2025.06 — 2025.11 · 5분조회 집계 중

Connection Pool을 적용해도 빨라지지 않은 이유

반응마다 JVM이 종료되는 구조에서는 Pool을 재사용할 수 없다는 점을 측정하고, 상시 기동 REST API로 연계 방식을 바꾼 과정입니다.

JavaHikariCPREST APIProcess Lifecycle
운영 장애 분석프로젝트 2025.03 — 2025.08 · 7분조회 집계 중

JVM Class Loading 로그로 추적한 Oracle JDBC Driver 충돌

애플리케이션에 포함한 Driver보다 서버 공용 구형 Driver가 먼저 로딩된 사실을 증명하고, 다른 애플리케이션의 자체 패키징을 보완한 뒤 공용 의존성을 정리한 과정입니다.

JavaOracle JDBCClassLoaderAbstractMethodError
레거시 현대화프로젝트 2025.03 — 2025.08 · 5분조회 집계 중

레거시 요청 계약을 유지한 DTO 파라미터 매핑 구조

기존 URL과 연계 시스템의 축약형 파라미터 규격은 유지하면서, Spring MVC 확장으로 내부 DTO에 의미가 명확한 필드명을 적용한 과정입니다.

Spring MVCHandlerMethodArgumentResolverBackward CompatibilityCustom Annotation
레거시 현대화프로젝트 2025.03.12 — 2025.04.08 · 7분조회 집계 중

연쇄 window.open을 iframe + postMessage로 바꾼 이유

브라우저 팝업 정책에 의존하던 다단계 화면을 Dialog, iframe, postMessage 기반의 단일 흐름으로 전환하고 레거시 호출 경로까지 보존한 과정을 정리합니다.

JavaScriptJSPiframepostMessage
트랜잭션·데이터 정합성프로젝트 2024.10 — 2025.04 · 7분조회 집계 중

Spring Singleton Service에 요청 데이터를 멤버변수로 두면 생기는 일

Spring Service의 공유 가변 상태가 동시 요청 사이의 데이터 혼입 위험을 만드는 이유와, 요청 상태 지역변수화·공통 인터페이스·회귀 테스트로 이를 제거한 과정을 정리합니다.

JavaSpringConcurrencyRefactoring
트랜잭션·데이터 정합성프로젝트 2024.09 — 2024.10 · 7분조회 집계 중

재발급 문서를 덮어쓰지 않고 이력 관계로 관리한 이유

공인 성적서의 원본·재발급·폐기 상태를 덮어쓰기 대신 발행 순번과 이력 관계로 모델링하고, 진위확인·동시 재발급까지 검증한 과정을 정리합니다.

Data ModelingOracleAudit TrailConcurrency
파일·리소스 처리프로젝트 2023.02 · 4분조회 집계 중

결과 업로드 지연에서 .nfs 열린 파일 핸들을 추적한 과정

공란 오류 로그와 OS 리소스 상태를 교차 확인해 .nfs 열린 파일 핸들 누적과 open-file 한도의 연관성을 유력 원인으로 좁히고, 모듈 재기동과 Stack Trace 로깅으로 초기 정상화·후속 진단 기반을 마련한 과정입니다.

JavaLinuxNFSResource Management
트랜잭션·데이터 정합성프로젝트 2022.03 — 2022.11 · 9분조회 집계 중

try-catch가 Spring Transaction Rollback을 막을 때

@Transactional 메서드 내부에서 삼킨 예외가 부분 반영을 만든 원인과 RuntimeException 재전파, API 업무 응답 검증, 외부 부수효과의 한계를 설명합니다.

SpringTransactionException HandlingREST API
외부 API·시스템 연계프로젝트 2026.03 — 2026.05 · 7분조회 집계 중

외부 API 전환에서 롤백 경로가 필요한 이유

FedEx SOAP→REST 전환에서 운영 계정 연결 누락을 겪고 백업 WAR로 업무를 복구한 뒤, 법인별 인증과 ETD 정책을 재설계한 과정입니다.

REST APIOAuthMigrationRollback
레거시 현대화프로젝트 2025.03 — 2025.08 · 11분조회 집계 중

요청마다 Connection Pool과 SessionFactory를 만들면 생기는 문제

DB Connection 232개를 단순 누수가 아니라 Pool 객체의 반복 생성 문제로 좁히고, DataSource와 SessionFactory의 생명주기를 애플리케이션 단위로 재설계한 과정입니다.

JavaMyBatisConnection PoolSpring Boot
보안·신뢰 경계프로젝트 2024.07 — 2025.01 · 11분조회 집계 중

GET XSS Filter 적용 후 Forward 파라미터가 사라진 이유

같은 Request를 재사용하는 Forward에서 Wrapper와 원본 Request의 파라미터가 어긋난 원인을 추적하고, GET·JSON·Multipart까지 방어 범위를 넓힌 과정입니다.

XSSServlet FilterRequestWrapperMultipart