[ 一日30分 인생승리의 학습법] Mermaid를 이용한 시퀀스 다이어그램

Mermaid

Mermaid는 markdown과 같이 텍스트와 코드를 이용해 다이어그램을 만들거나 시각화를 할 수 있습니다.

최근에 시퀀스 다이어그램을 만들 일이 생겨 툴을 찾아보고 있었는데, 시퀀스 다이어그램에서 사용하는 모양을 추가하여 그리는 방식이 대부분이었습니다.

개인적으로 Mermaid를 사용했을 때 가장 편한 부분은 간단한 문법으로 다이어그램을 그릴 수 있고, 수정이 용이하다는 것입니다. 그리고 노션에서도 Mermaid를 이용한 코드를 작성하면 시퀀스 다이어그램을 볼 수 있습니다!

다음 스크린 샷은 노션에서 Mermaid를 이용하여 시퀀스 다이어그램 예제를 적용한 것입니다.
분할 보기, 코드, 미리 보기가 있어 상황에 맞게 다른 보기 방식을 선택할 수 있습니다.

본 내용에서는 Mermaid를 이용하여 시퀀스 다이어그램 작성 문법에 대해 설명합니다.

Syntax

Sequence diagrams

시퀀스 다이어그램은 프로레스의 순서에 따라 서로 상호작용하는 방식을 나타내는 다이어그램입니다.

Mermaid로 시퀀스 다이어그램을 작성하기 위해 마크다운 최상단에 다음과 같이 선언합니다.

sequenceDiagram
  ...

Participants / Actors

객체는 participants나 actor 키워드를 이용하여 선언합니다.

시퀀스 다이어그램에서 객체는 기본적으로 직사각형으로 나타냅니다.
participants 키워드를 사용한 객체는 직사각형으로 나타나고, actor 키워드를 사용하면 사람 형태로 나타납니다.
그리고 객체에 별도의 별칭을 사용할 수 있습니다.

Messages

메세지는 실선이나 점선으로 표시할 수 있습니다.
타입에 따라 다음과 같이 나타냅니다.

Type Description
-> 실선
--> 점선
->> 화살표가 있는 실선
-->> 화살표가 있는 점선
-x 화살끝이 x로 표시되는 실선
--x 화살끝이 x로 표시되는 점선
-) 화살끝이 열린 실선(async)
--) 화살끝이 열린 점선(async)

Activations

객체를 활성화 또는 비활성화 상태를 나타낼 수 있습니다.
activate와 deactivate 키워드를 사용하거나 +, - 기호를 사용하여 나타낼 수 있습니다.

Notes

시퀀스 다이어그램에 메모를 추가할 수 있습니다.
그리고 두 객체에 걸쳐 메모를 작성할 수도 있습니다.

note [ right of | left of | over ] [Actor]: Text in note content

Loops

loop를 표현할 수 있습니다.

경축! 아무것도 안하여 에스천사게임즈가 새로운 모습으로 재오픈 하였습니다.
어린이용이며, 설치가 필요없는 브라우저 게임입니다.
https://s1004games.com

Alt / Opt

조건문도 표현할 수 있습니다.

  • alt 키워드를 사용하여 if-else 문을 표현할 수 있습니다.
  • opt 키워드를 사용하여 else없는 if문을 표현할 수 있습니다.

Parallel

병렬적인 동작을 표현할 수 있습니다.

Critical Region

조건부 처리를 통해 자동으로 처리해야하는 동작을 표현할 수 있습니다.
⇒ 음.. 실은 이 부분을 잘 이해하진 못했는데, 저는 api 통신의 정상적인 응답 또는 에러를 응답 받았을 때의 처리를 표현할 때 사용했습니다.

Break

break 키워드를 사용하여 흐름의 중지(멈춤)을 나타낼 수 있습니다.

Grouping

  • box 키워드를 사용하여 객체를 그룹으로 묶어서 나타낼 수 있습니다.
  • rect 키워드를 사용하여 배경색을 지정할 수 있습니다.

Comments

%%를 사용하여 주석을 작성할 수 있습니다.

sequenceNumbers

autonumber 키워드를 사용하여 시퀀스 다이어그램의 각 화살표에 번호를 부여할 수 있습니다.

실제 예시

sequenceDiagram
    autonumber

    participant AP as App
    participant R as Renderer
    participant M as Main
    participant A as API

    AP->>R: 카드 결제 요청
    R->>M: 카드 결제 주문 생성 요청

    critical POST
        M-)A: 주문 생성<br />(`/api/${id}/payments`)
        A--)M: 주문 Response 반환
    end

    rect rgb(191, 223, 255) 
        alt is success === PAYMENT_RESPONSE.SUCCESS
            M->>M: 카드 데이터 생성
        else is success !== PAYMENT_RESPONSE.SUCCESS
            M-->>M: response.status = "ERROR"
        end
    end

    M-->>R: response 반환

    alt is response.status === "FAIL"
        R-->>AP: 카드 결제 취소
    else is response.status === "ERROR"
        R-->>AP: 카드 결제 실패
    else is response.status === "SUCCESS"
        R-->>AP: 카드 결제 성공
    end

마무리

  • 시퀀스 다이어그램을 작성해본 적이 없는데 작성할 일이 생겼습니다.. 에..
  • 이번에 Mermaid 라는 툴을 처음 접하게 되었는데 시퀀스 다이어그램을 쉽게 작성할 수 있었습니다. 그리고 수정이 용이해서 너무 편했습니다. 개인적으로 추천하는 툴입니다!
  • 중첩해서 작성할 수도 있지만 중첩이 많아지면 에러가 발생해서 작성할 수 없는 부분이 조금 아쉽습니다.
  • 앞으로 시퀀스 다이어그램을 작성할 일이 많지 않았으면 합니다만.. 힣.. 다음에는 조금 더 수월하게 작성할 수 있지 않을까 싶습니다! 아자잣!

[출처] https://velog.io/@qhflrnfl4324/Mermaid%EB%A5%BC-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EC%8B%9C%ED%80%80%EC%8A%A4-%EB%8B%A4%EC%9D%B4%EC%96%B4%EA%B7%B8%EB%9E%A8

 

 

 

본 웹사이트는 광고를 포함하고 있습니다.
광고 클릭에서 발생하는 수익금은 모두 웹사이트 서버의 유지 및 관리, 그리고 기술 콘텐츠 향상을 위해 쓰여집니다.
번호 제목 글쓴이 날짜 조회 수
1218 [一日30分 인생승리의 학습법] [Git] 다중 리모트를 사용하여 여러 Git 연동하기(Gitea, GitHub) file 졸리운_곰 2025.05.25 190
1217 [一日30分 인생승리의 학습법] [GitHub][terminal] 비밀번호 인증 에러를 토큰으로 해결하고 로그인 하기 file 졸리운_곰 2025.05.24 197
1216 [一日30分 인생승리의 학습법] [알아봅시다] 블록체인 게임들의 가능성과 미래 file 졸리운_곰 2025.04.08 199
1215 이 어지러운시대의 극복법 만화보기 file unmask 2025.04.08 267
1214 [ 一日30分 인생승리의 학습법] IT 국비교육, 쓰레기 속에서 그나마 덜 쓰레기인 곳 찾는 팁 file 졸리운_곰 2025.03.08 184
1213 [ 一日30分 인생승리의 학습법] 소프트웨어 개발하다보면 "connection reset" 등, 소프트웨어 버그 적인 문제가아닌 하드웨어나 네트워크 오류 메시지의 예 file 졸리운_곰 2025.03.01 165
1212 [ 一日30分 인생승리의 학습법] 기술부채(Technical Debt)는 소프트웨어 개발이나 프로젝트 과정에서, 약속된 것과 실제로 제공된 것 사이에 차이가 발생하는 것을 의미합니다. file 졸리운_곰 2025.01.23 163
1211 [ 一日30分 인생승리의 학습법] 고가용성(High Availability) 시스템을 위한 5가지 전략 file 졸리운_곰 2024.12.28 170
1210 [ 一日30分 인생승리의 학습법] 켈리 공식을 간단히 투자해 적용해 보자 - 켈리 크라이티리언과 확률적 사고의 중요성 file 졸리운_곰 2024.12.26 135
1209 [ 一日30分 인생승리의 학습법] [markdown] mermaid를 이용해서 UML 그리기 - 플로우차트 file 졸리운_곰 2024.12.01 145
1208 [ 一日30分 인생승리의 학습법] Mermaid.js 정리???????? file 졸리운_곰 2024.12.01 154
» [ 一日30分 인생승리의 학습법] Mermaid를 이용한 시퀀스 다이어그램 file 졸리운_곰 2024.12.01 138
1206 [ 一日30分 인생승리의 학습법] Mermaid - 코드로 순서도(flowchart) 그리기 file 졸리운_곰 2024.12.01 118
1205 [ 一日30分 인생승리의 학습법] 유니코드 그래픽 기호(심벌) Huge List of Unicode Symbols 졸리운_곰 2024.07.31 120
1204 [ 一日30分 인생승리의 학습법] PocketBase Attempt to simplify the serve command for prod : 포켓베이스 프로덕션 포트 도메인 네임 설정 졸리운_곰 2024.06.10 145
1203 [ 一日30分 인생승리의 학습법] google spreadsheet app script 로 코인 현황 : 거래소 API 접근할 때 알아두면 좋은 함수 file 졸리운_곰 2024.06.08 132
1202 [ 一日30分 인생승리의 학습법] 매크로 프로그램 정리 졸리운_곰 2024.06.08 165
1201 [ 一日30分 인생승리의 학습법] 스마트스토어 vs 아임웹 vs 카페24 file 졸리운_곰 2024.05.16 145
1200 [ 一日30分 인생승리의 학습법] 자사몰 구축 카페24 vs 아임웹 vs 스마트스토어 무엇이 좋을까요? file 졸리운_곰 2024.05.16 135
1199 [ 一日30分 인생승리의 학습법] pocketbase 시작하기 file 졸리운_곰 2024.05.14 161
대표 김성준 주소 : 경기 용인 분당수지 U타워 등록번호 : 142-07-27414
통신판매업 신고 : 제2012-용인수지-0185호 출판업 신고 : 수지구청 제 123호 개인정보보호최고책임자 : 김성준 sjkim70@stechstar.com
대표전화 : 010-4589-2193 [fax] 02-6280-1294 COPYRIGHT(C) stechstar.com ALL RIGHTS RESERVED