DDD 개요

정의 Domain-Driven Design(DDD)은 도메인의 프로세스와 규칙을 풍부하게 담은 도메인 모델을 프로그래밍하는 데 개발의 중심을 두는 소프트웨어 개발 접근법이다. 2003년 Eric Evans의 책 Domain-Driven Design: Tackling Complexity in the Heart of Software에서 이름이 유래했다. Evans 본인은 DDD를 세 가지로 요약한다. Core Domain에 집중한다. 도메인 전문가와 소프트웨어 전문가의 창의적 협업으로 모델을 탐구한다. 명시적으로 경계 지어진 컨텍스트 안에서 하나의 보편 언어를 사용한다. Martin Fowler는 Evans의 기여를 “모델링 표기법 논쟁을 넘어서는 어휘를 만든 것"으로 평가한다. 도메인 모델이 중요하다는 주장 자체는 1980~90년대 데이터 모델링과 객체지향 분석에서도 있었지만, Evans는 그 접근을 이야기할 수 있는 용어 체계(Entity, Value Object, Aggregate, Bounded Context 등)를 정리했다. ...

🛠 업데이트: 2026년 7월 30일 PM09:30 · PolarBear

Spring Framework Overview

개요 Spring Framework는 Java 엔터프라이즈 애플리케이션 개발을 위한 오픈소스 프레임워크다. Java뿐 아니라 Groovy, Kotlin 등 JVM 언어를 지원하며, 다양한 아키텍처 요구사항에 유연하게 대응한다. Spring Framework 6.0부터 Java 17+를 요구한다. “Spring"이라는 용어는 Spring Framework 프로젝트 자체를 가리킬 수도 있고, Spring Boot, Spring Security, Spring Data 등을 포함하는 전체 프로젝트 패밀리를 의미할 수도 있다. 핵심 특징 모듈 기반 구조: 핵심은 코어 컨테이너(설정 모델 + DI 메커니즘)이며, 그 위에 메시징, 트랜잭션, 데이터 영속성, 웹 등의 모듈이 쌓인다 Servlet 기반 MVC + 리액티브 WebFlux: 두 가지 웹 프레임워크를 병렬로 제공 Java Module System 지원: spring.core, spring.context 등 안정적인 모듈명 제공 Jakarta EE 통합: Spring 6.0부터 Jakarta EE 9 기반 (jakarta 네임스페이스), Tomcat 10.1, Jetty 11, Hibernate ORM 6.1 호환 역사 시기 주요 변화 2003년 J2EE의 복잡성에 대한 대안으로 Spring 탄생 ~ Spring 5 리액티브 프로그래밍 지원 (WebFlux), Servlet API 없이도 동작 가능 Spring 6.0 Jakarta EE 9 전환 (javax → jakarta), Java 17+ 요구 현재 Spring Boot 기반 클라우드 네이티브, DevOps 친화적 개발이 주류 Spring은 Jakarta EE와 경쟁 관계가 아닌 보완 관계다. Jakarta EE 플랫폼 전체를 수용하지 않고, 필요한 개별 스펙만 선택적으로 통합한다: ...

🛠 업데이트: 2026년 7월 30일 PM09:30 · PolarBear

TDD 개요

정의 Test-Driven Development(TDD)는 동작하는 코드를 작성하기 전에 그 코드가 통과해야 할 자동화된 테스트를 먼저 작성하는 개발 방식이다. 2002년 Kent Beck의 Test-Driven Development: By Example로 정리됐고, Extreme Programming(XP)의 실천법 중 하나에서 출발했다. 이름에 “Test"가 들어 있지만 TDD는 테스트 기법이 아니라 설계 기법으로 분류된다. 테스트를 먼저 쓰려면 그 코드를 어떻게 호출할지, 무엇을 주고 무엇을 받을지를 먼저 정해야 하고, 그 결정이 곧 인터페이스 설계이기 때문이다. 테스트 스위트는 그 과정에서 부수적으로 남는 산출물에 가깝다. ...

🛠 업데이트: 2026년 7월 31일 PM05:34 · PolarBear