3장. 인간의 강점: 문맥, 추상화, 판단(3)

추상화와 계층 설계 능력의 중요성

by jeromeNa

추상화와 계층 설계 능력의 중요성


시스템을 설계하면서 가장 어려웠던 부분은 복잡한 요구사항들을 적절한 수준으로 나누고 계층화하는 것이다. 어떤 부분을 상세하게 다룰 것인지, 어떤 부분을 추상화할 것인지를 결정하는 것이 시스템의 복잡도를 관리하는 핵심이다.


적절한 추상화 수준 찾기


카페 시스템에서 "메뉴"라는 개념을 어떤 수준까지 추상화할 것인가가 첫 번째 고민이다. 모든 음료를 동일하게 취급할 것인가, 아니면 카테고리별로 다르게 처리할 것인가?


처음에는 단순하게 접근할 수 있다. 음료명, 가격, 재료 정도의 공통 속성으로 모든 메뉴를 관리하려고 하지만 실제 카페 운영을 보면 더 복잡했다.


에스프레소 기반 음료는 샷 수, 우유 종류, 시럽 추가 등의 옵션이 있고, 핸드드립 커피는 원두 종류와 추출 방법이 중요하고, 디저트는 온도 관리와 유통기한이 핵심이다. 차류는 우림 시간과 물 온도가 다르고, 논커피 음료는 또 다른 제조 방식을 가진다.


모든 메뉴를 하나의 구조로 관리하면 시스템은 단순해지지만 각 카테고리의 특성을 반영하기 어렵다. 반대로 카테고리별로 완전히 다른 구조를 만들면 유연성은 높아지지만 시스템 복잡도가 급격히 증가한다.


적절한 추상화 수준을 찾는 것이 관건이다. 공통 속성은 기본 메뉴 엔티티(유용한 정보를 저장하고 관리하기 위한 집합적인 것 - 개체)로 추상화하고, 카테고리별 특성은 별도 확장 구조로 분리하는 방식을 선택한다. 기본적인 메뉴 정보는 일관되게 처리하면서도 필요에 따라 세부 정보를 확장할 수 있는 구조로 설계한다.


예를 들어, 모든 메뉴는 기본적으로 이름, 가격, 카테고리, 설명을 가지지만, 에스프레소 음료는 추가로 샷 옵션과 우유 옵션을, 핸드드립은 원두 정보와 추출 방법을, 디저트는 보관 방법과 유통기한 정보를 가지는 방식이다.


지금 바로 작가의 멤버십 구독자가 되어
멤버십 특별 연재 콘텐츠를 모두 만나 보세요.

brunch membership
jeromeNa작가님의 멤버십을 시작해 보세요!

활동 시기의 반 이상을 개발자로 살아왔습니다. 앞으로의 삶은 글과 창작자, 후배 양성으로 살아가 보려 합니다.

669 구독자

오직 멤버십 구독자만 볼 수 있는,
이 작가의 특별 연재 콘텐츠

  • 총 62개의 혜택 콘텐츠
최신 발행글 더보기