1.2.2 어떤 작업을 자동화합니까?
시스템 자동화는 주로 시스템 관리자의 지루하고 반복적인 업무를 대상으로 합니다. 전통적으로 시스템 관리자는 다음 일들을 처리합니다.
• 시스템의 네트워크 주소와 이름 정보 할당하기
• 운영 중인 서버의 환경 설정 변경하기
• 새로운 시스템에 운영체제 설치하기
• 사용자 계정 관리하기
• 소프트웨어 관리하기
• 자료 관리하기(이전, 공유, 백업, 복원)
• 로그 점검, 침입 탐지, 취약점 분석으로 시스템 보안 유지하기
• 시스템 부하, 디스크 공간, 장치 고장 감시 등 물리적인 시스템 상태 점검하기
이런 업무 중에서 절차가 명확하고 반복적인 작업일수록 자동화에 적합합니다. 이 책에서는 다양한 시스템 자동화 도구를 소개합니다. 어떤 도구를 사용하더라도 다음 몇 가지 원칙은 기억해 둘 필요가 있습니다.
• 예외를 줄이기 위해 일관된 방법을 적용해야 합니다. 같은 시스템, 같은 운영체제, 같은 응용 프로그램을 관리한다면 더 바랄 나위가 없겠지만 적어도 시스템 사이의 차이를 최소화시키려고 노력해야 합니다. 예외적인 작업이 늘어날수록 자동화 과정은 더욱 복잡해지고 관리는 어려워질 것입니다.
• 재사용을 고려해야 합니다. 어떤 작업에 사용한 셸 스크립트를 조금만 수정해서 전체 시스템을 대상으로 배포하여 적용할 수 있다면 유용할 것입니다. 자동화한 결과를 재사용하면 그만큼 시간과 업무를 줄일 수 있습니다.
• 문제가 발생하면 시스템 스스로 감지해서 관리자에게 알려야 하며, 가능하다면 자동으로 복구할 수 있어야 합니다. 궁극적으로 시스템 관리자가 없어도 시스템이 운영되는 무인 운영(No Operations, NoOps)을 지향해야 합니다.
• 내가 아닌 다른 누군가가 시스템을 관리하더라도 문제없어야 합니다. 결국 시스템 관리도 팀 업무입니다. 자동화했던 작업을 유지 보수할 때도 정보가 필요합니다. 자동화한 내용을 누구나 이해할 수 있도록 문서화해야 합니다.
• 자동화 과정에서 보안을 유지해야 하며, 시스템을 변경하는 중요한 작업은 안전한 환경에서 테스트한 후 전체 시스템에 적용해야 합니다.
사실 이 책에서 소개하는 시스템 관리자를 위한 자동화 도구는 빙산의 일각에 불과합니다. 지금도 변화에 맞추어 수많은 도구가 개발되고 있습니다. 모든 상황에 딱 맞는 은색 총알은 존재하지 않습니다. 실무에서 다루어야 할 시스템 환경이 저마다 다르기 때문에 이 책 내용을 그대로 적용하기는 어려울 것입니다. 이 책으로 시스템 자동화를 고민하고 테스트하면서 상황에 따른 대처 능력을 키우기 바랍니다.