포카칩으로 알아보는 비즈니스 로직
친구가 내게 물었다. "프론트엔드에서는 데이터를 요청하고 받고 조작하는 게 비즈니스 로직이라고 생각하는 건가?"
이 질문은 비즈니스 로직에 대한 흔한 오해를 잘 보여준다고 생각이 들었다.
그래서 친구에게 어떻게 비즈니스 로직을 설명 해줄까 고민했다.
그러다 문득 어제 너무 맛있게 먹은 햇감자 포카칩이 생각나서 포스팅을 작성한다.
비즈니스 로직이란
비즈니스 로직(Business logic)은 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분을 일컫는다. 이 용어는 특히 데이터베이스, 표시장치 등 프로그램의 다른 부분과 대조되는 개념으로 쓰인다. - Wikipedia
즉, 비즈니스 규칙 또는 가치를 실현하기 위한 로직이라고 할 수 있다.
포카칩으로 알아보는 비즈니스 로직
포카칩에는 재미있는 사실이 하나 있다.
포카칩을 생산 시기에 따라 국산 햇감자와 생감자 두 종으로 패키지를 구분 해 출시하고 있다는 것이다.

그리고 사람들은 두 제품의 맛을 비교하기도 한다.
두 제품의 차이를 가르는 건 원재료인 감자의 원산지이다.
오리온에 따르면 국내에서 감자가 나는 매년 6월부터 11월까지는 국내산 감자로 제품을 생산해 국산 햇감자라는 문구와 함께 출시하는 반면, 국내에서 감자가 나지 않는 12월~5월은 미국과 호주에서 수급한 감자를 사용해 제품을 만들며, 이 제품의 패키지에는 생감자가 표기된다고 한다. - SBS News
위 사실로부터 포카칩 제조사인 오리온에는 다음과 같은 비즈니스 규칙을 가지고 있다는 것을 알 수 있다.
if (사용된_감자 === "햇감자") {
포장지에_표시할_텍스트 = "햇감자";
} else {
포장지에_표시할_텍스트 = "생감자";
}
이 간단한 조건문이 바로 비즈니스 로직의 한 예이다. 단순히 데이터를 표시하는 것이 아니라, 비즈니스 규칙에 따라 어떤 텍스트를 표시할지 결정하고 있기 때문이다.
- 단순한 데이터 처리가 아닌 오리온의 패키징 정책을 구현하고 있으므로 비즈니스 로직이라고 할 수 있다.
왜 비즈니스 로직과 UI 로직이 분리 되어야 한다고 할까?
대충 비즈니스 로직이 무엇인지는 알게 됐다. 그런데 대부분의 개발자들은 왜 비즈니스 로직과 UI 로직이 분리 되어야 한다고 주장 할까?
나는 그것을 SOLID 원칙의 관점에서 이야기 해볼 수 있을 것 같다.
단일 책임 원칙
- 비즈니스 로직과 UI 로직을 분리함으로써 각 모듈이 단 하나의 책임만을 가지게 된다.
- 비즈니스 로직은 비즈니스 규칙을 처리하는 책임만, UI 로직은 사용자 인터페이스를 표현하는 책임만 갖게 된다.
