콘텐츠로 이동

OPS 관리

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

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

포털 vs Slack

OPS 관리 포털과 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만 (기본값) 다른 기여자 없음
모든 사람 모든 기여자
일부 기여자 선택한 기여자만

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


사용자 관리

기본적으로 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 링크의 양측 모두 독립적으로 인시던트와 유지보수를 선언할 수 있도록 개선 작업을 진행하고 있습니다.