Java LTS 25 변경사항 요약
·
Code/Java
1. 서론사이드 프로젝트를 새로 진행하며 Java / Spring 버전에 대한 스택을 정하려고 했는데요.최근 2025년 9월에 출시한 Java 25에 대한 내용을 정리 해봤습니다.25버전은 LTS 버전으로 출시되었으며, 스탠다드 라이브러리, API와 런타임에 대한 변경점이 있었습니다.2. JEP 506 - Scoped Values / ThreadLocal 대체기존에 ThreadLocal은 누수와 복잡한 라이프사이클 관리 문제가 있었다고 합니다. Java 25의 Scoped Values는 읽기 전용 컨텍스트 값을 블록 범위로 안전하게 전달하는 방식이라, 비동기·가상 스레드에서도 깔끔하게 동작한다고 하는데요. 아래의 예를 살펴보겠습니다.import java.lang.scoped.ScopedValue;publ..
HttpServletRequest Body를 여러번 읽을 수 없을까? - ContentCachingRequestWrapper
·
Code/Spring
Request Body에 대한 로그를 Filter 단계에서 찍고 싶을 때...API를 개발하다 보면 "어떤 데이터를 바탕으로 에러가 나지?"라는 생각으로 재현하고 싶을 때가 있습니다. 이때 가장 먼저 확인하고 싶은 것이 바로 Request Body(JSON) 의 내용입니다.하지만 그냥 로그를 찍으면 Stream Closed 에러가 발생하거나, 컨트롤러 계층에서 비어있는 요청이 전달되게 됩니다.오늘은 이 문제의 근본적인 원인인 HttpServletRequest의 특징부터 이를 해결할 수 있는ContentCachingRequestWrapper에 대해서 알아보겠습니다.1. HttpServletRequest에 대해서..가장 먼저 우리가 다루고 있는 객체, HttpServletRequest 에 대해 간단히 짚고 ..
Kubernetes는 부담스러운 당신 Docker Swarm은 어떠신가요?
·
Infra
Docker Swarm으로 가볍게 오케스트레이션 맛보기사이드 프로젝트를 진행하다 오케스트레이션의 도입의 필요성을 느끼게 되었습니다.다들 사용하는 Kubernetes에 대한 공부를 하던 중 문득 이런 생각이 들었습니다. 솔직히 우리 규모에 쿠버네티스(Kubernetes, k8s)까지 필요한가? 물론 쿠버네티스는 강력한 툴입니다. 하지만 러닝 커브가 매우 높고, 유지 보수 비용이 높으며, 작은 프로젝트에는 오버 스펙이 될 수도 있습니다. 오늘은 그 대안으로 Docker Swarm을 살펴보고 사용하기에 적합한지 살펴보겠습니다.0. Docker Swarm에 대해서..Docker Swarm을 사용하는 이유에 앞서서 Docker Swarm에 대해서 간단히 그림을 통해 알아보고자 합니다.위의 그림을 보면 Dock..
아직도 Logstash만 쓰는 그대를 위한 : Fluentd 알아보기
·
Infra
결론적으로 Fluentd는 Logstash와 같은 로그 수집기 (Log Aggregator / 집게, 처리, 라우팅) 기능을 합니다. 하지만 마냥 똑같진 않습니다. ㅎㅎ.. 일단 로그 수집기와 fluentd에 대해서 좀 더 알아볼까요?MSA 구조와 클라우드 환경에서 일일이 log 파일을 뒤지며, find/grep을 통해서 수만줄이 되는 로그 중 원하는 로그를 찾기 어렵습니다. 이러한 상황에서 흩어진 로그 데이터를 모아 수집/가공/전송 해주는 것이 통합 로그 수집기입니다.별도의 로그 수집기를 왜 사용해야 할까요? 일단 아래의 그림을 보겠습니다. 위와 같이 현대의 서버 시스템은 매우 다양한 로그를 출력 합니다. 접근 로그, 앱 서버 로그, 시스템 로그 등.. 로그 시스템은 매우 복잡합니다. 이러한 로그들을 ..
인턴 2주차 회고
·
주저리
인턴으로 입사한지 어언 2주가 되었습니다. 인턴 과정 동안 할 주제에 대해서 아래와 같이 결정했습니다. Docker Swarm으로 전사 서버 시스템 전환BI 대시보드, 툴 통합서버 시스템 Docker Swarm 통합저는 여기서 의문을 처음에 가지게 되었는데요. Kubernetes와 같이 강력한 오케스트레이션 툴을 사용을 안할까요?하지만 그 이유에 대해서는 납득이 되었습니다.큰 기업처럼 DevOps를 담당할 인력 부족하고 이전에 Kubernetes 도입 시도간에 오류가 많아서 실패한 경험이 있다고 하네요.그렇기에 좀 더 개발자들이 직접 배포 관리하기 쉽고, 비개발자도 운영관리가 용이한 Docker Swarm을 사용하게 되었습니다. BI 대시보드, 툴 통합현재 BI 대시보드, 의사결정 자료로 사용하는 웹 서..
아직도 Service에서 만든 DTO를 그대로 반환하시나요?
·
Code/Spring
Spring Boot를 사용하며 우리는 DTO를 통해 유저에게 반응을 전달하고, 레이어 간에 데이터를 이동시킵니다.우선 DTO에 대해서 자세히 알아보고, 평소에 우리는 어떻게 사용하는지 살펴봅시다.DTO(Data Transfer Object, 데이터 전송 객체)란?DTO는 말 그대로 데이터를 임시로 담고 있는 객체입니다. 계층과 계층 사이에서 데이터를 전송하기 위해서 사용됩니다.Client-Server 프로젝트에서는 각자 서로 다른 구조로 구성되는 경우가 있습니다. 각 영역에서는 중점으로 하는 점이 다른데요. Client Side에서는 사용자 친화적인 표현을 하기 위한 구조를 지향하고, 서버에서는 DB의 테이블 구조와 유사하거나, 성능이 뛰어난 방식을 선호하게 됩니다. 이러한 이유로 DTO는 같은 단어이..