hji7***
2024-08-24

20가지 이상의 디자인 패턴으로 배우는 최신 웹 개발
"디자인 패턴"이라는 말은 건축분야에서 왔습니다. 유명한 건축가 인 "크리스토퍼 알렉산더"가 만든 "패턴언어"라는 개념이 그 시작이라고 할 수 있는데요. "재사용 가능한 구현방식"을 하나의 단어로 정리해서 사용하는 개념입니다. 이렇게 되면 구현 내용을 일일이 설명하지 않는다고 해도 서로 의사소통하기 편리하고 빠르게 일을 진행할 수 있게 될 테니까요.
1990년대 초반부터 이런 개념이 소프트웨어 개발 분야에 들어왔고, 1994년 출판된 <GoF의 디자인 패턴>을 시작으로 정말 어마어마한 "패턴"에 대한 책이 나오기 시작했습니다. 그리고, 약 30년이 지난 지금 시점에서 "디자인 패턴"은 보편적인 용어가 되었습니다.
이 책의 제목에도 "디자인 패턴"이라는 단어가 들어가 있어서, 살짝 시시콜콜한 무언가를 이야기하는 책이 아닐까 싶긴 했습니다. 지금까지 제가 읽은 "패턴"관련 책만 족히 열 권은 넘을 테니, 아마 대충 대충 훑어보게 되지 않을까 싶기도 했고요. 게다가 최근에 저는 "소프트웨어 성장"이라는 화두에 관심을 가지고 있기 때문에 다분히 건축메타포를 내포하는 것 같은 뉘앙스를 지닌 "디자인 패턴"에 대해 시큰둥하게 되더군요.
책에 앞부분은 기대했던 바와 비슷하게 시작했습니다. GoF의 디자인 패턴에 대한 이야기도 나오고 그들의 패턴에 대한 설명이 나왔으니까요. 그러나 저자는 이런 디자인 패턴을 의미있게 자바스크립트에서 구현할 수 있는 예제를 보여주고 있습니다. 그리고 빠르게 MVC에 대한 이야기로 넘어가는데요.
이 부분부터 상당히 흥미로웠습니다. MVC는 벌써 40년이 넘게 사용되고 있는 소프트웨어 아키텍처 패턴입니다. 데이터와 데이터를 표현하는 방법과 이들을 관리하는 방법의 코드를 분리해야 한다는 것이 핵심인데요. 이들이 분리되면 우리는 유지보수하기 쉬운 코드 구조를 얻을 수 있고, 개발하기도 쉬워지기 때문이죠.
MVC는 시대를 지나오면서 계속해서 진화해왔는데요. 최종 결과는 MVVM이 아닐까 싶습니다. (물론 그 이후에도 다양한 용어가 소개되긴 했지만요. )
MVC에서 MVVM로 이르는 여정을 이해한다는 것은, 소프트웨어가 어떻게 발전해 왔고, 하드웨어 인프라에 따라 어떤 형태로 바뀌어 왔는지를 이해하는 것입니다. 하지만, 의외로 이에 대해 잘 정리하고 진지하게 설명하는 책은 없습니다. 그래서 MV*에 해당하는 용어들은 버즈워드(용어는 있지만 개념은 모호해진) 취급을 받게 되거든요.
그런데 이 책에서 MV*를 상당히 여러 지면을 할애해서 정리하고 있습니다. 이 부분에서만큼은 POSA(Pattenr-Oriented Software Architecture) 책에서 느꼈던 감동을 느낄 수 있었습니다.
또한, 자바스크립트 언어를 사용하면서 다른 분야와는 다른 패턴 "비동기", "모듈" 같은 개념들을 언급하고 "리액트 디자인 패턴"에 대해서 이야기 합니다. 상당히 기본적인 Props나 Hooks에 대한 설명을 하는 듯 싶었는데, "랜더링"에 대해서 언급하기 시작하면서, 상당히 최근에 개인적으로 관심을 갖게된 CSR, SSR에 대한 다양한 개념들을 정리하고 있습니다. 아마도 전체를 아우르기엔 너무 내용이 많으니 기초적인 것과 최근 많은 사람이 관심을 갖고 있는 분야를 같이 설명한게 아닌가 싶네요.
인간은 어떤 목표에 대해 고민할때 그 목표의 거리에 따라 다른 방식으로 대처한다고 합니다. 목표가 멀다면 좀더 추상적이고 개념적인 계획을 세워서 대처하게 되고, 가깝다면 상세하고 근시안적인 방식으로 대처한다고 하네요. 한쪽으로 치우치는 건 위험하지만, 일반적으로 목표를 완료하는데는 추상적인 틀안에서 상세한 부분을 붙잡아야 합니다. 상세한 부분에 집착하다보면, 실패를 경험하게 될 경우 목표 자체를 포기할 가망성이 높기 때문이거든요.
소프트웨어 디자인 패턴은 그 중간 어딘가를 채우는 개념입니다. 어떻게 보면 상세한 실행 방법을 이야기하는 것 같으면서도 추상적인 방식으로 이야기를 끌어갈 수 있거든요. 자바스크립트에서 이런 부분을 고민하고 있다면 이 책이 도움이 될것 같네요.
"한빛미디어 <나는리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."