김동형수 개발기

클린 아키텍처 - 1부 소개 본문

책 스터디/[완료] 클린아키텍처

클린 아키텍처 - 1부 소개

김동형수 2023. 7. 10. 23:04

1장 설계와 아키텍처란?

 

'아키텍처'는 저수준의 세부사항과는 불리된 고수준의 무언가를 가리킬때 흔히 사용

'설계'는 저수준의 구조 또는 결정사항 등을 의미할 때 사용

소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는데 투입할 인력을 최소화하는데 있다.

시스템의 수명이 다할 때까지 낮게 유지할 수 있다면 좋은 설계,새로운 기능을 출시할 때마다 비용이 증가한다면 나쁜 설계

 

시간이 갈 수록 유지보수 비용이 증가하는 프로젝트에 대한 사례 소개

 

엉망으로 만들면 깔끔하게 유지할 때보다 항상 더 느리다.

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

 

개발 조직이 할 수 있는 최고의 선택지는 조직에 스며든 과신을 인지하여 방지하고, 소프트웨어 아키텍처의 품질을 심각하게 고민하기 시작하는 것이다.

소프트웨어 아키텍처를 심각하게 골할 수 있으려면 좋은 소프트웨어 아키텍처가 무엇인지 이해해야 한다. 비용은 최소화하고 생산성은 최대화할 수 있는 설계와 아키텍처를 가진 시스템을 만들려면, 이러한 결과로 이끌어 줄 시스템 아키텍처가 지닌 속성을 알고 있어야 한다.

 

2장 두 가지 가치에 대한 이야기

모든 소프트웨어 시스템은 이해관계자에게 서로 다른 두 가지 가치를 제공한다. 행위와 구조다.

 

행위

요구사항을 기계에 구현하고 버그를 수정하는 일, 행위가 자신의 작업이라고 믿는다. 슬픈 일이지만 그들은 틀렸다.

 

아키텍처

기능에 대한 생각을 바꾸면, 이러한 변경사항을 간단하고 쉽게 적용할 수 있어야 한다. 이러한 변경사항을 적용하는데 드는 어려움은 변경되는 범위에 비례해야하며, 변경사항의형태와는 관련이 없어야 한다.

소프트웨어 개발 비용의 증가를 결정짓는 주도니 요인은 바로 이 변경사항의 범위와 형태의 차이가 있다.

아키텍처는 형태에 독립적이어야하고 그럴수록 더 실용적이다.

 

더 높은 가치

수정이 현실적으로 불가능한 시스템은 존재하기 마련인데, 변경에 드는 비용이 변경으로 창출되는 수익을 초과하는 경우다.

 

아이젠하워 매트릭스

긴급하지만 중요하지 않은 기능과 진짜로 긴급하면서 중요한 기능을 구분하지 못한다.

시스템에서 중요도가 높은 아키텍처를 무시한 채 중요도가 떨어지는 기능을 선택하게 된다.

기능의 긴급성이 아닌 아키텍처의 중요성을 설득하는 일은 소프트웨어 개발팀이 마땅히 책임져야 한다.

 

아키텍처를 위해 투쟁하라

아키텍트는 이러한 특성과 기능을 개발하기 쉽고, 간편하게 수정할 수 있으며, 확장하기 쉬운 아키텍처를 만들어야한다.

아키텍처가 후순위가 되면 시스템을 개발하는 비용이 더 많이 들고, 일부 또는 전체 시스템에 변경을 가하는 일이 현실적으로 불가능해진다.

Comments