개발자, QA, 관리자가 함께보는 리눅스 서버 트러블슈팅기법
문제 해결을 잘하는 사람은 테스트의 결과가 하나의 원인을 배제시키는 것이 아니라
같은 부류의 원인을 배제시킬 수 있는 각 테스트를 선택할 것이다.
나누어 정복하라.
문제 영역을 나눠을 때 테스트가 근본 원인을 밝히지 못할지라도
테스트 결과는 하나 이상의 원인을 배제시킨다.
중요한 사실은 대부분의 문제가 한 번 이상 발생한다는 것이다.
일부 사람들이 빠르게 문제를 분리할 수 있는 초자연적인 능력을 가질 수 있는 이유 중 하나는
그들이 이전에 같은 일들을 여러 번 경험했기 때문이다.
더 많은 문제 상황에 노출될수록 저 훌륭하고 빠른 문제 해결사가 될 것이다.
...
대개 증상이 같은 경우 근본 원인도 같을 것이고,
그것을 알아차릴 수만 있다면 훨씬 더 빠르게 문제를 해결할 수 있다.
일단 문제가 해결되고 나면 근본 원인을 추적하기 위해
로그를 꼼곰히 조사하는 일에 별도의 시간과 노력이 필요한 것이 사실이다.
이 책에서는 주로 커넥션이 제대로 연결이 되어있는지, 부하가 있는지, SMTP 동작 확인, top이나 ifconfig, nslookup과 같은 명령어를 해석하는 방법 등에 대해 나와있다.
원인을 파악하기 위한 의식에 흐름처럼 대략적인 서비스의 흐름에 대해 나와있어 가볍게 읽기 좋았던 책이다.
서비스 개발자로서 내가 주로 확인하는 내용과는 좀 거리가 있었지만, 이것이 devops라는 생각이 들기도 한다.
나는 개인적으로 문제가 발생했던 경우에 대해 적어놓는데, 이 책을 읽으면서 문제 해결을 했던 방안에 대해서 적어놓기만 하는것이 아닌 왜, 그런 문제가 발생했는지 원인을 파악하는데 더 관심을 갖고 투자해야겠다고 느꼈다.