Post

설계와 아키텍처란?

1. 설계와 아키텍처란?

설계(design)와 아키텍처에는 어떤 차이가 있는가?

둘 사이에는 아무런 차이가 없다!

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

설계는 저수준의 구조 또는 결졍사항 등을 의미할 때가 많다.

아키텍트가 실제로 하는 일을 살펴보면 이렇나 구분은 무의미

저수준의 세부사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소

개별로는 존재할 수 없고, 실제로 이 둘을 구분짓는 경계는 뚜렷하지 않다.

고수준에서 저수준으로 향하는 의사결정의 연속성만 존재

목표

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

설계 품질을 재는 척도는 고객의 요구를 만족시키는 데 드능 비용을 재는 척도와 다름없다.

사례 연구

코드 라인당 비용이 점점 높아짐

엉망진창이 되어 가는 신호

개발자의 노력은 기능 개발보다는 엉망이 된 상황에 대처하는 데 소모되기 시작

경영자의 시각

돈을 많이 들이고도 얻는 게 없음

무엇이 잘못되었나?

훌륭하고 깔끔하게 잘 설계된 코드가 중요하다는 사실을 알고 있는 뇌가 잠들어 있다.

시중 출시가 먼저라는 생각때문에, 빠르게 개발하고, 코드를 정리하지 않음

토끼가 자신의 빠르기를 과신하고 있는 것과 마찬가지

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

실제 실험 결과, TDD를 적용한 날이 적용하지 않은 날보다 10% 빠르게 작업 완성됨

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

자신을 과신한다면 재설계하더라고 원래의 프로젝트와 똑같이 엉망으로 몰린다

결론

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

이러한 결과로 이꿀어 줄 시스템 아키텍처가 지닌 속성을 알고 있어야 함

참조

  1. 클린 아키텍처(Clean Architecture)
This post is licensed under CC BY 4.0 by the author.