Gyu Hwan
Preview Image

DDD 설계 - 이벤트 스토밍

이전 프로젝트인 ‘공연 예약 서비스’는 DDD 설계를 목표로 했었다. 하지만 구글링을 통한 간단한 선행 학습으로 시작했기 때문에 미흡한게 많았다. ‘공연 예약 서비스’와 달리 이번 프로젝트는 DDD의 개념과 여러 방법을 관련 서적으로 학습하고, 실제 적용해 보고자 한다. 다음은 DDD를 학습하기 위해 참고한 서적이다. 도메인 주도 개발 시작하...

Preview Image

2023년 프로그래밍 책 후기

이번 글은 개인적으로 작년에 읽었던 책 중에 좋았던 책과 후기를 작성해보고자 한다. 책을 읽고 직접 적용해보고 생각해보는 것을 좋아하다보니 몇 년간 정말 많은 책을 읽은 것 같다. 아직도 자주 사용하는 사이트의 장바구니엔 읽어보고 싶은 책들이 쌓여있다. 읽어볼 정보와 지식이 많다는 건 항상 설레게 한다. :) 객체 지향 1. 객체지향의 사실과 오...

denormalization

비정규화 언제 사용되나?

“정규화”, “비정규화”란 용어는 데이터베이스 설계에서 자주 접하게 되는 개념이다. 정규화는 테이블 간 데이터의 중복을 최소화하는 것을 목표로 하며, 이를 통해 데이터 무결성을 유지한다. 반면, 비정규화는 성능 향상, 데이터 검색 속도 증가를 위해 중복, 통합, 분할하는 과정이다. 일반적으로 데이터베이스를 설계할 때, 대부분 정규화를 기본으로 한다....

monitoring

분산 추적과 성능 모니터링 구축

분산 추적과 성능 모니터링 구축 이번 글은 분산 추적과 성능의 모니터링을 구축하면서 버전 이슈와 해결했던 경험을 적어보려고 한다. MSA는 여러 개로 분리된 작고 독립적인 서비스들이 서로 간 통신하도록 연결된 구조를 말한다. 분리된 덕분에 서비스 간의 복잡도와 의존성이 높고 하나의 요청이 여러 서비스를 통하기 때문에 장애가 발생할 확률도 높아진다....

distributed transaction

분산 트랜잭션 해결 방법2

1. 개요 이번 글은 MSA에서 분산 트랜잭션을 제어하는 방법인 사가 패턴의 orchestration 방식에 대한 적용 글이다. orchestration 방식은 오케스트라의 지휘자를 연상하면 될 듯 싶다. 여러 복잡한 작업이나 워크플로우를 관리 및 조정, 구성을 의미하는데. 하나의 요청에 대해서 각 서비스의 요청과 응답을 한 곳에서 단계별로 관리한다...

도메인 변경에 따른 영향

도메인의 수정이 타 서비스에 영향이? 문제 상황 기존 설계로 인해 도메인 필드의 수정이 테스트 코드뿐 아니라 이벤트 클래스, 타 서비스에까지 영향을 줬다. 테스트 코드는 도메인 변경시 당연히 영향이 가겠지만, 타 서비스에 영향은 생각지 못했다. 이벤트 클래스 설계 먼저 이벤트 클래스를 설계는 다음과 같이 했었다. 공통 Event를 설계하면...

하이버네이트 성능 튜닝

많은 사람들이 생각하는 Hibernate에 대해 가지는 오해중 하나는 데이터베이스가 크거나 사용자가 많아지면 성능 문제가 발생한다고 생각합니다. 하지만 대부분 잘 만들어진 프로젝트를 보면 HIbernate를 사용하여 확장성이 뛰어나고 유지 보수가 쉬운 영속성 계층을 구현한 것을 볼 수 있습니다. 그러면 이러한 잘만들어진 프로젝트와 달리 성능 문제를 ...