'Development/Reflection' 카테고리의 글 목록
본문 바로가기

Development/Reflection

(4)
[Reflection] Kafka를 활용한 이벤트 기반 아키텍처 구축 #우아콘2023 #우아한형제들 Kafka를 활용한 이벤트 기반 아키텍처 구축 #우아콘2023 #우아한형제들 (youtube.com)위 동영상을 회고하는 글 입니다.이벤트 기반 아키텍처를 왜?배달 시스템의 복잡도 증가배달 시스템이 커지면서 단순 배달 기능 외에 통계, 알림, 쿠폰 발급, 배달 시간 관리 등 다양한 기능이 요구되고 있습니다. 배달 시스템은 단순히 배달만 잘 수행하길 원했지만, 고객에게 실시간 알림을 제공하고 통계를 위한 데이터를 수집하며 쿠폰을 발급하는 등 복잡도가 크게 증가하고 있습니다. 이런 상황에서 이벤트 기반 아키텍처를 도입하면 시스템 복잡도를 낮추면서도 기능별로 유연하게 확장할 수 있습니다. 이벤트 기반 아키텍처는 핵심적인 배달 흐름과 부가 기능을 분리해 배달의 일관성에 영향을 주지 않고도 통계나 알림 같은 부가..
[Reflection] ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 / if(kakao)2022 ㄷㄷㄷ: Domain Driven Design과 적용 사례공유 / if(kakao)2022 (youtube.com)이 글에서는 위 동영상의 내용을 보고 공부한 내용을 기록합니다.Domain Driven Design도메인 드리븐 디자인(Domain Driven Desion)이란 소프트웨어 개발 방법론 중 하나로, 단순히 데이터나 기술적인 요소에 집중하는 것이 아닌 도메인 모델에 초점을 맞추어 설계를 진행하는 방식이다. 도메인이란 비즈니스의 핵심 개념과 규칙을 담고 있는 영역으로, 소프트웨어가 다루는 비즈니스의 실제 요구사항을 의미한다. DDD는 이러한 도메인을 정확하게 반영하는 소프트웨어를 설계하고 개발하는 데 중점을 둔다.Domain Driven Design의 특징 도메인의 모델과 로직에 집중: DDD는..
[Reflection] [우아콘2020] 수십억건에서 QUERYDSL 사용하기 [우아콘 2020] 수십억 건에서 QUERYDSL 사용하기 - YouTube위 동영상에서 일괄 Update 최적화 부분에 대해 느낀 점을 작성합니다.일괄 Update 최적화아래 코드는 우리가 일반적으로 Jpa을 사용해서 user 정보를 update 하는 코드이다.@Transactional public void updateUserNames(List userIds, String newName) { for (Long userId : userIds) { User user = entityManager.find(User.class, userId); // 각 엔티티 조회 user.setName(newName); // 엔티티 값 변경 (더티 체킹) // 트랜잭션 종료 시점에 변경된 모든 엔티티가 자동으로 업데이트아래는..
[Reflection] [우아콘2020] 수십억건에서 QUERYDSL 사용하기 - Select 컬럼에 Entity 자제 [2019] Spring JPA의 사실과 오해 (youtube.com) 이 글에서는 위 동영상에서, Entity 보다는 Dto를 우선이라는 챕터에 대해 느낀 점을 작성합니다. Entity 보다는 Dto를 우선우리가 ORM을 사용하면서 Entity를 조회하는 경우가 많다. Entity를 통째로 가져온다면, N + 1 문제라던가, 불필요한 칼럼까지 가져오는 문제가 발생할 수 있다. 이는 성능 이슈의 요소를 포함한다.따라서 우리는 Entity를 조회할 필요가 있는지 따져볼 필요가 있다.Entity를 수정해야 하는가?단지 데이터의 조회만 필요하는가?조회칼럼 최소화 하기QueryDSL에서는 as 표현식으로 만약 이미 알고있는 정보가 있다면 이를 제거할 수 있다.Select 컬럼에 Entity 자제Entity 자체..