안녕하세요. 김대우 입니다. 오래간만에 포스트를 적어 보네요.
이번에 소개해 드리고 싶은 내용은 IIS7의 확장 기능인 SEO(Search Engine Optimizer) Toolkit 입니다.

소개 링크 : http://www.microsoft.com/web/spotlight/seo/?appid=10991012
상세한 기술 정보 : http://www.iis.net/expand/SEOToolkit 
다운로드 : http://www.microsoft.com/web/gallery/install.aspx?appid=SEOToolkit

어쩌면 이제 검색엔진은 단순한 검색 도우미가 아니라 웹의 구조에 변경을 가해 자신들에게 최적화 시키는 초월적인 정리자로 여겨집니다. 어쩌면 이제 검색엔진에 소외 받는다는 것은 그만큼의 트래픽을 놓친다는 것과 같기 때문일 겁니다.

SEO 툴킷으로 뭘 할 수 있을까?



(1) 웹사이트 트래픽을 증대 시킬 수 있습니다.
사용 방식은 단순합니다. 설치하고 분석을 원하는 사이트를 입력하면 자동으로 분석을 시작합니다. 분석을 진행하고, SEO에 최적화 되지 않은 부분을 알려 주거나, 다양한 추천을 통해 웹사이트 정리를 돕는 기능을 제공합니다.

image

후덜덜~ 1359개나 문제가 있다고 나오네요~  대부분 Broken link 문제지만서도…

image 
분석 후 Violations를 살펴보면 이렇게 문제점을 정확히 찾아 줍니다.

(2) 사이트맵 자동 생성 및 관리
사이트맵 및 부가 정보들을 관리해 검색엔진들이 URL이나 컨텐트를 쉽게 조회 하도록 도우며, 사용자에게 편의성을 제공합니다.



(3) robots.txt 파일 관리
robots.txt 파일을 관리해 검색엔진에게 어느 경로의 정보가 중요하며(인덱스 잘 되도록), 어느 경로는 중요하지 않은지 등을 제공해 검색엔진에게 향상된 검색 정보를 제공합니다.


예를들면 이렇습니다.

User-agent: *
Disallow: /EditService.asmx/
Disallow: /images/
Disallow: /scripts/
Disallow: /SyndicationService.asmx/
Disallow: /EditConfig.aspx
Disallow: /Login.aspx
Sitemap: http://myblog/sitemap.xml

이런 형태로 처리해 불필요 폴더에 대한 인덱스를 하지 않도록 구성 가능합니다. 이미지나 스크립트 폴더 등에 유용하겠죠.

글을 쓰면서 드는 생각은… – 점점 더 무서워지는 검색엔진, 우리는 검색 엔진에게 계속 이쁘게 보여야 하나봐요. ^_^
다행인건 IIS에서 제공하는 이런 기능으로 좀더 손쉽게 우리 웹사이트를 더 예쁘고 착하게 보일 수 있을 거라는. ^_^

PS. 앗~ 알고 계시죠? www.iiskorea.net  팀블로그는 IIS7과 PHP 어플리케이션인 Textcube로 운영되고 있습니다.

안녕하세요, IISKOREA 팀블로그의 송원석 입니다.

지난 번에 소개해드린 IIS7.5 Application Warm-Up 관련 문서의 번역이 완료되어 제 개인 사이트에 올라갔습니다. 번역 수준도 그리 뛰어나지 못하고, 어쩌면 다소간의 오역이 존재할 지도 모르지만, 영어에 오한을 일으키시는 분들을 위해 준비했습니다. ^_^

No. 50 :: IIS 7.0 인스퍼레이션 - 30, (Getting Started with the IIS 7.5 Application Warm-Up Module 번역 및 주해)

다만 아쉬운 점은, 제가 원문을 번역하고 제 사이트에 업로드하느라 밍기적거리는 사이에 IIS.net 의 전반적인 디자인 레이아웃이 변경되어 버렸더군요. 게다가 현재 원문 글도 약간 변경되어 다시 올라와 있습니다. 그런 이유로 제 번역 문서는 조금 지나간 내용을 담고 있는 결과가 되었네요.

그래도, 윈도우 7 에서 모든 동작을 확인했고, 원문상에 누락된 것으로 보이는 이미지들에 대한 부분도 짚어보았구요, 내용 상의 오류도 몇 가지 찾았습니다. 일단은 이 정도로 위안을 삼기로 하죠. ^_^

그리고, 파워쉘에 아직 익숙하지 않으신 분들을 위해(물론 저도 역시 포함됩니다.) 한 가지 참고사항을 말씀드리자면, 본문 내용 중 Import-Module WebAdministration 명령어 실행시 오류가 발생하면서 제대로 동작하지 않는다면 다음과 같이 해보시기 바랍니다.
  1. Set-ExecutionPolicy RemoteSigned 명령을 실행합니다.
  2. 현재 파워쉘 세션을 닫습니다.
  3. 파워쉘 세션을 다시 시작합니다.
  4. Get-ExecutionPolicy 명령을 실행하여 변경이 제대로 반영되었는지 확인합니다.
  5. 이제 본문의 내용을 다시 진행합니다.
이 RemoteSigned 모드에서는 디지털 서명 없이도 로컬 스크립트를 실행할 수 있습니다. 따라서, 로컬에서 작업할 때 편리하겠죠? 본문의 경우가 바로 이에 해당합니다. 파워쉘의 기본 모드는 Restricted 인데, 이 모드에서는 명령(커멘드릿)만 실행이 가능하고 스크립트의 실행이 불가능하므로 이런 사전작업이 필요한 것입니다. 물론, 이 RemoteSigned 모드의 이름만 봐도 알 수 있지만 원격 스크립트는 디지털 서명이 되어 있어야만 합니다.

감사합니다.

안녕하세요. IISKOREA 팀블로그 의 김대우 입니다. 이번에 같이 고민해 보고 싶은 내용은 지난번의 포스팅에 이어서 두번째, 바로 “웹서버 관리 작업 자동화”에 대한 내용으로 포스팅을 풀어 보려고 합니다.
지난 포스트를 통해 IIS7의 다양한 설치/구성/관리/배포 기능 및 도구 소개  - 관리 및 배포 툴에 대해서 이야기를 드렸는데요. 이번에는 관리 자동화 툴에 대해 초점을 맞춰 단상을 정리해 보려고 합니다.

IIS는 이러한 관리작업 자동화를 위해 여러가지 도구들을 제공하는데요. – 당연히 IIS 관리자는 GUI툴이니 자동화 도구라고 할 수 없겠죠?(설마, 현업에서 말하는 인간 자동화???) ^_^;;;

image 
이렇게 IIS의 구성 정보를 담고있는 XML 파일을 수정하는 방법이지요. 특히, 자동화를 위해서는 파워쉘과 명령 프롬프트의 AppCmd를 이용하는 것이 하나의 방법이 되실 겁니다.

IIS의 자동화를 위해서는 크게 세가지를 보시면 될 것 같습니다.
(1) 파워쉘(Power Shell)
(2) AppCmd 명령 프롬프트 처리
(3) WMI(Windows Management Instrumentation)와 MWA(Microsoft.Web.Administration) API

GUI 관리 툴일 경우 여러 단계를 거쳐야 하는 작업들을 이 자동화 툴들을 이용하면 스크립트화 시켜주기 때문에 유용한데요. 조금만 더 알아 보도록 하면

(1) 파워쉘 – IIS 7용 파워쉘 스냅인을 이용 가능합니다.
image
- 강력하고 심플함 : 매우 복잡한 관리 작업들을 키워드 기반 프로그래밍 명령어들로 자동화 시킬 수 있음
- 오브젝트 기반 : 여러 오브젝트들을 호출해 스크립트에서 작업 가능
- 심플하고 강력한 명령줄 기반 인터페이스 : 복잡한 스크립트를 명령줄 기반으로 제작해 안전하게 테스트도 가능
- 시스템 통합 : .NET Framework나 WMI 확장기능, 레지스트리 등에 대한 호출 및 처리가 가능
- 안전 최우선 작업 가능 : 인승서 기반의 사인된(Signed) 스크립트를 지원해 안전하게 여러 작업을 제한 가능함

참고자료 :
Managing IIS with the IIS 7.0 PowerShell Snap-in 
Windows PowerShell Snap-In 

(2) AppCmd 명령 프롬프트
image 
이 AppCmd가 생소한 분들도 계실 것 같은데요. 이런 형태의 명령 프롬프트에서 수행하는 작업으로 웹사이트 제작, 응용프로그램 풀 바인딩 등의 작업을 손쉽게 처리 가능합니다. 이녀석은 어떤 장점이 있을까요?
- 웹사이트, 웹 어플리케이션, 응용프로그램 풀, 가상 디렉토리를 생성하고 구성할 수 있음
- 웹사이트 시작, 중지 명령을 수행 가능하며, 응용프로그램풀을 리사이클링 시킬 수 있음
- 수행중인 작업자 프로세스에 대한 리스트와 현재 실행중인 요청에 대해서 조회 가능
- IIS와 ASP.NET 구성 정보에 대해서 조회, 출력, 내보내기(Export), 가져오기(Import)를 수행 가능

참고자료 :
AppCmd.exe 소개 
ABC's of Appcmd (command line administration in IIS7) 

AppCmd도 이렇게 여러가지 명령줄 기반 자동화 작업을 수행이 가능합니다. 그렇다면 갑자기 드는 생각인데요. 파워쉘과 AppCmd의 차이는 어떻게 설명이 가능할까요?
- 파워쉘은 오브젝트 기반으로 더욱 유연하고 복잡한 관리 작업들을 수행 가능합니다. 또한 파워쉘은 .NET Framework나 WMI 확장 API를 접근 가능하고 높은 보안성을 요구하는 복잡한 스크립트 작업을 실행 가능합니다.
- AppCmd는 파워쉘에 비하면 심플하고, IIS 관리를 위한 기능들에 초점을 맞춰 실행이 가능합니다. 바꿔말하면, 파워쉘과 같은 강력하고 복잡합 스크립트 기능은 이용이 불가능합니다.

이렇게 두가지, 관리자 분들이 선호하시는 자동화 관리 툴에 대해서 알아 보았습니다. 개인적인 소견으로 파워쉘이나 AppCmd는 개별 서버 기반에서 작업하거나, 관리하는 서버의 수가 5~10대 미만이라면 이용 가능하겠으나, 수십 수백대의 서버를 유지 관리해야 하는 호스팅회사와 같은 경우에는 관리 작업이 쉽지 않을 겁니다. 이럴때 이용하는것이 바로 MWA와 WMI를 이용해 직업 각 회사에 맞는 작업을 처리 가능한 관리 프로그램을 제작하는 것이지요. 왜 MWA와 WMI가 필요한지는 감 잡으셨는지요? 그렇다면, MWA와 WMI와 같은 관리 프로그램 제작을 위한 API들에 대해서 알아 보도록 할까요?

(3)  WMI(Windows Management Instrumentation)와 MWA(Microsoft.Web.Administration) API
먼저 WMI를 소개해 드리고 이어서 MWA를 이야기 드리려고 합니다.
WMI로 수행할 수 있는 작업
- 웹사이트 생성
- 전체 웹사이트 조회
- 웹사이트 중지, 시작
- 웹사이트 삭제
- 웹사이트 인스턴스 및 어플리케이션 인스턴스 관리
- 어플리케이션 도메인 관리 및 작업자 프로세스 관리
즉, IIS와 관련된 다양한 작업들을 이 WMI를 이용해 모두 프로그래밍적으로 자동화 처리가 가능합니다.
참고자료 : Managing Applications and Application Pools on IIS 7.0 with WMI 

그렇다면 MWA는 어떨까요?
MWA를 보시기 전에 - IIS는 XML 구성 파일(applicationHost.config 파일과 web.config 파일)에 대해서 개발사가 자신의 커스텀 구성 섹션을 이용 가능하도록 허용하고 있습니다. 개발사는 이 영역에 기술된 구성 정보를 프로그래밍적으로 가져와 처리할 필요가 있을 수 있는데요, 이때 사용 가능한것이 바로 MWA API입니다.
참고자료 : Overview of MWA and MWM for IIS 7.0 
참고로, 파워쉘을 이용해 WMI나 MWA 오브젝트를 호출해 속성 등을 불러와 파워쉘 스크립트로 처리하는 작업도 가능합니다.

이렇게 간단히, 웹서버 관리 자동화에 대한 내용을 정리해 보았습니다. 개인적으로는 좀더 욕심이 있어서, 호스팅회사가 처리해야할 자동화 작업 목록이나 기술 명세가 있다면 한번 마음 맞는 분들끼리 관리 툴을 오픈소스로 만들어 보는 것도 하나의 좋은 시도가 아닐까 생각됩니다. ^_^

감사합니다.

참고자료 : Provisioning Options in IIS 7.0 

IIS7.5 Application Warm-Up

2009/10/23 16:33

안녕하세요, IISKOREA 팀블로그의 송원석 입니다.

윈도우 서버 2008 R2, 그리고 윈도우 7 에서 제공되는 IIS 7.5에 흥미로운 기능이 한 가지 추가되어 소식을 전합니다. 바로 Application Warm-Up 이라는 기능인데요, 현재 Beta 상태로 관련 모듈을 다운로드 받아 설치할 수 있습니다. 과거 URL Rewrite 모듈 역시도 별도의 다운로드 모듈 형태로 제공되다가 정식으로 포함된 사례를 감안해 볼 때, 이번 Application Warm-Up 모듈도 같은 수순을 밟게 될 것으로 예상됩니다. 보다 정확하고 상세한 내용은 다음의 문서를 참고하시면 될 것 같습니다.

Getting Started with the IIS 7.5 Application Warm-Up Module

이 문서에서는 Applcation Warm-Up 에 대한 개요를 보여주고 있습니다만, 아쉽게도 대부분의 진행이 파워쉘를 기반으로 하고 있어서, 개발자분이시거나 평소 파워쉘에 대해 관심을 갖고 계셨던 분이 아니시라면 조금 난해할 수도 있을 것 같습니다. (나중에 저희가 캡춰로 도배된 따라하기 문서를 한 번 만들어 보는 것고 좋을 것 같습니다.)

그리고, 실제 모듈은 다음 경로에서 다운로드 받으실 수 있습니다. 아직 Beta 버전이며, IIS 7.0에서도 동작하는지는 확인해보지 못했습니다.

Application Warm-Up

간단히 그 내용을 살펴보자면 이렇습니다.

일반적으로, IIS 에 배포된 웹 응용 프로그램은 사용자의 요청에 의해 실행이 됩니다. 즉, 평소에는 메모리에 올라와 있지 않은 상태인 것이죠. 그러다가, 임의의 사용자가 처음으로 해당 웹 응용 프로그램을 요청하는 순간, 초기화가 수행되고 비로소 메모리에 올라와서 작업을 수행하게 됩니다. 일반적으로 이 초기화 과정 중에 이루어지는 작업에는 대략 다음과 같은 작업들이 있을 겁니다.

  • 먼저, 당연히 ASP.NET 프로그램의 JIT 컴파일이 이루어져야 하겠죠.
  • 그리고, 필요하다면 데이터베이스 연결도 얻어야만 합니다. (한 번 생성해 놓으면 커넥션 풀을 이용할 수 있으므로 첫 번째 요청과 두 번째 요청에서의 속도에는 확실히 차이가 존재합니다.)
  • 일부 코드 Set 을 미리 로드해 놓는 웹 응용 프로그램들도 존재합니다. 이를테면 미리 캐시를 해놓는 거죠. (지금 제가 참여중인 프로젝트가 바로 그렇습니다.)
  • 필요한 HTTP 모듈이나 핸들러도 로드되어야 하구요. (사용자 정의 모듈이나 핸들러 뿐만 아니라, IIS 7.x 자체의 모듈들도 모두 HTTP 모듈이나 핸들러라는 점을 유의하십시오.)
  • 그 밖에 기타 필요한 작업들이 처리되겠죠.

그런데, 만약 해당 응용 프로그램이 초기화에 많은 비용이 소모되는, 상대적으로 무거운 축에 속한다면, 운나쁘게도 가장 먼저 웹 응용 프로그램을 요청한 사용자는 제법 긴 시간동안 대기를 해야하게 될 것입니다.바로 이런 문제점을 해결하기 위해 제공되는 기능이 Application Warm-Up 입니다. 흔히 우리는 운동을 하기 전에 워밍업을 한다는 표현을 쓰곤 합니다. 마치 이처럼 웹 응용 프로그램도 워밍업을 해두는 것이죠. 그리고 요청이 들어왔을 때 신속하게 서비스를 제공한다는 개념입니다.

일반적인 웹 사이트의 경우에는 이 기능의 장점이 확연하게 느껴지지 않을 수도 있을 것입니다. 그러나, 클라우드 서비스를 제공해야 되는 시스템이라던지, n 티어 시스템의 비즈니스 로직 계층의 경우라면 그 응답성 향상이 눈에 띌 정도가 되지 않을까 생각해봅니다.

그리고, Application Warm-Up 기능을 설정할 수 있는 단위는 웹 응용 프로그램이라고 하는데요, 사실 이건 당연한 얘기일 것입니다. 왜냐하면 웹 응용 프로그램이 바로 작업자 프로세스의 단위이기 때문이죠.

보다, 자세한 내용은 후에 기회가 닿으면 한 번 다시 말씀드리도록 하겠습니다.

감사합니다.

P.S 그리고 보니 이 포스트가 제 인생 최초의 포스트네요.