# 상태 페이지 운영하기

상태 페이지는 서비스가 정상인지 사용자에게 알려 줍니다. 서비스의 각 부분을 **컴포넌트**로 나열하고, 문제가 있는 동안 컴포넌트에 **인시던트**를 보고하고, 작업하기 전에 **점검**을 공지합니다. 각 컴포넌트가 무엇을 보여 줄지는 Mocco가 보고된 내용으로 계산합니다.

페이지는 콘솔에서 관리하고, Mocco가 사용자가 여는 공개 페이지로 게시합니다. 사용자는 이메일, 서명된 웹훅, Atom 피드로 페이지를 구독할 수 있습니다([방문자가 구독하게 하기](https://www.mocco.club/docs/ko/articles/6yu92y-subscribers)).

## 1. Status page 켜기

워크스페이스 멤버가 워크스페이스의 **Products** 페이지에서 **Status page**를 켭니다. 그러면 각 프로젝트에 **Status page** 섹션이 나타납니다.

## 2. 페이지 만들기

프로젝트의 **Status page** 섹션에서 페이지의 **title**과 **address**를 입력합니다. Mocco가 제목에서 주소를 제안합니다. 이 주소가 공개 페이지의 주소가 되므로 Mocco 전체에서 고유해야 하고, 소문자, 숫자, 하이픈만 쓸 수 있습니다.

![상태 페이지 만들기: 제목과 주소](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/e2f3aad1-adbb-40af-8d22-64060bc0345b/create-page.png)

프로젝트에는 페이지를 둘 이상 둘 수 있습니다. 예를 들어 고객용과 팀 내부용으로 나눌 수 있습니다. **New page**를 선택해 페이지를 추가하면, 각 페이지가 탭으로 나타납니다.

## 3. 컴포넌트 나열하기

**Components** 아래에 사용자가 알아차릴 만한 서비스의 각 부분을 추가합니다. API, 웹 앱, 푸시 알림 같은 것들입니다. 관련 컴포넌트는 **group**("API", "Dashboard")으로 묶어 페이지를 읽기 쉽게 유지하세요. 화살표로 순서를 바꾸고, **Edit**으로 컴포넌트 이름을 바꾸거나 설명을 쓰거나 다른 그룹으로 옮기고, **Delete**로 삭제합니다.

![Dashboard와 API 그룹 아래의 컴포넌트: 각각 표시되는 상태와 직접 보고한 상태](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/15098d95-8d44-4708-8d98-2b3497d60942/components.png)

각 컴포넌트에는 두 가지 상태가 있습니다.

- **Reported status**는 직접 설정하는 상태입니다. Operational, Under maintenance, Degraded performance, Partial outage, Major outage 중에서 고릅니다.
- 이름 옆의 **badge**는 페이지에 표시되는 상태입니다. 보고된 상태, 컴포넌트에 걸린 열린 인시던트의 영향, 컴포넌트를 포함한 점검 시간이 진행 중일 때의 "Under maintenance" 중 가장 나쁜 것입니다. 점검 중에 발생한 장애는 그대로 장애로 표시됩니다. 인시던트나 점검 때문에 컴포넌트가 보고한 상태보다 나쁘게 표시되면 그 행에 이유가 적힙니다.

보고된 상태를 직접 바꿀 일은 드뭅니다. 대신 인시던트를 선언하면, 인시던트가 해결될 때 컴포넌트가 operational로 돌아갑니다.

컴포넌트 아래의 **Page settings**에서 페이지 이름이나 주소를 바꿉니다. **Delete page**는 페이지를 컴포넌트, 인시던트, 점검 시간과 함께 삭제합니다.

## 4. 인시던트 선언하기

**Incidents** 탭을 엽니다. **Open** 목록에는 열린 인시던트가, **Resolved** 목록에는 닫힌 인시던트가 나옵니다. 두 목록 모두 링크에 위치가 유지되므로 공유할 수 있습니다.

![페이지의 열린 인시던트](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/652c6f7c-7a6a-4e05-9a84-aaae2a3981d8/incidents.png)

**Declare incident**를 선택하고 다음을 입력합니다.

- **Title**: 사용자가 알아차리는 현상입니다. 예: "Delayed push notifications".
- **Severity**: Minor, Major, Critical 중 하나입니다.
- **Status**: 현재 진행 단계입니다. 대부분의 인시던트는 **Investigating**에서 시작합니다. 이미 더 알고 있다면 **Identified**나 **Monitoring**을 고르세요.
- **First update**: 인시던트 타임라인의 첫 메시지입니다.
- **Affected components**: 인시던트가 영향을 주는 각 컴포넌트와 그 정도입니다. degraded performance, partial outage, major outage 중에서 고릅니다.

![심각도, 첫 업데이트, 영향받는 컴포넌트와 함께 인시던트 선언하기](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/bcadf828-6c6b-4cde-b9b6-d3fc223c7a51/declare.png)

## 5. 해결될 때까지 업데이트 게시하기

인시던트를 열면 최신순 타임라인이 보이고 업데이트를 게시할 수 있습니다. 업데이트마다 메시지와 상태가 있습니다. 상태 목록에는 인시던트가 현재 단계에서 밟을 수 있는 단계만 나옵니다.

| From | To |
|---|---|
| Investigating | Identified, Monitoring 또는 Resolved |
| Identified | Monitoring 또는 Resolved |
| Monitoring | Identified(수정이 효과가 없었을 때) 또는 Resolved |
| Resolved | 없음: 해결된 인시던트는 닫힙니다 |

"(no change)"로 표시된 현재 상태를 유지하면 인시던트를 옮기지 않고 소식만 게시할 수 있습니다. **Affected components** 아래의 **Change**는 영향받는 컴포넌트와 그 정도를 바꿉니다. 예를 들어 장애가 퍼지거나 완화될 때 씁니다.

![Monitoring 상태의 인시던트와 그 타임라인, 영향받는 컴포넌트](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/0b24a91c-a4cc-406e-a8f5-a851f05b0fab/incident.png)

글을 쓰는 동안 다른 사람이 인시던트를 옮긴 경우(예: 다른 탭에서 해결한 경우) Mocco가 업데이트를 거부하고 이유를 알려 주며 인시던트의 현재 상태를 보여 줍니다.

![그사이 인시던트가 해결되어 거부된 업데이트](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/d7e5072e-b12d-4087-9eb5-06855fd093a8/update-refused.png)

## 6. 전후 배포 확인하기

인시던트의 **Recent deploys**에는 인시던트가 시작되기 두 시간 전부터 시작 5분 후까지 끝난 릴리스가 나옵니다. 릴리스는 게이트를 통과해 성공한 실행입니다. 프로젝트에 저장소가 연결되어 있으면 그 저장소의 릴리스만 포함되고, 연결되어 있지 않으면 워크스페이스의 모든 릴리스가 포함됩니다. 가장 가까운 것에 **Suspected**가 표시되고, 각 릴리스에는 점수가 나옵니다. 점수가 높을수록 시작 시점에 더 가깝게 끝났다는 뜻입니다. Mocco는 사용자나 모니터가 인시던트를 선언할 때 이 목록을 채우고, **Recompute**는 나중에 기록된 릴리스를 반영하는 등의 이유로 다시 계산합니다.

Mocco가 제안하지 않은 실행을 추가하려면 **Run**에서 실행을 고르고 **Related** 또는 **Fix**(인시던트를 해결한 실행)를 선택한 뒤 **Link run**을 선택합니다. **Unlink**는 목록에서 실행을 제거합니다. 실행 자체의 페이지에서는 **Incidents** 아래에 그 실행이 연결된 인시던트가 나옵니다.

![Recent deploys: 점수가 붙은 의심 릴리스와, 해결한 실행으로 직접 연결한 실행](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/40b42b21-52d6-42b1-9450-888cb61a15df/recent-deploys.png)

## 7. 포스트모템 작성하기

인시던트가 끝나면 **Postmortem**에 무슨 일이 있었는지, 왜 일어났는지, 무엇을 바꿨는지 씁니다. 형식은 Markdown입니다. 비워 둔 채 저장하면 삭제됩니다.

![전체 타임라인과 포스트모템이 있는 해결된 인시던트](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/566c58b4-feea-4b90-a76c-b6bf0d57da45/postmortem.png)

## 8. 점검 예약하기

**Maintenance** 탭을 열고 **Schedule maintenance**를 선택합니다. 점검의 제목, 시작 시각과 종료 시각(내 시간대 기준), 선택 사항인 상세 내용, 포함할 컴포넌트를 입력합니다.

![API 컴포넌트의 점검 예약하기](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/e8bdb4ae-5716-4e8a-bb08-afbf3a6e8754/schedule-maintenance.png)

Mocco는 매분 확인하면서 각 점검을 시작 시각에 시작하고 종료 시각에 완료합니다. 탭에는 **In progress**, **Scheduled**, **Past** 점검이 나뉘어 보입니다. 점검이 진행되는 동안 포함된 컴포넌트에는 "Under maintenance"가 표시됩니다.

![진행 중인 점검 하나, 예약된 점검 하나, 취소된 점검 하나](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/bff30e04-fb6e-40aa-8808-e344fada0fbf/maintenance.png)

점검을 취소하려면 **Cancel**을 선택합니다. 이미 진행 중인 점검은 즉시 끝납니다. 점검은 편집할 수 없습니다. 취소하고 새로 예약하세요.

## 9. 배포 게이트에서 점검 공지하기

위험한 배포는 스스로 점검을 공지할 수 있습니다. **Maintenance** 탭의 **Gates that announce maintenance** 아래에서 **Add a gate**를 선택하고, 파이프라인에 있는 게이트의 이름(예: `production`), 점검에 표시할 제목, 배포가 보통 몇 분 걸리는지, 영향받는 컴포넌트를 입력합니다.

이후 이 프로젝트에 연결된 저장소의 실행에서 누군가 그 이름의 게이트를 재개하면 Mocco가 페이지에서 점검을 즉시 시작합니다. 실행이 끝나면 점검이 완료됩니다. 실행이 어떻게 끝나든 마찬가지입니다. 실패하거나, 취소되거나, 이후 게이트가 거부해도 점검은 닫히고 그 이유가 적힙니다. 예상 시간이 지났는데도 실행이 계속 진행 중이면 점검에 **Overran**이 표시되고, Mocco가 알림 규칙에 "Maintenance overran" 알림을 보냅니다(Mocco 프리셋에 포함되어 있습니다). 점검은 실행이 끝날 때까지 열려 있습니다.

![예상 시간을 넘긴 배포의 점검, 실행이 실패해서 끝난 점검, 이를 공지하는 게이트](https://fi-workers-mocco-storage.s3.ap-northeast-2.amazonaws.com/pub/w/93e11fe8-0494-4e3d-b1cb-fe4dffd3ee7e/p/d64785b8-9a23-4fa1-a81d-550af30e203a/helpcenter/5448a278-20ab-4102-82a2-947dd2cd564a/maintenance-from-runs.png)

각 실행의 점검은 그 실행으로 연결됩니다. 진행 중인 동안에는 컴포넌트에 다른 점검과 똑같이 "Under maintenance"가 표시됩니다. 해당 컴포넌트에서 다운되는 모니터는 인시던트를 게시하지 않고 초안으로 열고, 알림에 "(during maintenance)"가 붙으며, 그 시간은 가동 시간에서 차감되지 않습니다. 게이트의 제목, 시간, 컴포넌트를 바꾸려면 **Edit**을, 공지를 중단하려면 **Remove**를 선택하세요. 이미 시작된 점검은 그대로 진행됩니다.

## 기록되는 내용

페이지 생성과 삭제, 컴포넌트의 보고된 상태 변경, 인시던트 선언, 업데이트 게시, 영향받는 컴포넌트나 포스트모템 변경, 실행 연결과 연결 해제, 점검의 예약, 취소, 시작, 완료, 초과, 점검을 공지하는 게이트의 추가, 변경, 제거는 모두 워크스페이스의 [감사 로그](https://www.mocco.club/docs/ko/articles/2yiscf-audit-log)에 기록됩니다.
