LostCatBox

LostCatBox

내 생각을 자유롭게 만들 때까지

hanghae-9week
이번주 발재 요약 kafka consumer, publisher 도입 및 이벤트화 consumer Group consumer 최대 성능 조건은 partition 갯수 = consumer 갯수 같은 partition에 consumer 여러 개면, 순서보장이 되지않기때문이다. publisher partition 같은 토픽에서 key, value 로 같은 key에 대해서는 같은 partition에 일을 pub하기때문에 항상 순서 보장된다. topic topic당 partition의 갯수를 정할수있으며, 더 늘...
hanghae-8week
이번주 발재 요약 이벤트로 개발할 경우 장점? 각 도메인을 독립적으로 관리한다. 주문은 주문. 결제는 결제. 이벤트로 안한다면 하나의 TX에 모든 로직들 구현시 강결합된 상태로 계속 늘어날수밖에없다 보통 이벤트 발생시점 = 정상적으로 로직이 동작했어요. 하나의 큰 트랜잭션에서 결제, 재고 차감을 한다면 복잡한 구현 없이 트랜잭션 처리로 롤백이 가능해요. 결제는 결제대로 재고는 재고대로 로직을 수행해야 하죠. 결제가 성공하고 해당 이벤트(결제완료)를 발행하면 재고 도메인이 해당 이벤트를 수집해서 재고를 차감해요. 이...
hanghae-7week
7주차 발표 요약 ioc di pattern component 6주차 복습 및 핵심 redis 락획득 -> 트랜잭션 시작-> 비즈니스 로직 -> 트랜잭션 종료 -> 락 해제 로 반드시해야헸다 반드시 참조 https://helloworld.kurly.com/blog/distributed-redisson-lock/ 트랜잭션이 전파가 잘되는지 매우매우 중요. aop만 설정해서 락 획득을 하게되면, 락이 먼저 해제된 뒤 트랜잭션 커밋 직전에 데이터 조회하면 정합성 달라짐. 포인트에서 getL...
리니어 사용법
issue 생성시 요소 필수요소 담당자 프로젝트 상태 추가요소(선택1) 마감일 설명 우선순위 추가요소 (선택2) 예상 소요 시간 라벨 상태값 설명 백로그 : 언젠가 이슈화 되어서 누가 담당하고 처리해야할지도 모름 -> 쌓기 할일 : 누가 담당 정해지거나, 실제하기로 정해진 일 작업중: 할 일에서 일 시작하는 순간 작업중으로 변경 완료: 작업중에서 일이 완료되었을때 취소: 안하게됨 중복: 백로그에서 중복으로 넘김(이미 처리된 이슈) cycle 한시간단위로 예상 소요시간을 기준으로 일주일에 한번 이...
hanghae-6week
6주차 발표 요약 코드 리뷰 코드 리뷰 -> 공동 목표 필요, 일관된 방향, 분리된 토픽으로 커밋단위로 리뷰 countdownlatch 동시성 테스트툴 사용법(excute and finally-> countDown() 필요) 6주차 발제 6주차부터 대용량 트래픽부터는 커리어에 매우 도움이 많이 될것이다. 5주차까지는 DB락 제어-> 낙관적락과 비관적락을 사용하는가. 낙관적락은 충돌이 많이 발생하지않는경우, 빠른 피드백이 필요한 경우, 실패해도 되는경우 retry 관련 로직은 application에서 비...
(항해) 5주차 서버 동시성 설계 및 테스트
5주차 공개 Q/A결제가 외부 API를 이용할 경우 트랜잭션 전략 주문 -> 포인트 사용 -> 결제 방식으로 진행해야한다. 결제가 외부 API면 취소가 안된다. -> 따라서 결제를 맨 나중에 해야함 내부 DB 트랜잭션 롤백은 쉽지만, 외부 API를 사용하는경우, 보상로직이 돌아야한다. 보상로직 ApplicationEvent를 만들고, EventListener가 받아서 처리한다. 낙관락, 비관락낙관락 재시도 2 ~3번 시 반드시 성공가능한 케이스에서만 도입하자 내부적인 재시도 처리를 한다면, 성공할...
(항해) 4주차 서버 DB 설계 및 성능테스트
Domain, Entity 도메인 ( Domain ) 특정 기능과 관련된 속성, 기능 등을 응집화시킨 개념 e.g. 도메인 이해도가 높아야 한다. = 해당 기능을 구성하는 하위 도메인에 대한 유기적 흐름 이해가 가능하다. 도메인 모델 = 기능적으로 군집화시켜놓은 개념으로 일반적으로는 그 도메인을 표현하는 객체를 의미하며 POJO 일수도, JPA Entity 를 도메인 모델로 사용할 수도 있다. 도메인 url = 하위 uri를 그루핑할 수 있는 응집화된 url 엔티티 ( Entity ) 도메인을 설명할때 말하는 엔...
(항해) 3주차 이커머스 설계(아키택처 및 DDD)
3주차 발제 TDD는 무조건 중요하다. 요구사항을 자세히 정리하고 분석하는것이 매우중요!!!!!! 제일 중요!!!!!!!!!!!! 설계가 중요한 것들이 필요하다. 요구사항을 충족하는 기술들을 잘 선택하는것. 요구사항 비기능적으로 영속성, 확장성 등등 -> 나중에 마지막에 구체화(Mysql, 로드밸런스 등등) 요구사항이 자세해야, 구조를 파악하고, 도메인을 적용등등 하기가 수월하다 특히 개발시간도 매우 단축된다. 도메인 전문가가 원하는 기능이 나올 것이므로. (MCP가 aws등등 다) (RPG게임 비추, 현실에서 스킬...
(책읽기)도매인 주도 설계 시작하기
왜? DDD 개발 예시를 알기위해서 DDD의 정확한 예시를 알기위해 도메인 기본 지식 도메인 = 문제의 영역 도메인 모델 -> 엔티티와 값객체로 나눔 엔티티 - 식별값이 존재 값 객체 - 식별값이 없음 보통은 루트 엔티티 + 값 객체로 구성되어 하나의 애그리거트가 된다. 애그리거트 애그리거트는 하나의 Repository, 하나의 Transaction 단위를 가지는 집합이다. 다음과 같이 하위 도메인 모델들의 기능들의 상태변화 및 비즈니스 로직을 구현하고있다. 따라서 루트 애그리거트를 통하여 하위 도메인 모델의 ...
(항해) 2주차 주문 서비스 설계
1주차 마지막 리뷰 행동했는지 여부도 실패, 성공 테스트때 빼먹지말자 123456789101112131415161718192021222324252627282930313233343536373839404142단위 테스트 : 대상 객체만 "실체" 로 두고 테스트- 대상 객체의 고유 기능통합 테스트 : 두개 이상의 객체를 "실체" 로 두고 테스트- 유기적인 동작의 기능----서비스.포인트 충전의 고유 기능?- 포인트를 조회해 와서, 충전하라고 시키고, 그 결과를 저장하고 내역도 저장한다.포인트 충...
avatar
lostcatbox
내 생각을 자유롭게 만들 때까지
FRIENDS
friendA friendB