본문 바로가기

SW LAB/Algorithm

Clean Architecture : 서론

 프롬스의 SWDEVLAB 

서론

 

두달 전쯤 .. 회사 지원해주는 도서구입 혜택을 누리며 여러 IT 서적을 주문하였지만 ..

자격증 취득이라는 핑계로 미루던 책을 하나하나 보고 있습니다.

예전부터 보려고 했었던 Clean Architecture !

 

저녁마다 시간을 내어서 꾸준히 보도록 해야겠습니다 :-)

 

 

추천사

아키텍처를 이야기할 때 우리는 무엇에대해 이야기하나요 ?

비유라는 것이 늘 그렇듯이 아키텍처라는 렌즈를 통해 소프트웨어를 살펴보면, 알 수 있는 것만큼이나 숨겨진 것도 있게 마련입니다. 그래서 아키텍처가 실제로 제공할 수 있는 것 이상을 약속하기도 하지만, 약속한 것보다 많은 것을 제공할 때도 있습니다.

 

아키텍처의 매력은 그 구조에 있다고 합니다. 구조란 패러다임을 지배하고 소프트웨어 개발 논의를 지배하는 무언가로서, 컴포넌트, 클래스, 함수, 모듈, 계층, 서비스가 그 예입니다. 건축물의 구조와는 달리 소프트웨어의 구조가 우리의 직관과 일치하는지는 분명치가 않습니다..

건축물은 벽돌, 콘크리트, 목재, 철강 유리로 구성되지만.. 소프트웨어는 소프트웨어로 구성됩니다. 파워포인트로 그린 다이어그램 속 상자들이 매력적이고 시각적으로 명확하더라도, 그 상자들이 소프트웨어 시스템의 아키텍처가 될 순 없습니다.

 

그렇다고 물리적인 요소가 없다는 것은 아닙니다.

소프트웨어는 마치 꿈을 구성하는 재료와 같지만, 실행되는 곳은 물리적인 세계입니다. 메모리와 스토리지 같은 물리적인 요소가 코드 베이스의 야욕을 꺽어버릴 수도 있는 것입니다.

 

아키텍처는 시스템을 구체화하는 중요한 설계 결정을 표현하며, 그 결정의 중요도는 변경에 드는 비용으로 측정된다.

- 그래디 부치 (Grady Booch)

 

시간, 비용, 노력은 규모라는 것을 이해할 수 있게 해줍니다. 그래서 큰 것과 작은 것을 정렬할 수 있꼬, 아키텍처적인 것과 아닌 것을 구분할 수 있습니다. 이 척도는 좋고 나쁨을 결정할 수 있는 방법을 설명해줍니다.

 

좋은 아키텍처가 비싸다는 생각이 든다면, 나쁜 아키텍처를 시도해보라.

- 브라이언 푸트(Brian Foote)와 조셉 요더(Joseph Yoder)

 

아키텍처란 프로젝트 초기에 제대로 정할 수 있기를 바라는 결정사항이지만, 제대로 정할 가능성이 그 외 사항들보다 반드시 더 높지는 않다.

- 랄프 존슨(Ralph Johnson)

 

과거를 이해하는 일은 그 자체로도 충분히 어렵습니다. 현재는 파악하는 수준은 아무리 해도 불완전합니다. 미래를 예측하는 일은 명확하지 않습니다.

 

바로 여기서 여러 갈래의 길이 나뉘어집니다.

가장 캄캄한 길을 따라가면, 강력하고 안정된 아키텍처는 권위와 엄격함에서 온다는 생각과 마주하게 됩니다. 변경 비용이 크면 변경 자체를 제거합니다. 아키텍트의 권한은 전면적이고 전체주의적이며, 아키텍처는 개발자에게 암울한 미래를 비추며 모두에게 끝없는 좌절감을 안겨주는 원천이 됩니다.

또 다른 길은 추측성 일반화, 즉 현재가 아닌 미래의 확장성을 기대하여 지나치게 일반화하는 경우입니다. 이 길은 추측에 의한 하드코딩, 셀 수 없이 많은 파라미터, 실행되지 않는 코드(Dead Code)들의 무덤 등, 유지보수 예산 안에서 처리할 수 없을 만큼 부수적 복잡성으로 가득 차 있습니다

 

우리가 가장 관심 있는 길은 바로 가장 깔끔한(Clean) 길입니다. 이 길은 소프트웨어가 지닌 부드러움(Softness)을 인지하고, 이 부드러움을 시스템에서 최우선으로 보존하는 것을 목표로 합니다. 이 길은 우리가 불완전한 지식에 기초해 행동한다는 사실을 인정할 뿐만 아니라, 불완전한 지식으로 행동하는 것이야 말로 인간으로서 우리가 무엇인가를 하는 방식이며, 우리가 뛰어난 부분임을 이해하는 것입니다.

 

아키텍처는 구현과 측정을 통해 증명해야 하는 가설입니다.

- 톰 길브 (Tom Gilb)

 

이 길을 걸으려면 주의와 관심, 사고와 관찰, 실천과 원칙이 필요합니다.

 

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

- 로버트 C.마틴 (Robert C.Martin)

 

추천사 저자

- 케블린 헤니 (Kevlin Henney) (2017년 3월)

 

서문

이 책의 저자는 수 많은 시스템을 반세기 동안 만들어오고 무언가를 깨달았습니다.

그것은 바로 '아키텍처의 규칙은 동일하다!'

소프트웨어 아키텍처의 규칙은 다른 모든 변수에 독립적이라는 결론을 내렸습니다.

 

1960년대나 1950년대나 현재도 순차(Sequence), 분기(Selection), 반복(Iteration)의 집합체로 이루어져 있습니다. 언어가 발전하고 도구가 좋아졌지만, 컴퓨터 프로그래밍을 이루는 기본 구성요소는 조금도 바뀌지 않았습니다.

 

규칙은 바뀌지 않았습니다. 그 모든 새로운 언어, 그 모든 새로운 프레임워크, 그 모든 패러다임에도 불구하고, 이 규칙은 앨런튜닝(Alan Turning)이 최초로 기계어 코드를 작성한 1946년부터 달라지지 않았습니다.

 

하지만 바뀐게 딱 하나 있습니다. 그 시절의 우리는 이 규칙이 무엇인지를 알지 못했습니다. 결과적으로 우리는 이 규칙을 어겼고, 또 어겼고, 계속해서 어겼습니다. 이제 우리는 반세기에 걸친 경험을 바탕으로 이 규칙이 무엇인지 깨닫게 되었습니다.

 

그리고 이 책은 바로 이 규칙, 세월이 흘러도 변치 않는 그 규칙에 관한 것입니다..!

 

마무리

저는 책을 선정할 때 목차를 보고 도움이 되겠다 생각하며 선정합니다.

이 책의 경우 클린 아키텍처를 구매하게 되면서 패키지로 사게 되었지만, 추천사와 서론을 읽고 매우 재미있겠다는 생각이 들었습니다. 요즘 회사에서 주로 하는 업무가 개발자의 역량을 발휘하는 것보다는 .. 아키텍트로써 물리적인 것보다 소프트웨어적인 부분에 대한 모든 고려와 설계하는 작업을 하고 있습니다.

이 책의 저자인 로버트 C.마틴이 말하는 변하지 않았다는 그 것! 소프트웨어 기본 구성요소를 제대로 알 수 있으면 좋겠습니다. 그러면 앞으로 개발자로써 많은 도움이 될 것 같습니다.

 

관련글 

내용이 도움이 되셨으면 공감 버튼 꼬옥 눌러주세요
본문을 퍼가실 경우 댓글을 달아주세요