김지팡의 저장소
Event 기반 로직 분리는 무조건 좋을까?
카테고리 없음 2025. 12. 12. 17:59

TL;DR트랜잭션을 분리하는 것의 장점이벤트는 무엇인가이벤트 기반으로 로직 분리가 무조건 좋을까? 🧑‍💻 트랜잭션 분리하기 서비스 로직을 작성하다 보면 여러 행위가 조합되어 하나의 서비스 로직으로 완성되는 경우가 있다. 여러 행위가 문제없이 수행되도록 하기 위해서 그들을 하나의 트랜잭션으로 두게 되는데 그 서비스 안에 조합되는 역할이 많아질 수록 트랜잭션의 범위도 커지게 된다. 트랜잭션의 범위가 커질수록 (트랜잭션이 오래 지속될수록) 그 시간동안 커넥션을 점유하게 되고, 이로 인해 커넥션을 얻지 못해 대기 상태에 빠지게 되는 스레드들이 생길 수 있다. 이때문에 가능하다면 트랜잭션을 짧게 유지하는 것이 당연히 좋을 것이다. 🧑‍💻 도긴개긴 아닌가? 만약 20초 걸리던 트랜잭션을 15초와 5초가..

API 손절하기
TIL 2025. 12. 5. 17:58

TL;DR우리 시스템에서 호출하고 있는 외부 API에 문제가 생긴다면?사용자 관점시스템 관점CircuitBreaker 소개상태(closed, open, half-open)fallback, retry실무에서 외부 API를 호출하는 것은 비일비재하다. 어디서든 쉽게 볼 수 있는 소셜 로그인과 결제 시스템이 있고 이외에도 다양하게 외부 API를 연동한다. 🧑‍💻 그런데 만약 시스템에서 사용 중인 외부 API에 문제가 생긴다면 어떻게 될까?당연하게도 소셜 로그인과 결제가 동작하지 않을 것이다. 이를 시스템이 외부 API에 의존하고 있다 이야기할 수 있는데, 만약 한 곳의 소셜 로그인 시스템과 한 곳의 결제 시스템에만 의존하고 있다면 정말 큰 일이다. 다행히도 보통의 시스템에서는 하나의 시스템에만 의존하지 ..

복합 인덱스 적용으로 쿼리 성능 개선하기
TIL 2025. 11. 28. 17:34

TL;DR인덱스 적용 전 & 후 비교 시나리오인덱스 적용 시에 고려해야 할 사항카디널리티 & 선택도 이해하기 📌 테스트 대상검색 API에서 필터 및 정렬 조건을 사용해 상품 조회를 한다. 📌 테스트 조건각 상품은 brandId를 가지고 브랜드는 30여 개의 종류가 있다.상품은 총 10만 개가 있으며 30여 개의 브랜드 중 랜덤 한 brandId값을 가진다.필터 조건은 brandId이며 정렬 조건은 price로 진행했다. 👨‍💻 실행한 쿼리SELECT p.id, p.ref_brand_id, p.name, p.price, p.stockFROM product p LEFT JOIN product_like l ON p.id = l..

트랜잭션 격리 수준 살펴보기 : 철저할수록 답답해진다!
TIL 2025. 11. 21. 17:54

TL;DR트랜잭션이란?트랜잭션 경계가 왜 중요한가?동시성 문제는 언제 발생하는가?트랜잭션 격리 수준에 따라 조회 결과가 달라지는 이유 이번 포스팅에서는 트랜잭션과 동시성 문제를 정리해보고자 한다. 🧑‍💻 트랜잭션이란?트랜잭션은 데이터베이스에서 여러 작업을 하나의 논리적 단위로 묶어 처리하는 것이다. 즉, 연산 단위를 말한다. 트랜잭션은 ACID 원칙에 의해 성공하면 전체 커밋, 실패하면 전체 롤백을 보장한다. 이를 보장하기 위해 필요한 것이 트랜잭션의 경계이다. 트랜잭션의 경계를 어떻게 설정하는지에 따라 결과가 달라질 수 있는데, 이는 예시를 통해 살펴보도록 하겠다. 🚨 트랜잭션 경계가 없는 경우public ExampleInfo createExample(ExampleV1Dto.ExampleReq..

값 객체(Value Object)는 진짜 불변할까?
TIL 2025. 11. 14. 17:50

🧑‍💻 VO: Value Object 값 객체(Value Object)는 이름에서 알 수 있듯이 값을 가진 객체이다. 하지만 이것으로 값 객체를 이해하기는 어렵다. 해당 포스팅에서는 값 객체를 이해하는 시간을 가져보고자 한다. 값 객체가 가지는 특징은 아래와 같고, 각각에 대해서 왜 그러한 특징을 가지는지 포스팅을 통해 하나씩 이해할 수 있으리라 생각한다. 값 객체의 특징불변성동등성자가 검증 🧑‍💻 값이란 무엇일까요?상점에서 물건을 구매할 때 상인은 물건에 값을 부여하고 고객은 물건의 값을 지불한다. 혹시 그 물건을 미국에서 판매하면 값이 변할까? 우주에 가더라도 운송비 등등을 제외한다면 그 물건이 가지는 가치는 여전히 같을 것이다. 그러기에 이러한 관점에서 값은 불변성(Immutability)을..

서로 같은 생각을 하고 있나요?
TIL 2025. 11. 7. 16:20

🧑‍💻 개발자가 하는 일이 뭘까? 무수히 많겠지만 큼지막하게는 개발해야 할 서비스/솔루션에 대해 도메인 및 요구사항 분석, 아키텍처 및 DB 설계, 요구사항 구현이 될 것이다.또한 이들을 재사용 가능하게 / 유지보수성 좋게 / 성능이 우수하게 등등의 형태로 완성하는 것이라고 생각한다. 다시 말해 요구사항을 충실히 구현하는 것이 개발로서의 책임일 것이다. 🧑‍💻 그럼 개발자는 개발만 잘하면 될까? 절대 아니라고 생각한다. 가령 1인 사업체라 할지라도 분명 누군가와 일을 하게 될 것이다. (돈이 땅 파서 나오는 것은 아니기 때문에 ㅠ) 그래서 소통은 필수적이다. 문제는 모든 사람이 같은 생각을 하지 않기에 소통 과정에서 문제가 발생하기 마련이다. 이를 예시를 통해 살펴보자. 🧑‍💻 이것은 사..

728x90