소프트웨어 아키텍처 101

소프트웨어 아키텍처 101, 한빛미디어


소프트웨어 아키텍처를 설명할 때 이해를 돕기 위해서 여러 가지 다이어그램이 사용됩니다.

특히, 시스템이 어떤 역할을 가진 구성요소로 이루어져 있는지는 컴포넌트 다이어그램이나 도메인 모델을 통해 설명할 수 있습니다.

하지만 물리적 관점에서 실제 시스템을 구성하는 요소들이 어디에 배치되고 서로 어떻게 연결되는지를 설명하기는 어렵습니다.


1. 토폴로지(Topology)의 개념

토폴로지는 원래 수학과 네트워크 분야에서 사용되는 용어입니다.

일반적으로 다음과 같이 정의됩니다.

요소들이 서로 어떻게 연결되어 있는지를 나타내는 구조적 형태

소프트웨어 아키텍처에서 토폴로지는 조금 더 실무적인 의미로 사용됩니다.

시스템을 구성하는 컴포넌트들이 어떻게 배치되고 서로 어떻게 연결되어 있는지를 나타내는 구조

즉, “무엇이 어디에 있고, 어떻게 연결되어 있는가” 를 설명하는 것이 토폴로지입니다.


2. 토폴로지의 형태

토폴로지는 아래 예시처럼 다양한 형태로 표현될 수 있습니다.

예시#1

출처: https://medium.com/%40iyuroch/application-architecture-plan-layers-68defde66ade

3Tires Architecture

예시#2

출처: https://www.projectpro.io/article/apache-kafka-architecture-/442?utm_source=chatgpt.com

Kafka Architecture

예시#3

출처: ChatGPT 생성

                 ┌────────────────┐
                 │     Client     │
                 └────────┬───────┘
                          ↓
                 ┌────────────────┐
                 │   API Gateway  │
                 │ (Auth, Rate,   │
                 │  Logging)      │
                 └────────┬───────┘
        ┌─────────────────┼─────────────────┐
        ↓                 ↓                 ↓
  ┌──────────┐      ┌──────────┐      ┌──────────┐
  │ User API │      │ Order API│      │ Payment  │
  └────┬─────┘      └────┬─────┘      └────┬─────┘
       ↓                 ↓                 ↓
     Redis             Kafka              DB
       ↓                 ↓
       DB           Consumer Service

3. 아키텍처에서 토폴로지의 중요성

토폴로지를 이해하면 아키텍처가 보입니다.

시스템에 대한 설명이 복잡하게 느껴지는 이유는 구성 요소들의 연결 구조가 보이지 않기 때문입니다.

시스템의 아키텍처을 이해하려면 단순히 서버가 몇 대인지 아는 것만으로는 충분하지 않습니다.

아키텍처를 이해하려면 다음과 같은 질문에 답할 수 있어야 합니다.

  • 요청은 어디에서 시작되는가?
  • 데이터는 어디에 저장되는가?
  • 서비스들은 어떤 방식으로 통신하는가?
  • 장애가 발생하면 어디에 영향을 미치는가?
  • 시스템의 확장은 어떤 방식으로 이루어지는가?

이러한 질문에 대한 답은 대부분 토폴로지 안에서 찾을 수 있습니다.

그래서 많은 아키텍트와 개발자들은 새로운 시스템을 설계할 때 가장 먼저 토폴로지를 그려보는 것부터 시작합니다.


4. 아키텍처 스타일 vs 토폴로지

토폴로지는 종종 아키텍처 스타일과 혼동되기도 합니다.

하지만 두 개념은 서로 다른 의미를 가집니다.

구분 의미
아키텍처 스타일 시스템을 설계하는 방식이나 패턴
토폴로지 시스템 구성 요소들의 연결 구조

예를 들어 마이크로서비스 아키텍처를 사용한다고 해서 토폴로지가 반드시 하나로 정해지는 것은 아닙니다.

같은 마이크로서비스라도 다음과 같은 다양한 토폴로지가 존재할 수 있습니다.

  • API Gateway 중심 토폴로지
  • 이벤트 기반 토폴로지
  • 서비스 메시 기반 토폴로지

아키텍처 스타일이 설계 철학이라면 토폴로지는 구조적 배치라고 볼 수 있습니다.


5. 마무리

토폴로지는 복잡한 개념처럼 보일 수 있지만 결국 다음 질문에 대한 답입니다.

이 시스템은 무엇으로 구성되어 있고, 그것들은 어떻게 연결되어 있는가?

그래서 아키텍처를 이해하거나 설명할 때 토폴로지는 매우 중요한 도구가 됩니다.

좋은 토폴로지를 그릴 수 있다는 것은 곧 아키텍처를 이해하고 있다는 의미이기도 합니다.

토폴로지는 복잡한 시스템을 이해하기 위한 가장 직관적인 언어라고 할 수 있습니다.


6. 포스팅 시리즈


#소프트웨어아키텍처101 #한빛미디어 #소프트웨어 #아키텍처 #토폴로지