• 데브옵스
  • 개발자, QA, 관리자가 함께 보는 리눅스 서버 트러블슈팅 기법

  • 카일 랜킨 지음
  • 조남웅, 주성식, 홍성민 옮김

  • 시스템 & 네트워킹 시리즈 _ 001
  • ISBN: 9788998139261
  • 22,000원 | 2013년 05월 23일 발행 | 216쪽



개발, 운영 그리고 품질은 상호 보완적이어야 하지만 현실은 꼭 그렇지만은 않다. 운영을 생각하지 않은 개발, 비용/안정성 등을 더 중요시하는 운영, 문서/절차만 강조하는 품질… 데브옵스(DevOps)란 이런 개발, 운영, 품질의 갭을 최소화하기 위한 방법론이다. 데브옵스에서는 납기 지연 없는 높은 품질의 서비스 개발이라는 공동 목표를 위해 원활한 의사 소통 및 문제 해결 역량을 필수 요소로 여기고 있다.

이 책은 저자의 풍부한 경험을 바탕으로 데브옵스를 지향하는 조직에서 발생할 수 있는 다양한 문제 상황과 문제 해결 방법을 다룬다. 또한 간단한 의사소통 방법부터 시스템 자원, 네트워크, DNS, 이메일, 웹서버, 데이터베이스 문제 등 시스템 전반을 다루고 있어 개발/운영/품질 조직뿐 아니라 스스로 모든 문제를 해결해야 하는 스타트업, 다양한 분야 또는 다른 분야에 관심 있는 개발자/운영자에게 훌륭한 문제 해결 지침서가 될 것이다.

또한 이 책은 데브옵스 문화의 팀에서 리눅스 서버에 대한 문제 해결의 지식 격차가 있는 시스템 엔지니어, 개발자, QA 직원을 대상으로 하고 있으며, 저자가 제시하는 실질적인 조언과 기술적 접근법은 이들 모두를 숙련된 리눅스 시스템 엔지니어로 만들어 줄 것이다.

"애플리케이션이 반응하지 않는 이유를 새벽 3시에 알아내려고 하는 개발자라면 이 책이 필요하다! 이 책은 운영 시스템의 문제를 진단할 때 꼭 참고하는 책이다. 또한 이 책은 복잡하게 발생하는 문제를 해결하는 시간을 아껴준다."

-- 트로터 캐션, 매션(Mashion)의 공동 설립자

데브옵스(DevOps)는 개발자, QA, 시스템 관리자가 IT 성능, 가용성, 효율성을 제고하고자 훨씬 더 빠르게 리눅스 서버 문제의 해결을 위해 협업하는 데 유용하다.

수상 경력이 있는 리눅스 전문가인 카일 랜킨은 이 책에서 여러분의 팀이 다른 사람을 비난하지 않고 효과적으로 협업하고 대부분의 리눅스 문제를 빠르게 해결하는 데 필요한 모든 표준화되고 반복되는 기법들을 집대성했다.

랜킨은 데브옵스 기법을 사용해 부팅 문제와 고장 난 디스크에서 이메일 분실과 동작하지 않는 웹사이트에 이르기까지 모든 문제를 해결하는 과정을 보여준다. 이 책을 통해 운영 환경에서 과부하 시스템과 네트워크 문제를 진단할 때 필수적인 기술들을 습득하게 될 것이다.

★ 이 책에서 다루는 내용 ★

  • 문제 해결에 대한 데브옵스 접근법과 검증된 리눅스 서버 문제 해결 원칙을 습득하는 법
  • CPU, 램, 디스크 I/O 병목을 확인해 느려진 서버와 애플리케이션을 진단하는 법
  • 정상적인 부팅 과정을 이해해 부팅이 실패하는 지점을 파악하고 고치는 법
  • 디스크가 꽉 차거나 고장 나서 디스크를 쓰지 문제의 해결책
  • 네크워크 문제의 원인을 추적하는 법
  • DNS, 이메일 및 다른 네트워크 서비스 문제를 해결하는 법
  • 아파치와 엔진엑스 웹서버의 실패 및 성능 저하 원인을 구분하고 진단하는 법
  • MySQL과 PostgreSQL 데이터베이스 서버와 질의문에 대한 문제 해결법
  • 원인을 확인하기 어렵거나 간헐적으로 발생하는 하드웨어 오류를 확인하는 법

카일 랜킨(Kyle Rankin)

카일 랜킨은 중견 시스템 관리자이자 데브옵스 엔지니어다. 노스 베이 리눅스 사용자 그룹의 현 대표로 리눅스 저널에서 상을 받은 칼럼니스트다. 랜킨은 SCALE, OSCON, Linux World Expo, Penquicon과 다수의 리눅스 사용자 그룹에서 오픈소스 소프트웨어에 관해 자주 강연하기도 한다. The Official Ubuntu Server Book, Knoppix Hacks 2판, Knoppix Pocket Reference, Linux Multimedia Hacks를 집필했고, Ubuntu Hacks를 공동 집필했다.

조남웅

컴퓨터 공학을 전공하고 어린 시절부터 현재까지 컴퓨터를 항상 곁에 두고 지내 왔으나, IT 엔지니어로서의 멋진 미래보다는 야구와 별에 대한 어릴 적 꿈을 아직까지 버리지 못하고 있는 몽상가. 주로 개발자의 여유로운 삶을 목표로 프레임워크 개발을 했으며, 현재는 IT 시장뿐 아니라 사회, 문화적으로 많은 것들을 변화시키고 있는 오픈소스 소프트웨어에 부쩍 많은 관심을 두고 있다.

주성식

새로운 것을 찾아내고 엉뚱한 곳에 적용해 보기를 좋아하는 잉여스러운 탐구자. 정보의 공유를 지적 노동자의 최고 미덕으로 생각하고 있다. 현재의 문제보다는 기회에 초점을 맞춰 도전하기 위해 노력하고 있다. 위키피디아처럼 사회에 공헌할 수 있는 서비스를 만들 수 있기를 꿈꾼다.

홍성민

풍기는 외모나 이미지와 달리 서울 토박이로 컴퓨터를 전공했으며 담배도 피우지 않는다. 웹 메일을 시작으로 SSO/EAM 솔루션을 개발했으며, 여러 SI/SM 프로젝트에서 소프트웨어 아키텍트로 구축과 성능 및 문제 해결에 참여했다. 현재는 MDM(Mobile Device Management) 솔루션의 확장으로 MAM(Mobile Application Management) 기능을 설계하며, 솔루션의 플랫폼을 윈도우 기반에서 리눅스 기반의 오픈소스 소프트웨어로 전환하는 일을 하고 있다.

  • ▣ 01장: 문제 해결 우수사례
    • 문제 영역 나누기
    • 협업할 때 원활한 의사소통 연습하기
      • 전화 회의
      • 직접 대화
      • 이메일
      • 실시간 대화방
      • 대체 가능한 의사소통 수단 확보하기
    • 느리고 복잡한 테스트보다 빠르고 간단한 테스트를 선호하라
    • 과거의 해결책을 선호하라
    • 문제점과 해결책 문서화하기
    • 변경 사항 파악하기
    • 시스템의 동작 방식 이해하기
    • 인터넷을 사용하되, 주의 깊게 사용하기
    • 재부팅 참기
    •  
  • ▣ 02장: 왜 서버가 이렇게 느리지? CPU, RAM 그리고 디스크 I/O의 자원 고갈
    • 시스템 부하
      • 평균 부하가 높다는 것은 무슨 뜻인가?
    • top을 이용한 부하 문제 진단
      • top의 출력 정보 이해
      • 높은 사용자 시간(High User Time) 진단하기
      • 메모리 고갈 문제 진단하기
      • 높은 입출력 대기 문제 진단하기
    • 현상 확인 후 과부하 문제 해결하기
      • sysstat 설정하기
      • CPU 통계 정보 보기
      • RAM 통계 정보 보기
      • 디스크 통계 정보 보기
      • 과거의 통계 정보 보기
    •  
  • ▣ 03장: 왜 시스템이 부팅되지 않을까? 부팅 문제 해결하기
    • 리눅스 부팅 과정
      • 바이오스
      • GRUB과 리눅스 부트 로더
      • 커널과 Initrd
      • /sbin/init
    • 바이오스 부팅 순서
    • GRUB 문제 해결
      • GRUB 프롬프트가 없는 경우
      • Stage 1.5 GRUB 프롬프트인 경우
      • GRUB 프롬프트가 잘못 설정된 경우
      • 동작하는 시스템에서 GRUB 고치기
      • 복구 디스크로 GRUB 고치기
    • 시작 화면 비활성화
    • 루트 파일 시스템을 마운트할 수 없는 경우
      • 루트 커널 인자
      • 루트 기기를 변경하는 경우
      • 루트 파티션이 손상되거나 고장 난 경우
    • 보조 파일 시스템을 마운트할 수 없는 경우
    •  
  • ▣ 04장: 왜 디스크에 쓸 수 없는가? 용량이 가득 찼거나 오류가 생긴 디스크 문제 해결하기
    • 디스크가 가득 찼을 때
      • 예약 블록
      • 가장 큰 디렉터리 추적하기
      • 아이노드가 고갈된 경우
      • 파일 시스템이 읽기 전용인 경우
      • 손상된 파일 시스템 고치기
      • 소프트웨어 RAID 고치기
    •  
  • ▣ 05장: 서버가 다운됐는가? 네트워크 문제 원인 추적하기
    • 서버 A가 서버 B와 통신할 수 없는 경우
      • 클라이언트 혹은 또는 서버 문제
      • 연결돼 있는가?
      • 네트워크 인터페이스가 살아있는가?
      • 로컬 네트워크에 있는가?
      • DNS가 동작 중인가?
      • 원격 호스트로 찾아갈 수 있는가?
      • 원격 포트가 열려 있는가?
      • 로컬에서 원격 호스트 테스트하기
    • 느린 네트워크 문제 해결하기
      • DNS 문제
      • traceroute로 네트워크 속도저하 찾아내기
      • iftop으로 네트워크 대역폭을 사용하고 있는 것 찾아내기
    • 패킷 수집
      • tcpdump 사용하기
      • 와이어샤크 사용하기
    •  
  • ▣ 06장: 왜 호스트 이름이 해석되지 않을까? DNS 서버 문제 해결하기
    • DNS 클라이언트 문제 해결
      • 네임서버 설정이 안 됐거나 네임서버에 접근할 수 없는 경우
      • 검색 경로를 누락했거나 네임서버 문제인 경우
    • DNS 서버 문제 해결하기
      • dig 출력 결과 이해하기
      • DNS 질의 추적하기
      • 재귀적 네임서버 문제
      • 갱신 내역이 적용되지 않는 경우
    •  
  • ▣ 07장: 왜 이메일이 전송되지 않을까? 이메일 문제 추적하기
    • 이메일 요청 추적하기
    • 이메일 헤더 정보 이해하기
    • 이메일 발신 문제
      • 이메일 클라이언트가 송신 메일 서버와 통신할 수 없는 경우
      • 발신 메일 서버가 중계를 허용하지 않는 경우
      • 발신 메일 서버가 목적지 서버와 통신할 수 없는 경우
    • 이메일 수신 문제
      • 텔넷으로 하는 테스트가 연결되지 않는 경우
      • 텔넷은 연결할 수 있지만 메시지가 거절되는 경우
      • 메일 로그 자세히 살펴보기
    •  
  • ▣ 08장: 웹 사이트가 다운됐는가? 웹 서버 문제 추적하기
    • 서버가 동작 중인가?
      • 원격 포트가 열려 있는가?
      • 로컬에서 원격 호스트 테스트하기
    • 명령줄에서 웹 서버 테스트하기
      • Curl로 웹 서버 테스트하기
      • 텔넷으로 웹 서버 테스트하기
    • HTTP 상태 코드
      • 1xx 정보 전달 코드
      • 2xx 성공 코드
      • 3xx 리다이렉션 코드
      • 4xx 클라이언트 오류 코드
      • 5xx 서버 오류 코드
    • 웹 서버 로그 분석하기
    • 웹 서버 통계 얻기
    • 일반적인 웹 서버 문제 해결하기
      • 설정 문제
      • 권한 문제
      • 느려지거나 사용할 수 없는 웹 서버 문제
    •  
  • ▣ 09장: 왜 데이터베이스가 느린가? 데이터베이스 문제 추적하기
    • 데이터베이스 로그 찾기
      • MySQL
      • PostgreSQL
    • 데이터베이스가 정상적으로 실행되고 있는가?
      • MySQL
      • PostgreSQL
    • 데이터베이스 성능 지표 구하기
      • MySQL
      • PostgreSQL
    • 느린 쿼리 확인하기
      • MySQL
      • PostgreSQL
    •  
  • ▣ 10장: 그건 하드웨어 고장이야! 일반적인 하드웨어 문제 진단하기
    • 하드디스크가 고장 난 경우
    • RAM 오류 테스트하기
    • 네트워크 카드가 고장 난 경우
    • 서버가 너무 뜨거운 경우
    • 전원 공급 장치가 고장 난 경우

도서 소개 자료


엮인 글

엮인 글 주소: http://wikibook.co.kr/devops/trackback/