본문 바로가기
Books/클린 아키텍쳐

클린 아키텍쳐 - 소개

by softserve 2023. 4. 6.
반응형

설계는 무언가를 만들기 위해 기초를 마련하는 일을 말합니다. 건물을 지을 때는 기둥을 어떤 식으로 배치해서 하중을 적절히 분산할 것인지 고려해야 합니다. 그래야 건물이 무너지지 않을 테니까요. 프로그램을 만들 때도 프로그램이 앞으로 어떻게 사용될 것인지 어떻게 변화해갈 것인지를 고려한 적절한 아키텍쳐의 설계가 필요합니다. 그래야 우리의 멘탈이 무너지지 않게 지켜낼 수 있습니다.
제 MBO에는 분석/설계가 들어있지만 설계를 어떤 식으로 해야한다는 설명은 들은 적은 없었습니다. 다른 사람들을 봐도 특별히 무언가를 하는 것 같지 않고 그냥 ‘이렇게 하면 되겠지?’ 라고 생각하는 과정을 설계라고 부르는 듯 했습니다. 그리고 그런 식으로 만들어진 프로그램에 새로운 개발 요청이 들어오면 우리 프로그램의 구조상 그것은 불가하다며 방어를 해야하는 경우가 많았습니다. 또, 누군가가 만들어놓은 구조적인 제약 속에서 어쩔 수 없이 진행하게 된 개발 건은 여러 사람의 두통을 유발하곤 했습니다.
아마도 대부분의 개발자들이 이런 경험을 해보았을 테고 지금도 하고 있을 것입니다. 이런 상황에 답답함을 느끼고 있던 차에 읽게 된 것이 ‘클린 아키텍쳐’였습니다. 개발자라면 한 번은 이름을 들어봤을 클린 코드의 저자 로버트 C. 마틴이 지은 책입니다.

아키텍쳐는 종착지가 아니라 여정에 더 가깝다.

- 추천사 중

책을 읽다보니 이미 서비스 중인 프로그램의 구조를 뒤엎는 것은 어렵겠지만 적어도 자기가 맡은 부분에서 조금씩이라도 개선을 해나간다면 더 높은 성취감과 보람을 느낄 수 있지 않을까 하는 생각이 들었습니다.
본 포스트는 이 책에 대한 소개이자, 『1부. 소개』 의 내용에 대한 소개를 목적으로 합니다. 1부는 설계와 아키텍쳐의 차이, 그리고 소프트웨어의 두 가지 가치에 대한 이야기를 담고 있습니다.
먼저 설계와 아키텍쳐라는 말에 유의미한 차이는 없다고 합니다. 이 글을 쓰다보니 제가 아키텍쳐 Architecture 의 정확한 뜻을 모르고 있었다는 사실을 깨달을 수 있었습니다. 위에서도 예시로 들었지만 소프트웨어 아키텍쳐는 건축과 유사한 특징을 가지고 있습니다. 아키텍쳐란 말 자체가 건축, 건축학이란 뜻이니까요. 건물을 완성하기 위해 여러 사람들이 계획, 설계하는 과정과 그 결과물을 건축이라고 하듯이, 소프트웨어 아키텍쳐는 프로그램을 완성하기 위해 여러 사람들이 계획, 설계하는 과정과 그 결과물을 말합니다.
소프트웨어 아키텍쳐의 목표는 단지 필요한 프로그램을 만드는 것에 그치는 것이 아니라 변경이 쉽도록 함으로써 유지보수의 비용을 낮추는 데에 있습니다.

빨리 가는 유일한 방법은 제대로 가는 것이다.

- 본문

하지만 현실에서는 누군가의 귀차니즘과 누군가의 무지 또는 경제적, 현실적인 이유로 인해 이런 원칙이 쉽게 무너지곤 합니다. 그렇기에 우리는 누군가가 만들어 놓은 스파게티를 이어받아 다시 열심히 스파게티를 만들고 있는 것이죠.
소프트웨어는 말 그대로 유연해야 합니다. 그리고 이 유연함을 위해서 적절한 구조 Structure 와 아키텍쳐를 설계할 필요가 있습니다. 이것이 저자가 생각하는 프로그램의 첫 번째 가치이며, 제대로 동작하는가 행위 Behavior 라는 두 번째 가치보다 우선한다고 합니다.
사실 목적대로 동작하지 않는 프로그램이라면 아무리 유연한들 소용이 없을테고, 목적만 달성할 수 있다면 변경이 전혀 불가능하더라도 사용은 가능할테죠. 단지 수명이 짧을 뿐... 뭐가 더 중요하다 따지는 것은 엄마가 좋아 아빠가 좋아 라는 논의의 연장선상에 있다고 생각되고, 단지 그만큼 아키텍쳐가 중요하다는 것을 강조하려는 것 같습니다.
저자는 심지어 우리는 모두 책임감을 가지고 더 나은 아키텍쳐를 위해서 투쟁해야 한다고 까지 이야기하면서 1부를 마무리합니다.
제가 독서를 좋아하긴 하지만 재미를 느끼는 분야는 소설에 국한되어 있었는데, 요즘 들어서는 개발 서적을 읽는 데 재미를 느끼고 있습니다. 몰라서 답답했던 것을 해소해주고, 바로 실무에 적용해볼 수도 있고, 간접적으로 몸값 상승에도 도움이 될 테니까요. 앞으로의 내용이 정말 기대가 됩니다.

반응형

댓글