본문 바로가기
공부/ERD

우아한 객체지향 강의 메모 - 04

by 고구밍 2022. 4. 24.

 

https://youtu.be/dJ5C4qRqAgA?t=2808 

 

의존성 (디펜더시) - 펜으로 메모 그려보았을 때 이상한게 잇으면 -> 이상한 것

일단 짜고, 개선을 하다보면 원하는 방향으로감

-> 일단 의존성 관점에서 설계

페키지를 이름을 부여하고, 어느 클래스를 넣어야 하는지 그림

객체

이코드의 패키지 구조와

서비스 클래스

도메인 클래스

레이어 -> 개념

레이어를 어떻게 구현할거야? -> 패키지

패키지 안에

나눠둠 객체사이 -> 사이클이 돎

주문이 가게가 주문중인지, 오더와 샵 의존관계 (메시지) 관계가 강하기 때문에 연관관계

옵션그룹 오더옵션을 가져옴

양방향 연관관계가 됨

오더옵션을 고치고 싶을 때, 다른곳도 고쳐야되

결국 양쪽의 패키지를 고쳐야 됨 (의존성의 방향이 잘못)

샵 - 오더옥션

패키지의 양방향 연관관계

옵션그룹으로 변환을 하는 것으로 의존성 바꿈 -> 단방향으로 바뀜

중간 객체로 바꿈

구체 x

클래스득이 추상화에 의존을 하세요 -> 의존성 사이클 끊기 추상화 : 인터페이스여야한다는 선입견

잘 안변함 -> 옵션그룹에 필요한 그룹의 딱 필요한 데이터

-> DIP의 변형?

중간객체를 넣는게 중요한게 아니라

개선할 수 잇는 것이 있지 않을까? 개선가능성

오더를 알고있으면 -> 탐색 경로를 제공함

(객체참조)

어디든 탐색이 가능해짐 -> ORM / DB메핑 -> 어디까지....

LAZY로딩이 발생할 수 있음

객체 그룹의 조회 경계가 모호 -> 어디까지 읽어야되요...?

객체를 어디서부터 어디까지 수정해야되요?

오더를 가져와서 뒤지고다녀서 세팅

-> 끝 -> 롱 트랜잭션으로 물려버림 (성능이슈)

요구사항이 많아질 수록 많아짐

결제 -> 배달완료

배송정보를 생성 -> 저장

결제버튼을 누르면 요청이 옴 -> 어플리케이션에 요청

페이드 -> 객체에 보냄 -> 배송정보 생성 -> 저장

객체상태를 배송 시작한 걸로

배달 완료 -> 오더를 찾아서 -> 오더완료 객체를 찾아서 다완료 됬어요

배달완료 된 만큼 수수료 청구

하나의 트랜젝션 -> 업데이트 됨

문제 : 다른 로직 -> 변경되는 주기가 다르다는 점

가게 : 영업중으로 바꿔야지 / 준비중으로 바꿔야지 (주기)

사용자 : 취소할래 (주문 상태 변화)

배달 : 상태 변경

트랜잭션이 물리는 주기가 달라짐

모두 락이 걸림 -> 대용량 -> 락이 걸림 -> 튕겨져 나감

아무 생각없이 객체들을 쫒아가면서 수을 다보면

트랜잭션 경합으로 인한 성능 저하가 발