어느새 PDC09 마지막날이다. 좋은 세션들이 많았는데, 너무도 짧아서 미처 듣지 못한 것들이 아쉬움으로 남는다. 하지만, 집에 돌아가면 또다시 일상에 묻혀 언제 그랬냐는 듯 잃어버리고 살텐데.. 그러고 보니, LA 하늘을 진득하니 바라보지도 못한 채 PDC를 마감하는 듯 하다.
대부분의 개발자들에게 있어서 성능 개선이니 튜닝이니 하는 것들은 꺼려지거나 왠만한 규모의 프로젝트가 아니면 경험해볼 수 없는 것일뿐 더러, 이러한 생활이 일상화되다보니 점차 개발 영역이 아닌 것처럼 여겨지는 듯 하다. 닷넷 개발자들이 쉽게 빠지는 오류 가운데 하나는 자동화된 툴의 엄청난 코드 생성 기능과 내부의 plumbing이라고 칭하는 것들을 자동화해주기 때문에 어련히 서버가, 툴이, 혹은 누군가가 해주겠거니 하는 생각인 듯 하다. 내가 짠 코드가 CLR의 어떤 단계를 거쳐 검색되어 메모리에 로드되고 가비지 컬렉션은 어떤 때 일어나고 컬렉터가 관리하는 영역을 어떻게 구분되고 어떤 종류가 있으며, 어떻게 프로그래밍하면 GC에 부하도 적게하면서 가장 효과적인 개발 방식이 되는지에 대한 고민이 덜 묻어나는 것 같다. (사실 닷넷은 GC 매커니즘이 자바에 비해 단순하여 개발자가 관여할 부분이 적다. 여기에 .NET 4에서는 backgroud gc 개념이 도입되었다.) 이런 기본 지식 위에 내가 짠 코드가 실제 프로젝트에서 처럼 부하가 걸렸을 때 비정상적인 행동을 보이는 것은 아닌지, 에러는 아니지만 잠재적인 문제를 일으킬 가능성을 없는지 프로파일러를 사용하여 체크한다거나 그 결과를 분석하여 코드를 개선하고자 하는 일들이 점차 요구되고 있다. 내가 짠 코드가 동작할 최적의 환경을 마련할 수 있는 것 까지 최소한 개발자들이 해야 할 몫인 것이다.
더군다나, 많은 개발자들은 시스템 입장에서 프로세스들, 쓰레드들, CPU 사용량, 메모리 점유량을 조사하면서 비정상적인 지점을 발견하여 오류를 수정하는 작업은 당연히 개발 영역이 아니라, 운영 영역이라고 생각할 것이다.
하지만, 오늘 들은 CL16세션에 모인 수많은 참석자들을 보니 내 예상이 틀린것 같다. Professional Developer Conference에 오는 사람들의 대부분은 개발자일텐데, Windows Performance Toolkit 이라는 주제에 대해 방안 가득 모여 일부는 바닥에 앉아 경청하며, Q&A 시간까지 발표시간으로 해달라고 요청할 정도로 열성을 보였다.
Windows Performance Toolkit는 마이크로소프트가 10년이상 발전시켜오며 공개하고 있고 마이크로소프트 내부의 Windows 개발 조직 뿐만아니라, OEM 파트너에서도 사용하고 있는 성능 측정 도구이다. 이를 통해 측정할 수 있는 것으로는 프로세스/쓰레드 현황, 내부 프로시져콜, 디스크/파일 IO, 메모리 점유량, 네트웍 사용량 등이며, 시스템내의 리소스와 관련된 전반적인 사항을 분석해주는 도구로서 분석 결과를 토대로 어느 부분에 문제가 있는지를 찾아낼 수 있는 유용한 도구이다.
Windows Performance Toolkit은 현재 4번째 에디션까지 공개된 상태이며, 마이크로소프트 내부에는 5번째 에디션 개발이 끝난 것으로 알려지고 있다. 잠깐 보았지만, 분석 결과가 상당히 직관적이고 여러 리소스를 동시에 매핑시켜 한 눈에 확인할 수 있기 때문에 많은 공을 들이지 않아도 개발자들의 보조하는 유용한 툴로 사용될 수 있으며, 코드 내의 문제가 아닌 것을 코드에서 찾으려 골머리를 싸매는 일을 방지할 수 있다.
.NET 4에서 WCF의 입지는 더욱 공고히 될 것으로 기대된다. WCF Data Services (구. ADO.NET Data Services), WCF RIA Services (구. Silverlight의 .NET RIA Services), Workflow Services 등 이제는 서비스 기반의 통신 방식을 WCF를 중심으로 재편되어 명확하게 WCF의 이름아래 통일되고 있다.
이와 관련하여 Windows Server AppFabric내에서 WCF 관련 기능들을 주목할 필요가 있다. AppFabric은 IIS 확장형태이며, IIS 매니저에서 WCF/WF 서비스들을 모니터링할 수 있는 기능이 추가되었다. (이 관리 기능에서도 위에서 언급한 ETW – Event Tracing for Windows - 가 사용된다.) 특히 WCF를 이용하여 서로 다른 바인딩 정보를 노출하고 있는 서비스 사이의 라우팅 기능을 제공하고, 프로토콜이 다른 경우 중간에서 이들을 매개하기도 하는 Protocol Bridge, 서비스가 다운되었을때 발생하는 에러를 처리하면서 다른 서비스에 연계시켜주는 backup service 기능이라든지, multicast 지원 기능 등이 포함되어 있다. 좀 더 자세한 사항은 PDC09 세션 FT13을 참고하시길...
Windows Server AppFabric (구. “Dublin”) = 서비스 관리/모니터링 (IIS 매니저 확장) + WCF 기반의 서비스 버스 (라우팅, 프로토콜 브릿지, 서비스 백업, 멀티캐스트) + 권한 관리 + 캐시 (구. “Velocity”) 등을 포함한다.
PDC09 기간 내내 유명 인사들과의 인터뷰가 Channel 9에 의해 촬영되었고, 삼성전자 클라우드 프린팅 사례도 Channel 9에서 촬영을 진행하였기에 조만간 Channel 9에 관련 동영상이 공개될 것으로 기대한다.
아쉬움을 뒤로한 채 PDC는 막을 내렸고 이제 몇 시간 후면 공항으로 출발해야한다. 오늘도 우리 윙키샘 김영욱 차장은 쌕쌕 잘도 잔다. ^^
댓글을 달아 주세요