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

그리고 사람들은 두 제품의 맛을 비교하기도 한다.
두 제품의 차이를 가르는 건 원재료 인 감자의 원산지이다.
오리온에 따르면 국내에서 감자가 나는 매년 6월부터 11월까지는 국내산 감자로 제품을 생산해 국산 햇감자라는 문구와 함께 출시하는 반면, 국내에서 감자가 나지 않는 12월~5월은 미국과 호주에서 수급한 감자를 사용해 제품을 만들며, 이 제품의 패키지에는 생감자가 표기된다고 한다. - SBS News
위 사실로부터 포카칩 제조사인 오리온에는 다음과 같은 비즈니스 규칙을 가지고 있다는 것을 알 수 있다.
if (사용된_감자 === "햇감자") {
포장지에_표시할_텍스트 = "햇감 자";
} else {
포장지에_표시할_텍스트 = "생감자";
}
이 간단한 조건문이 바로 비즈니스 로직의 한 예이다. 단순히 데이터를 표시하는 것이 아니라, 비즈니스 규칙에 따라 어떤 텍스트를 표시할지 결정하고 있기 때문이다.
- 단순한 데이터 처리가 아닌 오리온의 패키징 정책 을 구현하고 있으므로 비즈니스 로직이라고 할 수 있다.
왜 비즈니스 로직과 UI 로직이 분리 되어야 한다고 할까?
대충 비즈니스 로직이 무엇인지는 알게 됐다. 그런데 대부분의 개발자들은 왜 비즈니스 로직과 UI 로직이 분리 되어야 한다고 주장 할까?
나는 그것을 SOLID 원칙의 관점에서 이야기 해볼 수 있을 것 같다.
단일 책임 원칙
- 비즈니스 로직과 UI 로직을 분리함으로써 각 모듈이 단 하나의 책임만을 가지게 된다.
- 비즈니스 로직은 비즈니스 규칙을 처리하는 책임만, UI 로직은 사용자 인터페이스를 표현하는 책임만 갖게 된다.
개방 폐쇄 원칙
- 비즈니스 로직을 UI와 분리함으로써, 비즈니스 로직의 변경 없이도 새로운 UI를 추가하거나 기존 UI를 수정할 수 있다.
- 반대로 UI 변경 없이 비즈니스 로직을 확장하거나 수정할 수 있다.
의존관계 역전 원칙
- 고수준 모듈(비즈니스 로직)이 저수준 모듈(UI 로직)에 의존하지 않고, 둘 다 추상화(인터페이스 또는 Prop)에 의존하게 만들 수 있다.
실제 적용 예시
// 비즈니스 로직
function 포카칩_패키징_결정(사용된_감자: 감자): string {
if (사용된_감자 === "햇감자") {
return "100% 국산 햇감자";
} else {
return "100% 생감자";
}
}
// UI 로직
interface 포카칩_Props {
패키지_텍스트: string;
}
function 포카칩_어니언({ 패키지_텍스트 }: 포카칩_Props) {
return (
<포카칩.포장지 색상="초록">
...
<span>{패키지_텍스트}</span>
...
</포카칩.포장지>
);
}
// 사용
const month = new Date().getMonth() + 1;
const 사용된_감자 = 월별_감자_가져오기(month);
const 패키지_텍스트 = 포카칩_패키징_결정(사용된_감자);
return <포카칩_어니언 패키지_텍스트={패키지_텍스트} />;
이렇게 분리함으로써, 비즈니스 로직의 변경(예: 새로운 종류의 감자 추가)이 UI에 직접적인 영향을 주지 않으며, UI의 변경(예: 패키지 디자인 수정)도 비즈니스 로직에 영향을 주지 않는다.
결론
비즈니스 로직은 단순한 데이터 처리나 표시를 넘 어서는 개념이다.
비즈니스 로직은 기업의 정책, 규칙, 그리고 의사결정 과정을 코드로 구현한 것이다.
그리고 프론트엔드에서의 비즈니스 로직도 이와 다르지 않다.
단순히 API를 호출하고 데이터를 받아오는 것만으로는 비즈니스 로직이라고 할 수 없는 것이 그 이유이기도 하다.
그러나 그 데이터를 어떻게 해석하고, 어떤 조건에 따라 사용자에게 어떻게 보여줄지를 결정하는 과정에서 비즈니스 로직이 발생한다.
