비즈니스 로직(Business logic)은 컴퓨터 프로그램에서 실세계의 규칙에 따라 데이터를 생성·표시·저장·변경하는 부분을 일컫는다. 이 용어는 특히 데이터베이스, 표시장치 등 프로그램의 다른 부분과 대조되는 개념으로 쓰인다. - wikipedia
실세계의 규칙에 따라 데이터를 생성, 표시, 저장, 변경한다는 것이 무슨 뜻일까요?
소프트웨어공학에서 비즈니스/도메인은 소프트웨어가 해결하고자 하는 문제를 의미합니다. 그렇다면 비즈니스 로직이란 문제를 해결하는 논리적인 방법이라고 유추해볼 수 있습니다.
즉, 실세계의 규칙에 따라 데이터를 적절히 생성, 표시, 저장, 변경하여 문제를 해결하는 논리적인 방법을 비즈니스/도메인 로직이라고 할 수 있습니다.
구현 단계에서 비즈니스 로직을 분리하라는 말을 많이 들어보았습니다. 그렇다면 왜 비즈니스 로직을 분리해야 하는지 알아보겠습니다.
먼저 소프트웨어를 아래와 같이 세 부분으로 나누어 살펴보겠습니다.
표현 층(Presentation tier)은 애플리케이션에서 유저 인터페이스를 의미합니다. 사용자의 명령(task)을 애플리케이션에 전달해주기도 하고, 애플리케이션의 결과(result)를 사용자가 이해할 수 있도록 만들어주기도 합니다.
논리 층(Logic tier)은 애플리케이션에서 논리적인 의사결정이나 평가, 혹은 계산을 수행합니다. 그리고 표현층과 데이터 층을 이어주는 역할을 수행합니다.
데이터 층(Data tier)은 데이터베이스나 파일 시스템에서 애플리케이션에서 정보를 저장하거나 가져오는 역할을 수행합니다.
소프트웨어를 계층적으로 개발하면 업무 분담이 가능하므로 업무 효율성이 높아질 수 있습니다. 또한 서로 다른 물리적인 환경에서 구동이 가능하기 때문에 확정성(scalability)을 높일 수 있습니다.
계층을 통해 논리 층에 속한 비즈니스 로직들은 DB나 UI와 같은 외부 요소들을 배제하고 작성될 수 있습니다.
이를 통해 결합도를 낮추면, 개발자는 코드를 유지보수하기 쉬워집니다. 비즈니스 로직이 바뀌면 외부 요소와 상관 없이 비즈니스 로직이 작성된 코드만 수정하면 되기 때문입니다.
소프트웨어 품질을 위해 기능 별 테스트를 진행해야 할 때, 명확히 분리된 비즈니스 로직은 테스팅에 용이합니다. 결합도가 낮아 해당 기능만을 명확하게 테스트할 수 있기 때문입니다.