239. 컴포넌트 다이어그램 / 배치 다이어그램 (Deployment Diagram) - UML 정적 다이어그램 물리적 배치 모듈 의존성 인터페이스 시스템 아키텍처 서버

핵심 인사이트: (시스템의 물리적 뼈대를 그리는 2대장) 233번 클래스 다이어그램으로 '자바 파일' 수준의 뼈대를 잘 그렸다. 이제 이 자바 파일들을 묶어서 '로그인.jar', '결제.dll' 같은 거대한 블록(컴포넌트)으로 뭉쳤다. "야! 이 거대한 '결제.jar' 블록이랑 '로그인.jar' 블록이 서로 어떻게 연결되는지 레고 블록 단위로 크게 그려봐!(컴포넌트 다이어그램)" 다 그렸더니 사장님이 묻는다. "그래서 그 '결제.jar' 파일은 아마존 1번 서버(쇳덩어리)에 깔려, 구글 2번 서버(쇳덩어리)에 깔려? 서버 기계들끼리 랜선은 어떻게 이어져 있어?!" "아 놔! 당장 도화지에 3D 직육면체(물리적 서버 기계)를 그려!! 그리고 그 쇳덩어리 상자 안에다가 방금 만든 '결제.jar'를 쑤셔 박아!! 그럼 어떤 소프트웨어 조각이 어떤 하드웨어 서버에 설치되는지 물리적인 아키텍처 도면이 완벽하게 나오잖아(배치 다이어그램)!!" 코드가 쇳덩어리에 안착하는 최종 물리 도면 2종 세트다.

Ⅰ. 논리적 설계에서 물리적 설계로의 전환

  • UML 14종 중 가장 대표적인 정적(구조) 다이어그램들입니다. (시간의 흐름이 없습니다.)
  • 클래스 다이어그램이 개발자를 위한 '논리적' 도면이라면, 이 두 다이어그램은 인프라/서버 관리자를 위한 '물리적 덩어리' 도면입니다.

Ⅱ. 컴포넌트 다이어그램 (Component Diagram) 🌟

  • 개념: 자바 클래스 수백 개가 뭉쳐서 만들어진 거대한 배포 단위인 컴포넌트(예: .jar, .dll, .exe 파일)들 간의 관계와 의존성을 큼직하게 보여주는 다이어그램입니다.
  • 그림 모양:
    • 컴포넌트: 직사각형 상자 안에 <<component>> 라고 꺾쇠를 달고 이름을 적습니다.
    • 제공 인터페이스(Provided Interface): 막대사탕처럼 생긴 동그라미 핀(Lollipop) 기호입니다. "내가 이 결제 기능을 남들에게 제공해 줄게!"
    • 요구 인터페이스(Required Interface): 반원 모양의 소켓(Socket) 기호입니다. "난 외부의 결제 기능이 필요해!"
    • 연결: 한 놈의 막대사탕을 다른 놈의 소켓에 '찰칵' 끼워 넣는 그림을 그려 의존성을 기가 막히게 표현합니다.

Ⅲ. 배치 다이어그램 (Deployment Diagram) 🌟 핵심 기출 🌟

UML 전체에서 **유일하게 하드웨어(쇳덩어리 기계)**를 그리는 다이어그램입니다. 시험에 100% 나옵니다.

  • 개념: 완성된 소프트웨어 컴포넌트들이 실제 어떤 물리적인 컴퓨터 하드웨어(서버, 스마트폰, 라우터) 장비 위에 배포(Deploy)되어 설치되는지, 그리고 그 하드웨어 기계들끼리 인터넷(TCP/IP)으로 어떻게 연결되어 있는지를 3D 상자로 그려내는 아키텍처 최종 조감도입니다.

1. 배치 다이어그램의 3대 핵심 조각

  • 노드 (Node) - "3D 직육면체 상자" 🌟:
    • 물리적인 하드웨어 기계 쇳덩어리 그 자체입니다.
    • 3D 정육면체(큐브) 상자를 그리고, 안에 [WAS 서버], [오라클 DB 서버], [고객 스마트폰] 이라고 큼직하게 적습니다.
  • 아티팩트 (Artifact) / 컴포넌트 - "노드 안의 속살":
    • 하드웨어 기계(노드) 안에 설치되는 소프트웨어 파일입니다.
    • 3D 정육면체 상자 '안'에다가, 아까 만든 결제.jar 컴포넌트나 index.html 파일을 그려 넣습니다. "아~ 이 서버에 이 파일이 깔리는구나!" 1초 만에 이해됩니다.
  • 통신 경로 (Communication Path) - "랜선":
    • 기계(노드)와 기계 사이를 잇는 굵은 실선입니다. 선 위에 <<TCP/IP>><<HTTP>> 라고 통신 프로토콜을 적어줍니다.

Ⅳ. 왜 세트로 묶어서 기억해야 하나?

  • 소프트웨어 시스템을 조립하는 순서이기 때문입니다.
  • 클래스(부품) 조립 ➜ 컴포넌트(모듈 블록 완성) ➜ 이 블록들을 배치(물리 서버 쇳덩어리에 설치 및 랜선 연결).
  • 이 두 다이어그램을 합치면, 회사의 전체 시스템 아키텍처(소프트웨어+하드웨어) 조감도가 완벽하게 1장으로 끝납니다.

📢 섹션 요약 비유: 컴포넌트 다이어그램은 조립형 PC를 살 때 **'부품 호환성 견적서'**입니다. "이 그래픽카드(컴포넌트 1)의 단자(제공 인터페이스)가 이 메인보드(컴포넌트 2)의 슬롯(요구 인터페이스)에 딱 맞게 꽂히는가?"를 거대한 블록 단위로 확인하는 소프트웨어 모듈 도면입니다. 부품 조립 견적이 끝났다면, 이제 진짜 물리적인 공간에 컴퓨터를 설치해야 합니다. **배치 다이어그램(Deployment Diagram)**은 이삿짐센터 직원을 위한 **'가구 배치 및 랜선 연결 3D 도면'**입니다. 도면에는 3D 상자(물리적 하드웨어 노드)들이 그려져 있습니다. "자, 1번 3D 상자(DB 서버)는 지하실에 박고, 그 안에 오라클.exe(아티팩트)를 깔아라! 2번 3D 상자(웹 서버)는 1층에 두고 결제.jar를 깔아라! 그리고 1번과 2번 상자 사이를 천장을 뚫고 굵은 랜선(통신 경로, TCP/IP)으로 묶어라!!" 눈에 보이지 않는 허깨비 소프트웨어가 드디어 현실 세계의 쇳덩어리 기계 위에 어떻게 강림(배포)하여 작동하는지를 100% 명확하게 보여주는 인프라 엔지니어의 바이블입니다.