DDD 레이어드 아키텍처에 대하여

우리는 일반적으로 서비스를 구현하기 위해 도메인 모델과 함께 사용자 인터페이스, 인프라스트럭처, 외부 서비스 연동 컴포넌트 등 다양한 것을 구현해야 하는데요.

2022년 3월 27일
·
0개의 댓글
post-thumbnail

Embedded Kafka를 통한 Kafka 테스트

마이크로서비스 아키텍쳐 환경에서 서로 다른 도메인들간 분산 이벤트 처리를 위해 Kafka를 사용하는 경우가 많은데,실제 운영하는 Kafka를 연동한 후 테스트를 진행하는 경우를 종종 목격한 적이 있습니다.이는 외부 afka에 의존해 테스트를 진행하는 것이기 때문에 테스

2022년 3월 25일
·
0개의 댓글
post-thumbnail

JPA N + 1 문제에 대하여

JPA를 사용하다보면 다양한 문제를 마주치곤 하는데요.오늘은 그 중 가장 대표적인 문제인 N + 1 문제에 대해 알아보고자 합니다.JpaRepository를 통해 엔티티 리스트를 조회하니 리스트에 존재하는 Entity의 갯수만큼 연관되어 있는 Entity에 대한 조회

2022년 3월 22일
·
0개의 댓글
post-thumbnail

HystrixCacheManager 구현

Hystrix에 대해 알고 싶으신 분은 이전 포스팅을 확인해주세요.회사에서 서비스를 구현하며 조회에 대한 Redis 캐시를 적용하기 위해 CacheManager를 재정의 하였습니다.RedisCacheManager를 적용한 후 Redis의 장애로 인해 서비스가 영향을 받

2022년 3월 19일
·
0개의 댓글
post-thumbnail

Junit Test 관련 어노테이션 사용법

지금까지 단순히 레이어를 테스트하는데에 있어 @SpringBootTest 어노테이션을 만을 사용해 테스트를 진행했었습니다.그러다보니 애플리케이션의 규모가 커짐에 따라 테스트 속도가 현저히 떨어져 개발 생산성이 점점 저하되는 상황에 놓이게 되었습니다.이 문제를 해결하기

2022년 3월 13일
·
0개의 댓글
post-thumbnail

Spring Rest Docs를 통한 API 문서화

서비스 API를 개발한 후 개발된 API 스펙을 프론트엔드 개발자와 공유하며 협업을 진행하게 되는데요 이때 구두로 API 스펙을 공유할 수도, 혹은 문서화 후 그 문서를 공유하며 협업을 진행할 수 있습니다. 저희 팀에서는 얼마전까지만 해도 API 개발을 마친 후 노

2022년 3월 10일
·
0개의 댓글
post-thumbnail

Hystrix Spring Boot 환경에서 사용하기

저번 포스팅에서 Hystrix가 무엇이고, 다양한 속성들과 간단한 사용방법에 대해 알아보았습니다.이번 포스팅에서는 Spring Boot환경에서 Hystrix를 어떻게 사용할 수 있는지에 대해 알아보도록 하겠습니다.가장 먼저 Hystrix를 Spring Boot에서 사용

2022년 3월 3일
·
0개의 댓글
post-thumbnail

Hystrix 란 무엇인가

Order 서비스와 Product 서비스 이 두가지가 있다고 가정해보겠습니다.사용자가 주문을 위해 주문 서비스로 요청중에 있습니다.주문 서비스는 사용자의 주문 정보를 받아 상품 서비스(외부 서비스)에 주문 상품들에 대한 기본 금액과 수량 정보를 요청합니다.여기서 만약

2022년 3월 2일
·
0개의 댓글
post-thumbnail

[JPA] firstResult/maxResults specified with collection fetch... 문제를 어떻게 해결했는가?

회사에서 JPA를 사용하다 fetch join을 사용하는데에 있어 페이징을 해야하는 상황이 발생했었는데요.예시코드로 먼저 보여드리도록 하겠습니다!(예시 코드는 이해를 돕기 위해 구성한 코드로 회사 코드와 전혀 관련이 없는 점 참고 부탁드립니다.사용자에게 상품 리스트를

2022년 2월 12일
·
0개의 댓글
post-thumbnail

Spring Null-safety 설정

Null-safety라는 개념을 알게되어 설정 방법에 대해여러분들께 공유하고자 포스팅을 진행하게 되었습니다^^우선 Spring에서 제공하는 null 관련 어노테이션은 총 4가지가 존재하는데요.@NonNull@Nullable@NonNullApi@NonNullFields각

2022년 2월 3일
·
0개의 댓글
post-thumbnail

[이펙티브 자바] 상속 보다는 컴포지션을 사용할 것

그동안 코드 재사용을 목적으로 상속 기법을 사용하는 경우가 종종 있었는데 이펙티브 자바를 공부하며 새로운 깨달음을 얻게 되었습니다.이펙티브 자바에서 제시하는 상속에 관한 내용을 여러분들과 공유하고 싶어 이렇게 포스팅하게되었습니다 ^^“같은 패키지에서 관리하는 클래스라면

2022년 2월 3일
·
0개의 댓글
post-thumbnail

Redis Persistence

다들 아시다시피 Redis는 휘발성인 메인 메모리를 주로 사용하는 NoSQL 인데요.휘발성이다보니 리로드 되거나 다운되면 그 안에 있던 모든 데이터가 날라가는 특징을 갖고있습니다.“저는 Redis에 중요한 사용자 관련 데이터를 저장할 것인데… RDB 처럼 관리하는 방법

2022년 2월 2일
·
0개의 댓글
post-thumbnail

[이펙티브 자바] 클래스와 멤버의 접근 권한을 최소화하라

요즘 공부중인 이펙티브 자바의 목록 중 “클래스와 멤버의 접근 권한을 최소화하라” 파트 부분을 읽고 정리하였습니다.개인적인 생각이 포함되어 있으니 참고 부탁드리겠습니다 ^^잘 설계된 컴포넌트와 그렇지 못한 컴포넌트의 차이는 클래스의 내부 구현을 외부로 부터 얼마나 잘

2022년 1월 31일
·
0개의 댓글
post-thumbnail

Redis의 메모리 운영 기법

관심있는 기술 Redis에 대해 도서를 구매해 다시 공부를 진행하고있는데메모리 기반 Redis를 잘 사용하기 위해서는 아무래도 메모리를 어떻게 관리할 수 있는가에 대해 잘 알아야할 필요성있죠.메모리 기법에 대해 공부한 내용들을 정리하고자 포스팅을 진행하게되었습니다^^메

2022년 1월 30일
·
0개의 댓글
post-thumbnail

대규모 트래픽 상황에서 상품 조회수 처리하기

얼마전 웹서핑하다가 문뜩 이런 생각이 떠오르더군요..“학교에서 배웠던 방식(도메인이 자신의 조회수를 직접 갖고 있는 설계 방식)으로 과연 조회수 관련해 대규모 트래픽을 처리할 수 있을까?”서비스를 제작하는데에 있어 대규모 트래픽이라는 단어는 무시하고 지나칠 수 없는 벽

2022년 1월 28일
·
0개의 댓글
post-thumbnail

Redis에서 SQL을??

토이 프로젝트를 진행하며 조회 처리 성능을 높여보고자 redis를 적극적으로 사용해왔었는데요Redis를 사용하면서 Key, Value로만 구성되어 있다보니 항상 Redis 내에 있는 데이터 filtering을 어떻게 할 수 있을까라는 의문이 들었고, Redis를 RDB

2022년 1월 27일
·
0개의 댓글
post-thumbnail

[이펙티브 자바] equals는 일반 규약을 지켜 재정의할 것

equals 메소드는 단순히 재정의 하기 쉬워보이지만, 자칫 잘못 재정의 할 경우 엄청난 버그를 야기할 수 있는데, 만약 equals 메소드를 재정의하지 않을 경우 같은 클래스의 경우만 true 값을 반환하게 됩니다.아래와 같은 상황이라면 굳이 equals 메소드를 재

2022년 1월 27일
·
0개의 댓글
post-thumbnail

String Pool이란 무엇인가?

이펙티브 자바라는 도서의 챕터 중 불필요한 객체 생성을 피하라라는 아이템에서 우연히“가상 머신 안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드가 같은 객체를 재사용함이 보장된다.” 라는 문구를 보게되었습니다.‘JVM 내에서 다른 코드(변수)들 끼리 String

2022년 1월 26일
·
0개의 댓글
post-thumbnail

Spring cloud stream Kafka

Spring에서는 Spring Cloud Stream이라는 메시징 시스템을 추상화한 구현체를 제공합니다. Spring Cloud Stream Spring cloud stream을 사용하는 애플리케이션은 미들웨어(Kafka, rabbitMQ 등) 과 직접적인 의존관계에 있지 않고, Spring cloud stream에서 제공하는 Binder라는 구현체를 ...

2022년 1월 26일
·
0개의 댓글
post-thumbnail

SOLID DIP(의존 역전의 원칙)

DIP란 Dependency inversion principal의 약자로 클래스는 구체화된 클래스에 의존하지 않고 추상화된 객체(인터페이스, 추상클래스)에 의존해야하고, 고수준 모듈은 저수준 모듈에게 의존해서는 안된다는 의미이다.추상화된 객체에 의존해야하는 이유는 다음

2022년 1월 23일
·
0개의 댓글