본문 바로가기
반응형

IT18

[회고록] 글로벌 M&A가 레거시 개발자에게 미치는 영향: Entra ID SSO 및 MFA 도입 삽질기 어느 날 갑자기 회사가 글로벌 기업에 인수합병(M&A)되었다. 비즈니스 뉴스에서는 시너지 창출이니 글로벌 진출이니 하며 떠들썩했지만, 지하 개발실에서 레거시 시스템을 유지보수하던 10년 차 백엔드 개발자인 나에게 그 소식은 거대한 아키텍처 격변을 예고하는 재앙의 서막에 불과했다.평화롭게 돌아가던 우리 시스템은 전형적인 한국형 공공/엔터프라이즈 레거시 스택을 자랑하고 있었다. 전자정부 프레임워크 3.8, Spring 4.3, Java 8, 그리고 오라클 DB에 평문으로(또는 기껏해야 SHA-256 단방향 암호화 정도로) 저장된 아이디와 비밀번호. 그리고 Spring Security의 기본 DaoAuthenticationProvider를 이용한 소박한 폼 로그인. 세션은 L4 로드밸런서 밑에 묶인 톰캣 두 .. 2026. 3. 25.
레거시 EAI 걷어내기: DB 연동에서 API/MQ로 넘어갈 때 백엔드 개발자가 살아남는 법 "다음 달 차세대 오픈 때 기존 EAI 다 걷어내고 RabbitMQ랑 API 게이트웨이로 간다는데, 우리 쪽 코드는 얼마나 수정해야 하죠?"요즘 레거시 전환 프로젝트를 하다 보면 파트원들에게 가장 많이 듣는 질문입니다. 솔직히 말하면, 과거 EAI(Enterprise Application Integration) 시절에는 애플리케이션 개발자가 참 편했습니다. 인프라나 DBA 파트에서 출발지 DB와 도착지 DB 테이블만 매핑해두면, EAI 데몬이 백그라운드에서 알아서 데이터를 퍼가고 넣어줬으니까요. 우리는 그저 약속된 인터페이스 테이블에 INSERT 쿼리 한 줄 날리면 그만이었습니다.하지만 MSA나 클라우드 네이티브 같은 모던 아키텍처로 넘어오면서 이 평화는 끝났습니다. 이제 데이터 연동의 책임은 인프라가 .. 2026. 3. 25.
Spring Boot 3.2 + Virtual Threads: 도입 전 반드시 알아야 할 함정 (Pinning, ThreadLocal) Java 21의 LTS 출시와 Spring Boot 3.2의 등장으로, 자바 진영의 동시성 모델은 Virtual Threads(Project Loom)라는 거대한 전환점을 맞이했습니다. 이제 spring.threads.virtual.enabled=true 설정 한 줄이면 기존의 무거운 플랫폼 스레드(Platform Thread) 대신, 가볍고 무한에 가까운 가상 스레드를 사용할 수 있게 되었습니다.하지만 "설정만 켜면 성능이 10배가 된다"는 마법 같은 이야기는 반은 맞고 반은 틀립니다. 기존 스레드 모델에 최적화된 라이브러리나 코딩 습관을 그대로 가져갈 경우, 오히려 심각한 장애를 유발할 수 있기 때문입니다.이번 글에서는 Virtual Threads 도입 시 실무에서 반드시 체크해야 할 심화 주제인 P.. 2026. 2. 9.
MongoDB 실무 사용법 + 자바 연동 예제 1. MongoDB란 무엇인가?MongoDB는 문서 지향형 NoSQL 데이터베이스로, JSON과 유사한 BSON(Binary JSON) 형식으로 데이터를 저장합니다. 관계형 데이터베이스와는 달리 고정된 스키마가 없어 유연한 데이터 구조를 가지며, 애플리케이션의 변화에 빠르게 대응할 수 있습니다.MongoDB의 핵심 특징:문서 기반 저장: 데이터가 컬렉션(테이블)의 문서(행) 형태로 저장유연한 스키마: 같은 컬렉션 내 문서들이 서로 다른 필드 구조 가능고성능: 인덱싱, 샤딩을 통한 확장성ACID 지원: MongoDB 4.0+에서 다중 문서 트랜잭션 지원2. MongoDB 데이터 모델링 전략MongoDB의 핵심은 “어떻게 데이터를 저장할 것인가” 입니다. 관계형 데이터베이스의 정규화와는 다른 접근이 필요합니.. 2025. 11. 11.
Java Virtual Threads (Project Loom) 입문 및 성능 튜토리얼 Java Virtual Threads (Project Loom) 입문 및 성능 튜토리얼1. Virtual Threads란?Virtual Threads는 Java 21에서 정식으로 도입된 경량화된 스레드로, Project Loom의 결과물입니다. 기존의 Platform Thread(OS 스레드와 1:1로 매핑되는 스레드)와는 다르게, Virtual Thread는 JVM 내부에서 관리되는 사용자 모드 스레드입니다.핵심 특징:메모리 효율: Platform Thread는 약 1~2MB의 메모리를 사용하는 반면, Virtual Thread는 약 10~20KB만 사용합니다.생성 속도: Platform Thread의 10만 개 생성에 4,005ms가 소요되지만, Virtual Thread는 166ms만 필요합니다 (.. 2025. 11. 11.
ConcurrentModificationException (반복 중 컬렉션 변경 오류) 발생 원인과 해결 방법 - 에러 로그아래 코드는 ArrayList를 반복하면서 내부에서 요소를 제거하고 있습니다. 실행 결과 컬렉션을 순회하던 중 예외가 발생하여 프로그램이 종료됩니다. 예외 메시지는 다음과 같습니다.Exception in thread "main" java.util.ConcurrentModificationException at java.base/java.util.ArrayList$Itr.checkForComodification(ArrayList.java:937) at java.base/java.util.ArrayList$Itr.next(ArrayList.java:891) at Example.main(Example.java:15) 위 예외는 컬렉션을 반복(iteration)하는 도중에.. 2025. 3. 14.
반응형