좋은 시스템 관리자라면 그저 서버를 셋업하고 관리하는 방법을 알거나 시스템 명령어를 이해하는 것 이상이 필요하다. 무언가 고장났을 때 고치는 방법, 성능을 모니터링하는 방법, 백업을 관리하는 방법, 탁월한 스크립트를 만드는 방법을 알아야 한다고 말하려는 것이 아니다. 시스템이 매끄럽게 동작하고 사용자들이 행복할 수 있도록 하기 위해서는 기본적인 다른 규칙 세트가 필요하다.
시스템 관리자라면 여기 소개하는 규칙에 대해 여러 차례 들었을 수 있다. 몇몇은 어렵게 직접 깨우친 것일 수도 있다. 시스템 관리자들이 다시 한 번 읽어둘 만한 기본적인 규칙들을 정리한다. ciokr@idg.co.kr
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
취소할 수 없는 행동은 하지 말라
늘 염두에 두어야 하는 것이 취소 계획이다. 지금 계획 중인 변화가 취소 가능한 것인가? 없다면 취소 가능하게 만들어야 한다. 편집하려는 파일의 백업본을 만들고 설정 변화에서 앞서서는 기존 세팅을 기록해둬야 한다. 테스트 시스템을 활용하는 꼼꼼함도 필요하다.
결론은 미리 변화를 계획해야 한다는 점이다. 또 혼자 하기보다는 동료와 함께 할 때, 미처 고려하지 못한 이슈를 발견할 수 있다는 점을 기억해둘 필요가 있다.
금요일에는 변화를 시도하지 말라
휴일, 또는 휴가를 앞둔 시점에는 변화를 꾀하지 말아야 한다. 관리자가 있을 때 변화가 일어나도록 해야 한다.
문제의 원인을 제대로 규명하라
어떤 문제가 발생한다면 그 뿌리까지 이유를 파고들어야 한다. 애매하다면 '5개의 왜' 규칙을 이용하라.
서버가 멈췄다. 왜? 메모리가 부족해서다. 왜? 한 프로세스가 폭주했다. 왜? 무한 루프에 돌입한 것이다. 왜? 구성 파일에 실수가 하나 있었다. 왜? 금요일 저녁 사무실을 떠나기 전 내가 편집하고 테스트 구동해보는 것을 잊었다.
재난 복구 계획을 연습하라
만약의 사태에 대비해 재난 복구 계획을 연습해둬야 한다. 그렇지 않으면 2가지 일이 벌어진다. 첫째, 만약의 상황에 제대로 동작할 것이라고 확신할 수 없다. 둘째, 필요한 절차에 대해 불안감을 가지게 된다.
예를 들어 살펴보자. 데이터베이스를 원격 서버로 이전시켜야 하는 상황일 경우, 실행시켜야 할 명령어를 알고 있는가? 데이터베이스를 덤프해야 할 상황인가 아니면 생성해야 할 상황인가? 파일을 전송하는데 얼마나 걸릴지 알고 있는가? 데이터베이스를 원격 사이트로 올릴 준비가 다 마무리됐는가? 제대로 동작하는 것을 확인할 수 있는 테스트 세트를 보유하고 있는가?
제대로 테스트하지 않은 스트립트에 의존하지 말라
실수를 저지르기란 너무도 쉽다. 십수 년을 다뤄온 것일지라도 스크립트는 테스트되어야 한다. 누군가가 조만간 실행시킬 상황이라면 특히 그렇다. 논쟁의 여지가 있건 없건 스크립트를 테스트하라. 누군가 저지를 실수를 만들어가며 테스트하라. 무조건 스크립트를 테스트하라.
3회 이상 해야할 것이라면, 그리고 복잡한 것이라면 자동화하라
유용한 에일리어스(aliases), 펑션, 스크립트를 포착하고 그들에게 의미있는 이름을 부여하라. 스크립트 실행을 위한 복잡한 절차를 일률화해 다음 단계를 고민하지 않도록 만들어라. 이를 통해 많은 시간과 노력을 절약할 수 있을 것이다. 다른 이에게 작업을 의뢰할 경우에도 요긴할 것이다.
문서화하라
정기적으로 실행하는 절차라면 문서화할 필요가 있다. 당신이 하는 작업이 다른 누군가에게는 명확하지 않을 수 있다. 일례로 당신은 서버 디스크 용량, 데이터센터 습도와 관련해 로그 파일에 경고를 요구하는 스크립트를 실행시키고 있을 수 있다. 그렇다면 스크립에 코멘트를 추가하라. 당신이 사용 중인 명령이 너무도 명백하다고 믿을지 모른다. 그러나 사용을 멈추고 일이 년 이후에 다시 보면 전혀 명백하지 않을 수 있다. 간결함을 위해 가독성을 희생하는 일은 피해야 한다. 누군가 당신의 코드를 읽을 수 있다. 당신의 작업을 문서화해 누군가 업무를 승계 받는 상황에 대비하라.
실수에 집중하라
자신의 생각에 존재하는 약점을 이해하는 것이야말로 이를 극복할 수 이는 방법이다. 자신의 실수에 집중하고 어떤 상황에서 잘못된 행동이 나오는지 알아야 한다.
실수의 종류는 다양하다. 비밀번호 교체를 잊거나 패스워드가 만기됐을 때 멈추도록 서비스를 설정했을 수도 있다. 백업 유효성을 검증하지 않기도 한다. 누군가 퇴사했을 때 해당 계정을 폐쇄하는 것을 잊기도 한다. 이러한 실수가 발생할 때마다 그 원인을 찾고 대안을 마련해야 한다.
조금은 편집증적이어도 좋다
"누군가 이것을 악용하면 어떻게 하지?"라는 질문을 상시적으로 자신에게 물어보자. "누군가 여기에 침투한다면?", "이 서비스는 얼마나 취약한가?" 등의 질문도 마찬가지다. 관리자라면 다른 이들이 볼 필요 없는 것을 보아야 할 필요가 있다. 방어적으로 사고하면 미래의 고통을 줄일 수 있다. 서버 관리자에게 약간의 편집증적 태도는 미덕이다.
선행하라
모든 문제가 굉음과 함께 발생하는 것은 아니다. 여유 시간을 투자해 각 요소들이 제대로 동작하는지 확인할 필요가 있다. 잘못될 수 있는 종류의 것들을 검토하고 그들의 상태를 확인하자.
이와 관련해 상태 확인을 자동화하는 것도 필요하다. 단 문제 발생 시 확실히 주의를 기울일 수도 있도록 설정해야 한다. 경고 알람이 스팸 편지함에 들어가는 사태는 발생하지 않아야 한다.
보안에 '크게' 주의하라
보호해야 할 데이터가 많다면 보안 노력도 이에 비례해 늘어나야 한다. 자신이 방어할 것은 무엇인지, 누가 보호해야 할 데이터를 '소유'하고 있는지 알아두자. 권한 관리, 정기적 패치, 핵심 서비스 모니터링, 취약점 테스트 등에 필요한 베스트 프랙티스를 파악하고 실행하라. 시스템 침투 등에 대한 알림 설정도 확인해야 한다. 조직 내 보고 및 관련 경고 체계에 대해서도 준비해두어야 한다.
로그 파일을 무시하지 말라
로그 파일을 정기적으로 모니터링하면 사고에 앞서 경고 신호를 포착할 수 있다. 에러와 경고를 확인하라. 로그 메시지를 모니터링하는 도구를 마련하라. 로그 파일 메시지를 찬찬히 둘러볼 만큼 시간 여유가 있는 사람은 아무도 없기 때문이다.
모든 것을 백업하라, 당신조차도
서버가 복제돼 있더라도 백업 정책을 준수해야 한다. 복제된 에러 또한 에러다. 백업을 테스트하고 필요할 때 쓸 수 있을 만큼 상태가 양호한지 확실히 하라. 또 여유가 있다면 여분을 마련해두어야 한다. 단일 실패 지점은 없어야 한다. 당신에 대해서도 해당되는 이야기다.
다른 이의 시간 또한 소중하다
시스템 관리자는 사실 다소 거만하기 쉽다. 마법의 도메인 속에 거주하는 마법사처럼 굴곤 한다. 사실일지도 모른다. 그러나 사용자가 도움을 요청할 때면 신속히 다가가 만남을 가져야 한다. 사용자가 갈피를 잡지 못한다 할지라도 존중하라. 그들 또한 그들의 영역에서는 마법사이자 전문가이며, 시스템 관리자가 중요한 존재일 수 있게 해주는 근원이다.
지속적으로 알려라
사용자들이 지속적으로 앞으로 일어날 일을 알게 해야 한다. 주요 업그레이드가 예정돼 있다면 더욱 그렇다. 이러한 태도는 사용자들이 시스템 관리자와 서비스를 신뢰하게 해준다. 소통하고 가시성을 높이고 티케팅 시스템을 활용하고 문제 해결에 걸리는 시간이 얼마나 되는지 늘 확인하라.
호감형이 되어라
시스템 관리자가 접근하기 힘든 인물이어서는 안 된다. 정말이지 뛰어난 시스템 관리자는 잘난 체하거나 거만하지 않았던 것을 경험했다. 그럴 필요가 없었기 때문이었다.
신기술 습득을 멈추지 말라
전진하지 않는다면 뒤쳐지는 것이다. 배우고 익혀야 할 것들을 탐구하라. 새로운 역할과 책임에 준비돼 있어야 생존할 수 있을 것이다. 어떤 기술을 배울지 모르겠다면 당신이 좋아할 만한 직업을 설명하는 업무기술서를 확인하라. 어떻게 측정할지, 어떤 기술이 부상하고 있는지 확인하고 조금씩이라도 시간을 할애하라.
균형 잡힌 삶을 추구하라
취미와 업무 사이의 균형을 잡을 필요가 있다. 시스템 관리자와 무관한 활동을 찾아도 좋다. 자신의 정체성을 하나의 말뚝에만 연결하지 않아야 한다. 업무를 좋아하고 사랑할지라도 성취감을 느끼는 유일한 대상이 업무 뿐이어서는 안 된다. 당신은 당신의 직업이 아니며 직업적으로만 규정되어서는 안 도니다. 다른 게임을 찾고 존경할 만한 다른 누군가를 찾아라.