StrongCenter

주니어 개발자들을 위한 패턴 언어 - 시스템의 정체성과 안정성을 결정하는 핵심을 먼저 구축하는 법

The Story: The Peripheral vs. The Core

두 명의 개발자, 민수와 하나가 '경매 시스템'을 만들고 있다.

민수의 접근 (The Infrastructure First): 민수는 꼼꼼하다. "시스템은 튼튼해야 해."

  1. 1주 차: 로그인, 회원가입, 권한 관리 기능을 완벽하게 구현했다.
  2. 2주 차: 로그 기록 시스템과 에러 핸들링 프레임워크를 구축했다.
  3. 3주 차: DB 연결 풀링과 보안 설정을 마쳤다.

3주가 지났지만, 정작 이 시스템의 본질인 '입찰(Bidding)' 기능은 코드 한 줄도 없다. 민수는 주변부를 튼튼히 하느라 에너지를 다 썼고, 정작 가장 중요한 로직을 짤 때는 지쳐버렸다.

하나의 접근 (The Strong Center): 하나는 본질에 집중한다. "경매 시스템의 핵심은 입찰 경쟁이야."

  1. 1일 차: 로그인도, DB도 없이 오직 '입찰' 로직만 짰다. "더 높은 가격이 들어오면 낙찰자를 바꾼다." (순수 로직)
  2. 2일 차: 이 핵심 로직을 중심으로 주문, 결제 기능을 붙였다.

하나는 시스템의 강한 중심(Strong Center)을 먼저 세웠다. 로그인이나 로그 기록 같은 주변부(Peripheral)는 나중에 이 중심을 감싸듯이 추가되었다. 하나는 첫날부터 경매 시스템의 핵심 가치를 검증할 수 있었다.

Context

OrganicGrowth를 시작하려고 한다. 무엇부터 만들어야 할지 고민 중이다.

일상적인 상황:

당신은 집을 지으려는데, 거실과 방(핵심)을 생각하지 않고 담장과 대문(주변)부터 만들고 있다.

Problem

핵심 가치를 담은 "중심"이 없으면, 주변부 기능들은 방향을 잃고 비대해진다.

Christopher Alexander는 "모든 살아있는 구조는 중심(Center)들로 구성되며, 그중 가장 지배적인 강한 중심이 전체의 통일성을 만든다"고 했다.

Solution

시스템이 제공하는 가장 본질적인 가치, 즉 "강한 중심"을 가장 먼저, 가장 단단하게 구축하라.

인프라와 도구는 중심을 돕기 위해 존재하는 것이다.

Principle 1: Find the Essential Complexity (본질적 복잡성 찾기)

이 시스템에서 "이 기능이 없으면 존재 의미가 없다"는 것이 무엇인지 찾아라.

Principle 2: Logic-First Construction (로직 우선 구축)

DB, 네트워크, 프레임워크에 의존하지 않는 순수한 비즈니스 로직으로 중심을 먼저 만들어라.

Principle 3: Radiating Growth (방사형 성장)

중심이 서면, 그 주변으로 필요한 기능들을 하나씩 붙여 나간다.

Real Examples

Example 1: Git

Git의 강한 중심은 '파일의 스냅샷을 관리하는 데이터 구조(Content-addressable storage)'다. Linus Torvalds는 처음 며칠 동안 네트워크나 화려한 CLI를 만들지 않았다. 오직 객체를 저장하고 읽는 핵심 데이터 구조와 로직만 만들었다. 이 강한 중심이 있었기에 이후 수만 개의 기능이 붙어도 Git은 견고함을 유지할 수 있었다.

Example 2: Spreadsheet (VisiCalc)

스프레드시트의 중심은 '셀 간의 관계와 자동 계산 엔진'이다. 화면 UI나 파일 저장 기능보다, "A1을 바꾸면 B1이 바뀐다"는 이 핵심 중심이 먼저 세워졌을 때 전체 아키텍처가 결정되었다.

Common Pitfalls

"But we need login to start!" (로그인이 있어야 시작하죠!)

착각이다. 로그인 없이도 핵심 기능을 만들 수 있다. 하드코딩된 유저 정보를 쓰거나, 함수 인자로 넘기면 된다. 로그인은 나중에 붙여도 되는 "세부 사항"일 뿐이다.

The Infrastructure Trap (인프라의 덫)

클린 아키텍처나 특정 프레임워크의 폴더 구조를 잡느라 에너지를 다 쓰는 것. 구조는 중심이 성장하면서 자연스럽게 나타나야 한다(OrganicGrowth). 처음부터 틀을 만들려 하지 마라.

Weak Center (약한 중심)

핵심 로직이 여러 곳에 흩어져 있는 상태. 중심이 약하면 주변 기능들이 중심의 역할을 침범하기 시작하고, 결국 시스템은 스파게티 코드가 된다.

Connection to Other Patterns

Signs of Success

The Ultimate Insight

중심이 서면 전체가 선다. 중심이 흔들리면 모든 것이 흔들린다.

주변부의 화려함에 현혹되지 마라. 당신이 해결하려는 문제의 가장 깊은 곳, 그 강한 중심을 먼저 정복하라. 나머지는 그 중심의 중력에 이끌려 제 자리를 찾게 될 것이다.


CategoryPatternLanguage CategoryProgramming CategoryArchitecture CategoryDesign