1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문:모놀리식에서 마이크로서비스로 넘어오면서 인프라 레이어의 개념들이 혼재되기 시작한다. *"Nginx가 로드밸런싱을 해주는데 왜 Eureka라는 별도의 서버가 필요한가?", *"API Gateway가 있는데 Nginx는 또 왜 앞단에 두는가?" 와 같은 질문들은 '정적 인프라'와 '동적 클라우드 환경'의 차이를 명확히 이해하지 못했기 때문에 발생한다. 또한, *"Flux와 Mono는 단순한 리스트 포장지(Wrapper)가 아닌가?"* 라는 의문은 리액티브 스트림의 본질인 '비동기 파이프라인'을 이해해야 해소된다.탐구 목표:본 아티클에서는 리액티브 프로그래밍의 데이터 흐름(Flux/Mono)을 시작으로, 프록시(..
1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문:애플리케이션을 개발하다 보면 단순한 상수 관리에 대해 *"그냥 static final로 선언하면 되는 것을 왜 굳이 @ConfigurationProperties로 복잡하게 빈(Bean)으로 등록해야 하는가?"* 라는 의문이 든다. 또한, 시스템이 커짐에 따라 REST API를 넘어 메시지 큐(RabbitMQ, Kafka)를 도입하고, 더 나아가 WebFlux와 같은 리액티브 스택으로 전환하게 되는데, 이 과정에서 *"도대체 왜 이 복잡한 기술들이 필요한가?"* 에 대한 근본적인 당위성을 찾기 어렵다.탐구 목표:본 아티클에서는 1) 구성 정보 관리의 제어 역전(IoC), 2) 메시징 시스템의 물리적/논리적 채..
1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문:Spring Security를 학습하다 보면 *"로그인한 사용자 정보를 어떻게 컨트롤러의 인자(@AuthenticationPrincipal)로 바로 받아오는 것일까?"* 하는 의문이 든다. 또한, 보안 설정이 적용되는 위치가 Servlet Filter인지, AOP인지 혼동하기 쉽다. 특히 *"URL 보안 검사는 헤더 검사와 무엇이 다른가?", *"ThreadLocal은 메모리 어디에 위치하는가?" 와 같은 근본적인 동작 원리에 대한 이해가 부족하면, 문제가 발생했을 때 디버깅하기 어렵다.탐구 목표:본 아티클에서는 HTTP 요청이 서버에 도달하여 컨트롤러에 도착하기까지의 흐름을 분석하고, Servlet Fil..
1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문:데이터베이스 접근 기술을 학습하면서 *"왜 JPA 엔티티에는 기본 생성자(@NoArgsConstructor)가 반드시 필요한가?", *"편리한 Lombok의 @Data를 왜 엔티티에서는 지양해야 하는가?" 와 같은 의문이 생긴다. 또한, 실무에서 JdbcTemplate, MyBatis, JPA 중 어떤 기술을 선택해야 하는지, 그 기준이 단순히 '최신 기술' 여부인지에 대한 고찰이 필요하다.탐구 목표:본 아티클에서는 Serializable과 Optional 같은 자바 기본 개념부터 시작하여, JdbcTemplate과 Spring Data JDBC의 차이점을 분석한다. 특히 JPA의 핵심인 리플렉션(Refle..
1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문:Spring Boot로 웹 애플리케이션을 개발하다 보면 데이터 전송 객체(DTO)를 정의할 때 습관적으로 Lombok의 @Data를 사용하거나, 단순히 @NotNull 어노테이션을 붙여 유효성 검사를 수행하곤 한다. 하지만 *"왜 DTO에는 @Data 대신 Java 14의 Record 사용이 권장되는가?", *"Validation은 DB가 아니라 언제, 어디서 수행되는가?", *"MVC 패턴에서 Model과 View 사이의 데이터 바인딩은 구체적으로 어떻게 이루어지는가?"* 와 같은 근본적인 질문에 부딪히게 된다.탐구 목표:본 아티클에서는 Spring MVC에서의 데이터 흐름(Data Binding)과 유효..
1. 문제 제기 (Introduction & Problem Statement)관찰 현상 또는 질문Spring Boot를 처음 시작할 때 Spring Initializr를 사용하면 실행 가능한 프로젝트가 마법처럼 뚝딱 만들어진다. 하지만, "왜 Application.java 파일은 반드시 최상위 패키지에 있어야 하는가?", "도대체 mvnw는 로컬에 설치된 Maven과 무엇이 다른가?", "설정 파일에서 흔히 보는 classpath: 접두사는 실제로 컴퓨터의 어떤 경로를 가리키는가?"와 같은 질문에 명확히 답하지 못하는 경우가 많다.탐구 목표본 아티클에서는 Spring Boot 프로젝트의 초기화 과정(pom.xml), 디렉토리 구조의 기술적 의도, 그리고 빌드 도구와 JVM, ClassLoader의 상호작..