GitBook
클린 아키텍처

1장 설계와 아키텍처란?

아키텍처의 목표

#클린아키텍처

#책

2023년 08월 05일

개인적으로 클린 아키텍처를 읽고 정리한 글입니다

소개


프로그램이 동작하도록 만드는 데 엄청난 지식과 기술이 필요하지는 않습니다.
하지만 소프트웨어를 올바르게 만드는 일은 어렵습니다.
소프트웨어를 올바르게 만들기 위해서는 지식과 기술을 겸비해야 하고 사고력과 통찰력도 갖춰야 하지만 대다수의 프로그래머는 이런 능력을 함양하지 않죠

우리 대다수는 형편없는 소프트웨어 설계와 맞서 싸우는 일을 훨씬 더 자주 맞닥뜨립니다.

설계와 아키텍처


설계와 아키텍처는 차이가 있는가?

현재까지도 설계와 아키텍처 사이에는 많은 혼란이 있습니다.
우리가 대체로 생각하는 설계와 아키텍처의 의미는 다음과 같습니다.

  • 설계
    • 저수준의 구조 또는 결정 사항
  • 아키텍처
    • 저수준의 세부 사항이 아닌 고수준의 무언가

하지만 이 둘 사이의 차이점을 비교하는 것은 무의미합니다.
저수준의 세부 사항과 고수준의 구조는 모두 소프트웨어 전체 설계의 구성요소이기 때문입니다.

이 둘은 연속적이며 개별로는 존재할 수 없고 이 둘을 구분 짓는 경계는 뚜렷하지 않습니다.

소프트웨어 아키텍처의 목표

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

고객의 요구를 만족시키는 데 드는 비용이 시스템의 수명이 다할 때까지 낮게 유지할 수 있다면 좋은 설계라고 말할 수 있겠죠

기능을 출시할 때 마다 비용이 증가한다면 나쁜 설계입니다.

엉망진창 코드에 빠진 우리들

엉망진창인 코드가 서서히 쌓이면 생산성은 차츰 낮아지고
생산성이 0으로 수렴하게 됩니다.

하지만 빠른 출시를 우선시하며 우리는 지저분한 코드를 작성하면 단기간에는 빠르게 갈 수 있고 장기적으로 볼 때만 생산성이 낮아진다 말하며 나중에 기회가 되면 엉망이 된 코드를 정리할 수 있다고 과신합니다.

자신을 과신한다면 전체 시스템을 재설계하더라도 원래의 프로젝트와 똑같이 엉망으로 내몰리게 됩니다.

빨리가는 유일한 방법은 제대로 가는 것이다.
개발 조직이 할 수 있는 최고의 선택지는 조직에 스며든 과신을 방지하고
품질을 심각하게 고민하는 것입니다.

그러므로 책에서 다룬 내용은 다음과 같습니다.

  • 훌륭하고 깔끔한 아키텍처와 설계가 무엇인가?
  • 개발자가 장기간에 걸쳐 수익을 창출할 수 있는 시스템은 무엇인가?

끝.