Chapter 01 시스템이 멈췄다 _ '다운'이란 무엇인가 STORY 01 정지=다운은 오해 ... 22 1. 단 하나의 실수가 치명타 ... 24 2. 예외 루트에 숨어 있는 함정 ... 26 3. 100% 막는 것은 무리라는 현실에 관심을 갖자 ... 29 4. 근본 원인을 찾아내기까지가 승부수 ... 30 STORY 02 다운의 원인은 네 가지로 나눌 수 있다 ... 33 1. 다운 상황에 원인의 힌트가 숨겨져 있다 ... 34 2. 네 가지 문제가 연쇄적으로 일어나 ATM 11만 대에 영향을 주다 ... 35 Chapter 02 제대로 테스트했을 텐데… _ 애플리케이션 소프트웨어 문제 STORY 01 갑자기 눈을 뜨는 20세기 버그 ... 46 1. 시점을 바꾼 여덟 가지 테스트를 반복한다 ... 46 2. 아무리 테스트를 반복해도 버그는 남는다 ... 49 3. 설마 데이터 복구 프로그램이 전체 데이터를 삭제하다니 ... 51 4. 하나의 버그가 400억엔(약 4,000억원)의 손실로 ... 53 5. 5개의 조건이 가동한 지 6년째에 처음으로 일치하다 ... 56 6. 정지시키지 않은 것이 화근이었다 ... 59 7. '데이터 이전'은 범인 찾기가 어려워 ... 60 8. 회귀 테스트로 찾을 수 없어 ... 64 STORY 02 잊어버릴만 하면 찾아오는 '날짜 문제' ... 66 1. 윤년의 19년 전은 윤년일까? ... 66 2. 2100년 2월 28일에 큰 트러블이 ... 68 3. 34년 먼저 발생한 '2038년 문제' ... 70 4. '30%만 이상'이라 찾기 힘들다 ... 73 5. 자리 넘침으로 '2001년 9월 9일 문제' 발생 ... 75 6. 2036년을 주목하자 ... 77 7. 날짜 문제가 아닌 '자리 넘침' 문제도 ... 78 STORY 03 데이터베이스의 데드락이 연속 발생 ... 80 1. 먼저 들어오는 사람이 이기는 '배타제어' ... 81 2. 잠금 순서가 뒤바뀌면 '무한 대기 상태'를 초래한다 ... 83 3. 연속 발생이 다운으로 이어진다 ... 87 4. '제어용' 데이터베이스에 주의하자 ... 90 5. 일부 다운과 전면 다운의 갈림길 ... 92 6. 팀끼리 작성 규칙이 통일되지 않았다 ... 94 7. 부하 테스트를 깜빡 잊고 빠뜨림 ... 95 COLUMN 여기는 시스템 다운 상담실 _ 트러블 대책에 쫓기는 개발 기술자 ... 96 Chapter 03 애플리케이션뿐만이 아니다 _ OS, 미들웨어의 이상 STORY 01 정지를 감지 못하다 ... 102 1. 블랙박스의 무서움 ... 103 2. 다섯 종류의 이중화의 차이를 알자 ... 104 3. 다잉 메시지를 캐치 못하고 ... 110 4. 클러스터 소프트웨어가 작동하지 않아 ... 113 STORY 02 조합을 바꿨더니 움직이지 않는다 ... 115 1. 동일 업체의 소프트웨어인데도 궁합이 나쁘다니 ... 116 2. 업무 애플리케이션과 OS의 조합 검증이 누락 ... 118 3. 패치 적용이나 버전업에 리스크 있음 ... 119 4. 오래된 소프트웨어와 최신판 중 무엇을 고를까? ... 120 5. 실적으로 고른 메인 프레임 제품에 버그 ... 121 6. 성능이 너무 높아져 15년 전의 문제가 드러남 ... 123 7. 검증 책임은 이용자에게 있다 ... 127 STORY 03 메모리를 잡은 채로 놓지 않는다 ... 128 1. 오픈 시스템은 원인 구분이 어렵다 ... 129 2. '계속 사용 중'이 다운으로 이어진다 ... 130 3. C 언어뿐만 아니다 ... 132 4. 소프트웨어에 이중화는 적용되지 않는다 ... 133 Chapter 04 접속 쇄도를 견디지 못하고… _ 성능 및 용량 부족 문제 STORY 01 하드웨어의 성능을 다 살릴 수 없다 ... 140 1. 타임아웃이 만연하는 실상 ... 140 2. 원인은 하드웨어 자원 부족만이 아니다 ... 143 3. 시스템 성능을 좌우하는 소프트웨어 자원 ... 144 4. 파라미터 설정은 균형이 중요 ... 146 5. 웹 서버의 소프트웨어 자원 부족으로 처리 지연 ... 148 6. 과부하 상태에서만 발생하는 문제 ... 150 7. 하드웨어 증강 시 재점검을 잊어버리다 ... 151 8. 재시도를 100번 반복했더니 다운 ... 152 9. 발단은 단 하나의 확장 누락 ... 154 10. 테스트 방법이 확립되지 않은 것이 화근 ... 156 STORY 02 메모리와 CPU가 부족하다 ... 157 1. 성능 설계 실수로 가동 첫 날 응답 저하 ... 157 2. 애플리케이션이 너무 많아서 메모리 부족으로 ... 158 3. 액세스 증가가 CPU의 성능 부족을 일으킨다 ... 159 4. 무한 루프가 리소스 부족으로 이어진다 ... 161 5. 4대 중 3대가 고장나도 75% 성능을 유지하는 구성 ... 163 STORY 03 통신 데이터 증가가 다운을 초래한다 ... 166 1. 통신 대혼란을 야기한 L3 스위치 1대의 고장 ... 166 2. '메인', '보조'여야 하는데 2대 모두 '메인'으로 ... 168 3. 펌웨어 문제로 '루프'가 발생 ... 170 4. 무서운 통신 데이터 '폭주' ... 172 5. 라우터의 경로 정보가 갱신되지 않는다 ... 172 6. 데이터 집중으로 서버가 정지 ... 174 STORY 04 데이터베이스가 가득 차서 ... 177 1. 거래 증가로 로그 파일이 펑크 직전 ... 178 2. 빈 공간이 있는데도 용량 부족이 되는 경우도 ... 180 3. 배치 처리의 파일 용량이 병목 현상을 ... 182 4. 배치 처리가 원인으로 온라인을 긴급 정지 ... 185 STORY 05 날이 새도 끝나지 않는 배치 처리 ... 187 1. ETC와 전자화폐와 배치 처리의 밀접한 관계 ... 188 2. 오픈화로 확장성 확보가 진행된다 ... 189 3. 너무 빨리 끝나 '이상'으로 오인 ... 191 COLUMN 여기는 시스템 다운 상담실 _ 운용 담당자는 혼나는 역할? - 개인을 추궁해도 다운은 줄지 않는다 ... 194 Chapter 05 '몰랐다'는 허용되지 않는다 _ 환경설정 및 변경 실수 STORY 01 깜빡 잊어버린 파라미터 변경 ... 200 1. 8년만의 단말기 추가에 함정이 ... 201 2. 1년전의 설정 오류가 표면화되어 전철이 긴급 정지 ... 204 3. 국가 시험 합격자가 불합격으로 ... 206 4. 테스트에서 발견되지 않은 경우가 대부분 ... 207 STORY 02 시스템 환경의 변경 실수 ... 210 1. 데이터의 저장 위치를 정리했더니 다운 ... 211 2. 메인 서버에서 버그 수정, 모듈 등록에 누락 ... 212 3. 절차 위반이 라이브러리 관리 실수를 초래 ... 215 4. 잘못해서 구버전을 사용하다 ... 216 5. 리허설 후에 환경 되돌리기 작업을 잘못함 ... 217 STORY 03 패치 파일의 적용을 잊어버림 ... 219 1. 다운으로 이어지는 중요한 문제를 방치 ... 220 2. 제조업체의 경고를 무시하다 ... 224 3. 무시하기 쉬운 보수 지원 체제 확립 ... 225 STORY 04 달력 설정 실수 ... 226 1. 요일과 날에 따라 다른 운전 시간과 배치 처리 ... 227 2. 일요일과 월말이 겹쳐져 문제 발생 ... 228 3. 조합 테스트로 막을 수 있다 ... 230 Chapter 06 '깜빡 실수'가 치명타 _ 운용 및 조작 실수 STORY 01 운용 명령을 잘못 내리다 ... 236 1. 운용 조작의 완전 자동화는 무리 ... 236 2. 개발 서버라고 착각하여 운용 서버를 오작동 ... 239 3. 안내 표시가 효과 없이 ATM 4,000여 대가 정지 ... 242 4. 두 가지 삭제 명령의 사용 구분을 잘못함 ... 243 5. 다중 확인이나 사전 체크에도 한계가 ... 246 STORY 02 데이터 이전 및 입력 실수 ... 248 1. 버그가 없는데 신구 시스템의 결과가 맞지 않는다 ... 248 2. 누락되기 쉬운 부분 데이터의 병행 갱신 ... 251 3. 위험한 작업은 잊어버릴만 하면 찾아온다 ... 252 4. 이용자의 데이터 입력 실수가 원인인 경우도 ... 254 5. 연금기록 문제는 질나쁜 실수의 전형적인 예 ... 257 STORY 03 보조 시스템의 전환이 실패 ... 258 1. 데이터베이스가 메인 시스템과 일치하지 않고 ... 258 2. 자동으로 전환된다고 착각 ... 259 3. 다운되지 않았는데 전환시키는 '반대 발상' ... 260 STORY 04 혼란이 '2차 재해'를 낳아 피해 확대 ... 262 1. 3대 대형 은행에서 있었던 '중복 인출' 사건 ... 263 2. 데이터 입력의 중복 조작이 발생 ... 266 3. 혼란 시에 일어나기 쉬운 'JCL' 변경 실수 ... 270 4. '복구용 기능이 없다'고 후회해도 소용없다 ... 273 Chapter 07 설마 이런 일이 _ 하드웨어 고장 및 불의의 사고 STORY 01 서버가 고장났다 ... 280 1. 대형 서버는 내부 회로까지 완전 이중화 ... 280 2. 있을 수 없는 2대 동시 고장이 현실로 ... 284 3. 교체하기 10일 전에 고장 ... 285 4. 디스크 장치의 동시 고장에 대비하는 'RAID6' ... 287 STORY 02 통신 네트워크가 불통 ... 291 1. L3 스위치가 가동 500일째 고장 ... 293 2. WAN 서비스 정지로 ATM 600대가 정지 ... 293 3. 케이블 절단이나 포트 접속 불량도 ... 294 4. 지상 케이블은 지진에 약하다 ... 295 STORY 03 컴퓨터, 전기가 없으면 그저 상자일뿐 ... 297 1. 전원장치에서 이중 고장이 발생 ... 298 2. 화재를 막기 위해 전력 공급을 중단 ... 299 3. 불과 1초의 정전으로 다운 ... 299 STORY 04 지진으로 데이터 센터가 파괴 소실 ... 301 1. 때로는 일부러 복구시키지 않는 판단이 필요 ... 301 2. 화재로 담당자가 밖으로 피난, 운용 조작이 불가능 ... 302 COLUMN 여기는 시스템 다운 상담실 _ 다운이 줄어서 곤란하다? ... 304 Chapter 08 트러블 대처는 시간과의 싸움 _ 다운에서 배운다 STORY 01 원인 규명보다는 복구를 우선 ... 310 1. 다운은 '나쁜 것'인가? ... 314 찾아보기