[클린 아키텍처] 1. 설계와 아키텍처란?

햄도·2021년 6월 22일
1

Clean Architecture

목록 보기
1/11

출처

클린 아키텍처를 읽으며 정리한 내용입니다.

1부 소개

  • 프로그램이 동작하도록 만드는 데에 엄청난 지식과 기술이 필요하지는 않지만, 프로그램을 제대로 만드는 일은 어렵다.
  • 이를 위해서는 적정 수준의 지식과 기술을 겸비해야 하지만, 대다수의 젊은 프로그래머는 이 수준에 도달하지 못했다.
  • 소프트웨어를 올바르게 만들려면 무엇보다도 기술을 향한 열정과 전문가가 되려는 열망이 필수다.
  • 소프트웨어를 제대로 만들게 되면, 소수의 프로그래머만으로 프로그램이 지속적으로 동작하도록 만들 수 있다. 변경은 단순해지고, 결함이 적어진다. (필자의 경험이라고 한다.)
  • 하지만 당신은 전혀 반대의 상황을 겪고 있지 않나? ㅜ 대다수는 형편없는 소프트웨어 설계와 맞서 싸운다.

1. 설계와 아키텍처란?

  • 설계와 아키텍처 사이에는 아무 차이가 없다.
    • 아키텍처는 고수준의 무언가를, 설계는 저수준의 구조 또는 결정사항을 의미할 때가 많지만 아키텍트가 하는 일을 살펴보면 이러한 구분은 무의미하다.
    • 저수준이든 고수준이든 모두 소프트웨어 전체 설계의 구성요소이며, 개별로는 존재할 수 없다.

좋은 소프트웨어 설계의 목표

  • 소프트웨어 아키텍처의 목표는 필요한 시스템을 만들고 유지보수하는 데에 투입되는 인력을 최소화하는 것
  • 설계 품질을 재는 척도는 고객의 요구를 만족시키는 데 드는 비용을 재는 척도와 다름없다. 좋은 설계는 이렇게 단순명료하다.

사례 연구

  • 엔지니어링 직원 수는 기하급수적으로 증가하는 반면, 생산성(코드 라인 수)은 점점 적게 증가율이 적어지며 코드 한 라인당 비용은 증가하는 사례
  • 이러한 상황은 회사의 성장을 멈추게 하거나 망하게 만든다.
  • 이상하게도 모두가 열심히 노력하지만 이렇게 된다. 개발자의 노력은 기능 개발보다는 엉망이 된 상황에 대처하는 데 소모되기 시작한다.
  • 무엇이 잘못되었나?
    • 개발자들은 코드는 나중에 정리하면 돼. 당장 시장에 출시하는 게 먼저야! 라고 생각하지만 실제로 정리하는 경우는 없다.
    • 이런 일이 반복되다 보면 생산성은 0을 향해 수렴하기 시작한다.
    • 소프트웨어 개발의 단순한 진리: 빨리 가는 유일한 방법은 제대로 가는 것이다.

결론

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

0개의 댓글