In Front of an Unfamiliar System
Draw the Map Before You Touch Anything
한국어 원문으로 표시합니다.
목표
처음 보는 고객사 시스템에서 아무것도 만지기 전에 지도를 그립니다. 무엇을 요청할지, 조사 범위가 어디까지인지, 무엇이 무엇에 닿는지, 언제가 안전한지. 그리고 되돌리는 방법을 먼저 씁니다.
환경
고객사 시스템 한 벌이 /opt/data/site 에 있습니다. 여러분에게는 새
시스템이지만 고객에겐 10년 된 시스템이고, 그 사이에 아무도 기록하지 않은
의존이 쌓여 있습니다. 사본을 뜬 뒤 그 사본에서 작업합니다.
cp -r /opt/data/site /root/site
cd /root/site
ls -R | head -40
받은 것은 이게 전부입니다. 구성도도 위키도 없습니다.
만들 것
inventory.txt 무엇이 있는지 + 첫날 요청할 것
retention.txt 로그 보존 기간과 그것이 조사에 뜻하는 것
upstream.txt 이 서비스를 부르는 쪽
downstream.txt 이 서비스가 부르는 쪽
shared.txt 구성도에 없는 공유 상태
timing.txt 언제가 안전하지 않은가
plan.md 변경 계획 — 첫 줄이 되돌리는 방법
rollback.sh 실제로 되돌리는 스크립트
snapshot.sh 재시작 전에 상태를 남기는 스크립트
채점 방식
7단계와 8단계는 채점기가 여러분의 스크립트를 직접 돌립니다.
rollback.sh 채점기가 설정을 일부러 바꾼 뒤 돌려서, 원본으로 돌아오는지 봅니다
snapshot.sh 프로세스·메모리·열린 파일·최근 로그 네 가지가 시각과 함께 나오는지 봅니다
말만 하고 아무것도 안 하는 스크립트는 떨어집니다. 그리고 채점은 어떤 경우에도 여러분의 설정을 원래대로 되돌려 놓습니다.
단계
- 무엇이 있는지 적고, 첫날 동시에 요청할 것을 목록으로 만듭니다. 승인 체계는 대체로 직렬이라, 첫날 전부 던져야 병렬로 돕니다.
- 로그 보존 기간을 찾습니다. 그 값이 조사 범위를 정합니다.
- 접근 로그의 소스 IP 로 상류를 전부 찾습니다. 몇 건씩인지도.
- 설정에서 하류를 찾고, 무엇을 바꿀 때 하류가 위험한지 적습니다.
- 설정 파일 둘을 비교해 공유 상태를 찾습니다.
- crontab 에서 배치 창을 찾아 안전한 시점을 정합니다.
plan.md와rollback.sh— 변경 계획서의 첫 줄은 변경 내용이 아니라 되돌리는 방법입니다. 되돌리는 데 걸리는 시간과 관찰 창도.snapshot.sh— 재시작 전에 상태를 남깁니다.
참고
8단계의 이유가 이 실습에서 가장 자주 잊히는 것입니다. 재시작은 증상을 지우면서 증거도 함께 지웁니다. 재시작이 필요하더라도 그 전에 스냅샷을 남기면, 그 파일 하나가 나중에 보고서의 절반이 됩니다.
무엇이 있고 무엇을 요청하나
무엇이 있는지 적고, 첫날 동시에 요청할 것을 목록으로 만듭니다. 승인 체계는 대체로 직렬이라, 첫날 전부 던져야 병렬로 돕니다.
설정 파일이 몇 개인지부터 보세요. 그리고 첫날 요청할 목록 — 승인 체계는 대체로 직렬이라 VPN 이 끝나야 계정이 올라가고 계정이 나와야 권한이 됩니다. 첫날 전부 동시에 던져야 병렬로 돕니다.
보존 기간이 조사 범위를 정한다
로그 보존 기간을 찾습니다. 그 값이 조사 범위를 정합니다.
etc/logrotate.conf 에 적혀 있습니다. 회전된 파일 수와도 맞는지 보세요. 그 값을 넘는 신고가 오면 로그로는 확인할 수 없습니다.
누가 이걸 부르는가
접근 로그의 소스 IP 로 상류를 전부 찾습니다. 몇 건씩인지도.
접근 로그의 소스 IP 를 세어 보세요. 하나만 찾고 끝내면 안 됩니다 — 이 서비스를 멈췄을 때 함께 멈추는 곳이 영향 범위입니다.
이것이 무엇을 부르는가
설정에서 하류를 찾고, 무엇을 바꿀 때 하류가 위험한지 적습니다.
설정의 downstream 을 보세요. 그리고 무엇을 바꿀 때 하류가 위험한지도 적으세요 — 타임아웃을 늘리면 우리는 여유를 줬다고 생각하지만 하류에서는 커넥션이 오래 잡힙니다.
구성도에 없는 공유 상태
설정 파일 둘을 비교해 공유 상태를 찾습니다.
설정 파일이 둘입니다. 같은 것을 가리키는 줄이 있는지 보세요. 공유 상태는 구성도에 잘 안 그려지는데 사고는 여기서 납니다.
언제가 안전하지 않은가
crontab 에서 배치 창을 찾아 안전한 시점을 정합니다.
crontab 을 보세요. 일마감·야간 리포트·월정산이 각각 언제인지. 기술적으로 안전해도 시점이 틀리면 사고입니다.
되돌리기를 먼저 쓴다
plan.md 와 rollback.sh — 변경 계획서의 첫 줄은 변경 내용이 아니라
되돌리는 방법입니다. 되돌리는 데 걸리는 시간과 관찰 창도.
변경 계획서의 첫 줄이 되돌리는 방법입니다. 되돌리는 데 걸리는 시간과 관찰 창(무엇을 얼마나 볼지)도. 채점기가 설정을 일부러 바꾼 뒤 여러분의 rollback.sh 를 돌려 원본으로 돌아오는지 봅니다.
재시작 전에 남긴다
snapshot.sh — 재시작 전에 상태를 남깁니다.
재시작은 증상을 지우면서 증거도 함께 지웁니다. 프로세스·메모리·열린 파일·최근 로그 네 가지를 시각과 함께 남기세요. 이 파일 하나가 나중에 보고서의 절반이 됩니다.