시스템 설계의 진짜 목적

소프트웨어 아키텍처를 이야기할 때 많은 개발자들이 먼저 떠올리는 것은 기술이다.

예를 들어 다음과 같은 질문들이다.

  • MSA가 좋은가 모놀리스가 좋은가
  • Java가 좋은가 Node.js가 좋은가
  • REST가 좋은가 메시지 큐가 좋은가
  • Kubernetes가 필요한가

하지만 경험이 쌓일수록 한 가지 사실을 깨닫게 된다.

 
좋은 아키텍처는 특정 기술을 선택하는 것이 아니다
 

좋은 아키텍처의 목적은 단 하나다.

 
변경 비용(Change Cost)을 줄이는 것
 

이다.


소프트웨어의 본질은 변화다

소프트웨어 시스템은 처음 설계한 그대로 유지되는 경우가 거의 없다.

서비스가 성장하면 다음과 같은 변화가 발생한다.

  • 새로운 기능 추가
  • 비즈니스 규칙 변경
  • 트래픽 증가
  • 조직 구조 변화

즉 소프트웨어는 본질적으로 변화하는 시스템이다.

문제는 이 변화가 얼마나 쉽게 이루어질 수 있느냐다.


나쁜 아키텍처의 특징

나쁜 아키텍처는 처음에는 잘 동작하는 것처럼 보인다.

하지만 시간이 지나면서 다음과 같은 문제가 나타난다.

  • 작은 기능 변경에도 많은 코드 수정
  • 여러 서비스 동시 수정 필요
  • 배포 리스크 증가
  • 시스템 이해도 감소

이런 시스템에서는 다음과 같은 일이 발생한다.

 
기능 하나 수정하는데 며칠이 걸린다
 

이것이 바로 높은 변경 비용이다.


좋은 아키텍처의 특징

좋은 아키텍처는 변경 비용을 낮춘다.

예를 들어 다음과 같은 특징이 있다.

  • 서비스 간 결합도 낮음
  • 모듈 경계 명확
  • 테스트 가능성 높음
  • 독립적인 배포 가능

이 구조에서는 다음과 같은 일이 가능하다.

 
하나의 기능 변경이
다른 시스템에 영향을 주지 않는다
 

즉 변경이 빠르고 안전하게 이루어진다.


기술 선택은 수단일 뿐이다

많은 개발자들이 아키텍처를 기술 선택 문제로 생각한다.

예를 들어

 
MSA → 좋은 아키텍처
 

라고 생각하는 경우가 많다.

하지만 실제로는 그렇지 않다.

MSA도 잘못 설계하면

 
분산 모놀리스
 

가 될 수 있다.

반대로 모놀리식 시스템도 잘 설계하면
오랫동안 안정적으로 운영될 수 있다.

즉 기술은 목표가 아니라 도구다.


아키텍처의 진짜 질문

좋은 아키텍처를 설계할 때 중요한 질문은 다음과 같다.

 
이 구조는 앞으로 변경하기 쉬운가?
 

예를 들어 다음 질문을 던질 수 있다.

  • 새로운 기능을 추가하기 쉬운가
  • 특정 서비스를 독립적으로 수정할 수 있는가
  • 장애가 전체 시스템으로 확산되지 않는가
  • 팀이 독립적으로 개발할 수 있는가

이 질문에 긍정적으로 답할 수 있다면
아키텍처는 잘 설계된 것이다.


마이크로서비스 아키텍처의 목적

MSA도 같은 관점에서 이해할 수 있다.

MSA의 목적은 서비스 개수를 늘리는 것이 아니다.

목적은 다음과 같다.

 
변경 영향을 줄이는 것
 

예를 들어 주문 시스템이 있다고 가정하자.

모놀리스 구조에서는 주문 로직 수정이
전체 시스템에 영향을 줄 수 있다.

MSA에서는 주문 서비스만 수정하면 된다.

즉 변경 범위가 줄어든다.


DevOps와 Observability의 역할

DevOps와 Observability도 같은 맥락에서 이해할 수 있다.

예를 들어 다음 도구들이 있다.

  • Docker
  • Kubernetes
  • Prometheus

이 도구들의 목적도 결국 같다.

 
시스템 운영과 변경을 쉽게 만드는 것
 

즉 DevOps도 변경 비용을 줄이기 위한 접근 방식이다.


좋은 아키텍처의 기준

좋은 아키텍처는 다음 질문에 답할 수 있어야 한다.

질문                                                                                                          의미
변경이 쉬운가 기능 추가 비용
배포가 쉬운가 운영 비용
확장이 쉬운가 시스템 성장
이해하기 쉬운가 유지보수 비용

이 네 가지가 충족되면
아키텍처는 성공적인 구조라고 볼 수 있다.


정리

아키텍처 논의에서 기술은 항상 중심에 놓인다.

하지만 진짜 중요한 것은 기술 자체가 아니다.

중요한 것은

 
이 시스템을 얼마나 쉽게 바꿀 수 있는가
 

이다.

좋은 아키텍처는 복잡한 구조를 만드는 것이 아니라
변화를 쉽게 만드는 구조다.

결국 아키텍처의 목적은 하나다.

 
변경 비용을 줄이는 것
 

 

LIST

+ Recent posts