- 웹에서 모든 연산 능력을 중앙 서버에 두는 방식과 단말에 두는 방식 사이에서 끊임없이 진동해왔다
끝없이 반복하는 추
- 이처럼 반복되는 진동이 웹으로부터 시작되었다고 보는 일은 옳지 않다
- 연산 능력을 중앙에 집중하는 방식과 분산하는 방식 사이에서 우리는 끊임없이 움직인다
- 아키텍트로 서 우리는 멀리 내다봐야 한다. 이 진동은 그저 핵심 업무 규칙의 중심에서 밀어내고 싶은 단기적인 문제
- 어느 한 회사 Q사는 개인용 재무 시스템을 개발
- 어느날 웹이 등장하여 GUI가 마치 브라우저처럼 보이고 동작하도록 변경
- 결국 브라우저스러운 느낌을 조금씩 없애고 다시 일반적인 데스크톱 GUI로 되돌렸다
- 이 경우 업무 규칙을 UI로부터 분리했어야 한다
- 어느 스마트폰을 만드는 A 회사는 '운영체제'의 업그레이드 버전을 출시하며 룩앤필을 완전히 변경
- A사의 아키텍트나 A사 폰용 앱을 개발하는 프로그래머는 UI와 업무 규칙을 격리해야 했다
요약
- GUI는 세부사항이고, 웹은 GUI이므로 아키텍트라면 핵심 업무 로직에서 분리된 경계 바깥에 두어야 한다
- GUI는 너무 특이하고 다채롭기 때문에 장치 독립적인 아키텍처를 추구하는 일은 어렵다고 말할 수도
- 하지만 UI와 애플리케이션 사이에는 추상화가 가능한 또 다른 경계가 존재
- 완전한 입력 데이터와 그에 따른 출력 데이터는 데이터 구조로 만들어서 유스케이스를 실행하는 처리 과정의 입력 값과 출력 값으로 사용 가능
- 이 방식으로 유스케이스가 장치 독립적인 방식으로 UI라는 입출력 장치를 동작시킨다고 간주 가능
결론
- 이러한 종류의 추상화는 만들기 쉽지 않지만 가능은 하다