소프트웨어 아키텍처는 멋진 소프트웨어를 만드는 단단한 기반이다. 훌륭한 아키텍처가 소프트웨어의 성공을 보장하지는 않지만 나쁜 아키텍처는 필연적으로 실패를 가져온다. 어떤 문제라도 마법처럼 해결해주는 프레임워크나 기술 따위는 없다. 소프트웨어를 설계하기까지 ‘어떻게 접근하느냐’가 최종 결과만큼 중요하다.

아키텍트는 리더 역할을 수행한다. 소프트웨어 아키텍트가 된다는 것은 소프트웨어 설계에 대해 제 나름의 방식으로 생각하는 사람이 된다는 걸 의미하기도 한다. 모든 팀에는 최소한 한 명의 아키텍트가 있다.

이 책은 경험 많은 소프트웨어 아키텍트, 애자일 실천가이자 개발자인 마이클 킬링이 전투 시스템 설계, 검색 애플리케이션, 웹 애플리케이션, IBM 왓슨을 포함해 다양한 소프트웨어 시스템과 일하며 쌓은 경험을 집대성했다. 개발자에서 아키텍트로, 변화의 첫걸음을 내딛는 이를 위한 실전 입문서다. 회사에서 갑자기 설계 일을 맡게 된 사람이나, 프로젝트를 직접 이끌어야 하는 스타트업 개발자와 CTO는 물론, 소프트웨어 아키텍처를 폭넓게 이해하고픈 개발자에게도 유용하다.

이 책은 문제 상황에서 팀원들과 해볼 수 있는 38가지 팀 활동을 소개한다. 아키텍처와 설계에 대한 필수 지식, 경력 있는 아키텍트의 경험담, 실무와 현장의 사례를 확인할 수 있다.

개발자에서 아키텍트로
"38가지 팀 활동을 활용한 실전 소프트웨어 아키텍트 훈련법"
마이클 킬링 지음 | 김영재 옮김 | 한빛미디어 | 392쪽 | 2만7000원

#10줄요약 #2장 디자인 싱킹 기초

1. 디자인 싱킹은 문제 해결의 모든 기준을 인간에 두고, 창의적이고 분석적으로 문제를 풀어나가는 접근법이다. 인간에게 초점을 두면 설계에 대한 의사결정을 할 때 문제의 본질에 집중할 수 있다.

2. 디자인 싱킹은 문제를 해결하려는 과정이라기보다는 문제와 해결책 그리고 이에 영향을 받는 사람들의 관점에 대해 생각하는 방식이라고 할 수 있다. 디자인 싱킹이 일련의 문제 해결 과정은 아니지만 설계 활동에 대한 규칙이 있다. 인간중심의 규칙, 모호함의 원칙, 재디자인의 원칙, 촉각의 원칙이다.

3. 소프트웨어를 만드는 일은 다분히 사회적인 활동이다. 팀을 고려하지 않고 학문적으로만 접근한 상아탑 같은 설계는 허구다. 소프트웨어 설계는 참여한 모든 팀원의 활동을 쌓아 올리는 작업이므로, 아키텍트와 팀을 분리하는 순간 아키텍트가 설계하면서 만들어놓은 사람들 간의 관계도 끊어지게 된다.

4. 엔지니어링에서 모호함은 곧 위험이다. 설계에 대한 의사결정을 내릴 때는 정확하고 명료해야 한다. 요구사항, 설계조건, 모호한 의견들을 애매하게 내버려 두면 프로젝트는 완전히 망한다. 하지만 설계를 확정하기 전까지는 당분간 모호하게 놔두는 방법을 쓸 수도 있다.

5. ‘다시 디자인한다’는 의미는 과거의 디자인에서 패턴을 찾고 고찰해보는 것이다. 소프트웨어를 만들수록 더 나은 소프트웨어를 만드는 지식도 발전한다. 지금 겪는 문제는 어떤 팀이 이미 겪은 문제일 수 있다.

6. 우리가 다른 사람들과 아키텍처를 공유하려면 코드만으로는 표현할 수 없는 방식으로 구현해야 한다. 그림으로 그리고, 코드로 구현하라. 프로토타입을 만들어서 사람들이 품질 속성과 아키텍처를 직접 경험할 수 있게 하라. 단순한 모델을 만들어서 아키텍처의 한 부분을 보여주라. 공감할 수 있는 메타포를 만들라. 시스템 흐름의 일부를 직접 동작해보라.

7. 소프트웨어 시스템을 설계할 때는 여러 관점의 디자인 마인드셋을 가지고 진행한다. 디자인 마인드셋은 이해하기, 탐색하기, 실현하기, 평가하기 네 가지가 있다.

8. ‘이해하기’에서는 이해관계자들이 필요로 하는 바를 요구사항으로 구체화하는 방법에 집중한다. ‘탐색하기’에서는 문제를 패턴, 기술 등 여러 수단으로 파악해본 후 해결 방법을 브레인스토밍 한다. ‘실현하기’에서는 시스템을 모델링해 구체적인 결과물을 공유한다. ‘평가하기’에서는 결과물이 요구사항에 맞는지 테스트한다.

9. 생각-실행-확인 순환은 어떤 상황에서든 다양하게 활용할 수 있다. 시스템의 규모나 복잡도, 팀의 규모와 숙련도, 동시에 여러 개의 설계를 진행해본 경험의 유무와 무관하게 유연하게 적용할 수 있다.

10. 디자인 싱킹은 소프트웨어를 개발하는 데서 기술과 사람을 잇는 법을 알려준다. HART 원리는 소프트웨어에 마음을 심는 일이다. 우리는 디자인 마인드셋으로 이해관계자들이 원하던 결과를 더 정확히 파악하고 더 나은 의사결정을 할 수 있다.

하순명 기자 kidsfocal@chosunbiz.com


관련기사