본문으로 건너뛰기
고급약 40분

증권 주문·체결 시스템 검증 — 호가 처리 정합성과 장 시작 피크

주문 시스템은 금융 시스템 중에서도 시간 제약과 정합성 요구가 동시에 가장 빠듯한 쪽이다. 주문의 상태 모델을 판정 기준으로 쓰는 법, 체결 우선순위와 주문 유형이 만드는 경계, 거래소 연계에서 응답을 못 받았을 때의 처리, 그리고 장 시작 몇 분의 피크를 어떻게 시험하는지를 다룬다.

  • #증권
  • #주문
  • #체결
  • #호가
  • #거래소연계
  • #피크성능
  • #상태모델
  • #금융IT

개념

두 요구가 동시에 빠듯하다

레슨 2 에서 원장 정합성을, 모듈 51 에서 성능 시험 심화를 다뤘다. 주문·체결 시스템은 그 둘이 동시에 걸리는 드문 환경이다.

  • 정합성 — 주문 한 건이 중복 체결되거나 사라지면 즉시 금전 사고다
  • 시간 — 장 시작 직후 몇 분에 하루 주문의 상당 부분이 몰린다

그리고 느려지면 정합성이 깨진다. 응답이 늦으면 사용자가 다시 누르고, 타임아웃이 걸리면 재전송이 돌고, 그 결과가 중복 주문이다. 성능 결함이 정합성 결함으로 번지는 구조이고, 이것이 이 레슨의 중심이다.

주문의 상태 모델을 판정 기준으로 쓴다

주문은 상태를 갖고 움직인다. 모듈 39 레슨 2·10 에서 쓴 방식 그대로, 허용 경로와 금지 전이 를 판정 기준으로 만든다.

[접수 대기] → [거래소 접수] → [일부 체결] → [전량 체결]
                   │              │
                   │              └→ [잔량 취소] → [종료]
                   ├→ [거부]
                   └→ [취소 요청] → [취소 완료] / [취소 거부]

금지 전이가 시험의 핵심 이다. 전형적으로 이런 것들이다.

금지 전이일어나면
전량 체결 → 추가 체결초과 체결. 주문 수량보다 많이 산다
취소 완료 → 체결취소한 주문이 체결된다. 가장 위험한 결함
체결 → 미접수체결 기록이 사라진다
거부 → 체결거부된 주문이 살아 있다
같은 체결이 두 번 반영중복 체결. 수량·금액이 두 배

두 번째가 실무에서 가장 무섭다. 취소 요청과 체결이 거래소에서 교차하는 순간이 실제로 존재한다 — 취소를 보냈는데 그 사이 체결이 이미 성립한 경우다. 시스템이 "취소 성공" 과 "체결 성립" 을 동시에 사용자에게 보이면 사고가 된다. 올바른 처리는 거래소의 판정을 따르는 것이고, QA 가 확인할 것은 교차 순간에 우리 시스템이 한 가지 결론만 내놓는가 다.

상태 전이를 확인하려면 최종 상태만 보면 안 된다. 전이 이력을 수집해 경로를 검사한다 — 모듈 39 레슨 10 의 세 축(최종 상태·허용 경로·금지 전이) 과 같은 구조다.

체결 우선순위와 주문 유형 — 경계가 여기서 나온다

국내 주식시장의 매매체결 원칙으로 공개 자료가 설명하는 것은 가격 우선 → 시간 우선 이다. 낮은 매도호가가 높은 매도호가에 우선하고, 높은 매수호가가 낮은 매수호가에 우선하며, 같은 가격이면 먼저 접수된 호가가 우선한다. 그 밖의 보조 우선순위와 각 시장·상품별 세부 규칙은 거래소 업무규정에서 확인한다(원문 확인).

여기서 시간 우선이 배제되는 경우 가 있다는 점이 QA 에게 중요하다. 공개 자료는 시가 등이 상·하한가로 결정되는 단일가매매에서 상한가 매수호가 또는 하한가 매도호가(시장가호가 포함) 를 동시에 접수된 호가로 간주해 시간 우선순위를 배제 한다고 설명한다. 즉 평소와 다른 배분 규칙이 적용되는 구간 이 있고, 그 구간이 시험되지 않으면 배분 결함이 운영에서 처음 드러난다.

주문 유형도 경계를 만든다. 공개 자료가 설명하는 유형 중 최유리 지정가 는 주문 접수 시점의 상대방 최우선호가 가격으로 지정되는 주문이다 — 매도면 그 시점 가장 높은 매수 가격, 매수면 가장 낮은 매도 가격이다.

"주문 접수 시점" 이라는 말이 시험 포인트 다. 접수와 지정 사이에 호가가 바뀌면 어느 가격이 쓰이는가. 호가가 비어 있으면 어떻게 되는가. 이것이 경계 조건이고, 주문 유형별 처리 규칙과 호가 공백 시의 동작은 거래소 규정과 우리 시스템 명세에서 확인한다(원문 확인).

QA 가 만들 것은 주문 유형 × 시장 상태 결정표 다.

주문 유형정규장단일가 구간변동성 완화 발동 중호가 공백
지정가
시장가
조건부 지정가
최유리 지정가
최우선 지정가

칸을 채우는 값은 거래소 규정과 시스템 명세에서 가져온다. 비어 있는 칸이 있으면 그 자체가 질의 항목이다 — 명세에 적혀 있지 않은 조합이 실제로 발생한다.

시장 상태 전환이 만드는 결함

주식시장은 하루 동안 여러 상태를 지난다. 장전 시간외, 시가 단일가, 정규장, 종가 단일가, 장후 시간외. 그리고 종목별로 변동성 완화 장치(VI) 가 발동해 일정 시간 단일가 매매로 전환되는 구간이 생긴다.

공개 자료는 VI 를 개별 종목의 체결 가격이 일정 범위를 벗어나 급격히 변동할 때 일정 시간 단일가 매매로 전환해 급등락을 완화하는 장치로 설명하고, 직전 체결가 기준의 동적 VI 와 전일 종가 기준의 정적 VI 로 구분해 안내한다. 발동 기준 비율·지속 시간·시장과 종목 유형별 차이는 거래소 규정에서 확인한다 (원문 확인) — 2차 자료마다 수치가 다르게 적혀 있어 인용하지 않는다.

QA 관점에서 상태 전환은 경계 시험의 금광 이다.

경계시험할 것
상태 전환 직전 접수된 주문어느 규칙으로 처리되는가
상태 전환 중 접수된 주문접수되는가 거부되는가
VI 발동 순간 에 진행 중인 주문잔량이 어떻게 되는가
VI 해제 후대기 주문이 올바른 순서로 처리되는가
장 종료 시 미체결 잔량자동 취소되는가, 시간외로 넘어가는가

세 번째와 다섯 번째가 자주 빠진다. 특히 장 종료 시 처리는 주문 유형에 따라 다르고, 틀리면 다음 날 예상치 못한 체결이 발생한다.

그리고 시스템 시각과 거래소 시각의 차이 가 이 모든 경계를 흔든다. 우리 시스템이 상태 전환 시각을 1초 늦게 알면, 그 1초 사이의 주문이 틀린 규칙으로 처리된다. 시각 동기와 허용 오차를 시험 전제로 문서화 하고, 일부러 틀어 놓은 조건을 시험에 넣는다 — 모듈 62 레슨 4 의 시계 문제와 같다.

거래소 연계 — 응답을 못 받은 경우

이 영역의 가장 어려운 부분이고, 레슨 2 의 결과 불명 거래 가 여기서 구체적으로 나타난다.

주문을 보냈는데 응답이 없다. 세 가지 가능성이 있다.

  1. 주문이 거래소에 도달하지 않았다 → 재전송해야 한다
  2. 주문이 도달했고 처리됐지만 응답이 유실됐다 → 재전송하면 중복 주문
  3. 주문이 처리 중 이다 → 기다려야 한다

구분할 수 없다는 것이 문제의 본질 이다. 그래서 시스템은 다음 중 하나를 선택해 설계되어 있어야 한다.

  • 멱등 식별자 — 주문에 고유 식별자를 붙여 거래소가 중복을 거부하게 한다
  • 조회 후 재전송 — 재전송 전에 주문 상태를 조회해 확인한다
  • 보수적 대기 — 재전송하지 않고 조회로만 상태를 확정한다

QA 가 확인할 질문은 네 개다.

  1. 어느 방식인가. 명세에 적혀 있는가
  2. 조회 자체가 실패하면 어떻게 되는가
  3. 사용자에게 무엇을 보이는가 — "처리 중" 인가 "실패" 인가. "실패" 로 보이고 실제로는 체결된 경우 가 최악이다
  4. 대조 장치가 있는가 — 우리 주문 기록과 거래소 체결 내역을 맞춰 보는 절차

네 번째가 핵심 이다. 모듈 62 레슨 4 의 대조 지점, 레슨 2 의 대사와 같은 구조다. 우리 시스템의 체결 건수·수량·금액과 거래소에서 받은 내역이 맞는지를 정기적으로 비교 하는 장치가 없으면, 어긋난 것을 발견할 방법이 없다. 그리고 이 대조는 장중에도 돌아야 한다 — 하루 끝에 발견하면 이미 늦다.

시험 설계는 이렇게 된다. 거래소 쪽을 흉내 내는 모의 서버 를 두고 비정상 응답을 마음대로 만든다 — 모듈 62 레슨 3 의 에뮬레이터 발상과 같고, 거기서 다룬 원칙이 그대로 적용된다. 정상 응답만 만드는 모의 서버는 가치가 거의 없다. 지연, 무응답, 순서 뒤바뀜, 중복 응답, 다른 주문 번호로 응답, 형식 깨진 응답을 설정으로 만들 수 있어야 한다.

장 시작 피크 — 평균이 아니라 모양을 재현한다

주문 시스템의 부하는 하루 내내 고르지 않다. 장 시작 직후 짧은 구간에 집중되고, 종가 무렵에 다시 오른다. 모듈 51 레슨 1 의 워크로드 모델링이 여기서 필수가 된다.

평균 초당 주문 수로 부하를 걸면 아무것도 알 수 없다. 재현해야 할 것은 셋이다.

1) 모양. 장 시작 순간 급격히 오르고 수 분 안에 떨어지는 곡선. 평탄한 부하로는 큐 적체와 그 뒤의 지연 누적이 나타나지 않는다.

2) 혼합. 피크 구간에는 주문만 몰리는 것이 아니다. 조회(잔고·호가·체결 내역), 취소·정정, 그리고 시세 수신 이 동시에 폭증한다. 조회가 주문 경로를 막는지가 중요한 질문이고, 주문만 걸어서는 확인되지 않는다.

3) 집중. 특정 종목에 주문이 몰린다. 종목을 고르게 분산한 부하는 종목 단위 잠금 경쟁 을 재현하지 못한다. 실제로는 소수 종목에 집중되고, 그 종목의 처리가 전체를 막을 수 있다.

판정 기준도 달라진다. 모듈 31 레슨 4 에서 다룬 대로 평균이 아니라 분포 로 보고, 특히 꼬리 를 본다. 주문 처리의 p99 가 몇 초로 늘어나면 사용자는 재시도하고, 재시도는 중복 주문 위험을 만든다.

그리고 처리량이 아니라 "지연이 누적되기 시작하는 지점" 을 찾는 것이 목표다. 초당 N 건을 처리했다는 숫자보다, 어느 지점부터 큐가 쌓이기 시작하고 회복에 얼마가 걸리는가 가 운영 판단에 쓰인다.

복수 시장 환경

국내에 대체거래소가 출범해 같은 종목이 둘 이상의 시장에서 거래되는 환경 이 만들어졌다는 보도가 있다. 제도의 현행 내용, 적용 범위, 주문 라우팅과 최선집행에 관한 규정은 감독 당국·거래소·대체거래소의 공개 안내에서 확인한다(원문 확인).

QA 관점에서 이 변화가 만드는 시험 항목의 성격 은 예측할 수 있다.

  • 라우팅 판정 — 어느 시장으로 보낼지 결정하는 로직이 명세대로 동작하는가
  • 시장 간 시세 통합 — 두 시장의 호가를 합쳐 보여 줄 때 정합성이 맞는가
  • 한 시장 장애 시 — 다른 시장으로 전환되는가, 전환 중 주문이 유실되지 않는가
  • 집계 정합성 — 체결 내역·잔고가 시장별로 나뉘어도 합계가 맞는가
  • 시장별 규칙 차이 — 거래 시간·호가 단위·주문 유형이 다를 수 있다

구체적 규칙은 반드시 현행 규정에서 확인 하고, 이 레슨은 시험 항목의 축만 둔다.

실무에서 왜 필요한가

증권 시스템 장애는 보도되는 사고 가 된다. 장 시작에 주문이 지연되거나, 취소한 주문이 체결되거나, 잔고가 틀리면 고객 손실과 감독 당국 보고로 이어진다. 그리고 장중에는 되돌릴 수 없다 — 시장은 계속 돌고, 잘못된 체결은 이미 성립했다.

이 환경에서 QA 가 기여하는 자리는 셋이다.

첫째, 상태 모델을 판정 기준으로 만드는 것. 금지 전이 목록이 있으면 정합성 시험이 체계가 되고, 없으면 "해 봤는데 괜찮았다" 가 된다. 특히 취소와 체결의 교차 순간은 설계 문서를 읽고 질문해야 발견되는 영역이다.

둘째, 비정상 응답을 만들 수 있는 환경을 요구하는 것. 거래소 연계의 결함은 정상 응답에서 나오지 않는다. 모의 서버에 비정상 모드가 없으면 그 결함은 시험될 수 없고, 운영에서 처음 만난다.

셋째, 피크의 모양을 재현하는 것. 평균 부하로 통과한 시스템이 장 시작에 무너지는 일은 흔하다. 모양·혼합·집중 세 축을 반영한 부하 모델을 만들어 두면 그 결함을 미리 만난다.

가장 저평가된 기여는 장중 대조 장치를 요구하는 것 이다. 우리 기록과 거래소 내역을 장중에 맞춰 보는 절차가 없으면, 어긋남을 하루 끝에나 발견한다. 그 몇 시간 동안 사고는 커진다.

채용시장에서의 위치

이 영역은 증권사·자산운용사의 IT 조직, 증권 전산 전문 기업, 트레이딩 솔루션 기업 의 QA 자리다. 공고에는 "증권 원장", "주문·체결", "HTS·MTS", "거래소 연계", "장 시작 부하" 같은 말이 적힌다.

특징은 도메인 지식의 비중이 매우 높다 는 점이다. 호가·체결·단일가·VI·주문 유형을 모르면 시험 설계를 할 수 없고, 그 지식은 문서로 배우는 데 시간이 걸린다. 그래서 한 번 들어가면 경력이 길게 쌓이고 이동도 같은 업권 안에서 일어난다.

경쟁력이 되는 것은 셋이다. 첫째, 상태 모델과 금지 전이로 생각하는 능력 이다. 면접에서 "취소와 체결이 교차하면 어떻게 하시겠습니까" 는 이것을 보는 질문이다. 둘째, 비정상 응답 시나리오를 설계하는 능력 이다. 셋째, 피크 부하의 모양을 설명하는 능력 이다 — "평균 TPS" 로 답하면 약하고, 모양·혼합·집중을 들면 다르다.

그리고 이 분야에서는 규정을 확인하는 태도 가 특히 중요하다. 체결 규칙과 VI 기준은 거래소 규정이 정하고 개정된다. 외운 수치로 시험 기준을 세우면 틀리고, 그 틀림이 운영 사고로 연결된다.

실습 과제

체결 규칙·VI 기준·주문 유형 처리·복수 시장 규정의 구체적 수치와 조건은 전부 "거래소 규정·시스템 명세에서 확인(원문 확인)" 으로 표시 한다. 과제의 목표는 구조와 절차를 설계하는 것이다.

과제 1 — 주문 상태 모델과 금지 전이 (30분)

  1. 본문의 상태도를 확장해 상태 10개 이상 의 주문 상태 모델을 그린다. 정정 주문, 시간외 이월, 자동 취소를 포함한다
  2. 허용 경로 를 전부 열거한다
  3. 금지 전이를 15개 만든다. 본문의 다섯 가지를 포함하고, 각각에 대해 일어나면 무슨 일이 생기는가 를 한 줄 적는다
  4. 취소와 체결의 교차 를 별도로 다룬다. 시나리오를 시간순으로 쓰고, 우리 시스템이 한 가지 결론만 내놓는지 확인하는 시험을 설계한다
  5. 전이 이력을 수집해 경로를 검사하는 방법을 적는다. 최종 상태만 보면 놓치는 결함을 두 개 든다

과제 2 — 주문 유형 × 시장 상태 결정표 (30분)

  1. 본문의 표를 채운다. 값은 원문 확인 으로 표시하되, 어느 문서의 어느 부분을 봐야 하는지 를 적는다
  2. 열을 넷 더 추가한다(장전 시간외, 종가 단일가, 장후 시간외, 거래 정지)
  3. 빈 칸 을 찾아낸다. 명세에 적혀 있지 않은 조합을 질의 목록으로 만든다
  4. 단일가 구간에서 시간 우선순위가 배제되는 경우 를 시험 케이스로 만든다. 배분 결과를 어떻게 검증할지 적는다
  5. 호가 공백 열의 처리를 특히 공들여 쓴다. 상대방 호가가 없을 때 최유리·최우선 지정가가 어떻게 되는지 질문으로 정리한다

과제 3 — 시장 상태 전환 경계 시험 (25분)

  1. 하루의 시장 상태를 타임라인으로 그린다. VI 발동 구간을 하나 넣는다
  2. 본문의 다섯 경계 각각에 시험 케이스 3개 를 설계한다
  3. 장 종료 시 미체결 잔량 처리 를 주문 유형별로 표로 만든다. 틀렸을 때 다음 날 무슨 일이 생기는지 적는다
  4. 시스템 시각이 거래소 시각보다 1초 늦은 조건 을 만드는 시험을 설계한다. 어느 주문이 틀린 규칙으로 처리되는지 밝힌다
  5. 시각 동기와 허용 오차를 시험 전제 문서로 쓴다

과제 4 — 결과 불명 거래와 모의 서버 (35분)

  1. 본문의 세 가능성을 구분할 수 없는 이유를 한 문단으로 정리한다
  2. 세 가지 설계 방식(멱등 식별자·조회 후 재전송·보수적 대기) 각각에 대해 남는 위험 을 적는다
  3. 본문의 네 질문에 답하는 확인 절차 를 쓴다. 특히 세 번째 ("실패" 로 보이고 실제로는 체결된 경우) 를 재현하는 시험을 설계한다
  4. 모의 거래소 서버의 비정상 모드 를 최소 10개 설계한다 — 지연(분포로), 무응답, 순서 뒤바뀜, 중복 응답, 다른 주문 번호로 응답, 형식 오류, 부분 체결 후 침묵, 취소 응답과 체결 응답 동시 도착 등
  5. 각 모드마다 우리 시스템의 기대 동작 을 한 줄 적는다. 이것이 시험 케이스가 된다
  6. 장중 대조 장치 를 설계한다 — 비교 대상, 주기, 허용 차이와 근거, 벌어졌을 때의 조치. 장중에 돌아야 하는 이유를 적는다

과제 5 — 장 시작 피크 부하 모델 (30분)

  1. 모양 — 장 시작 전후 30분의 초당 주문 수 곡선을 설계한다. 실제 데이터가 없으면 가정하되 가정임을 명시하고, 어디서 데이터를 얻을지 적는다
  2. 혼합 — 피크 구간의 요청 구성을 비율로 정한다(주문·취소·정정·조회·시세). 조회가 주문 경로를 막는지 확인하는 시험을 설계한다
  3. 집중 — 종목 분포를 설계한다. 상위 몇 종목에 몇 %가 몰리는 모양으로, 고르게 분산한 부하가 못 잡는 결함을 적는다
  4. 판정 기준 — 평균이 아니라 분포로 쓴다. p95·p99·최대와 함께 "지연이 누적되기 시작하는 지점" 을 찾는 방법을 적는다
  5. 처리량 숫자보다 큐 적체 시작점과 회복 시간 이 운영 판단에 쓰이는 이유를 한 문단 쓴다
  6. 재시도가 중복 주문 위험을 만드는 경로를 그린다. 성능 결함이 정합성 결함으로 번지는 구조를 설명한다

과제 6 (선택) — 복수 시장 시험 항목 (20분)

  1. 본문의 다섯 축으로 시험 항목을 설계한다. 구체적 규칙은 원문 확인 표시
  2. 한 시장 장애 시 전환 시나리오를 특히 공들여 쓴다. 전환 중 주문 유실을 확인하는 방법을 적는다
  3. 집계 정합성 검사를 레슨 2 의 불변식 형태로 쓴다
  4. 현행 제도와 규정을 확인할 경로를 목록으로 만든다

자가 체크리스트

  • 주문 시스템에 정합성과 시간 요구가 동시에 걸린다는 것을 설명할 수 있다
  • 느려지면 정합성이 깨지는 경로(지연 → 재시도 → 중복) 를 그릴 수 있다
  • 주문 상태 모델을 그리고 허용 경로와 금지 전이를 가를 수 있다
  • 금지 전이 다섯 가지와 각각의 결과를 들 수 있다
  • 취소와 체결이 교차하는 순간이 실재하며, 한 가지 결론만 내놓아야 함을 안다
  • 최종 상태만 보면 놓치는 결함이 있어 전이 이력을 수집해야 함을 안다
  • 국내 매매체결 원칙이 가격 우선 → 시간 우선이며 세부는 거래소 규정 확인임을 안다
  • 단일가매매에서 시간 우선순위가 배제되는 경우가 있다는 것을 알고 시험 대상으로 둔다
  • 최유리 지정가의 "주문 접수 시점" 이 시험 포인트인 이유를 설명할 수 있다
  • 주문 유형 × 시장 상태 결정표를 만들고 빈 칸을 질의로 바꿀 수 있다
  • 하루의 시장 상태 전환과 VI 가 경계 시험의 대상인 이유를 안다
  • VI 의 동적·정적 구분을 알고 기준 수치는 거래소 규정 확인임을 안다
  • 장 종료 시 미체결 잔량 처리가 주문 유형별로 다르다는 것을 안다
  • 시스템 시각과 거래소 시각의 차이가 모든 경계를 흔든다는 것을 설명할 수 있다
  • 응답을 못 받은 경우의 세 가능성을 구분할 수 없다는 문제의 본질을 안다
  • 세 가지 설계 방식과 각각의 남는 위험을 말할 수 있다
  • "실패" 로 보이고 실제로는 체결된 경우가 최악인 이유를 안다
  • 장중 대조 장치가 없으면 어긋남을 발견할 방법이 없다는 것을 설명할 수 있다
  • 모의 거래소 서버의 가치가 비정상 응답을 만드는 데 있다는 것을 안다
  • 피크 부하에서 재현할 세 가지(모양·혼합·집중) 를 들 수 있다
  • 평탄한 부하로는 큐 적체와 지연 누적이 나타나지 않는 이유를 안다
  • 종목을 고르게 분산한 부하가 잠금 경쟁을 재현하지 못하는 이유를 안다
  • 판정을 분포로 하고 꼬리를 봐야 하는 이유를 설명할 수 있다
  • 처리량보다 "지연 누적 시작점과 회복 시간" 이 운영 판단에 쓰이는 이유를 안다
  • 복수 시장 환경의 시험 항목 다섯 축을 들 수 있고 규정은 원문 확인임을 안다

흔한 실수

최종 상태만 검사한다. 결국 전량 체결됐으니 통과로 본다. 중간에 금지 전이가 있었는지, 같은 체결이 두 번 반영됐는지는 전이 이력을 봐야 드러난다.

취소와 체결의 교차를 시험하지 않는다. 실제로 발생하는 순간이고, 처리가 어긋나면 취소한 주문이 체결된 것으로 보인다. 가장 위험한 결함이다.

단일가 구간을 정규장과 같게 시험한다. 시간 우선순위가 배제되는 경우가 있고, 배분 규칙이 다르다. 그 구간 전용 케이스가 필요하다.

호가 공백을 시험하지 않는다. 상대방 호가가 없을 때 최유리·최우선 지정가의 처리는 명세에 안 적혀 있는 경우가 많다. 질의 대상이다.

장 종료 시 잔량 처리를 넘긴다. 주문 유형별로 다르고, 틀리면 다음 날 예상치 못한 체결이 발생한다.

시스템 시각을 거래소 시각과 같다고 가정한다. 1초 차이가 상태 전환 경계의 주문을 틀린 규칙으로 처리한다. 틀어 놓은 조건을 시험에 넣는다.

거래소 규정의 수치를 외워 시험 기준으로 쓴다. 규정은 개정되고 2차 자료는 서로 다르게 적는다. 기준은 규정 원문에서 가져오고 출처를 기록한다.

모의 서버를 정상 응답만 만들게 한다. 결함은 비정상 응답에서 나온다. 정상만 흉내 내는 모의 서버는 가치가 거의 없다.

응답 지연을 고정값으로 둔다. 긴 꼬리에서만 생기는 경쟁 조건을 영원히 못 잡는다. 분포로 넣는다.

사용자에게 "실패" 를 쉽게 보여 준다. 실제로는 체결됐는데 실패로 보이면 사용자가 다시 주문한다. 확정되지 않은 상태는 "처리 중" 으로 보이고 조회로 확정한다.

대조를 하루 끝에만 한다. 장중에 어긋나면 그 몇 시간 동안 사고가 커진다. 장중 주기 대조가 필요하다.

평균 TPS 로 부하를 건다. 장 시작의 급격한 상승 곡선이 재현되지 않아 큐 적체와 그 뒤의 지연 누적을 못 본다.

주문만 걸어 부하 시험을 한다. 피크에는 조회·시세·취소가 함께 폭증한다. 조회가 주문 경로를 막는 결함은 혼합 부하에서만 드러난다.

종목을 고르게 분산해 부하를 건다. 실제로는 소수 종목에 몰리고, 그 종목의 잠금 경쟁이 전체를 막는다.

처리량만 보고한다. "초당 N 건" 보다 "어느 지점부터 쌓이고 회복에 얼마" 가 운영 판단에 쓰인다.

복수 시장 규칙을 추측한다. 거래 시간·호가 단위·주문 유형이 시장마다 다를 수 있다. 현행 규정에서 확인한다.

참고 자료

  • 거래소의 업무규정과 시행세칙 — 매매체결 원칙과 보조 우선순위, 단일가매매와 동시호가 처리, 주문 유형별 처리, 변동성 완화 장치의 발동 기준과 지속 시간, 시장별·상품별 차이. 이 레슨이 수치를 적지 않은 모든 항목의 정본이다 (조항·수치 — 원문 확인)
  • 대체거래소와 감독 당국의 공개 안내 — 복수 시장 환경의 제도 내용, 주문 라우팅과 최선집행 관련 규정(원문 확인)
  • 우리 시스템의 주문 상태 명세와 거래소 연계 인터페이스 정의서 — 상태 전이, 재전송 정책, 멱등 식별자, 타임아웃 값. 비어 있으면 그 공백이 설계 지적 대상이다
  • 거래소 연계에 쓰는 프로토콜 명세 — 메시지 구조와 오류 코드, 재전송 규칙
  • 모듈 41 레슨 1 — 금융 IT 규제: 전산장애 보고와 감독 요구
  • 모듈 41 레슨 2 — 원장 정합성: 불변식·멱등성·결과 불명 거래·대사의 일반형
  • 모듈 51 레슨 1 — 워크로드 모델링: 피크의 모양을 만드는 방법
  • 모듈 31 레슨 4 — 성능 결과의 통계적 표현: 분포와 꼬리로 판정하기
  • 모듈 39 레슨 10 — 상태 모델 판정 세 축: 금지 전이 검사의 일반형
  • 모듈 62 레슨 3 — 에뮬레이터 설계: 비정상 모드를 갖춘 모의 서버
  • 모듈 62 레슨 4 — 대조 지점: 장중 대조 장치의 원형

낯선 말 풀이

이 레슨에 나온 약어입니다. 본문에서도 처음 나올 때 점선으로 표시해 두었습니다 (제목과 링크 글자는 그대로 둡니다).

QA — 품질보증
만든 것이 쓸 만한지 확인하고, 애초에 덜 망가지게 만드는 방법을 정하는 일. "테스트"는 그 일의 일부다.
p99 — 99 백분위
100번 중 99번이 이 시간 안에 끝났다는 뜻. 가장 느린 1%만 뺀 값이다.
IT — 정보기술
컴퓨터와 통신으로 정보를 다루는 기술 전체.
TPS — 초당 처리 건수
1초에 몇 건을 처리하는지.
p95 — 95 백분위
느린 쪽 5%를 뺀 나머지가 이 안에 들어온다는 뜻. 100번 중 95번이 그 시간 안에 끝났다는 말이다.

용어집 전체 보기