2007년 11월 30일 금요일

Windows Administration에 대한 선입견

2007.11.30.ps

2007/02/24  당직근무중 처음 작성하다.

1. PowerShell(이하 PS) 1.0  RTM 버전이 작년(2006) 4Q에 발표되었다.

코드명 Monad, 예전에는 MSH로 불렸던 Microsoft의 새로운 Shell 환경이다. 예전 MS-DOS 시절의 작업환경과 99% 유사했던 CMD 대신, 강력한 스크립팅 언어와 다양한 명령(cmdlet)으로 무장한, "관리자(IT Pro)"들의 새로운 작업 환경이 될 것으로 예상된다.

 

2. 너무나 매력적인 PS

Naver에서 검색한  관련 블로그에서는 PS이 마치 기존의 후진(?) Windows 환경을 구원해 줄 해결사처럼 표현되어 있다. 분명 새로 사귀는 애인을 맞이하는 것처럼 매력적인 요소들이 눈에 바로 들어온다.

  • 능숙한 Unix 파워유저들에게 적응시간을 줄여줄 수 있는 Python/Perl과 유사한 문법
  • 잘 정리된 cmdlet과 강력해진 Pipeline
  • format-* cmdlet과 같이 console display의 제어가능
  • HKCU: 와 같은 레지스트리나 인증서의 System store 영역을 Filesystem 처럼 접근
  • 보안을 고려해서, 침입자가 임의의 스크립트 파일을 실행할 수 없는 기본정책 등

     PS는 이러한 장점을 무기로 IT Pro들에게 사랑해달라고 손짓하고 있다.  OS 설치 원본에 포함되어 제공되는 시기는 아마도 Vista SP1 이나 Windows Server code name "Longhorn" RTM부터 가능할 것으로 추측한다.  XP / Windows Server 2003 환경이라고 해도 Microsoft Download 사이트에서 구할 수 있다.

 

3. 과거에는 어떻게 운영했을까?

그런데, 이런 장점에 환호하기에 앞서 오히려 의문이 생긴다.  그럼, PS 없이 예전에는 관리를 어떻게  했다는 것일까?  자기 PC 관리하는 것과 동일하게 Windows Server를 운영했다는 뜻은 아닐것인데 말이다. 

CLI (Command Line Interface) 환경에서는 힘들어서 관리가 불가능했다는 얘기를 하고 싶다면 "No"라고 답해주겠다. 다음의 예제 작업들은 가끔 내가 하는 작업들이며, 현재 일하는 회사만의 특별한 그것은 아니라고 생각한다.

  • 60개 서버의 서브넷마스크를 변경
  • 40개 서버에서 특정 tcp state가 syn_sent 상태인 connection 찾기
  • 25대 서버에서 SNMP 서비스 추가하고, community string 기본값 변경하기
  • 10대 서버에서 특정 ip 패킷에 대해서 차단하도록 IPSec 필터생성 및 정책 할당/비할당
  • 6대 IIS 6.0 서버의 ApplicationPool 10개의 설정 변경 및 재구성 (6*10 = 60개)
  • 2대 서버의 원격데스크탑 설정을 활성/비활성화/서비스 기본 포트(3389-->xxxx) 변경
  • DC용 장비의 dcpromo 과정을 무인모드로 진행
  • SQL2K 설치 및 SP4 적용 과정을 무인모드로 진행
  • 특정 시간이 되면, nic 활성화/비활성화 작업 자동화
  • 특정 프로세스의 메모리 점유량이 과다하면, 종료시키고 & 이벤트로그에 기록 

  Windows 환경이 *nix의 그것보다 우월하다는 것은 아니지만, 적어도 비슷한 수준의 관리는 구현할 수 있다는 것이다. 그것도 최소한의 비용으로 말이다.  앞의 예제 작업에서 상용 프로그램을 사용한 것은 단 하나도 없으며, vbs 스크립트를 이용하면 보다 섬세한 제어가 가능하다.  

 

4. Why??

PS의 장점을 무시할 필요는 없다. 미리 배워 두면, 당신의 생산성은 분명 200% 이상 상승할 수 있다고 생각한다.  IF / FOR 구문 밖에 없는 CMD 환경에서 좌절해본 적 있다면 분명 행복하게 느낄 것이다. 비록 1.0 수준이긴 하지만.

PS가 없는 현재의 환경에서, 한국의 IT Pro들은 왜 생산성을 높이려고 하지 않을까?  정답과 내 올해 연봉이 아무런 상관이 없으므로, 자신있게 뻥을 쳐 본다 ^^

  1. 제대로 운영되는 환경에 대한 경험이 없다.
  2. 정리된, 한글 교재나 책이 없다.
  3. 툴과 솔루션 핑계를 대면서, 자동화에 대한 마인드가 없는 사람 (개인의 자질 문제)

가장 큰 문제는 역시 1번 같다.  플랫폼과 무관하게 뭔가 Automatic한, 자동화된 관리환경을 경험하지 못하면, 사람들은 변화를 시도하기 보단 자신이 익숙한 방법론에 젖어들게 된다.  물론 자기개혁적인, 진취적인 리더들이야 변화를 꾸준히 시도하겠지만, 조직 레벨에 영향을 주는 것은 힘들다.   그렇다고, manager 또는 그 이상의 boss들 위주의 (TOP-DOWN) 접근 방식은 한계가 있다. (강제로 시키는 공부의 성과에 대해서 우리 몸은 알고 있다)

2번은 당연한 결과다.  글쓰는 사람이 부족하니까, 당연히 책도 적다.

3번 케이스는 좀 심각한 문제다.  특히 경력은 있되 어설픈 시스템 관리자들이 이렇다.  쉬운 도구가 없어서, 통합된 솔루션이 없다는 핑계.  분명히 틀린 말은 아니다. 이런 인재들은 정말 인재(!)다.  조직의 IT 예산은 갈수록 빡빡해지고 있는 것이 사실이고, 뭔가 괜찮은 제품들은 왜 이렇게 비싼지.  라이센스 비싼 소프트웨어 벤더들 때리고 싶다.

(예) RHEL, VMware ESX 서버

그렇지만, 외부 환경(시장)을 제어할 수 없기에 이런 조건들은 언제나 발생한다.  그리고, 시장에 상용 솔루션과 툴만 있다면, OS에 아무런 관리도구들이 없다면 우리는 손쓸 방법이 없겠지만, 그렇지 않다.  MS 제품들의 경우, 관련 리소스킷과 문서, 예제 자료들을 언제든지 Microsoft downloads 사이트에서 받을 수 있다. 

당신이 작성한 스크립트가 유명 IT 벤더의 제품만큼 훌륭한 리포트를 제공하기는 힘들 것이다.  하지만, 사소한 노력과 경험이 꾸준히 축적된 상태가 아니라면, 제아무리 비싼 솔루션이 들어온다고 해도 마찬가지로 애물단지가 되기 쉽다.  (아니면, 운영 인력 자체를 아웃소싱해서 잘하는 회사에 맡기는 방법이 있다. 이 경우도 성공하기 쉽지 않다)  아무튼 주변에 이런 인력 있으면, 너무 기대하지 않는 것도 하나의 방법이 된다.

5. So, What?

일단 공부하자.  그리고, 하나만 기억하면 된다.

MMC 기반으로 할 수 있는 작업의 99.9%는 어떻게든 스크립팅 & 자동화할 수 있다. 스크립트 언어로 할 수 없다면, 그때는 MFC를 공부하고, 또 심하게는 Win32 API를 이용해서 어떻게든 제어할 수 있다.  (지식의 수준에 따라 접근 가능한 범위가 달라질 뿐, 할수 있다는 뜻이다)

그리고, 앞에서 말한 3번 같은 인재가 되지 않도록 노력하자.   여러분이 잘 구축해둔 환경이 이후의 후임자 또는 신입사원 등등 동료들의 시간을 보장해 주고 행복하게 한다.  스스로의 시간이 확보되면서, 아울러 다른 사람까지 행복하게 만들어 주는 일은 세상에 많지 않다. (win-win 게임)

내가 아는 것, 가지고 있는 책에 대해서 소개해 줄테니, 그 담은 알아서 해라~~

 

A.  서적
B. 웹사이트
C. 오픈소스 솔루션

 

May the Force be with you :-)

댓글 1개: