[ TIL 43 ] Clean Architecture란?

_dodo_hee·2021년 5월 12일
0

CS

목록 보기
1/6
post-thumbnail

Architecture?

시스템을 쉽게 이해,개발,유지보수 배포 할 수 있게 하는 설계 방법

아키텍쳐를 해석해보면 건축, 설계라는 뜻을 가지고 있다.

컴퓨터쪽으로 해석하자면 시스템 하드웨어 구조와 여러 가지 컴퓨터 구성 요소들에 대한
전반적인 기계적 구조를 설계하는 방법이라는 뜻을 가지고 있다.

Software Architecture

컴포넌트들과의 관계를 정의한 시스템 구조이고,
컴포넌트들 간의 상호관계를 발전시시키는 설계 방법.

소프트웨어는 개발을 좀 더 부드럽고, 유연하게 만들기 위함이란 뜻.
아키텍처는 설계,건축 이라는 뜻.

부드럽고 유연하게 + 설계 건축 = 생산성 최대화 설계 방법!!
시스템을 쉽게 이해하고,개발하고,유지보수하고,배포할 수 있게 하고
프로그래머의 생산성은 최대화시키는 설계 방법을 의미한다.

Clean Architecture

엉클밥

"클린 아키텍쳐를 사용하면, 더 효율적인 프로그램 구현이 가능할 것 입니다!"

2012년에 Uncle Bob는 새로운 소프트웨어 아키텍쳐를 발표했다.
클린 아키텍쳐를 사용함으로써, 소프트웨어 개발의 구조와 계층을 분리하면서
더 효율적인 프로그램 구현이 가능 할 것이라고 말했다.

현재까지도 클린아키텍쳐는 개발자들사이에서 인기있는 소프트웨어 아키텍쳐 중 하나이다.

Clean Architecture 사용하는 이유?

스파게티아키텍쳐

위에 사진은 스파게티 아키텍쳐이다. 엄청 지저분하고 정신없고 마구 엉켜있고,
저게 코드라면 유지보수 하기도 쉽지 않을 것이다.

클린아키텍쳐

위 사진은 클린 아키텍쳐의 설계도를 나타낸 그림이다.
스파게티 아키텍쳐랑 눈에 띄게 비교가 되는 걸 확인할 수 있는데
딱봐도 깔끔하고, 설계도가 직관적으로 한눈에 들어오는 것을 확인 할 수 있다.

실제 사용 될 수 있는 예시를 들고 클린아키텍쳐를 왜 사용하는지 알아보자!

1️⃣ 예시

우리가 작업하는 프로젝트와 프로젝트에 사용되는 프레임워크나 라이브러리에
버그가 있다고 생각해보자. 그렇게 될 경우 클린 아키텍쳐 방법으로 관리하지 않으면
베이스가 되는 파일까지 다 바꿔야하는 번거로운 일이 발생하게 된다.

2️⃣ 예시

회사에서 정말 단순 UI가 별로라 기존에 있던 데이터는 그대로 유지하되,
단순 UI만 바꾸게 되는 일이 발생했다고 생각해보자. 클린 아키텍쳐 방식으로 업무하지 않았다면
역시나 손대지 않아야 할 파일까지 바꿔야 하는 경우가 생길 수 있다.

두가지 예시 모두 클린 아키텍처 방식으로 설계된 작업이 아니었으면 어디가 어떻게 엉켜있는지 모르니까 베이스가 되는 파일까지 다 바꿔야하는 번거로운 일이 발생하게 된다.

🎙 결론

클린 아키텍쳐를 사용함으로써 그런 일이 발생하더라도 베이스 파일은 그대로 유지하고
필요한 부분만 바꿀 수 있어도 프로젝트 상에 문제가 되지 않게 진행하기 위해
클린 아키텍쳐를 사용하는 이유라고 생각한다.

🧐 그렇다면 클린아키텍쳐 단점은?

  • 프로젝트가 너무 급한 상황이거나,
  • 아키텍쳐를 전부 나눠서 작업하는게 제약으로 다가오는 상황.

이런상황에는 천천히 하나하나 설계 하기 어려워 클린아키텍쳐 방식을 지키기 어렵다.

하지만 단점을 커버할 만큼의 강점이 더 많다.

실제로 클린아키텍쳐를 사용하면,

  • 소스코드를 변경할때 안정성 ⬆️
  • 인프라 계층에 테스트도 가능
  • 코드 가독성 ⬆️
  • 유지보수성을 향상 ⬆️
profile
무럭무럭 자라나는 도도 개발성장일기

0개의 댓글