Server System/Software Architecture

Clean Architecture - 1. 클린 아키텍쳐의 기본 철학 한 줄 요약.

알파해커 테크노트 2020. 2. 29. 20:46
반응형

들어가면서

인터넷을 검색해보면, 클린 아키텍쳐에 대한 수 많은 자료들이 있다.

대부분 성실하고, 또 자세하게 기술되어 있지만, (나도 그랬고) 초보자들이 한번에 그 방대한 양의 클린 아키텍쳐를 이해하기는 힘들거란 생각이 든다. 

 

그래서, 클린 아키텍쳐를 몇 번에 나누어서 설명해보고자 하는데,

먼저 가장 기본인, "그래서 그 유명한 클린 아키텍쳐라는게 대체 뭔데? 그걸 하면 뭐가 좋은 건데?"에 대해서 이야기 해보고자 한다.


한 줄 요약

먼저 한 줄로 가장 중요한 클린 아키텍쳐의 목적과 철학에 대해 말하자면,

"나의 핵심 비즈니스 로직(코드)와 나머지 툴들에 대한 결합도를 낮추겠다" 라는 것이다.


간단한 예시

예를 들어, '영화 예매를 도와주는 웹서비스'를 만든다고 가정해보자. 해당 웹서비스를 만들기 위해서는 대략 다음과 같은 것들이 구성이 되야 할 것이다. (물론 자세히하면, 훨씬 많은 구성이 가능하다.)

 

1. 사용자의 예매 정보(영화의 종류, 시간, 티켓의 개수 등)를 받아서, 예매 프로세스를 처리하는 로직.

2. 처리 과정에서 각종 데이터를 저장할 데이터베이스. ex: MySQL

3. 웹서비스를 구동시킬 웹서버. ex: Tomcat

 

그런데 여기서, 데이터베이스나 웹서버는 서비스를 구현하는데 필요한 도구일 뿐, 소프트웨어의 핵심 요소가 아니다. 

다시 말해, 우리가 구현하려는 영화 예매의 가장 중요한 요소는 '영화 예매'를 수행하는 로직 그 자체이다.

 

서비스를 개발하고 운영하다보면, 저런 도구들은 요구사항에 따라, 혹은 성능적인 이슈 등에 의해 언제든지 교체될 수 있다.

때문에 우리가 개발하고자 하는 로직은 도구에 종속되어서는 안되고, 따라서 결합도를 낮추기 위한 노력이 필요하다.

 

즉, MySQL이 아니라 Oracle이든 AWS DynamoDB든 어떤 것으로 교체해도, 서비스의 핵심 로직인 '영화 예매' 로직은 변경되지 않게 하는 것. 그들 간의 연결고리를 끊는 것. 그래서, 우리가 구성한 소프트웨어 아키텍쳐가 도구가 아닌, 우리가 제공하고자 하는 서비스(영화 예매)를 설명하게 하는 것. 그것이 클린 아키텍쳐가 추구하는 가장 핵심적인 철학이다.  

 

 

반응형