[KSUG Seminar] Growing Application - 2nd. 애플리케이션 아키텍처와 객체지향

[KSUG Seminar] Growing Application - 2nd. 애플리케이션 아키텍처와 객체지향

https://www.youtube.com/watch?v=26S4VFUWlJM

애플리케이션 로직과 도메인 로직을 분리하고, 어떻게 객체에 초점을 둔 로직을 작성하는지 알려주는 영상. 절차지향 코드와 객체지향 코드 예시를 통해 비교한다.


https://youtu.be/26S4VFUWlJM?t=46m57s

  • 이 코드 가지고만 실제 어플리케이션을 짤 수는 없음. 데이터는 DB에 있기 때문에
  • 800원 할인이라는 정보는 클래스가 아니라 디비에 있다.
  • "여기서 왜 데이터베이스를 기준으로 코드를 맞추는게 아니라 코드를 기준이 되어야 하는지 알 거 같다"
  • 어플리케이션 로직
    • 어플리케이션의 플로우
    • 도메인 로직의 전 후에 존재
    • 순수한 객체(도메인 객체)에 넣지 않음
    • 넣으면 디비나 네트워크에 의존이 생김
    • 도메인과 무관한 기술적인 내용들을 의미함
    • 도메인 로직을 캡슐화 해준다
    • 서비스

서비스 레이어 특징

  • 어플리케이션의 경계
  • 서비스 시작과 끝은 트랜잭션의 시작 끝을 의미한다
  • 데이터를 준비하고, 도메인 로직에 위임한다.

트랜잭션 스크립트 예

  • 절치 지향이 되면 fat 서비스가 된다. 좋은 서비스는 thin 서비스

https://youtu.be/26S4VFUWlJM?t=55m37s

객체-관계 임피던스 불일치

  • 임피던스 미스매치
  • 도메인 위주로 작성하고 데이터베이스를 구현 하면 어렵다는 단점이 있다.
  • 위처럼 클래스와 테이블이 일치하지 않는 현상도 발생한다.
  • "객체 지향적으로 갈수록 갭은 멀어진다. 이를 임피던스 미스매치라 한다"

https://youtu.be/26S4VFUWlJM?t=56m36s

  • 테이블을 클래스로 매핑하는 데이터 매퍼 작성이 어려워 지기 때문에 ORM과 같은 기술을 쓴다.
  • "클래스와 테이블의 간격이 멀어서 매핑하기가 너무 어려워서 JPA(ROM)을 쓰는 것이다."

https://youtu.be/26S4VFUWlJM?t=1h6m57s

  • 트랜잭션 스크립트를 수정 할 때 최대 단점은 도메인이 코드에 암묵적으로 녹아 있다.
  • 코드에 "중복할인"이라는 말은 없다. 그냥 N개의 할인이라는 코드가 있을 뿐
  • (하나만 할인 => 중복 할인 허용 시)
  • "우린 중복 할인 허용해" 라고 하지만 코드가 어떻게 돌아가는지 봐야만 알 수 있다.

results for ""

    No results matching ""