
빌드 도구와 의존성 관리 - Gradle/Maven과 Spring Boot 패키징
Gradle의 태스크 그래프와 Maven의 빌드 생명주기를 비교하고, Spring Boot 플러그인이 실행 가능 jar를 만드는 과정을 설명합니다. BOM의 의존성 버전 관리 역할과 빌드 시 주의점을 정리합니다.

Gradle의 태스크 그래프와 Maven의 빌드 생명주기를 비교하고, Spring Boot 플러그인이 실행 가능 jar를 만드는 과정을 설명합니다. BOM의 의존성 버전 관리 역할과 빌드 시 주의점을 정리합니다.

Spring Boot가 클래스패스와 조건에 따라 기본 Bean을 구성하고 사용자 정의 Bean에 양보하는 원리를 설명합니다. 스타터의 의존성 묶음과 fat jar를 통한 단일 프로세스 실행도 정리합니다.

DispatcherServlet이 HandlerMapping과 HandlerAdapter에 매칭과 호출을 위임하는 과정을 설명합니다. MVC의 블로킹 처리와 워커 스레드 스택의 native 메모리 비용을 다룹니다.

HTTP 요청이 Spring Boot의 내장 Tomcat에서 DispatcherServlet, Controller와 데이터 계층을 거쳐 응답으로 나가는 경로를 설명하고, 단일 JVM 프로세스와 워커 스레드의 관계를 정리합니다.

객체를 직접 생성할 때의 강결합 문제를 바탕으로 Spring의 IoC와 생성자 DI를 설명합니다. 컨테이너의 Bean 등록, 싱글톤 공유 및 생명주기를 요청 처리 계층과 연결해 정리합니다.

S3 Tables가 Iceberg 테이블의 compaction과 snapshot 관리를 맡는 방식을 설명합니다. Glue의 s3tablescatalog로 연결되는 계층과 ARN 구조를 살펴보고 Athena 조회 절차를 정리합니다.

Iceberg의 파일 추적과 메타데이터 계층을 바탕으로 snapshot 및 원자적 커밋을 설명합니다. 시간여행, 스키마와 파티션 진화, Copy-on-Write와 Merge-on-Read의 차이를 다룹니다.

Athena의 비동기 쿼리 흐름과 Glue Data Catalog의 메타스토어 역할을 설명합니다. workgroup과 파티션 활용, 테이블뿐 아니라 상위 Glue 리소스에도 필요한 IAM 권한을 정리합니다.

Trino와 Presto가 쿼리를 coordinator와 worker에 나눠 처리하는 구조를 단일 노드 엔진과 비교합니다. stage, task, split과 connector 기반 연합 쿼리, Athena와의 관계를 설명합니다.

S3 데이터를 옮기지 않고 SQL로 분석할 때 Athena, Glue, S3 Tables가 맡는 역할을 설명합니다. 쿼리 흐름과 IAM 및 Lake Formation의 권한 경계, Redshift와의 선택 기준을 정리합니다.