정처기를 준비하면서 알게된 내용인 UML을 다시 공부하기로 한다.
📝 UML 다이어그램
객체 지향 소프트웨어 시스템의 구조와 행위를 시각적으로 표현하는 표준화된 모델링 언어
소프트웨어를 설계하는 단계에서 구조도를 그리는 것이라고 한다.
🧐UML에 대한 경험
작년 초에 UML 다이어그램에 대해 처음으로 제대로 경험을 했다. 끝까지 같이 가지 못한 프로젝트지만 초반에 참여해서 UML 다이어그램을 어느정도 경험을 하고 나왔다. UML을 직접 만들거나 한 건 아니고 이미 만들어진 다이어그램을 보고 내가 만들 소프트웨터의 청사진을 확인하는 정도였다.
다른 블로그를 참고해보니 그런 소프트웨어의 설계 단계에서 구조를 쉽게 파악하기 위해 쓰이는 것이니 반은 경험을 한 것이다.
이때 이걸 경험하고 이걸 작성하는 것을 꼭 연습해야겠다는 생각이 들었다.
💡목차
UML에 있는 모든 다이어그램을 살펴볼 생각은 아니고 실무에서 많이 쓰는 것들 위주로 보려고한다.
실무를 경험 해본 적 없는 나는 물론 제미나이의 힘을 빌려서 알아보려는 것이다.
1. 시스템 아키텍처 다이어그램 (System Architecture Diagram)
2. ERD (Entity-Relationship Diagram, 개체-관계 모델)
3. 시퀀스 다이어그램 (Sequence Diagram)
4. 플로우차트 / 액티비티 다이어그램 (Flowchart / Activity Diagram)
5. 상태 다이어그램 (State Diagram)
✅시스템 아키텍처 다이어그램
📌 서비스의 전체적인 큰 그림을 보여주기 위한 가장 기본적인 다이어그램
📌 클라이언트( 프론트 엔드 ), 백엔드( 서버, AWS, DB, 외부 API 등 )의 연결을 표현한다.
📌 신규 개발자 온보딩, 전체 시스템 구조 파악, 인프라 확장 논의에 쓰인다.
📌 초기 스타트업에서는 단순하지만 점점 규모가 커질수록 다이어그램도 커진다.
✅ ERD (Entity-Relationship Diagram, 개체-관계 모델)
📌 데이터 베이스의 테이블 간의 관계를 시각화한 다이어그램
📌 백엔드, 데이터 엔지니어가 많이 쓴다.
📌 데이터베이스 설계, API 스펙 정의, 데이터 분석을 위한 구조 파악
📌 비즈니스 요구사항이 바뀔 때마다 가장 자주 업데이트되어야 하는 핵심 문서
✅ 시퀀스 다이어그램 (Sequence Diagram)
📌 시간의 흐름에 따라 시스템의 여러 구성 요소(클라이언트, 서버, DB, 외부 결제망 등)가 어떻게 메시지를 주고받는지 보여준다.
📌 결제 프로세스, 소셜 로그인(OAuth) 흐름, 복잡한 API 호출 순서 등 '과정'을 설명할 때 사용
📌 프론트엔드와 백엔드 개발자가 API 연동을 맞출 때 오해를 줄이는 데 가장 효과적
✅ 플로우차트 / 활동 다이어그램 (Flowchart / Activity Diagram)
📌 특정 기능이나 비즈니스 로직의 흐름을 조건문(Yes/No)에 따라 순서대로 보여준다.
📌 알고리즘 흐름 설명, 사용자 여정(User Journey) 정의, 예외 처리(Error Handling) 케이스 정리
📌 개발자뿐만 아니라 기획자(PM/PO)나 디자이너와 비즈니스 로직을 논의할 때 가장 많이 쓰이는 친숙한 형태입니다.
✅ 상태 다이어그램 (State Diagram)
📌 특정 객체의 '상태'가 이벤트에 따라 어떻게 변하는지 보여준다.
📌 이커머스나 배달 앱 같은 도메인에서 특히 중요
📌 주문 상태(결제 대기 -> 결제 완료 -> 배송 중 -> 배송 완료), 유저 상태(활성 -> 휴면 -> 탈퇴) 정의
📌 상태 변화에 따른 버그(예: 이미 취소된 주문인데 배송이 시작되는 버그)를 방지하는 데 필수적
✅다이어그램 툴
실무에서는 화려한 그래픽보다는 빠르게 그리고 수정이 가능한 툴을 선호한다.
코드 기반: Mermaid.js // 텍스트로 코드를 짜면 다이어그램이 그려지는 툴이고 github와 notion 연동이 가능하다고 합니다.
GUI 기반: Draw.io, Figma, Miro, Lucidchart
나는 이번 프로젝트를 시작하면 figma에 있는 figjam을 이용해볼 생각이다. 다이어그램을 그리기 최적화된 피그마의 시스템이라는 듯하다.
'공부' 카테고리의 다른 글
| 공통 컴포넌트와 응집도... (0) | 2026.03.23 |
|---|---|
| tensorflow.js를 배워보자 (3) | 2026.03.03 |
| 프록시 서버 vs 백엔드 서버 (0) | 2026.02.28 |
| 2026 정처기(정보처리기사) 필기 수기 (0) | 2026.02.06 |
| [Node.js] Node.js에 관하여 (0) | 2026.01.26 |