203. BPMN (Business Process Model and Notation)

⚠️ 이 문서는 기업 내 복잡한 업무 흐름을 자동화하는 BPM 시스템에서, 개발자는 자바 코드로 말하고 기획자는 파워포인트로 그림을 그려 서로의 말이 엇갈리는 비극을 끝내기 위해, **"기획자가 브라우저에서 마우스로 그린 순서도(그림) 자체가 곧바로 엔진(기계)이 읽어 들여 100% 실행할 수 있는 프로그래밍 소스 코드가 된다!"는 마법을 실현한 '글로벌 비즈니스 프로세스 국제 표준 작도 문법인 BPMN 2.0'**을 다룹니다.

핵심 인사이트 (3줄 요약)

  1. 본질: 사람(비즈니스 기획자)이 보기 편한 '직관적인 흐름도(도형)'이면서, 동시에 기계(BPM 엔진)가 오차 없이 읽고 컴퓨터 프로그램으로 실행할 수 있도록 XML 구조로 1:1 매핑된 '표준 그래픽 언어'다.
  2. 가치: 개발자와 현업 간의 의사소통 병목을 완벽히 제거한다. 현업이 그린 업무 흐름도(BPMN)를 개발자에게 주면, 개발자는 새로 코딩을 짜는 게 아니라 그 그림 파일(XML)을 그대로 톰캣(엔진)에 밀어 넣어 1초 만에 시스템을 가동시킨다.
  3. 기술 체계: 원형은 사건 발생(Event), 둥근 네모는 실제 업무 행동(Activity/Task), 마름모는 갈림길(Gateway), 그리고 수영장 레일처럼 부서별 역할을 나누는 Pool/Lane이라는 4대 핵심 도형으로 구성된다.

Ⅰ. 언어의 장벽: 파워포인트와 소스코드의 불일치

기획자의 그림은 예쁘지만 기계는 그 그림을 이해하지 못했다.

  1. 과거의 프로세스 설계의 한계:
    • 영업팀 기획자가 '신규 고객 대출 심사' 과정을 파워포인트(PPT)에 화살표와 네모 상자로 예쁘게 그려서 IT 팀에 넘겼다.
    • IT 팀의 개발자는 그 PPT를 모니터 한쪽에 띄워놓고, 반대쪽 화면에 자바(Java)로 if-else 코드를 수천 줄 타이핑하여 시스템을 번역(하드코딩)했다.
    • 1년 뒤 로직이 바뀌면, 기획자는 PPT를 고치고 개발자는 자바 코드를 다시 뜯어고쳐야 한다. 둘 중 하나라도 업데이트를 깜빡하면 문서와 실제 작동 코드가 불일치하는 '레거시의 저주'가 터진다.
  2. BPMN 2.0의 혁명적 융합 (What You See Is What You Execute):
    • OMG(Object Management Group)에서 BPMN 2.0이라는 국제 표준을 발표했다.
    • "앞으로 기획자는 BPMN 전용 디자이너(툴)에서 이 '정해진 도형'들만 가지고 그림을 그려라."
    • "그럼 그 그림 파일 뒤에 숨겨진 XML 코드를 BPM 엔진(Camunda, Flowable 등)이 직접 씹어먹고, 100% 그림 생긴 그대로 릴레이 시스템을 자동 실행(Orchestration)시켜 줄게!"

📢 섹션 요약 비유: 옛날엔 사장님(기획자)이 한국어로 "요리해"라고 말하면, 통역사(개발자)가 주방 로봇에게 기계어로 번역해 명령했습니다. 통역 오류가 잦았죠. BPMN은 사장님과 기획자, 로봇이 모두 공통으로 배우는 '세계 공통어(에스페란토)'입니다. 사장님이 그림판에 '계란 후라이(BPMN 도형)' 스티커를 딱 붙이는 순간, 그 스티커 자체가 로봇의 두뇌로 전송되어 로봇이 프라이팬에 계란을 톡 깨서 굽게 만드는 마법의 자동 번역 도화지입니다.


Ⅱ. BPMN의 4대 핵심 어휘 (도형 해부학)

4가지 도형만 조합하면 세상에 존재하는 모든 업무 흐름을 다 표현할 수 있다.

  1. 이벤트 (Event: 원형 $\bigcirc$):
    • 업무의 '시작', '중간 발생 사건', '끝'을 나타낸다. (Trigger)
    • 예: 가느다란 원형(Start Event - 고객이 대출 버튼을 누름), 두꺼운 원형(End Event - 대출 거절로 종료됨), 시계가 그려진 원형(Timer Event - 3일이 지남).
  2. 액티비티 / 태스크 (Activity/Task: 둥근 모서리 사각형 $\square$):
    • 실제로 '누군가(사람 or 기계)가 행동하는 작업'이다.
    • User Task: 화면을 통해 '사람'이 결재 도장을 찍어야 넘어가는 일 (사람 상단 아이콘).
    • Service Task: 시스템이 외부 신용평가사 서버에 몰래 API를 쏘고 결과를 가져오는 무인 자동화 일 (톱니바퀴 아이콘).
  3. 게이트웨이 (Gateway: 마름모 $\lozenge$):
    • 길이 갈라지는 '교차로'이자 제어의 핵심이다.
    • Exclusive (XOR, X 표시): 대출 심사 점수가 80점 이상이면 '승인' 길로, 미만이면 '거절' 길로, 오직 1개의 길로만 트래픽을 보낸다 (if-else).
    • Parallel (AND, + 표시): 고객이 결제하면, '포인트 적립' 길과 '재고 차감' 길 2개 모두 동시에 쪼개서 병렬로 실행시키고 나중에 다시 합친다 (Thread Fork & Join).
  4. 시퀀스 플로우 (Sequence Flow: 화실표 $\rightarrow$):
    • 이 도형들을 잇는 '컨베이어 벨트(방향)'다. 이 선을 타고 서류(Token)가 흘러간다.

📢 섹션 요약 비유: 놀이공원에 비유하면, [이벤트 $\bigcirc$]는 정문(시작)과 출구(끝)입니다. [액티비티 $\square$]는 롤러코스터나 회전목마 같은 실제 놀이 기구를 타는 행동입니다. [게이트웨이 $\lozenge$]는 키가 150cm 이상인 사람만 왼쪽 길로 가고 미만은 오른쪽으로 가라는 갈림길 표지판입니다. [화살표 $\rightarrow$]는 손님들이 걸어 다니는 동선입니다. 이 4가지만 있으면 세상에서 제일 복잡한 디즈니랜드의 안내 지도도 완벽하게 그려낼 수 있습니다.


Ⅲ. 책임의 분리: 풀 (Pool)과 레인 (Lane)

하나의 긴 업무에는 여러 부서가 개입한다. 누가 할 일인지 명확히 선을 그어라.

  1. 수영장 라인 (Pool & Lane)의 도입:
    • 대출 승인이라는 큰 도화지(Pool) 하나를 열었다.
    • 이 도화지를 가로로 3등분(Lane)하여 수영장 레일을 만든다. 1번 레일은 [고객], 2번 레일은 [영업팀], 3번 레일은 [재무팀]이라고 이름을 붙인다.
  2. 부서 간 책임(Ownership)의 시각화:
    • [대출 신청(Task)] 네모 박스는 1번 '고객' 레일에 올려놓는다.
    • 화살표가 선을 넘어 2번 레일의 [서류 심사(Task)]로 넘어간다. 이 뜻은, "대출 신청이 끝나면 이 서류의 처리 책임(결재권)이 영업팀으로 즉시 이관(Toss)된다"는 뜻이다.
    • BPM 엔진은 이 그림(레일 위치)을 보고 기가 막히게 다음 타자인 영업팀 김 대리의 PC 화면에 결재 서류를 팝업으로 띄워준다.
  3. 블랙박스 통신 (Message Flow):
    • 우리 회사 수영장(Pool)과 남의 회사(신용평가사) 수영장은 아예 물리적으로 단절되어 있다.
    • 이 두 수영장 사이를 넘어갈 때는 실선(Sequence)이 아니라 점선(Message Flow)을 써서, "내 내부 프로세스는 멈추고 쟤네 회사의 API 답변을 기다린다"는 블랙박스 통신을 완벽하게 규격화해 그려낸다.

📢 섹션 요약 비유: 주방에서 햄버거 세트를 만들 때 빵 굽는 사람, 패티 굽는 사람, 포장하는 사람의 구역을 선(Lane)으로 그어놓은 것입니다. 빵 굽는 사람 구역(Lane)에 있는 [빵 굽기] 네모 상자가 끝나면, 고기가 담긴 접시(Token)가 선을 넘어 패티 굽는 사람 구역으로 스윽 넘어갑니다. 공장장은 이 수영장 레일 그림만 봐도 "지금 햄버거 접시가 포장팀 레일 위에 멈춰서 3분째 안 내려가고 있구나(병목)"를 한눈에 파악할 수 있는 극강의 가시성을 제공합니다.