- 객체지향 9
- Spring 7
- 책 6
- Kafka 5
- APM 2
- Cache 2
- MSA 2
- SpringBatch 2
- mongoDB 2
- 데이터독 2
- 분산추적 2
- 설계 2
- 테스트 2
- Claude 1
- Consumer 1
- GRASP 1
- Kafka-connect 1
- Partition Assignment 1
- WIL 1
- architecture 1
- domain-driven-design 1
- layered-architecture 1
- multimodule 1
- 낙관적락 1
- 락 1
- 리팩토링 1
- 비관적락 1
- 아키텍처 1
- 책임분배 1
객체지향
주문 서비스의 책임을 분리해보자!
주문 서비스의 요구사항을 구현, 리팩토링해가며 객체지향적으로 책임을 분리하는 과정을 보입니다.
프로젝트 설계 문서들은 어떻게 작성되어야 할까?
요구사항명세부터 시퀀스다이어그램까지 작성하면서 마주친 고민.
객체지향 개발자를 위한 CLAUDE.md
객체지향 개발자가 설정해 두기 좋은 Claude Code의 CLAUDE.md입니다.
오브젝트 - 조영호, 6장
훌륭한 퍼블릭 인터페이스 설계 원칙을 다룹니다. 디미터 법칙, 묻지 말고 시켜라 원칙, 의도를 드러내는 인터페이스, 명령-쿼리 분리 원칙을 통해 유연하고 이해하기 쉬운 인터페이스를 만듭니다.
오브젝트 - 조영호, 5장
GRASP 패턴을 통해 책임을 올바르게 할당하는 방법을 학습합니다. 정보 전문가, 낮은 결합도, 높은 응집도, 다형성, 변경 보호 패턴을 활용하여 유연하고 확장 가능한 설계를 만듭니다.
오브젝트 - 조영호, 4장
데이터 중심 설계는 변경에 취약합니다. 객체의 상태보다 행동에 초점을 맞추고, 책임 중심으로 설계해야 높은 응집도와 낮은 결합도를 가진 유연한 코드를 작성할 수 있습니다.
오브젝트 - 조영호, 3장
역할, 책임, 협력은 객체지향의 핵심입니다. 협력이 객체의 행동과 상태를 결정하며, 정보 전문가에게 책임을 할당하는 책임 주도 설계(RDD) 방법으로 유연한 객체지향 시스템을 구축합니다.
오브젝트 - 조영호, 2장
클래스보다 객체에, 객체보다 협력에 집중해야 합니다. 도메인 구조를 반영한 프로그램을 설계하고, 상속과 다형성을 통해 유연한 설계를 만들며, 합성을 활용하여 변경에 강한 코드를 작성하는 방법을 다룹니다.
오브젝트 - 조영호, 1장
객체지향 설계의 핵심은 객체 사이의 의존성을 최소화하고 결합도를 낮추는 것입니다. 캡슐화를 통해 객체를 자율적인 존재로 만들고, 책임을 적절하게 분배하여 변경에 유연한 코드를 작성하는 방법을 배웁니다.
Spring
랭킹 시스템 With Redis
Redis를 활용해 랭킹 시스템을 개발합니다.
안정적인 분산 시스템 운영을 위한 Retry Backoff 전략과 복원 전략
안정적인 분산 시스템 운영을 위해 어떤 재시도 Backoff 전략과 복원 전략을 가져야할지 알아봅니다.
캐싱 전략? 어떻게 사용해야 적절할까?
캐싱 전략에 따라 어떻게 사용하는 것이 좋을지 고민해봅니다.
비관적락? 낙관적락? 무엇을 사용해야할까?
낙관적락과 비관적락을 알아보고 성능을 비교하며 어떻게 사용하는게 좋을지 알아봅니다.
주문 서비스의 책임을 분리해보자!
주문 서비스의 요구사항을 구현, 리팩토링해가며 객체지향적으로 책임을 분리하는 과정을 보입니다.
MockMvc vs TestRestTemplate
MockMvc와 TestRestTemplate의 차이점을 알아봅니다.
Kafka Connect 와 Spring Batch를 활용한 서비스 마이그레이션
레거시 시스템에서 신규 전처리 시스템으로 대용량 데이터를 마이그레이션한 경험을 공유합니다.
책
오브젝트 - 조영호, 6장
훌륭한 퍼블릭 인터페이스 설계 원칙을 다룹니다. 디미터 법칙, 묻지 말고 시켜라 원칙, 의도를 드러내는 인터페이스, 명령-쿼리 분리 원칙을 통해 유연하고 이해하기 쉬운 인터페이스를 만듭니다.
오브젝트 - 조영호, 5장
GRASP 패턴을 통해 책임을 올바르게 할당하는 방법을 학습합니다. 정보 전문가, 낮은 결합도, 높은 응집도, 다형성, 변경 보호 패턴을 활용하여 유연하고 확장 가능한 설계를 만듭니다.
오브젝트 - 조영호, 4장
데이터 중심 설계는 변경에 취약합니다. 객체의 상태보다 행동에 초점을 맞추고, 책임 중심으로 설계해야 높은 응집도와 낮은 결합도를 가진 유연한 코드를 작성할 수 있습니다.
오브젝트 - 조영호, 3장
역할, 책임, 협력은 객체지향의 핵심입니다. 협력이 객체의 행동과 상태를 결정하며, 정보 전문가에게 책임을 할당하는 책임 주도 설계(RDD) 방법으로 유연한 객체지향 시스템을 구축합니다.
오브젝트 - 조영호, 2장
클래스보다 객체에, 객체보다 협력에 집중해야 합니다. 도메인 구조를 반영한 프로그램을 설계하고, 상속과 다형성을 통해 유연한 설계를 만들며, 합성을 활용하여 변경에 강한 코드를 작성하는 방법을 다룹니다.
오브젝트 - 조영호, 1장
객체지향 설계의 핵심은 객체 사이의 의존성을 최소화하고 결합도를 낮추는 것입니다. 캡슐화를 통해 객체를 자율적인 존재로 만들고, 책임을 적절하게 분배하여 변경에 유연한 코드를 작성하는 방법을 배웁니다.
Kafka
신뢰성있는 카프카 애플리케이션을 만들어보자
신뢰성있는 카프카 애플리케이션을 위해 어떤 것을 고려해야할지 고민해봅니다.
메세지와 이벤트? 뭐가 다를까?
메세지와 이벤트가 어떻게 다른지 알아보고 적절한 사용처를 고민해봅니다.
Kafka Partition Assignment Strategy
Kafka Consumer Group의 파티션 할당 방식을 상세히 분석합니다.
Kafka Custom Partitioner 적용기
프로필별 트래픽 제어와 우선순위 기반 처리를 위한 Kafka Custom Partitioner 구현 사례. 검색엔진의 부하 분산과 긴급 요청의 빠른 처리를 동시에 해결합니다.
Kafka Connect 와 Spring Batch를 활용한 서비스 마이그레이션
레거시 시스템에서 신규 전처리 시스템으로 대용량 데이터를 마이그레이션한 경험을 공유합니다.
APM
데이터독 Trace 적용기
역할이 분리된 마이크로서비스에서 End to End 분산 추적을 위해 Datadog Trace Context를 추출 및 복원하는 방법을 소개합니다. RDB에 Trace Context를 저장하고 AOP를 활용한 어노테이션 기반으로 개선하여 비즈니스 로직에 집중할 수 있도록 구현했습니다.
데이터독 Trace 로컬 환경 설정
로컬 개발 환경에서 Datadog APM을 설정하는 방법을 단계별로 설명합니다. dd-java-agent.jar 설치부터 Docker 기반 Datadog Agent 구성, 애플리케이션 환경 변수 설정까지 실제 적용 과정을 다룹니다.
Cache
랭킹 시스템 With Redis
Redis를 활용해 랭킹 시스템을 개발합니다.
캐싱 전략? 어떻게 사용해야 적절할까?
캐싱 전략에 따라 어떻게 사용하는 것이 좋을지 고민해봅니다.
MSA
메세지와 이벤트? 뭐가 다를까?
메세지와 이벤트가 어떻게 다른지 알아보고 적절한 사용처를 고민해봅니다.
안정적인 분산 시스템 운영을 위한 Retry Backoff 전략과 복원 전략
안정적인 분산 시스템 운영을 위해 어떤 재시도 Backoff 전략과 복원 전략을 가져야할지 알아봅니다.
SpringBatch
Spring Batch를 활용해 주간 상품 집계를 구현해보자
Spring Batch를 활용해 상품 집계를 구현기를 기록합니다.
Kafka Connect 와 Spring Batch를 활용한 서비스 마이그레이션
레거시 시스템에서 신규 전처리 시스템으로 대용량 데이터를 마이그레이션한 경험을 공유합니다.
mongoDB
GridFS를 통한 데이터 저장 적용
MongoDB의 16MB 문서 크기 제한을 극복하기 위해 GridFS를 활용한 대용량 데이터 저장 구현을 소개합니다.
GridFS란?
GridFS는 MongoDB의 16MB 문서 크기 제한을 초과하는 대용량 파일을 저장하기 위한 메커니즘입니다.
데이터독
데이터독 Trace 적용기
역할이 분리된 마이크로서비스에서 End to End 분산 추적을 위해 Datadog Trace Context를 추출 및 복원하는 방법을 소개합니다. RDB에 Trace Context를 저장하고 AOP를 활용한 어노테이션 기반으로 개선하여 비즈니스 로직에 집중할 수 있도록 구현했습니다.
데이터독 Trace 로컬 환경 설정
로컬 개발 환경에서 Datadog APM을 설정하는 방법을 단계별로 설명합니다. dd-java-agent.jar 설치부터 Docker 기반 Datadog Agent 구성, 애플리케이션 환경 변수 설정까지 실제 적용 과정을 다룹니다.
분산추적
데이터독 Trace 적용기
역할이 분리된 마이크로서비스에서 End to End 분산 추적을 위해 Datadog Trace Context를 추출 및 복원하는 방법을 소개합니다. RDB에 Trace Context를 저장하고 AOP를 활용한 어노테이션 기반으로 개선하여 비즈니스 로직에 집중할 수 있도록 구현했습니다.
데이터독 Trace 로컬 환경 설정
로컬 개발 환경에서 Datadog APM을 설정하는 방법을 단계별로 설명합니다. dd-java-agent.jar 설치부터 Docker 기반 Datadog Agent 구성, 애플리케이션 환경 변수 설정까지 실제 적용 과정을 다룹니다.
설계
주문 서비스의 책임을 분리해보자!
주문 서비스의 요구사항을 구현, 리팩토링해가며 객체지향적으로 책임을 분리하는 과정을 보입니다.
프로젝트 설계 문서들은 어떻게 작성되어야 할까?
요구사항명세부터 시퀀스다이어그램까지 작성하면서 마주친 고민.
테스트
MockMvc vs TestRestTemplate
MockMvc와 TestRestTemplate의 차이점을 알아봅니다.
WIL 2025-10-30
레이어별로 테스트를 작성해보며 배운것을 정리했습니다.
Claude
객체지향 개발자를 위한 CLAUDE.md
객체지향 개발자가 설정해 두기 좋은 Claude Code의 CLAUDE.md입니다.
Consumer
Kafka Partition Assignment Strategy
Kafka Consumer Group의 파티션 할당 방식을 상세히 분석합니다.
GRASP
주문 서비스의 책임을 분리해보자!
주문 서비스의 요구사항을 구현, 리팩토링해가며 객체지향적으로 책임을 분리하는 과정을 보입니다.
Kafka-connect
Kafka Connect 와 Spring Batch를 활용한 서비스 마이그레이션
레거시 시스템에서 신규 전처리 시스템으로 대용량 데이터를 마이그레이션한 경험을 공유합니다.
Partition Assignment
Kafka Partition Assignment Strategy
Kafka Consumer Group의 파티션 할당 방식을 상세히 분석합니다.
WIL
WIL 2025-10-30
레이어별로 테스트를 작성해보며 배운것을 정리했습니다.
architecture
도메인 중심 설계로 인프라에 독립적인 비즈니스 로직 설계
도메인 중심 설계를 통해 인프라 변경에 영향받지 않는 비즈니스 로직을 만드는 방법입니다.
domain-driven-design
도메인 중심 설계로 인프라에 독립적인 비즈니스 로직 설계
도메인 중심 설계를 통해 인프라 변경에 영향받지 않는 비즈니스 로직을 만드는 방법입니다.
layered-architecture
도메인 중심 설계로 인프라에 독립적인 비즈니스 로직 설계
도메인 중심 설계를 통해 인프라 변경에 영향받지 않는 비즈니스 로직을 만드는 방법입니다.
multimodule
도메인 중심 설계로 인프라에 독립적인 비즈니스 로직 설계
도메인 중심 설계를 통해 인프라 변경에 영향받지 않는 비즈니스 로직을 만드는 방법입니다.
낙관적락
비관적락? 낙관적락? 무엇을 사용해야할까?
낙관적락과 비관적락을 알아보고 성능을 비교하며 어떻게 사용하는게 좋을지 알아봅니다.
락
비관적락? 낙관적락? 무엇을 사용해야할까?
낙관적락과 비관적락을 알아보고 성능을 비교하며 어떻게 사용하는게 좋을지 알아봅니다.
리팩토링
주문 서비스의 책임을 분리해보자!
주문 서비스의 요구사항을 구현, 리팩토링해가며 객체지향적으로 책임을 분리하는 과정을 보입니다.
비관적락
비관적락? 낙관적락? 무엇을 사용해야할까?
낙관적락과 비관적락을 알아보고 성능을 비교하며 어떻게 사용하는게 좋을지 알아봅니다.
아키텍처
프로젝트 설계 문서들은 어떻게 작성되어야 할까?
요구사항명세부터 시퀀스다이어그램까지 작성하면서 마주친 고민.
책임분배
프로젝트 설계 문서들은 어떻게 작성되어야 할까?
요구사항명세부터 시퀀스다이어그램까지 작성하면서 마주친 고민.