콘텐츠로 이동

OPS Management

DoubleZero OPS Management 포털은 기여자들이 네트워크 전반에 걸쳐 인시던트(계획되지 않은 장애)와 유지보수(계획된 작업)를 기록하고 추적하는 곳입니다. 모든 티켓은 모든 기여자에게 공개됩니다.

포털: https://doublezero.xyz/ops-management

포털 vs Slack

OPS Management 포털과 Slack은 함께 작동합니다. 모든 인시던트와 유지보수는 티켓으로 추적되며, 포털 또는 API를 통해 접근할 수 있습니다. 각 티켓은 자동으로 적절한 Slack 채널에 알림을 보내고 모든 기여자에게 네트워크에서 일어나고 있는 상황에 대한 공유 뷰를 제공합니다. Slack은 대화가 이루어지는 곳입니다: 로그 공유, 다른 기여자와의 조율, 활성 이슈에 대한 협업이 여기서 진행됩니다.

티켓은 포털이든 API를 통해서든 생성되면 공식 기록입니다. Slack 스레드는 그렇지 않습니다: 티켓 상태를 업데이트하지 않으며 영구적으로 저장되지도 않습니다. 대화가 Slack에서 이루어지더라도 항상 티켓 상태를 최신으로 유지하세요.

포털과 Slack은 서로 다른 목적을 가지고 있습니다. 둘 다 사용하되, 적절한 용도에 맞게 사용하세요.

포털(또는 API) 사용 목적... Slack 사용 목적...
티켓 생성, 업데이트 및 종료 활성 이슈에 대한 대화 및 협업
상태 전환 기록 로그, 스크린샷 공유 또는 통화 시작
티켓 할당 또는 에스컬레이션 문제에 빠르게 관심 집중시키기
종료 시 근본 원인 설정 다른 기여자와 조율

온보딩

포털을 사용하기 전에 다음 단계를 한 번 완료하세요.

1. Ops Manager 키 설정

Solana 지갑 공개키를 Ops Manager 키로 등록합니다. 지원되는 지갑: Phantom, Solflare, Coinbase Wallet.

doublezero contributor update \
  --ops-manager <OPS_MANAGER_PUBKEY> \
  --pubkey <CONTRIBUTOR_PUBKEY>

2. 포털에서 지갑 연결

  1. https://doublezero.xyz/ops-management으로 이동합니다.
  2. Connect Your Wallet을 클릭하고 지갑을 선택합니다.
  3. Ops Manager 키의 소유권을 증명하기 위해 메시지에 서명합니다.

인증이 완료되면 Incident Tracking Table이 표시됩니다.

계정 설정은 Settings 메뉴(오른쪽 상단 톱니바퀴 아이콘) 뒤에 있습니다: API Key Management, User Management, Escalation Contacts. 표시되는 옵션은 역할에 따라 다릅니다.

3. API 키 생성 (선택 사항)

웹 폼 대신 프로그래밍 방식으로 접근하려면:

  1. Settings 메뉴(톱니바퀴 아이콘)를 열고 API Key Management를 선택합니다.
  2. 하나 이상의 API 키를 생성합니다.
  3. 이 페이지에서 API 문서를 다운로드합니다.

인시던트

인시던트는 계획되지 않은 서비스 영향 이벤트입니다.

심각도 수준

DoubleZero 네트워크에 대한 영향을 기준으로 심각도를 지정합니다. 상황이 변화함에 따라 심각도를 업데이트할 수 있습니다.

심각도 영향 대응
sev1 전체 장애 또는 대체 경로 없는 주요 제어/데이터 플레인 손상 근무 시간 외라도 즉시 모든 것을 중단하고 대응. DoubleZero Foundation에 즉시 에스컬레이션.
sev2 부분적이지만 상당한 영향; 대체 경로 가능한 서비스 저하 긴급으로 처리. 적극적으로 조율. 지속적인 저하에 대해서는 야간 대응 필요.
sev3 제한적이거나 사용자에게 보이지 않는 영향; 해결되지 않으면 에스컬레이션 가능성 근무 시간 중 최우선 순위. 면밀히 모니터링. 영향이 증가하지 않는 한 근무 시간 외 에스컬레이션 불필요.
심각도 예시

Sev1 예시

  • DoubleZero에서 사용자 트래픽의 10% 이상이 블랙홀되고 공용 인터넷으로의 대체 경로 없음
  • 사용자 온보딩, 연결 또는 연결 해제 시도의 80% 이상 실패
  • DZD의 20% 이상에서 인터페이스 오류 보고
  • 컨트롤러가 DZD 에이전트에 유효하지만 잘못된 설정을 반환

Sev2 예시

  • 사용자의 20% 이상이 DoubleZero 터널을 통해 트래픽을 송수신할 수 없지만 공용 인터넷으로 대체 가능
  • 대체 경로 없이 DoubleZero에서 사용자 트래픽의 0–10%가 블랙홀됨
  • 신규 사용자 온보딩, 연결 또는 연결 해제 시도의 20–80% 실패
  • 설정 에이전트의 20% 이상이 DZD 설정 적용 실패
  • DZD의 0–20%에서 인터페이스 오류 보고
  • 업스트림 이슈로 인한 관측성 손실 (모니터링/알림 중단)
  • 온체인 데이터 파이프라인 중단 또는 잘못된 데이터 생성
  • 인터넷 지연 시간 수집 또는 제출의 20% 이상 실패
  • DZD 에이전트가 컨트롤러에 접근 불가
  • 컨트롤러가 DZD에 적용되지 않을 유효하지 않은 설정 반환

Sev3 예시

  • 사용자의 0–20%가 DoubleZero 터널을 통해 트래픽을 송수신할 수 없지만 공용 인터넷으로 대체 가능
  • DZD의 0–20%에서 인터페이스 오류 보고
  • DZD의 0–20%에서 설정 에이전트 장애 발생
  • 사용자 온보딩, 연결 또는 연결 해제 시도의 0–20% 실패
  • 단일 데이터 제공자에 대한 인터넷 지연 시간 수집 또는 제출의 20% 이상 실패
  • 모든 데이터 제공자에 대한 인터넷 지연 시간 수집 또는 제출의 0–20% 실패
  • 무음 처리할 수 없는 알림 노이즈를 유발하는 버그 또는 기술 부채
  • 여러 시간 동안 장치의 0–20%에 대해 DIA 중단 또는 원장 RPC 네트워킹 이슈
  • 사소한 버그, 외관 오류 또는 고객 트래픽에 영향을 주지 않는 격리된 인시던트와 같은 낮은 영향의 이슈
  • 서비스 중단 없이 소수의 장치에서 간헐적으로 오류 보고

인시던트 생성

Create New Record를 클릭하고 포털에서 Type = Incident를 선택하거나 API를 통해 제출합니다.

필수:

필드 설명
title 짧은 요약 (최대 100자)
description 상세 설명 (최대 500자)
severity sev1, sev2 또는 sev3
status 생성 시 종료 상태(resolved, closed)로 설정할 수 없음
Device 및/또는 Link 최소 하나 필요. 웹 폼에서는 드롭다운에서 장치 및 링크 코드를 선택. API 사용 시에는 device_pubkey 및/또는 affected_link_pubkey로 해당 공개키를 전달.

선택 사항:

필드 설명
reporter_name / reporter_email 연락처 정보
assignee 해결 담당자
internal_reference 내부 티켓 ID (예: Jira, ServiceNow)
start_at 기본값은 생성 시간; 수정 가능

생성되면 티켓 ID, 심각도, 영향받는 장치/링크 및 기여자 이름과 함께 기여자 인시던트 Slack 채널에 알림이 게시됩니다.

인시던트 업데이트

인시던트가 진행됨에 따라 티켓 상태를 최신으로 유지하세요. 이것은 다른 기여자와 DZ가 무엇이 작업 중인지 파악하는 데 사용하는 신호입니다.

상태 설정 시점
open 초기 상태: 이슈 보고됨, 아직 작업 시작 안 됨
acknowledged 확인하고 소유권을 가짐
investigating 적극적으로 진단 중: 로그 수집, 메트릭 확인
mitigating 근본 원인 파악되었거나 의심됨; 수정 또는 우회 방법 적용 중
monitoring 수정 적용됨; 유지되는지 확인 중
resolved 이슈 해결 확인됨; 근본 원인 필수
closed 완전히 완료됨; 추가 조치 불필요; 근본 원인 필수
open → acknowledged → investigating → mitigating → monitoring → resolved → closed

적절한 경우 상태를 건너뛸 수 있습니다. 예를 들어, 즉시 작업을 시작하는 경우 open에서 investigating으로 바로 이동할 수 있습니다. 항상 현재 상태에 가장 정확한 상태를 사용하세요.

각 상태 업데이트는 원래 Slack 알림 스레드에 답글로 게시됩니다.

인시던트 종료

인시던트를 resolved 또는 closed로 전환하려면 근본 원인을 설정해야 합니다. 이미 알고 있다면 이전 단계에서 근본 원인을 설정할 수 있으며, 종료 시 필수가 됩니다.

코드 설명
hardware 하드웨어 수리, 교체 또는 업그레이드 (SFP, NIC, 케이블, 장치)
software 소프트웨어 또는 펌웨어 수정, 업데이트 또는 재시작
configuration 설정 변경, 수정 또는 롤백
capacity 혼잡, 용량 제한 또는 트래픽 관리
carrier 회선, 파장 또는 크로스커넥트 제공업체 이슈
network_external 기여자 통제 범위 밖의 외부 네트워크 이슈
facility 데이터센터 인프라 이슈 (전원, 냉각)
fiber_cut 물리적 광섬유 손상 복구됨
security 보안 인시던트 완화됨
human_error 운영 실수 수정됨
false_positive 조사 후 실제 이슈 발견되지 않음
duplicate 다른 티켓에서 이미 추적 중
self_resolved 개입 없이 이슈 자체 해결됨
dz_managed DoubleZero 관리 소프트웨어 컴포넌트(activator, controller 등)의 이슈

유지보수

유지보수 기록은 가용성에 영향을 줄 수 있는 계획된 시간 제한 활동입니다. 다른 기여자가 충돌하는 윈도우를 확인하고 피할 수 있도록 사전에 생성하세요.

유지보수 예약

포털에서 Create New Record > Maintenance를 클릭하거나 API를 통해 제출합니다.

필수:

필드 설명
title 짧은 요약 (최대 100자)
description 상세 설명 (최대 500자)
severity sev1, sev2 또는 sev3. 예상되는 사용자 영향에 맞게 설정 (아래 참고 사항 참조).
start_at 계획된 시작 시간 (UTC)
end_at 계획된 종료 시간 (UTC); start_at 이후여야 함
Device 및/또는 Link 최소 하나 필요. 웹 폼에서는 드롭다운에서 장치 및 링크 코드를 선택. API 사용 시에는 device_pubkey 및/또는 affected_link_pubkey로 해당 공개키를 전달.

심각도는 인시던트와 동일한 방식으로 유지보수에 적용됩니다. 위의 심각도 수준을 사용하여 윈도우 동안 예상되는 사용자 영향에 맞게 설정하세요.

생성되면 티켓 ID, 영향받는 장치/링크, 계획된 윈도우 및 기여자 이름과 함께 기여자 유지보수 Slack 채널에 알림이 게시됩니다.

유지보수 상태 관리

윈도우가 진행됨에 따라 상태를 최신으로 유지하세요.

상태 설정 시점
planned 예약됨, 아직 시작되지 않음
in-progress 작업 시작됨
completed 작업 성공적으로 완료됨
closed end_at 후 24시간에 자동 설정됨
cancelled 실행 전 또는 실행 중 취소됨
planned → in-progress → completed → closed (end_at 후 24시간에 자동)
    ↓          ↓
    └──────────┴──→ cancelled

에스컬레이션 연락처

에스컬레이션 연락처는 네트워크의 귀하 담당 부분에 문제가 있을 때 DoubleZero와 다른 기여자가 누구에게 연락해야 하는지 알려줍니다. 귀하 조직의 연락처는 직접 설정합니다. 연락처는 개인 또는 NOC와 같은 팀일 수 있습니다. 각 연락처에는 하나 이상의 연락 방법과 당직 일정이 있습니다.

Settings 메뉴(톱니바퀴 아이콘)를 열고 Escalation Contacts를 선택합니다. Ops Manager만 연락처를 추가하거나 편집할 수 있습니다.

연락처 추가

각 연락처에 대해 다음을 설정합니다:

필드 설명
Name 개인 또는 NOC와 같은 팀의 연락처 이름
Timezone 일정을 읽는 데 사용되는 현지 시간대
Availability 24/7 또는 연락처가 당직인 하나 이상의 주간 시간대
Contact methods 우선순위 순서로 연락처에 연락하는 하나 이상의 방법

지원되는 연락 방법은 이메일, 전화, Slack, Telegram, WhatsApp입니다. 순서가 중요합니다: 첫 번째 방법이 먼저 시도할 방법입니다.

가용성 및 커버리지 공백

연락처는 24시간(24/7) 이용 가능하거나 정의한 주간 시간대 동안 이용 가능합니다. 예를 들어 월요일부터 금요일, 09:00부터 17:00까지. 시간대는 연락처의 현지 시간대로 입력되고 UTC로 표시되므로 서머타임이 자동으로 처리됩니다.

커버리지 공백 뷰는 매주 조직에서 아무도 당직이 아닌 시간을 보여줍니다. 이를 사용하여 공백을 찾고 해소하세요.

교대 윈도우

한 주는 30분 단위 윈도우로 나뉩니다. 각 윈도우에 대해 연락처에 연락하는 순서를 설정할 수 있습니다. 이를 통해 각 연락처를 편집하지 않고도 당직 교대를 운영할 수 있습니다.

공개 범위

연락처를 누가 볼 수 있는지 제어합니다. DoubleZero는 항상 볼 수 있습니다. 그 외 누가 볼 수 있는지 선택합니다:

설정 연락처를 볼 수 있는 다른 사람
DoubleZero only (기본값) 다른 기여자 없음
Everybody 모든 기여자
Some contributors 선택한 기여자만

귀하 팀은 항상 귀하의 연락처를 볼 수 있습니다. 공개 범위는 조직 전체에 한 번 설정되며 모든 연락처에 적용됩니다.


사용자 관리

기본적으로 Ops Manager 키만 조직을 대신하여 활동할 수 있는 유일한 계정입니다. 팀원을 추가하여 여러 사람이 티켓을 관리할 수 있도록 할 수 있습니다.

Settings 메뉴(톱니바퀴 아이콘)를 열고 User Management를 선택합니다. Ops Manager만 팀원을 추가하거나 제거할 수 있습니다.

각 팀원에 대해 다음을 설정합니다:

필드 설명
Name 해당 인원의 이름
Wallet pubkey 로그인에 사용하는 Solana 지갑
Access level Read 또는 Read-write

접근 수준:

  • Read: 티켓과 에스컬레이션 연락처를 볼 수 있고 읽기 전용 API 키를 생성할 수 있습니다. 티켓을 생성, 업데이트 또는 종료할 수 없습니다.
  • Read-write: 티켓을 생성, 업데이트 및 종료할 수 있는 전체 접근 권한이 있으며 모든 수준의 API 키를 생성할 수 있습니다.

각 팀원은 Ops Manager 키를 연결한 것과 동일한 방식으로 자신의 지갑으로 로그인합니다.


권한 및 에스컬레이션

기여자가 할 수 있는 것

  • 자신의 장치와 링크에 대해서만 티켓을 생성하고 관리할 수 있습니다.
  • 자신에게 티켓을 할당하거나 DZ/Malbeclabs에 에스컬레이션할 수 있습니다.
  • 모든 기여자의 모든 티켓을 볼 수 있습니다.
  • 팀원을 추가하고 접근 수준을 설정할 수 있습니다 (Ops Manager만).
  • 조직의 에스컬레이션 연락처를 관리할 수 있습니다 (Ops Manager만).

DZ/Malbeclabs 관리자가 할 수 있는 것

  • 모든 기여자의 장치와 링크에 대해 티켓을 생성할 수 있습니다.
  • 기여자 간에 티켓을 할당하거나 재할당할 수 있습니다.
  • 에스컬레이션 및 지원 요청을 처리합니다.

DZX 링크 소유권

DZX 링크는 두 개의 서로 다른 기여자의 장치를 연결합니다. A-side 기여자(링크 이름의 첫 번째 장치)가 링크를 소유하며 해당 링크에 대해 티켓을 생성할 수 있는 유일한 기여자입니다.

예시: deviceA:deviceB 링크의 경우, deviceA를 소유한 기여자가 링크를 소유합니다.

이슈가 Z-side에 있는 경우:

  1. A-side 기여자가 DZX 링크에 대한 티켓을 생성합니다.
  2. 티켓을 DZ/Malbeclabs에 할당합니다.
  3. DZ/Malbeclabs가 조사하고 필요한 경우 Z-side 기여자에게 재할당합니다.

이 워크플로우가 제한적임을 인지하고 있습니다. 현재 Z-side 기여자는 자신이 소유하지 않은 DZX 링크에 대해 티켓을 생성할 수 없으므로 조율이 DZ/Malbeclabs를 통해야 합니다. DZX 링크의 양쪽 모두가 독립적으로 인시던트와 유지보수를 신고할 수 있도록 이를 개선하는 작업을 진행하고 있습니다.