앞서 비즈니스 로직에 대한 피드백을 받은 후 술먹은 듯한 게시글을 쓰고 다시 한번
비즈니스 로직에 대해서 공부를 해봤다.
멘토님께서도 너무 고민하고 있는 것이 눈에 보이셨는지,
본인이 생각하는 비즈니스 로직이란 특정 도메인에서 해당 도메인의 데이터를 중심으로 일어나는
서비스의 핵심 로직이라고 하셨다.
여기서 내가 생각하지 못한 단어가 등장했는데, 바로 도메인이다.
지금까지 비즈니스 로직을 알기 위해서 공부했을 때
디자인 패턴에서 사용하는 비즈니스 로직 등 자연스럽게 디자인 패턴으로 구분한 로직은
전부 비즈니스 로직이라고 생각했다.
하지만 도메인을 추가해서 검색을 했을 때는
전혀 다른 검색 결과가 나오게 되었다.
그래서 비즈니스 로직과 비즈니스 로직이 아닌 것으로 공부를 이어나갔다.
먼저 비즈니스 로직에 대해서 이해를 하기 위해서는 비즈니스, 도메인에 대해서 알아야 한다.
소프트웨어에서 말하는 비즈니스란 " 소프트웨어가 풀고자 하는 현실 세상의 문제 " 를 말한다.
예를들어 은행 어플리케이션을 만든다고 생각했을 때,
비즈니스, 도메인은 금융과 은행 업무가 될 것이다.
일단 비즈니스와 도메인은 같은 뜻이고 무엇인지 알았다.
근데 생각해보면 코드로 작성하는 것이 모두 다 현실의 문제를 해결하기 위한 것이 아닌가? 라는 생각이
들었다.
여기서 비즈니스 로직과 어플리케이션 서비스 로직이 나온다.
▶ 비즈니스 로직
코드가 현실의 문제, 즉 비즈니스(도메인)에 의사 결정을 하는 것
▶ 어플리케이션 서비스 로직
결정을 입력 값으로 만들거나 결과물을 해석하고 보여주는 것
주요한 예,
▷ 데이터베이스를 연결한다.
▷ 백엔드 서버와 통신한다.
▷ 사용자와 인터랙션을 한다.
모바일 송금으로 예시를 더 들어보자면
모바일 송금
- 계좌에 잔액이 충분한지 확인한다.
- 유효하면 송금 버튼을 활성화하고 유효하지 않다면 에러 메시지를 띄운다
- 사용자의 멤버십 등급에 맞춰서 송금 수수료를 계산한다.
- 송금 수수료를 결제하도록 외부 결제 서비스에 요청한다.
- 사용자의 잔액을 감소시킨다.
- 잔액을 DB에 저장한다.
도메인 로직
- 계좌에 잔액이 충분한지 확인한다. → 송금이 가능한지에 대한 의사 결정
- 사용자의 멤버십 등급에 맞춰서 송금 수수료를 계산한다. → 송금에 드는 비용을 정책에 따라 결정
- 사용자의 잔액을 감소시킨다. → 송금이라는 서비스를 수행
어플리케이션 서비스 로직
- 유효하면 송금 버튼을 활성화 시키고 유효하지 않다면 에러 메시지를 띄운다. → UI 요소
- 송금 수수료를 결제하도록 외부 결제 서비스에 요청한다. → 외부 서비스와의 연결
- 잔액을 DB에 저장한다. → 서버와의 통신
으로 구분이 가능하다.
참고
https://velog.io/@eddy_song/domain-logic
'개발정보' 카테고리의 다른 글
Docker 이미지 실행 중 발생한 오류 /bin/sh: 1: [npm,: not found (0) | 2022.12.02 |
---|---|
GitHub Actions 을 사용한 CI / CD - 이론편 (0) | 2022.11.28 |
Service Worker (0) | 2022.11.23 |
CI / CD (0) | 2022.11.20 |
사파리의 vh (1) | 2022.10.23 |