'Microsoft'에 해당되는 글 134건

  1. 2013.11.07 TechDays mini 2013년 11월 - Visual Studio 2013, 제대로 파헤쳐 보기!
  2. 2013.09.14 Microsoft TechDays 2013 Korea
  3. 2013.04.20 IronPython으로 Windows NT 서비스 만들어서 띄우기
  4. 2013.04.16 Windows Azure Lounge - Global Windows Azure Bootcamp in Korea
  5. 2013.03.31 Windows Azure를 통한 클라우드 서비스 확장성 포스터
  6. 2013.02.01 Windows Azure 사용 후기도 올리고 경품도 가져가세요!
  7. 2012.12.06 Azure Camp @ 인하대 - 리눅스, Windows Azure를 만나다
  8. 2012.10.21 David Chappell의 Windows Azure Platform 강연회에 초대합니다.
  9. 2012.10.10 2012 Microsoft MVP Smart Campus Day (1)
  10. 2012.09.26 Windows Azure 웹 캐스트 (2)
  11. 2012.08.05 클라우드 시대의 피아식별: Access Control #2
  12. 2012.08.02 Windows Azure 관리자 포탈 사이트에 대하여
  13. 2012.05.21 최신 웹 사이트 & 웹 앱 개발을 위한 웹 매트릭스 도서를 출간하였습니다. (3)
  14. 2012.03.28 Microsoft MVP 지식 나눔 강연 (2012년 3월 29일)
  15. 2012.01.05 Windows Azure의 리눅스 지원 추가
  16. 2011.09.27 Windows Azure Storage 2011-09 Update 소개
  17. 2011.09.12 ASP.NET과 IIS 7을 위한 로드 밸런싱 전략과 기초적인 이야기, 그리고 Azure Platform
  18. 2011.09.05 사내 인프라와 인트라넷 개발은 이제 Office 365가 좋은 선택입니다.
  19. 2011.07.18 앱 세상을 준비하는 개발자를 위한 APP CAMP! (2)
  20. 2011.04.14 Visual Studio 2010 Service Pack 1에 대한 모든 것
  21. 2011.04.14 Visual Studio 2010 Service Pack 1에 대한 모든 것
  22. 2011.04.02 응용프로그램 가상화 종결자 - roozz
  23. 2011.03.29 A Lap around cloud computing – 1인 1근두운 시대
  24. 2011.03.25 [세미나] Visual Studio 공식 팀 - Your Smarter Visual Studio 2010
  25. 2011.03.17 Microsoft TechDays 2011 Spring - N-스크린 시대의 IT 전문가를 위한 온라인 컨퍼런스 (2)
  26. 2011.03.11 Windows Azure SDK v1.4 출시
  27. 2011.03.02 CASEQRCODE powered by Windows Azure Platform
  28. 2011.02.27 A Lap around cloud computing – 지금이 여러분의 이력서를 새로 쓸 시간
  29. 2011.02.25 Windows Azure Virtual Lab으로 쉽고 빠르게 클라우드 개발 실습하기
  30. 2011.02.24 CODEPARTY 2011년 2월 / 세션 1 발표 자료 공유합니다.
이벤트2013. 11. 7. 17:01

?μ? : 愿??臾?????댄??????A??11痢???뎅留???щ???????€??????쎈?蹂닿린
1遺€ 2013??11??16???? 13:10~18:00
2遺€ 2013??11??30???? 13:10~18:00
11??16???ъ? ?깅???린
11??30???ъ? ?깅???린
?⑹?由?李⑥? ms_regi@cuvix.co.kr
2013??11??13???? 諛?11???????낫湲? width=

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2013. 9. 14. 14:27

클라우드 서비스 (PaaS)를 이용한 확장성있는 서비스 개발

http://channel9.msdn.com/Events/TechDays/TechDays-2013-Korea/Paas-1-2-

http://channel9.msdn.com/Events/TechDays/TechDays-2013-Korea/pass-2-2-


Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Windows + .NET2013. 4. 20. 00:54

안녕하세요. Windows Azure MVP 남정현입니다.

IronPython은 이제 다른 Python Implementation과 어깨를 나란히 할 수 있는 수준까지 완성도가 개선되었습니다. Python을 이용해서 흔히 기대하는 NumPy, SciPy 같은 수학 및 공학용 라이브러리는 당연히 쉽게 처리할 수 있고, 이를 기반으로 하는 NLTK (Natual Language Tool Kit) 라이브러리도 약간의 불편함이 따르기는 하나 종속성을 충족하면 자연어 처리도 원활하게 수행합니다.

그리고 당연하다면 당연한 이야기이지만 Windows NT 서비스를 IronPython으로 구현하는 것도 생각해볼 수 있습니다. Windows NT 서비스를 관리 언어를 이용하여 개발하는 것 자체는 그렇게 새로울 것이 없습니다만, 한 가지 많이 오해를 하는 부분이 있는데 Visual Studio가 제공하는 템플릿이 아니면 만들 방법이 없는 것 처럼 여겨지는 것 같습니다. 그러나 실제로는 전혀 그렇지 않으며, .NET Framework의 실행 모델을 처리할 수 있는 프로그래밍 언어는 모두 간편하게 System.ServiceProcess.dll 어셈블리가 제공하는 SCM 상호 작용 컴포넌트를 쉽게 이용할 수 있습니다.

그렇다면 IronPython을 이용해서 Windows NT 서비스를 개발하려면 어떻게 해야 할까요? 생각보다 단순합니다. 준비물은 이 글을 쓰는 현 시점에서 최신 버전인 IronPython 2.7 패키지와 관리자 권한만 있으면 됩니다. 만약 sc.exe 유틸리티가 없다면 이 유틸리티가 이번 강좌에서는 꼭 필요하므로 Windows SDK를 찾아보시기 바랍니다.

초간단 IronPython 기반 Windows NT 서비스 코드 살펴보기

글을 쓰는 것이 무안할 정도로 정말 초간단합니다.

import clr
clr.AddReference('System.ServiceProcess')
from System.ServiceProcess import ServiceBase

class MySvc(ServiceBase):
  def OnStart(self, args):
    ServiceBase.OnStart(self, args)
    print args
  def OnStop(self):
    ServiceBase.OnStop(self)

svc1 = MySvc()
ServiceBase.Run(svc1)

코드의 각각의 줄을 하나씩 살펴보도록 하겠습니다.

우선 처음의 세 줄은 CLR 모듈을 로드해서 System.ServiceProcess 어셈블리를 현재 IronPython의 스코프에서 사용할 수 있도록 준비하는 과정입니다. 관리되는 언어로 Windows NT 서비스를 등록하고 SCM과 상호 작용하기 위해서 필요한 모든 코드가 이 어셈블리에 들어있다고 보시면 되겠습니다.

그리고 Windows NT 서비스의 API를 객체 지향 방식으로 모델링한 ServiceBase 클래스를 상속받는 새로운 클래스를 하나 만들어야 합니다.

Python 문법에 익숙하지 않은 분들을 위하여 부연 설명을 더하면, 현재 스코프에 ServiceBase라는 클래스가 있고, 이 클래스를 상속받는 MySvc 클래스를 정의하고 있습니다. 그리고 따로 지시자는 없지만 이름이 같게 설정된 메서드는 Python 세계에서는 자동으로 메서드를 재정의한 것이 됩니다. 이에 따라, OnStart과 OnStop 메서드가 SCM에 의해서 자동으로 호출되는 메서드가 되는데, 서비스 시작 시 서비스가 잘 작동하고 있음을 알리기 위해 부모 클래스인 ServiceBase 클래스의 OnStart 메서드를, 그리고 프로세스 종료를 해도 괜찮음을 알리기 위해 OnStop 메서드를 호출합니다. 그리고 self라는 인자는 인스턴스 메서드임을 설명하는 것이며 동시에 여기에 인스턴스 참조가 전달됩니다.

그리고 따로 시작점이 있는 것이 아니라 Python 코드는 그 자체가 즉시 실행 가능한 Main 메서드 역할을 합니다. 그래서 곧바로 MySvc 클래스를 인스턴스로 만들어 ServiceBase.Run 메서드를 호출합니다.

SCM을 이용하지 않고 실행할 경우

ServiceBase.Run 메서드는 기본적으로 SCM과 상호 작용을 시작하기 위해서 필요한 기능들을 미리 제공합니다. 그런데 위의 코드를 일상적으로 사용하는 IronPython 콘솔에서 실행하면 어떻게 결과가 나타날까요? 아래와 같은 메시지가 나타납니다.

"명령줄 또는 디버거에서 서비스를 시작할 수 없습니다. 먼저 installutil.exe를 사용하여 Windows 서비스를 설치한 다음 서버 탐색기, Windows 서비스 관리 도구 또는 NET START 명령을 사용하여 시작해야 합니다."

이런 오류 메시지가 나타납니다. 그런데 제가 하고 싶은 이야기는 정말 installutil.exe를 사용해야만 관리 언어로 만든 NT 서비스를 등록할 수 있는가에 대한 부분입니다. 결론부터 말하면 "아니오"입니다. installutil.exe를 사용하여 NT 서비스를 설치하기 위해서는 위의 코드 말고도 사실 설치 관리자 컴포넌트를 따로 구현해야 하는데, 이것을 Visual Studio Professional 이상의 버전에서는 템플릿으로 제공하고 있고 설치 프로젝트와 연계해서 만들 수 있도록 해주는 것입니다. 그러나 개인적으로는 이러한 설정을 마음에 들지 않습니다. 좀 더 간단하게 갈 수 있는 방법도 많으니까요.

그러면 installutil.exe를 대신할 도구가 있을까요? 바로 sc.exe입니다. sc.exe 자체는 개발된지 오래된 유틸리티이지만, 관리 언어로 만든 Windows NT 서비스까지도 매우 유연하게 지원합니다. 바로 EXE 파일로 만들어지는 NT 서비스에 한해서 그 진가가 십분 발휘됩니다.

SC.EXE 유틸리티를 사용하여 NT 서비스 등록하기

이제 SC.EXE 유틸리티를 사용하여 NT 서비스를 등록해보겠습니다. 그러나 SC.EXE 유틸리티로 서비스를 등록하려면 시스템 관리자 권한이 필요하므로 명령 프롬프트를 관리자 권한 또는 권한 상승 모드에서 시작해주셔야 합니다. 만약 설치 프로그램에서 구동한다면 설치 프로그램 초입에 권한 상승이 동반되므로 따로 신경쓸 것은 없습니다.

SC.EXE 유틸리티의 문법은 사소한 부분에서 실수하기 쉬우므로 문자그대로 아래와 같이 정확하게 입력해야 함을 유의하기 바랍니다.

sc create <서비스 이름> binPath= "<ipyw64.exe의 절대 경로> <IronPython 스크립트 파일의 절대 경로>"

sc create mysvc binPath= "C:\Program Files\IronPython 2.7\ipyw64.exe c:\users\rkttu_000\desktop\service.py"

다른 것보다도 binPath= 부분에 유의합니다. binPath = "~" 도 아니고 binPath ="~"도 아니며 오로지 binPath= "~" 로 해야만 올바른 문법으로 인지됩니다. binPath 옵션에 IronPython Non-Console 인터프리터의 경로와 함께 실제 구현 코드를 포함하는 IronPython 스크립트 파일을 지정했습니다.

주의할 것은 여기에 서술하는 모든 경로는 절대 경로로 서술해야 합니다.

서비스 테스트하기

정상적으로 서비스가 설치되었다면 "[SC] CreateService 성공" 이라는 메시지를 볼 수 있습니다. 그리고 서비스의 시작을 위해서 아래와 같이 명령어를 실행하거나 서비스 관리자에서 여러분이 등록한 서비스를 찾아 시작시킵니다.

C:\Windows\system32>net start mysvc
mysvc 서비스를 시작합니다..
mysvc 서비스가 잘 시작되었습니다.

그리고 서비스 중지도 잘 되는지 확인합니다.

C:\Windows\system32>net stop mysvc
mysvc 서비스를 멈춥니다..
mysvc 서비스를 잘 멈추었습니다.

팁 한가지

IronPython을 이용하여 Windows NT 서비스를 만들 수 있으므로, 복잡한 템플릿에 의존하거나 유틸리티를 사용하는 일 없이 기존 서버 로직을 얼마든지 NT 서비스로 옮길 수 있는 것은 참 바람직합니다. 하지만 NT 서비스는 디버깅하기 매우 불리한 구조를 가지고 있는데, 이를 극복할 방법이 없을지 고민을 해보게 됩니다.

Microsoft의 기술 자료 (http://msdn.microsoft.com/ko-kr/library/7a50syb3(v=vs.90).aspx) 의 내용을 참고하여 직접 서비스를 디버깅하는 것이 널리 알려진 방법입니다. 이 방법은 정말 살아있는 실제 서비스를 대상으로 디버깅을 하는 것이므로 보안 권한을 포함한 모든 사항이 가장 실제 운영 환경에 근접한 것입니다.

그러나 좀 더 단순하게 서비스 로직 자체에 대한 디버깅이나 검증이 필요하다면 다른 접근 방법이 더 좋을 수 있습니다. NT 서비스로 만들기에 앞서 보통의 콘솔 응용프로그램으로 띄울 수 있도록 핵심 로직만 발췌해서 가지고 오도록 하면, NT 서비스로 배포하기에 앞서서 핵심 로직 자체만 따로 평가할 수 있으므로 더 유용할 것입니다.

그리고 프로그램에 전달된 인자를 활용하여 -service 같은 문자열이 전달된 것을 확인할 때에만 ServiceBase.Run 메서드를 호출한다면 NT 서비스가 아닌 상태와 NT 서비스인 상태를 동시에 지원할 수 있어 더욱 유용할 것입니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2013. 4. 16. 21:17



전세계 90개국 이상에서 동시에 열리는 Global Windows Azure Bootcamp의 한국 행사인 Windows Azure Lounge가 2013년 4월 27일 토요일 오전 9시부터 오후 6시까지 서울시 강남구 역삼동 (주)세완/세완교육센터에서 열립니다. 행사에 등록하시려면 아래 웹 페이지에 방문하여 주십시오.

행사 등록 신청 바로가기 - http://onoffmix.com/event/14374

행사 등록 신청 바로가기 - http://onoffmix.com/event/14374

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

PaaS2013. 3. 31. 12:58

안녕하세요. Windows Azure MVP 남정현입니다.

Windows Azure를 사용하면서 여러가지 서비스들을 많이 활용할 수 있지만, 역시 Windows Azure Platform을 제일 잘 설명할 수 있는 것은 확장성에 충분히 대응할 수 있는 유연한 아키텍처가 아닐까 싶습니다. 하지만 이러한 아키텍처를 어떻게 디자인하고 설계하고 수정해야 할지 개념을 잡기가 쉽지 않을 수 있는데요, 이러한 개념을 알기 쉽게 설명해주는 유용한 포스터를 하나 공유합니다.

아래 링크를 클릭하시면 포스터 PDF 파일을 내려받으실 수 있습니다. 포스터를 내려받아서 필요한 부분만을 읽어보시거나, 포스터 인쇄를 주문하셔서 잘 보이는 곳에 붙여놓고 활용하시면 좋을 것 같습니다. :-)

Windows Azure Scalability.pdf

감사합니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2013. 2. 1. 11:20

 

top.jpg

Windows Azure 클라우드 서비스를 무료로 체험하실 수 있는 절호의 기회!
온라인 캠프 참여 후, 후기만 작성하면 Microsoft 무선 마우스!! 최우수 후기로 선정되면 XBOX360 Kinect!!!
온라인으로 언제 어디서나 Azure를 만나는 Windows Azure 커뮤니티 온라인 캠프, 지금 바로 참여하세요!
but01.jpg
Windows Azure 커뮤니티 온라인 캠프
참가대상 Windows Azure 체험을 원하시는 커뮤니티 회원
(선착순 20~30명 마감, 중복 참여 가능)
신청방법 Onoffmix에서 참석 신청 이용
참여자발표 온오프믹스 웹 페이지 공지 후 개별 참석 메일 전달
캠프기간 2013년 3월 6일(수) 오후 6시 ~ 2013년 3월 8일(금) 오전 9시
캠프미션 [2기 5차] Windows Azure 웹사이트
Azure 포털에 만들어진 Windows Azure 인스턴스들을 이용해 체험(참석자 대상 메일 전달)
후기응모기간 2013년 3월 10일(일) 24:00까지 후기를 적어 주셔야 합니다.
후기응모방법 Azure 커뮤니티에서 지정한 게시판에 후기를 작성해 주시면 됩니다
- 5차 캠프 후기 작성 위치 - Windows Azure Cafe: [Azure 사용 후기 게시판]
온라인 캠프 진행 형식
메일을 통해
전달된 Microsoft
계정으로
Windows Azure
관리 포털에
로그인
bullet01.jpg
Azure 포털에
기 생성된
다양한
클라우드
서비스
체험
bullet01.jpg
캠프
기간 내에
Windows Azure
서비스를
체험하고
후기 작성!
bullet01.jpg
Microsoft
무선 마우스
받고,
XBOX360 Kinect
최우수 후기
선정 기다리기
gift.jpg
title01.jpg
Windows Azure 동영상 강좌 및 관련 Q&A 게시판을 참고하시면 더 다양하고 즐거운 캠프를 즐기실 수 있습니다.
Windows Azure
동영상 강좌
arrow01.png
 
1기 캠프 사용기
살펴보기
arrow01.png
 
Windows Azure
Q&A
arrow01.png
 
SQL Server 2012
Q&A
arrow01.png
 
Windows Server
2102 Q&A
arrow01.png
 
 
Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2012. 12. 6. 00:25

"Azure Camp @ 인하대 - 리눅스, Windows Azure를 만나다" 세미나를 2012년 12월 6일 오후 2시부터 약 1시간 동안 인하대학교 하이테크 001호에서 진행할 예정입니다. 관심있는 인하대 학우 여러분들의 많은 참여 부탁드립니다.

발표 자료 미리 보기: http://sdrv.ms/TFqg0P

ps. 발표 행사 후에는 경품 추첨을 통해서 4권의 책을 선물로 나누어드릴 예정입니다. :-)

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2012. 10. 21. 21:35

 

데이비드 챠펠(David Chappell) 씨가 10월 22일(월) 저녁 7시, 한국 Microsoft 5층 WIN 세미나 룸에서 윈도우 애저(Windows Azure) 유저 그룹에서 클라우드 플랫폼에 대한 관련한 강연을 합니다.

데이비드 챠펠씨는 Chappell & Associates (http://www.davidchappell.com)의 대표로서 다양한 강연, 저술, 컨설팅을 통해 세계의 많은 IT리더들께서 새로운 기술을 잘 이해하고, 더 나은 결정을 내릴 수 있게 도와 드리고 있습니다. 데이비드는 5개 대륙에 수만명의 IT리더, 아키텍트, 개발자들이 참석하는 수백개의 회의 및 행사에서 기조 연사로 활동하고 있으며, 그의 저술은 다양한 언어로 번역 출판 되어 MIT, ETH 취리히 및 와튼스쿨 등 여러 대학의 과정에서 사용되고 있습니다. 또한 HP, IBM, Microsoft 등 IT 기업의 고객 및 파트너와 내부직원을 대상으로 IT 전반의 컨설팅을 수행하고 있으며, 스탠포드 대학 등에서의 강연 및 유수하고 다양한  IT 관련 출판물에 유명 칼럼리스트로도 활동하고 있습니다.

행사에 참석하기 희망하시는 분들께서는 온오프믹스 행사 홈 페이지 (http://onoffmix.com/event/9962) 에서 접수하여 주시기 바랍니다.

서울 행사 접수하러 가기

ps. 서울에서 진행되는 행사 이외에 기타 예정되어있는 각 국가별/도시별 세미나 일정은 다음과 같습니다. (아래 시간은 미국 시간 기준입니다.)

  • 10월 25일: 싱가폴

  • 10월 29일: 바르샤바 (Microsoft Technology Summit)

  • 10월 30일 ~ 31일: 프라하

  • 11월 5일 ~ 6일: 파리

  • 11월 8일: 런던

  • 11월 9일: 뮌헨

  • 11월 13일: 토론토

  • 11월 15일: 뉴욕

 

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2012. 10. 10. 21:48

안녕하세요. Windows Azure MVP 남정현입니다.

2012년 10월 26일 금요일 아침 10시부터 저녁 5시까지 서울시립대에서 2012 Microsoft MVP Smart Campus Day가 열립니다. 이번 세미나의 주제는 스마트워킹을 위한 Microsoft 관련 제품 및 서비스에 대한 다양한 세미나와 체험을 주제로 열리며, IT 기술 활용에 대한 다양한 사례를 살펴보실 수 있는 내용들로 구성되어있습니다.

참가 신청은 http://onoffmix.com/event/9701 을 통해서 접수하실 수 있습니다.

 

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 비밀댓글입니다

    2012.12.25 09:44 [ ADDR : EDIT/ DEL : REPLY ]

Azure Webinar2012. 9. 26. 22:53

안녕하세요. Windows Azure MVP 남정현입니다.

웹 캐스트 이벤트 홈페이지: http://msdn.microsoft.com/ko-kr/jj720372

2012년 후반에 접어들어서 새롭게 업데이트되는 Windows Azure의 다양한 내용을 미리 살펴보실 수 있도록 웹 캐스트를 촬영하였고 약 20여편의 내용을 포함하는 컬렉션이 Microsoft Showcase에 업로드되었습니다. 2012년 8월 여름까지 발표된 Windows Azure의 각종 서비스들에 대한 내용을 포함하고 있으며, Windows Azure Mobile Service에 대한 부분은 이후 블로그 아티클 등을 통하여 별도로 내용을 전개해볼까 합니다.

  1. [Windows Azure Platform/Microsoft 웹 캐스트] - #1. Windows Azure 개요
  2. [Windows Azure Platform/Microsoft 웹 캐스트] - #2. Windows Azure 웹 사이트 소개
  3. [Windows Azure Platform/Microsoft 웹 캐스트] - #3. Azure에서 실행되는 ASP.NET 웹 사이트 만들기
  4. [Windows Azure Platform/Microsoft 웹 캐스트] - #4. WPNS와 Windows Azure로 알림 서비스 구현하기
  5. [Windows Azure Platform/Microsoft 웹 캐스트] - #5. Windows Azure 미디어 서비스 API 활용하기
  6. [Windows Azure Platform/Microsoft 웹 캐스트] - #6. Windows Azure 클라우드 서비스
  7. [Windows Azure Platform/Microsoft 웹 캐스트] - #7. Cloud Service 프로젝트 처음 만들어보기
  8. [Windows Azure Platform/Microsoft 웹 캐스트] - #8. 기존 ASP.NET 웹 사이트를 Azure로 옮기기
  9. [Windows Azure Platform/Microsoft 웹 캐스트] - #9. Windows Azure 가상 컴퓨터
  10. [Windows Azure Platform/Microsoft 웹 캐스트] - #10. Windows 가상 컴퓨터 소개
  11. [Windows Azure Platform/Microsoft 웹 캐스트] - #11. SQL 데이터베이스 소개
  12. [Windows Azure Platform/Microsoft 웹 캐스트] - #12. SQL 데이터베이스 실습하기
  13. [Windows Azure Platform/Microsoft 웹 캐스트] - #13. Windows Azure 저장소
  14. [Windows Azure Platform/Microsoft 웹 캐스트] - #14. Windows Azure 저장소 실전 예제 살펴보기
  15. [Windows Azure Platform/Microsoft 웹 캐스트] - #15. Windows Azure 서비스 버스
  16. [Windows Azure Platform/Microsoft 웹 캐스트] - #16. 서비스 버스 Queue와 Topic
  17. [Windows Azure Platform/Microsoft 웹 캐스트] - #17. 클레임 기반 인증 구현하기
  18. [Windows Azure Platform/Microsoft 웹 캐스트] - #18. 확장성, 전역성, 높은 가용성을 지닌 앱 만들기
  19. [Windows Azure Platform/Microsoft 웹 캐스트] - #19. 캐시 클러스터를 이용하여 신축성있는 클라우드 서비스 만들기
  20. [Windows Azure Platform/Microsoft 웹 캐스트] - #20. 트래픽 관리자를 이용한 24x365 글로벌 서비스 구축하기

감사합니다.

 

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 좋아요!

    2012.10.28 00:15 신고 [ ADDR : EDIT/ DEL : REPLY ]

PaaS2012. 8. 5. 20:18

지난번 글에 이어서 Access Control을 실제로 ASP.NET 웹 사이트에 사용하기 위한 방법을 살펴보도록 하겠습니다. Access Control은 이제 독립적인 Building Block 중 하나로 언급되고, AppFabric이라는 브랜드 네임은 더 이상 붙지 않습니다.

주: 글 작성의 편의상 ACS 혹은 액세스 제어 서비스라는 말을 혼용해서 사용하려고 합니다.

Access Control 서비스 신청하기

Access Control 서비스는 2012년 여름 현재 아직 새 포털 사이트 (manage.windowsazure.com)에서 프로비져닝하거나 관리할 수 있는 UI가 없습니다. 그러나 빠른 시일 내에 추가가 될 것으로 예상되며, 현재는 실버라이트 기반의 포털 사이트 (windows.azure.com)에서 프로비져닝하고 관리할 수 있습니다.

로그인하고 난 다음에 화면 좌측 하단의 "서비스 버스, 액세스 제어 및 캐시" 탭을 클릭합니다. 사용중인 서비스가 있다면 아래와 같이 나타날 수 있으며, 다른 서비스가 없다면 상단 리본 메뉴에서 "새로 만들기" 버튼을 클릭합니다.

이름에서 알 수 있듯이 네임스페이스 아래에 다수의 서비스가 연결되어있습니다. 관련성이 떨어져보이긴 하지만 캐시도 네임스페이스 아래에 배치하여 프로비져닝할 수 있도록 하고 있습니다. 여기서 한 가지 유의하실 것이 하나 있는데, 실제로 사용하려는 서비스에만 체크해야 불필요한 지출이 발생하지 않습니다. 그리고 이곳의 캐시는 최근 소개된 Dedicated Cache와는 다른 것으로 고성능을 전제로 하지만 상대적으로 작은 용량, 높은 비용이 특징입니다.

서비스 버스 신청 후에는 내부 활성화 및 프로비져닝 절차가 복잡한 것으로 추정되고, 이 때문인지 다른 클라우드 서비스보다 다소 시간이 많이 걸립니다. 완전히 사용할 수 있는 상태가 되면 아래 그림과 같이 항목이 나타나며, 특별히 액세스 제어를 신청했다면 상단 리본 메뉴의 액세스 제어 서비스 버튼이 활성화됩니다.

NOTE: 아마 더 이상 그런 일은 없겠지만 ACSV1으로 신청해서 사용 중인 계정을 아직도 가지고 계시다면, ACSV2로 업그레이드를 따로 요청하셔야 합니다. (아마 지금즈음이면 어떤 형태로든 ACSV2 기반으로 마이그레이션되었을 것으로 봅니다.)

ACS 관리하기

ACS 포털은 각 서비스 노드마다 따로 제공되는 것으로 위의 그림에서 액세스 제어 서비스 버튼을 클릭하면 아래 그림과 같이 새 웹 페이지가 나타날 것입니다. 접속 주소의 패턴은 https://[네임스페이스 이름].accesscontrol.windows.net/v2/mgmt/web 과 같습니다. 

그런데 실버라이트 포털에서 그냥 나와버려서 당황하셨을 수도 있는데, 걱정하지 않으셔도 됩니다. 로그인 상태는 지금 보시는 포털과 실버라이트 포털 사이에 모두 세션이 일치된 상태로 계속 유지가 되기 때문에 (즉 SSO를 구현하고 있기 때문에) 사용에 전혀 지장이 없습니다.

ACS는 여러분이 어떻게 설정하는가에 따라 전적으로 동작이 달라지게 되겠지만 보통은 (1) ID 공급자를 지정하여 ACS 서비스가 여러분의 응용프로그램을 위하여 어떤 ID 공급자와 계약을 맺을 것인지 정의하고, (2) ACS에 여러분의 응용프로그램의 속성을 등록하여 상호 작용에 필요한 정보를 사전에 관리하고, (3) ID 공급자와 응용프로그램 사이에 주고 받을 데이터의 내용을 관리하는 것으로 설정을 다룹니다. 그리고 지금 이야기한 단계 모두 ACS 사이트의 자동 생성 기능을 사용하면 어렵지 않게 초기화할 수 있습니다. 이번 블로그 글에서는 ACS 첫 설정에 대한 내용을 살펴보려고 합니다.

ID 공급자 추가하기

당연한 이야기이지만 Windows Azure는 Windows Live ID (혹은 앞으로는 Microsoft ID라고 불리겠군요)를 기반으로 모든 서비스 프로비저닝이 이루어지므로 기본적, 종속적, 필수적으로 ACS의 기본 ID 공급자로 자동 구성되어있으며 동시에 뺄 수 없도록 보호되어있습니다.

Windows Live ID 공급자를 제외하면 웹 관리 UI 상으로는 아래 그림과 같은 종류의 ID 공급자들을 지원합니다.

별 다른 노력 없이 쉽게 추가할 수 있는 공급자 종류로 Google과 Yahoo!가 있고, 기존의 인프라가 선행되어야 하는 공급자 종류로 Facebook와 WS-Federation ID 체계를 지원하는 공급자를 택할 수 있게 되어있습니다. 만약 여러분이 작성하려는 웹 서비스가 소셜 네트워크와 친화적일 필요가 있다면 ACS를 사용해서 한 번에 Facebook과 Google, Yahoo!를 인증 공급자로 택하여 SSO를 자동으로 구현할 수 있는 것입니다.

저는 여기서 간단하게 Google을 ID 공급자로 등록해보도록 하겠습니다. 기회가 되면 Facebook을 활용하는 것도 글로 다루어보도록 하겠습니다.

로그인 페이지 상에 표시할 상세 정보를 지정할 수 있는 페이지가 보입니다. 특별한 설정 없이 저장 버튼을 눌러도 무방하므로 계속 진행합니다.

새 ID 공급자와 ACS 간의 연동이 완료되었습니다. 계속해서 신뢰 당사자 응용프로그램 등록 절차를 진행합니다.

응용프로그램 정보 등록하기

ACS를 실제로 사용하려는 웹 사이트의 정보를 등록해야 합니다. 위의 화면 상 왼쪽 메뉴에서 "신뢰 당사자 응용프로그램" 메뉴를 클릭하고 추가 링크를 클릭하면 아래 그림과 같이 등록 절차가 시작됩니다.

요구하는 항목의 수가 많아 부담스러운 페이지이긴 하나 모두 의미가 있는 항목들이므로 하나씩 찬찬히 살펴보면서 진행해야 합니다.

  • 이름: 관리 도구나 기타 메타데이터 상에서 표시할 알아보기 쉬운 이름을 입력하며, 보통은 도메인 이름 약칭을 적어주면 유용합니다.
  • 모드: 수동으로 설정 입력에 체크합니다.
  • 영역: ACS로 인증을 거친 이후에 실제로 전달받은 토큰이 쓰일 수 있는 URL 경로를 지정합니다. 사이트 전체를 ACS 인증 체제로 확정하려면 그냥 도메인을 포함하여 루트 URL을 지정하고, 그렇지 않은 경우에는 웹 서버 설정과 맞추어 지정해야 합니다. 동일 도메인이라 할지라도 이 영역을 벗어나면 먼저 인증하여 받은 토큰은 자동으로 무력화됩니다.
  • 반환 URL: XML 형태로 넘어오는 보안 토큰값을 실제로 받아서 처리할 URL을 지정합니다. 이 URL을 정확히 지정하여 로그인해서 넘어오는 어떤 임의의 사용자가 실제 여러분이 가지고 있는 사용자 DB와 일치하는 동일 사용자인지 피아식별하고 판정할 수 있습니다.
  • 오류 URL: 옵션 항목이며, 오류가 발생했을 때 사용자가 당황하지 않도록 안내문구를 표시해줄 URL을 지정하여 서비스에 대한 클레임을 최소화하는데 활용할 수 있습니다.
  • (계속)

  • 토큰 형식: 토큰 데이터를 ACS에서 응용프로그램으로 넘길 때 어떤 형태로 패키징해서 보낼 것인지를 결정하는 부분으로, 이번 강좌에서 사용하려는 프레임워크인 Windows Identity Foundation을 고려하여 SAML 2.0으로 지정합니다. 만약 다른 프레임워크를 사용하려는 경우 적절한 포맷을 선택합니다.
  • 토큰 암호화 정책: ACS에서 토큰을 넘겨받을 때 인증서와 키 값을 이용하여 토큰을 암호화해서 넘겨받아야 하는 경우가 있을 때 암호화 사용을 선택합니다. 여기서는 암호화를 필수적으로 사용해야 하는 경우가 아니므로 암호화 정책을 기본값으로 설정하겠습니다.
  • 토큰 수명: 토큰이 발행되고 난 뒤에 만료되기까지의 기간을 설정합니다. 초 단위의 값이며 기본값은 10분입니다.
  • ID 공급자: 앞 단계에서 등록한 공급자들 중에서 지금 등록하려는 응용프로그램과 연결하려는 ID 공급자를 따로 지정할 수 있습니다. 보통은 네임스페이스와 연결된 모든 ID 공급자를 선택할 수 있지만 편의에 따라 설정을 바꿀 수 있습니다.
  • 규칙 그룹: ID 공급자와 이 응용프로그램 사이에 어떤 정보를 주고 받을 것인지에 대한 구체적인 설정을 보관하는 규칙 그룹을 선택할 수 있습니다. 이미 만들어진 규칙 그룹을 고르거나 새로운 규칙 그룹을 만들어 독립적인 설정을 구성할 수 있습니다.
  • 토큰 서명: 토큰 서명 시 사용하려는 인증서를 고를 수 있는데, 자체 제공되는 ACS용 인증서를 이용하거나 여러분이 기존에 소유하고 있는 인증서를 대신 지정할 수 있습니다. 선택 옵션에 따라 하단에 새 옵션 필드가 하나 더 늘어날 수 있습니다.
  • 인증서: 토큰 서명에 사용할 인증서를 직접 지정하도록 옵션을 변경하면 나타나는 옵션 필드로 X.509 인증서와 연결되어있는, 비밀 키를 포함하는 PFX 파일과 비밀 키 값을 지정해야 합니다.

ACS의 인증은 사이트 도메인 경계를 넘나드는 형태로 진행되기 때문에, 위의 옵션에서 잠시 나왔던 것 처럼 localhost 주소가 등록하려는 Application의 실제 주소가 될 수 있습니다. 달리 표현하면, VPN 환경과 같이 외부와 격리되어있으면서 실제 VPN 네트워크 안에 참가해야만 유효한 특별한 형태의 네트워크일지라도 ACS나 실제 ID 공급자와 통신하는데 문제가 없다면 좀 더 견고한 인트라넷-인터넷 간 상호 인증을 구현하는 것도 얼마든지 가능합니다. 그리고 localhost 주소를 지원하므로 당연히 Visual Studio나 Eclipse 등의 개발 도구 등으로 만든 Ad-hoc 서버의 주소를 넣어서 ACS 기능을 테스트하는 것도 당연히 가능합니다.

저의 경우에는 테스트를 위하여 Visual Web Developer 2010 Express Edition을 이용하여 ASP.NET MVC 프로젝트를 만들고 이 주소를 Application으로 등록하기로 하였습니다. Visual Studio 개발 서버나 IIS Express 모두 Ad-hoc 서버이므로 정확한 포트 번호의 확인을 위해서 만든 웹 프로젝트의 속성에서 포트 번호를 확인해야 합니다.

제가 테스트를 위해서 확정해야 하는 주소는 http://localhost:50086 이군요. 이 주소를 바탕으로 신뢰 응용프로그램 정보에 다음과 같이 정보를 등록하려고 합니다.

  • 이름: MyApp
  • 수동으로 설정 입력
  • 영역, 반환 URL, 오류 페이지 주소: http://localhost:50086/
  • ID 공급자: Google 및 Windows Live ID
  • 기타 항목은 모두 기본값으로 설정합니다.

저장 버튼을 누른 다음에는 아래와 같이 응용프로그램 정보가 새로 등록된 것을 볼 수 있습니다.

이제 규칙 그룹의 세부 설정을 완성해야 합니다.

규칙 그룹 구성하기

규칙 그룹 링크를 화면 왼쪽에서 클릭하면 아래 그림과 같이 응용프로그램 등록 과정에서 자동으로 추가된 항목이 나타날 것입니다. 규칙 그룹 이름을 클릭하여 상세 정보를 확인합니다.

규칙 그룹의 상세 내역을 확인해보면 처음 만들어진 그룹이기 때문에 아무것도 등록되어있지 않은 것을 볼 수 있습니다. 규칙 그룹의 이름 같은 부분들은 역시 이곳에서 편집이 가능하고, 어떤 규칙 그룹과 앱이 연결되어있는지도 한 번에 파악할 수 있습니다.

하단의 생성 링크를 클릭하여 자동으로 ID 공급자와 응용프로그램들 사이에 필요한 모든 규칙을 한 번에 만들도록 구성할 수 있습니다. ID 공급자들이 ACS에 제안하는 기본적인 옵션들을 한번에 만들어주므로 일반적인 연동을 위해서는 보통 이 작업 한 번으로 필요한 모든 기능을 자동으로 구성할 수 있게 되어있습니다.

규칙들이 아래 그림과 같이 등록된 것을 볼 수 있습니다. ID 공급자별로 제공할 수 있는 클레임과 클레임의 출처, 그리고 간단한 설명이 열거되어있습니다.

Google의 경우 사용자의 Google 계정과 연결된 메일 주소, 사용자 이름, 그리고 고유 식별자를 제공하며, Windows Live ID의 경우에는 다른 정보 없이 최소한의 식별자만을 제공하고 있습니다. 이후에 다시 살펴보겠지만 사실 모든 ID 공급자들이 친절하게 e-mail 주소를 공개한다는 보장은 할 수 없습니다. 그렇기 때문에 파악이 쉬운 e-mail 주소와 같은 클레임을 직접 사용하려고 하기 보다는 고유 ID 값을 근거로 새로운 프로필을 만들도록 권하는 방식이 ACS 사용 시에는 더 좋은 방법이라고 할 수 있습니다.

마무리

이제 기본적인 구성이 모두 완료되었습니다. 실제 응용프로그램에서 ACS와 연동하여 SSO를 어떻게 구현할 수 있는지 그 내용을 다음번 강좌때 올리도록 하겠습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

IaaS2012. 8. 2. 10:19

안녕하세요. Windows Azure MVP 남정현입니다. 오늘은 Windows Azure 관리자 포탈에 대해서 한 가지 이야기를 드릴까 합니다. 현재 Windows Azure는 Preview 버전의 포탈과 Retail 버전의 포탈로 나누어서 서비스가 제공되는 상황인데, 그렇다보니 어디를 어떻게 들어가서 이용해야 하는지 햇갈릴만큼 다소 복잡한 상태입니다.

일단 두 포탈 사이에 가장 큰 기술적 차이는, Retail 버전의 경우 Silverlight로 서비스를 제공하는 것이고 접속 주소는 windows.azure.com 입니다. 그리고 Preview 버전은 HTML5로 서비스를 제공하는 것이며 manage.windowsazure.com이 접속 주소입니다. 양쪽 사이트의 모습은 아래 그림과 같이 차이가 납니다.

Retail 버전의 관리자 포탈 (windows.azure.com으로 접속)

Preview 버전의 관리자 포탈 (manage.windowsazure.com으로 접속) 

Preview Portal의 경우 계속해서 기능을 개발 중에 있으며, Azure Web Site, Azure Virtual Machine, Azure Media Service에 대한 관리 및 프로비져닝 기능을 제공합니다. 반면 Service Bus나 Access Control과 같은 Cloud Service와 연계되는 고급 Building Block 서비스들은 Preview Portal 아닌 Retail Portal로 가서 프로비져닝하거나 관리해야 합니다. 이후에는 모든 서비스들이 새 포탈쪽으로 제공이 될 예정에 있습니다.

만약 실무에서 SLA 계약을 지켜줄 수 있는 서비스들로만 안전하게 Windows Azure를 사용하기 원하신다면, Preview Portal을 통해서 상품을 프로비져닝하지는 마시고, 새 업데이트 소식이 나오기 전까지는 windows.azure.com에서만 서비스를 사용하시는 것이 정확합니다. 포탈을 포함하여 Azure Web Site, Azure Virtual Machine, Azure Media Service, Azure Virtual Network는 모두 Preview 상품이기 때문에 아직 완전한 상태는 아닙니다.

이 외에도 SQL Database (구 SQL Azure), Access Control 또한 자체 포탈을 현재는 별도로 운영을 하고 있으므로 세부적인 설정은 메인 관리 포탈을 통해서 접근하고 관리할 수 있으므로 참고하시면 도움이 될 것입니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

미디어2012. 5. 21. 20:46

 

 

안녕하세요. 남정현입니다. 이번에 출간한 책은 웹 매트릭스에 대한 실전 사용 가이드 및 예제 중심의 도서인 "최신 웹 사이트 & 웹 앱 개발을 위한 웹 매트릭스" 도서입니다. 웹 매트릭스, ASP.NET, Razor View Engine을 사용하여 웹 프로그래밍을 하는 방법을 상세히 설명하고, HTML5에 대한 다양한 내용을 예제와 함께 살펴볼 수 있는 책입니다.

이번 책은 한국기술교육대학교에 재학 중이신 허찬 (http://hahaheo.com/, Twitter: @hahaheo)님과 함께 저술한 책으로, 허찬님께서는 Imagine Cup 2011 USA Windows Phone 7 Challange 부문에서도 전세계 2위를 수상한 뛰어난 IT 기술 전문가입니다. 책을 쓰는 과정에서 여러모로 우여곡절도 많았고 스케줄 맞추기도 쉽지 않았지만 끝까지 같이 책을 저술하여 펴낼 수 있도록 도와주신 것에 큰 감사의 인사를 드리며, 더불어서 두 사람의 여러가지 난해한 스케줄과 작업 상의 문제를 해결해주시고 끝까지 지원해주신 홍성근 팀장님께도 감사의 인사를 드립니다.

책에 대한 추천사

기업에게는 변화의 순간이란 것이 있습니다. 제가 마이크로소프트에 있던 시절도 PC에서 웹으로 제품의 체질이 넘어 가려 하던 변화의 순간이었습니다. 그러한 변화가 성공적이었는지 평가하는 것은 후일의 몫이지만, 모든 변화의 과정은 현장에서 리얼타임으로 목격할 수도 또 공동체와 공유도 가능한 일이기에 늘 중요합니다. 웹매트릭스라는 웹 개발 툴은 마이크로소프트가 근래에 겪은 변화 과정의 일환이자, 일종의 상징이기도 했습니다. 저자 허찬씨는 당시부터 여러 커뮤니티 활동에서 리더십을 발휘하며, 그 변화의 긍정적 확산에 늘 주역으로 활동해 왔습니다. 웹매트릭스 서적의 한글판이 허찬씨의 노력에 의해 나오는 일은 그런 면에서 의미가 크다 할 수 있습니다. Razor가 가져 온 경쾌한 문법에 기존의 ASP.NET의 상식이 깨진 순간을 아직도 기억합니다. 그 기분 좋은 각성을 여러분도 본서와 함께 느낄 수 있기 바랍니다.
- 김국현 / editoy.com 설립자 및 개발자

단순히 정보 공유와 하이퍼링크로 대변되던 웹은 N-screen 시대를 맞아 바야흐로 중심 플랫폼이 되고 있습니다. 이런 대세에 맞춰 Microsoft에서는 누구나 웹 사이트를 제작할 수 있도록 서버와 데이터베이스, 심지어 오픈 소스 CMS까지 포함되어 있는 WebMatrix를 선보였습니다. 차세대 웹 표준 기술인 HTML5까지 끌어안고 있는 WebMatrix. 웹 개발에 첫 발을 내딛는 사람들이라면 이 책을 통해 가장 빨리 “웹”이라는 신세계와 만날 수 있으리라 믿습니다.
- 고경희 / IE MVP

책에 대한 정보

책을 구입할 수 있는 곳

감사합니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 축하합니다!!

    2012.05.23 17:48 신고 [ ADDR : EDIT/ DEL : REPLY ]
  2. 오.. 최근에 Windows 8과 웹 개발에 눈을 돌리고 있는데.. 한번 사서 꼭 읽어보겠습니다!

    2012.09.17 23:45 신고 [ ADDR : EDIT/ DEL : REPLY ]

이벤트2012. 3. 28. 01:39

안녕하세요. Windows Azure MVP 남정현입니다.

올해 첫 세미나는 Microsoft MVP 지식 나눔 강연에서 인사드리는 것으로 시작하게 되었습니다. 이번 지식 나눔 강연 세미나는 Imagine Cup 2012 소프트웨어 디자인 한국 대표 선발전과 맞물려서 인천대학교 캠퍼스 내에서 진행되는 특별한 행사이며, 박찬 MVP님, 권순만 MVP님, 박성기 MVP님, 고재관 MVP님, 고경희 MVP님과 저를 포함하여 2012년 3월 29일 목요일 하루 동안 공동 세미나를 엽니다. 자세한 행사 목차는 아래 포스터 이미지를 참고하여 주십시오.

제가 진행하는 세션에서는 Windows Azure를 활용한 Cloud 개발 사례를 소개합니다. 발표 자료는 아래 내용과 같습니다.

감사합니다. :-)

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

기술 소식2012. 1. 5. 09:59

Windows Azure에서 리눅스를 게스트 OS로 2012년 중에 지원을 추가할 예정입니다.

Microsoft 전문 테크니컬 칼럼니스트인 Mary-Jo Foley의 기사에 따르면, Microsoft가 2012년 중에 리눅스를 실행할 수 있도록 Windows Azure 서비스를 업데이트할 예정이라고 합니다. 워낙에 특이하고 걸출한 토픽인지라 이 기사 자체가 잘못된 것이 아니냐는 반문을 살 정도로 뜨거운 이슈인 것 같습니다. :-)

현재 나와있는 Web Role, Worker Role은 Visual Studio를 이용하여 개발자가 Application Instance를 패키징해서 Windows Azure에 배포할 때 이것을 VM으로 변환하여 Windows Server 2008이나 Windows Server 2008 R2에서 실행할 수 있도록 바꾸고 있고, 작년에 나온 VM Role은 여기서 좀 더 나아가서 VHD 안에 Windows Server 2008 R2를 설치하고 VHD 단위로 VM을 만들 수 있도록 하는 기능을 내놓았습니다. 그러나 지금까지 나온 것은 모두 한 가지 기술적 특징이 있는데, 실행 중인 VM이 예고 없이 자동으로 재시작되거나 초기화될 수 있다는 점입니다. 그래서 Windows Azure 기반으로 서비스를 개발할 때에는 VM 안에 상태를 보관하는 방식 대신 Stateless/Remote Storage를 활용하는 전략을 택해야 했었습니다.

하지만 Linux VM에 대한 지원과 더불어 장기 실행 VM이 Windows Server에 대해서도 같이 제공되어 Amazon Web Service의 Elastic Cloud Computing 서비스와 같은 형태의 VM Hosting을 Windows Azure에서도 사용할 수 있을 것으로 보입니다. 현재 예상되는 리눅스 배포판으로는 CentOS, RHEL, Suse Linux 등 기존의 Hyper-V 스택에서 원활하게 구동 가능한 상용 리눅스 배포판 대부분이 여기에 포함될 것으로 보입니다.

지금 소개하는 기능은 CTP 버전으로 올해 봄 (2012년 봄) 시즌에 새로 런칭될 것으로 보입니다. 그리고 이 외에도 SharePoint 서버와 SQL Server를 탑재한 가상 머신 이미지의 배포도 같이 지원함으로서 SQL Azure 특유의 기술적 한계를 보완하고 Private Domain에서 사용 가능한 SQL Server를 Windows Azure에서도 이용할 수 있을 것으로 보입니다.

좀 더 자세한 내용은 http://www.zdnet.com/blog/microsoft/microsoft-to-enable-linux-on-its-windows-azure-cloud-in-2012/11508 에서 보실 수 있습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

기술 소식2011. 9. 27. 13:46

Windows Azure Platform의 핵심 구성 요소들 중 하나인 Windows Azure Storage가 이번 BUILD Windows 2011 행사 이튿날에 발표한 기능 중에는 Windows Azure Storage의 향상에 관한 내용이 있었는데, 그 동안 Windows Azure Storage에 대해서 바라던 많은 요구 사항들이 이번에도 성실하게 반영되었습니다. 그 중에서도 큰 맥락을 나누면 같은 지역 내의 다른 데이터센터로 Storage의 데이터를 복제할 수 있는 Geo-Replication 기능과, BLOB, Table, Queue 스토리지의 사용법 개선에 따른 성능 향상이 있습니다.

Geo-Replication

이제 Windows Azure Storage 역시 다른 Cloud Platform들과 마찬가지로 재해 복구 기능을 가질 수 있게 되었습니다. 기존에는 Geo-Replication을 전적으로 이용자의 재량으로 해야했고, 비용 투자가 필요했던 부분이지만 이 기능을 네이티브하게 지원할 수 있게 되었기 때문에 더 안전한 서비스 사용이 가능해지게 되었습니다. Geo-Replication은 Windows Azure BLOB과 Table 스토리지에 한정되는 내용으로 예를 들어 북유럽과 서유럽 사이, 동아시아와 동남아시아 사이의 데이터센터 간에 데이터 복제를 수행하여 Redundancy를 확보하는 전략입니다. 그러나 아시아와 유럽 간 복제는 수행하지 않으며, 모든 작업은 비동기적으로 수행되므로 현재 서비스에서 변경되거나 영향을 주는 부분은 없다고 합니다. 

새 BLOB, Table 및 Queue 스토리지의 기능들

2011-08-18 버전의 REST API에서는 기존에 커뮤니티로부터 많은 요청이 있었던 기능들을 제공하는데, 다음과

  • Table Upsert: 한 번의 요청으로 이미 존재하는 엔터티에 대해서는 업데이트를, 존재하지 않는 엔터티에 대해서는 삽입을 조건부로 처리할 수 있는 기능입니다.
  • Projection Query 지원: 엔터티의 하위 집합을 만들 수 있는 기능으로 LINQ to Table Storage 등에 직접적인 영향을 주게 될 가장 큰 기능입니다. 이전에는 Projection Query를 수행할 수 없었기 때문에 전체 엔터티 컬렉션을 서버로부터 우선 다운로드한 다음 이것을 메모리에서 정리하는 비효율적인 방식을 사용했지만 이 작업을 서버 차원에서 직접 수행할 수 있게 됨에 따라 대역폭 사용량을 줄이고 쿼리 성능을 더 업그레이드할 수 있게 되었습니다.
  • 향상된 BLOB HTTP 헤더 지원: BLOB 차원의 동영상 스트리밍이 가능해지고, 다운로드 가속기 등으로 이어받는 작업이 가능해졌습니다.
  • 큐 메시지 업데이트: 큐에 삽입한 메시지의 내용을 편집하거나, 유효 기한을 연장하여 큐 자체의 항목을 엔터티로 취급할 수 있게 하고 길게 소요되는 작업에 대한 이벤트 처리를 큐 스토리지를 통해서 할 수 있도록 기능을 보강했습니다.
  • 큐 메시지 삽입 시 대기 시간 지정: 큐에 메시지를 삽입한 직후에 다른 큐 메시지 수신처에서 내용을 보이게 하지 않고, 지정된 기간 동안 내용을 숨기도록 삽입할 수 있습니d

그 외에 좀 더 자세한 정보는 아래 블로그 문서들을 참고하십시오.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

PaaS2011. 9. 12. 23:32

요즈음 클라우드 서비스들을 이용하다보면, Windows 서버 운영체제를 통해서 확장성있는 클라우드를 만들고자 하는 경우가 자주 있습니다. 일반적인 웹 사이트를 구축할 때에도 마찬가지이고, 당연히 KT UCLOUD나 Amazon과 같은 환경에서도 같은 노력이 뒷받침이 되어야 하지요. 그리고 제가 주 전공으로 하고 있는 Windows Azure 역시, 첫 배포 때에는 간과하기 쉬운 점이 바로 로드 밸런싱 환경이라는 점입니다.

이러한 로드밸런싱 환경을 만들때에는, 이전에 구축해본 경험이 없는 관리자가 개발자 입장에서는 상당히 어려운 문제에 봉착하게 될 가능성이 많습니다. 특히 요즈음 웹 환경에서는 당연하게 사용하는 세션이나 쿠키에 관련된 설정들이 로드밸런싱 환경에서 기대했던 것과 다르게 동작해서 좌절하는 경험을 많이들 하실텐데요, 제가 오늘 블로그에 올리는 것은 ASP.NET에 관한, 그리고 IIS 7에 관한 내용입니다. (PHP나 JSP 개발자분들께서도 공감하실 수 있는 부분이 있을 것입니다.)

로드밸런싱 환경을 잘 알고 구축할 수 있다면, 앞으로 나오게될 어떤 종류의 클라우드 서비스이든 관계없이 문제를 정확하게 해결할 수 있을 것입니다. 사실 클라우드 기반의 웹 서비스는 달리 표현하면, 기본 골자는 로드밸런싱에 기반을 두고 있는 것이고, 그 이후의 확장성 전략을 클라우드 솔루션으로 채우는 것과 같다고 말할 수 있습니다. (어떤 뼈대를 사용할 것인지는 전적으로 여러분들의 선택에 달린 것입니다.)

로드 밸런싱 환경이란?

로드 밸런싱 기술 자체는 상당히 오래된 것입니다. 이름에서 알 수 있듯이, 몰려오는 트래픽을 내부적으로 분산하여 특정 서버 컴퓨터로 연결이 몰려 서비스가 사용 불가 상태로 빠지는 것을 "지연"시키거나 "완화"시키는 것에 목적이 있습니다. 로드 밸런싱의 기술적 개념도는 다음과 같습니다. (이미지 출처: http://msdn.microsoft.com/en-us/library/ff650667.aspx)

다양한 상황에서 로드밸런싱이 쓰이겠지만 가장 일반적으로는 웹 환경에서 많이 쓰입니다. 연결을 오래 유지할 필요가 없으면서도, 짧은 시간 내에 빠른 연결 회전을 보이는 웹 프로토콜에서 가장 중요한 것은 바로 신속성인데, 분산 처리를 하지 않는 경우에는 필연적으로 서버 컴퓨터가 받아들일 수 있는 동시 연결 한계치에 금방 치닫게 됩니다. 그러나 로드 밸런싱을 정확히 사용하면 이러한 한계치에 치닫게 되는 속도가 로드 밸런싱에 참가하는 컴퓨터의 댓수만큼 반비례하게 됩니다. 그리고 이 때 하나의 웹 사이트를 위한 로드 밸런싱 서비스에 멤버로 참여하는 서버 컴퓨터들을 묶어서 "웹 팜"이라고 정의를 하는 것이지요. 더 일반적으로는 "서버 팜"이라고도 합니다.

잠시 다른 이야기로 넘어가자면, 요즈음 대두되는 클라우드 컴퓨팅은 관리 측면에서 봤을 때, 충분한 대역폭을 보장하는 연결과 매우 뛰어난 성능을 가진 로드 밸런서를 이용하여 연결을 분산하는 작업을 수행하는 것입니다. 그리고 웹 팜 안에 참여하는 컴퓨터의 유형에 있어서는 이전과 다른 점이 하나 있는데, 마치 구름과 같이 수축과 팽창을 자유자재로 한다는 것입니다. 물론 이런 수축과 팽창이 가능함은 내부적으로 가상화 솔루션을 이용했다거나 여기에 대응할 수 있는 알고리즘을 사용했다는 가정이 깔려있는 것입니다.

정말 완벽하고 정확하게 구축했다면, 적은 전원이나 자원 공급으로도 충분히 웹 팜이 유지가 될 수도 있고, 필요하다면 웹 팜의 크기가 엄청나게 커질 수도 있겠지요. 이걸 여러분이 관리하신다면 프라이빗 클라우드, 신뢰할 수 있는 IT 기업이 관리한다면 퍼블릭 클라우드가 된다고 보실 수 있겠습니다. 그러나, 클라우드 컴퓨팅이 만능약처럼 들릴 수 있는 부분이 있지만 정확히 알아야 할 것은 클라우드 컴퓨팅 역시 이 로드 밸런싱을 기초로 만들어지는 것이고, 여러분이 운영할 수 있는 한계에까지 트래픽이 몰리거나, 이런 일을 하는 IT 업체에게 지불할 수 있는 재정의 한계에까지 트래픽이 몰린다면 이것이 여러분이 생각할 수 있는 클라우드의 한계입니다. 무제한이라고 해서 값이 저렴하거나 무료에 수렴하는게 아님을 명확히 이해하고 있어야 합니다.

웹 로드 밸런싱을 위한 이야기

다시 본론으로 돌아와서, 웹을 로드 밸런싱할 수 있으려면 무엇을 검토해야 할까요? 가장 중요한 것은 웹 서버에 참여하는 각각의 컴퓨터 자체에는 "절대로" 컴퓨터의 고유한 정보를 가지고 있으면 안된다는 점입니다. 매우 단순한 이야기같지만 이러한 원칙을 지키지 않도록 설계되어있는 것이 지금 이 시점까지의 서버 컴퓨팅 기술들의 대다수의 원칙입니다. 간단한 예를 들어볼까요?

여러분이 일상적으로 사용하는, 웹을 통한 파일 업로드 기능을 담당하는 간단한 웹 앱이 있다고 가정해 보겠습니다. 이 웹 앱은 서버가 한 대 일때에는 참 쉽고 빠르게 설치해서 쓸 수 있었습니다. 당연히, 설치를 잘 했다면, 사용자가 웹 페이지를 방문해서 파일을 업로드하면 웹 서버가 그것을 알아보고 파일을 회수해서 하드 디스크 어딘가에 저장하겠지요. 그러나 시간이 지나서 이 웹 앱의 기능을 업그레이드하고 좀 더 많은 사용자들이 파일을 저장하고 다운로드할 수 있도록 만들어보고자 해서 로드 밸런싱 환경을 구축하여 베타 테스트를 시작했습니다. 그런데 어떤 문제들이 생겼을까요?

앞서 이야기한 기술적인 특성때문에, 사용자들은 분명히 조금전까지 파일을 업로드했었는데 페이지를 다시 와서보니 파일이 업로드되지 않은 상태로 페이지가 나와서 혼란스러워합니다. 혹은 파일을 어디로 빼돌린거냐며 분노하는 사람들도 있구요. 그래서 몇 번 F5키를 누르다보면 "어라?"하고 놀라게 됩니다. 조금 전에 업로드했던 파일이 다시 나타나니까요. 그러고나서 그 파일을 다운로드하려고 링크를 클릭하면 이번엔 또 다시 404 오류를 만납니다. 이제 사용자들은 이 서비스에 대해서 대단한 분노와 원성을 쏟아낼 것입니다. 서비스 상태에도 일관성이 없을 뿐 아니라 불안정한것 같다. 믿을 수 없다면서요.

이것이 일선 IT 현장에서 로드 밸런싱이나 클라우드를 처음 접목했을 때 겪는 "가장 흔하고 일반적인 장애"입니다. 더 안타까운 것은, 이것을 신 기술에 의한 책임으로 회피하고 문제시하는 것입니다. 문제의 본질을 정확히 알고 있다면 이렇게 말하는 것이 왜 잘못인지도 금방 알 수 있을 것입니다.

여기서 든 예제처럼, 이 웹 앱의 문제는 단순히 업로드한 파일을 자신의 컴퓨터에 저장하려고 했다는 데에 문제가 있습니다. 로드 밸런싱 멤버로 참여하는 컴퓨터가 자신의 상태를 중요하게 여기면, 다음번에 이어받는 다른 서버 컴퓨터의 입장에서는 이전에 그 컴퓨터가 무엇을 했는지 알 길이 없습니다. 그저, 찾고자 하는 내용이 없음을 이야기하는 수 밖에 없습니다. 이런 상황이 반복되면서 서비스 전체는 들어올때와 나갈때가 전혀 다른, 일관성이 없고 이상한 서비스가 되는 것입니다.

이 문제를 해결하기 위하여 어떻게 수정해야 할까요? 답은 간단합니다. 파일 저장소를 로드 밸런싱 멤버 컴퓨터 내부가 아닌, 여러 멤버 컴퓨터들이 같이 이용할 수 있는 공용 저장소로 바꾸는 것입니다. 가장 간단한 방법은 네트워크 UNC 경로로 이용할 수 있는 스토리지가 있을 수 있습니다.

여기서 궁금한 점이 하나 더 있는데, 그렇다면 로드 밸런싱에 의하여 애써 분산한 서비스가 다시 모이는 것이 아니냐고 반문할 수도 있습니다. 그런데 사실, 생각외로 사용자들이나 웹 크롤러와 같이 인터넷 상에서 발생하는 별 뜻없이 바쁘게 만드는 다양한 유형의 트래픽을 웹 팜 수준에서 한 번은 로드 밸런싱을 해주는 것 만으로도 실제 스토리지에 대한 요구 사항은 획기적으로 감소한다는 점입니다. 거기다, 역할 분담도 정확히 할 수 있으며 스토리지 자체에 대한 요구 사항이 폭증하는 것을 방지하기 위하여 기술적으로는 좀 더 복잡해질 수 있지만 캐싱 기능을 사용할 수도 있습니다. 이렇게 함으로서, 우리가 흔히 잘 아는 클라우드 서비스의 시작을 뗄 수 있게 됩니다.

기술적인 이야기 1 - 세션 처리 방법 바꾸기

그렇다면 IIS와 ASP.NET에서는 이런 이상한 상황을 예방하고 신뢰할 수 있는 서비스를 만들기 위해서 어떤 수정 사항을 반영해야 하는 것일까요? 제가 이제까지 인터넷 상으로 자료 조사를 해왔던 것은 모두 제각기 흩어져있는 정보들이었고 이것을 한 번에 취합할 수 있는 방법을 오늘 블로그 포스팅을 통하여 소개할까 합니다.

기본적으로 ASP.NET은 세션 처리를 IIS 프로세스 안에서 수행하도록 되어있습니다. 가장 동선도 짧고, 신속하게 반응하기 때문입니다. 그러나 로드 밸런싱 환경에서 이는 당연히 "채택하면 안되는" 기법입니다. 이 방법은 web.config 파일 안의 <sessionState> 요소에서 변경할 수 있는 부분으로, <configuration> 요소 아래의 <system.web> 요소 아래에서 없는 경우 새로 지정할 수 있습니다. <sessionState> 요소의 mode 속성의 값을 변경하면 됩니다. 지금 이야기한 부분은 mode 속성이 InProc으로 지정되어있거나, 아무것도 지정되어있지 않을 때 .NET Framework의 글로벌 web.config 설정을 바꾸지 않은 경우 기본으로 지정되는 설정입니다.

IIS 7에서 볼 수 있는 아래 그림과 같은 설정도 이 XML 파일의 수정을 텍스트 에디터 없이 수정하는 것입니다.

로드 밸런싱 환경에서 정상적으로 동작하는 웹 사이트를 만들기 위해서는 mode의 설정 값을 InProc 대신 StateServer나 SQLServer로 바꾸어야 하는데, 양쪽 값 모두 장단점이 있습니다. StateServer의 경우 기본적으로는 꺼져있는 ASP.NET State Service라는 NT 서비스가 제공하는 별도의 서버를 이용하는 방식이고, SQLServer는 이름에서 알 수 있듯이 실제 SQL Server를 사용하여 세션을 구현하는 방식입니다. 데이터베이스 서버의 성능이 세션을 모두 수용할 수 있을만큼 획기적으로 뛰어나거나, 세션 서버가 죽었다가 살아나도 로그아웃 처리가 안되게 한다던가, 혹은 여러 로드 밸런싱 사이트 사이에서 세션 공유를 안전하게 할 방법이 필요하다면 이 모드를 사용할 수 있습니다. 이에 비하여 StateServer는 별도의 SQL 서버 없이도 간편하게 구축할 수 있는 방법을 제공하긴 하지만, 세션 서버가 죽었다 살아날 경우 내용이 없어지는 휘발성 세션입니다.

양쪽 모드 모두 중요한 것은 멤버로 참여하는 웹 서버 컴퓨터 밖에 상태를 보관해야 한다는 것이 키 포인트로, 이것을 지키지 않고 멤버 컴퓨터 안에 이런 설정을 구축하면 전혀 나아지는 것이 없습니다. 그리고 당연한 이야기이지만 멤버 컴퓨터로 참여하는 모든 웹 서버가 같은 설정을 가지고 있어야 합니다.

StateServer와 SQLServer 모드를 구현하는 방법에 대한 자세한 내용은 아래 아티클을 참고하시면 되겠습니다.

http://msdn.microsoft.com/ko-kr/library/ms178586.aspx

기술적인 이야기 2 - ASP.NET 사이트 간에 립싱크 맞추기

세션을 공유하는 것 이외에, ASP.NET은 내부적으로 Machine Key라는 것을 사용합니다. Machine Key의 용도는 ASP.NET 안에서 참 다양한데, 가장 대표적으로는 클라이언트와 서버 사이에 쿠키 정보를 주고 받을 때 암호화하기 위한 수단으로 이용하는 것이 유명한 사례입니다. 쿠키를 이용한 취약점 공격은 웹 세계에서 너무나 당연한 공격 방식 중 하나이기 때문에 ASP.NET은 처음부터 이를 보완하기 위한 전략을 구현하고 있었습니다. 그러나 이것이 지금 와서 로드 밸런싱 환경이 되면서는 또 다른 어려운 문제로 바뀐 것입니다.

이 Machine Key라는 것 역시 서버 컴퓨터마다 고유하게 생성할 뿐 아니라, 매번 연결할 때 마다 다른 값을 생성하여 암호화에 사용합니다. 클라이언트 입장에서야, 서버가 "ABC"라는 쿠키를 주니까 "아 그렇구나. 나중에 돌려주면 서버가 날 알아보겠지?"하며 성실하게 반납합니다. 그런데 로드 밸런싱에 참여하는 A라는 서버 대신 C라는 서버가 이 쿠키를 받아들었을 때는 "이거 내것 아님" 하며 클라이언트에게 퇴짜를 놓습니다. 이것이 문제의 핵심인 것이죠.

이 문제를 해결하기 위해서는 아까전에 이야기한 주제보다 좀 더 많은 노력이 필요합니다. 생각보다, 보안을 완벽하게 유지하기 위하여 ASP.NET이 관리자들에게 요구하는 사항이 까다롭기 때문입니다. 이 Machine Key를 만들기 위해서는 별도의 생성 도구를 사용해야 합니다. 그러나 안타깝게도 이 도구를 구한다거나 만들 수 있으려면 개발자들의 조력이 좀 필요합니다. 그리고 개발자 본인들도 이런 방법을 찾아야 하기때문에 꽤나 귀찮습니다. Codeproject에 가면 이러한 방법을 자세히 설명한 아티클도 있습니다만 간단한 도구도 드리고, 코드 조각도 드리니 프로그램에 넣어 활용하시면 더 편리할 것입니다.

using System;
using System.Text;
using System.Security.Cryptography;

/* 중략 */

        public static string getRandomKey(int bytelength)
        {
            byte[] buff = new byte[bytelength];
            RNGCryptoServiceProvider rng = new RNGCryptoServiceProvider();
            rng.GetBytes(buff);
            StringBuilder sb = new StringBuilder(bytelength * 2);
            for (int i = 0; i < buff.Length; i++)
                sb.Append(string.Format("{0:X2}", buff[i]));
            return sb.ToString();
        }

        public static string getASPNET20machinekey()
        {
            StringBuilder aspnet20machinekey = new StringBuilder();
            string key64byte = getRandomKey(64);
            string key32byte = getRandomKey(32);
            aspnet20machinekey.Append("<machineKey\n");
            aspnet20machinekey.Append(" validationKey=\"" + key64byte + "\"\n");
            aspnet20machinekey.Append(" decryptionKey=\"" + key32byte + "\"\n");
            aspnet20machinekey.Append(" validation=\"SHA1\" decryption=\"AES\"\n");
            aspnet20machinekey.Append("/>\n");
            return aspnet20machinekey.ToString();
        }

        public static string getASPNET11machinekey()
        {
            StringBuilder aspnet11machinekey = new StringBuilder();
            string key64byte = getRandomKey(64);
            string key24byte = getRandomKey(24);

            aspnet11machinekey.Append("<machineKey");
            aspnet11machinekey.Append(" validationKey=\"" + key64byte + "\"\n");
            aspnet11machinekey.Append(" decryptionKey=\"" + key24byte + "\"\n");
            aspnet11machinekey.Append(" validation=\"SHA1\"\n");
            aspnet11machinekey.Append("/>\n");
            return aspnet11machinekey.ToString();
        }

위의 코드를 사용하여 프로그램을 만들거나 ZIP 파일 안의 프로그램을 이용하여 값을 만들도록 하면 아래와 같은 XML 코드 조각을 얻을 수 있을 것입니다. 이 코드 조각을 각각의 서버에 들어있는 web.config에 지정하거나, 특정한 값만 인용하여 아래의 IIS 7 설정 아이콘에서 볼 수 있는 설정 도구를 통해서 직접 설정할 수도 있습니다.

<machineKey
 validationKey="FACBB6C89C44CB8BB7165FC4639BAA7267B...EF297D815E1BDD40E883E3451628CB95D34309"
 decryptionKey="4E95057676CC8DBA9AB...AACC1121B6B962E5AFA7849B0C82"
 validation="SHA1" decryption="AES"
/>

기술적인 이야기 3 - IIS에서 놓치면 안되는 것

ASP.NET을 가장 먼저 사용할 수 있게 된 웹 서버가 IIS이다보니 발생한 일종의 특성입니다만 여러 포럼에 걸쳐서 잘 언급되지 않는 문제점이 하나 있습니다. 바로 IIS에서 사용하는 사이트 ID 값을 통해서 정해지는 Application Path를 Machine Key와 같이 활용된다는 사실입니다. 웹 사이트 관리를 하다보면 로드 밸런싱에 참여하는 컴퓨터들을 다음과 같이 관리하게 되는 경우가 있습니다.

  • 서버 A에서는 기본 웹 사이트를 먼저 지우고 새 웹 사이트를 만들었다.
  • 서버 B에서는 새 웹 사이트를 먼저 만들고 기본 웹 사이트를 지웠다.

혹은 아래와 같은 경우도 있을 수 있습니다.

  • 서버 C에서는 사이트 A를 만들고 사이트 B를 만들었다.
  • 서버 D에서는 사이트 B를 만들고 사이트 A를 만들었다.

별 차이 없이 생각할 수 있지만, IIS에서는 이 경우 각각의 사이트들에 다른 ID 값을 부과하게 됩니다. 이 경우, 분명히 Machine Key를 동일하게 지정했음에도 불구하고 로드 밸런싱 환경에서 세션 상태가 일관성없게 변하는 문제를 만나게 됩니다. 제가 이번에 고민하게 된 부분도 바로 이 부분이었는데요, 이 문제를 해결하기 위해서는 IIS 7에서 전체 웹 사이트 목록에 나타나는 내용 중 다음의 ID 값이 멤버로 참여하는 웹 서버마다 차이가 있지 않은지 우선 검토해야 합니다.

위에있는 그림에서 빨간색으로 그린 부분이 서버 컴퓨터마다 차이가 있다면 이 값을 수정해주어야 합니다. 이 값을 수정하기 위해서는 수정할 사이트를 클릭하고, 고급 설정 링크를 아래 그림과 같이 클릭합니다.

이제 아래와 같은 팝업 대화 상자가 나타나면 강조 표시한 속성인 ID 값이 멤버로 참여하는 웹 서버 모두 같은 값을 가질 수 있도록 통일시켜줍니다.

확인 버튼을 누른 다음, ID 값이 바뀐 서버 컴퓨터에 한해서 IIS 전체를 재시작해주시거나 사이트 재시작을 시켜주시면 정상적으로 작동하게 될 것입니다.

Windows Azure 환경에서의 고려 사항

오늘 살펴본 내용은 IIS 7과 ASP.NET에 관한 부분이었지만, Windows Azure Platform의 경우에도 비슷한 문제가 있습니다. Windows Azure Platform에 VM Role로 웹 사이트를 게시를 하든, Web Role로 웹 사이트를 게시하든 세션을 사용하게 될 경우 비슷한 문제가 있을 수 있습니다.

다행히, Web Role을 이용한다면 내부적으로 사용하는 IIS에서 여러분이 몇 개의 웹 사이트를 추가적으로 구성하든 관계없이 같은 순서로 같은 ID를 사용하는 웹 사이트를 만들 것이므로 세 번째로 이야기한 ID 값 수정과 같은 작업은 할 필요가 없을 것입니다. 그러나 Machine Key에 대한 설정이나 세션 공유를 위한 설정은 SQL Azure를 이용한다거나, Worker Role에서 ASP.NET State Service 혹은 써드파티의 Session State Server를 이용해야 할 수 있습니다.

물론, 최근에 Windows Azure Platform의 일부로 Windows Azure AppFabric Cache가 새로 출시되기는 하였습니다만 상당히 이용 가격이 비싼 편입니다. (비싼만큼 확실한 성능을 제공합니다.) 로드 밸런싱 환경에서 특별한 문제를 일으키지 않는 일반적인 세션 공유가 필요하시다면 오늘 이야기한 주제를 응용한 Azure Project를 구축해보는 것도 의미가 있을 것입니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

IaaS2011. 9. 5. 22:41

요즈음은 회사의 분야나 크기, 규모를 막론하고 누구나 자체적인 전산망을 구축하기 원하고, 자체적인 협업 사이트를 구축하기 원하며, 자체적인 통합 커뮤니케이션 시스템을 구현하기를 원합니다. 제대로만 구축된다면 참 편리하게 쓸 수 있고 회사가 빠르게 성장하는데 많은 도움을 줄 것이라는 것을 익히 보고 들어왔기 때문이죠. 하지만 생각만큼 쉬운 일이 결코 아닙니다. 경우에 따라서는, 회사가 원래 목표로 세웠던 대외적인 활동보다도 더 큰 역량이 들어가서 배보다 배꼽이 더 큰 일로 빠지는 경우도 많으니까요.

이번에 제가 다녀온 Office 365 MVP Day에서는 많은 이야기들이 있었지만 개인적으로는 Windows Azure Platform이나 기타 클라우드 컴퓨팅 플랫폼과 연결될 수 있는 Office 365만의 고유한 기능들에 대해서 가능성을 조사해보고 타진하는 것을 저만의 즐거움으로 삼을 수 있었습니다.

Exchange Web Service Managed API

다른 Microsoft 서비스들과 마찬가지로 Office 365 역시 독창적인 API를 제공합니다. EWS Managed API를 사용하여 조직 내 E-MAIL 계정 사용자의 작업을 대행하거나, 개인의 일정 정보를 검색하거나, 메일 내용을 검색하는 등의 서비스를 기존의 Windows Application에서는 물론, 여러분이 만들 고유한 웹 서비스 및 모바일 애플리케이션에서도 구현할 수 있습니다. 아래는 Epience에서 근무하시는 최정우 차장님께서 Demo로 보여주신 EWS를 이용하여 만든 Web Mail 시스템의 실행 예시입니다.


EWS Managed API 자체는 Exchange Server에서 제공하는 API를 기반으로 만들어진 것이기 때문에, 정확한 서비스 위치만 알고 있다면 XML Web Service를 처리할 수 있는 프로그래밍 언어에서는 EWS를 이용하여 필요한 작업을 수행할 수도 있습니다. http://www.microsoft.com/download/en/details.aspx?displaylang=en&id=17947 에 게시된 문서를 통하여 다양한 프로그래밍 언어와 환경에서 EWS Online API를 사용하는 예시를 살펴보실 수 있습니다. :-)

SharePoint Portal Development with Office 365

SharePoint는 기본적으로 협업을 위한 위키 페이지 작성, 문서 공유 등의 작업을 수행할 수 있도록 디자인된 기업용 맞춤형 포털 서비스를 제공합니다. 그렇지만 클라우드 버전의 SharePoint Online에서는 이 외에도 클라우드 기반 시스템으로 갖추어야 할 기본적인 소양으로 많이 꼽히는 Claim-based Authentication이나 Data Conversion/Migration 등의 기능도 제공하고 있습니다.


그리고 종전의 Standalone 버전의 SharePoint와는 달리, 클라우드 환경에서는 타 고객들에게 금전적, 시간적 손해를 끼칠 가능성을 사전에 차단하기 위하여 클라우드 서비스에 대해서 영향을 주지 않을것이라고 확신할 수 있는 컨텐츠만을 제작할 수 있는 SharePoint Designer 이외의 모든 코드들이 샌드박스 환경 안에서 수행됩니다.


전적으로 개발자의 재량에 따른 것이지만 간단한 전자결재 시스템 역시 SharePoint를 통하여 구축하는 것이 가능합니다. 좀 더 자세한 내용은 http://msdn.microsoft.com/en-us/sharepoint/gg153540.aspx 에서 확인해보실 것을 권합니다.

Microsoft표 온라인 서비스의 이점

클라우드 서비스를 제공하겠다고 나서는 업체들은 매우 많습니다. 그렇지만 이러한 클라우드 서비스를 단순히 제공한다는 사실만을 너무 강조한 나머지 기본에 충실하지 못한 경우를 자주 보게 되는데, 이는 달리 표현하면, "바퀴를 붙여 잘 굴러가게 만들었으니 자동차로서의 기능을 지원한다"고 설명하는 것과 같은 오류가 될 수 있습니다. Microsoft가 제공하는 온라인 서비스들은 이러한 오류에 빠지지 않도록 지속적으로 기능을 개선하고, 기본에 충실하면서도, 신뢰성이 높은 서비스들로 구성되어있다는 점에서 이번 Office 365의 런칭은 개인적으로 Windows Azure Platform이 런칭될 때 못지 않은 기대감을 가지게 합니다.

조만간 국내에서도 KT를 통하여 Office 365 서비스를 신청할 수 있게 될 것으로 보입니다. Office 365의 기본 기능들만 사용해도 훌륭하지만 이제 클라우드 시대에 맞추어 여러분도 다른 업체에 여러분의 시스템을 맡기는 일 없이 여러분의 입맛에 맞게 회사 내 인트라넷 시스템과 인프라를 DIY할 수 있습니다. :-)

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2011. 7. 18. 08:58



자신의 PC를 가져와서 같이 앱을 개발 해보는 방식의 앱 캠프가 시작 됩니다. 관심 있는 많은 개발자 분들과 만날 수 있었으면 합니다. 
‘첫 클래우드 앱 개발하기’ 세션에서 필요한 것은 본인의 PC에 여기 링크에서 Get Tools & SDK를 클릭하시면 나오는 WPI를 통해서 윈도우 애저 개발에 필요한 도구를 모두 설치하신 후에 참석하셔야 합니다.

<첫번째 App Camp 진행 일정>

일시 : 2011년 7월 20일(수)
시간 : 오후 7시~10시
장소 : 대치동 포스코센터 서관 5층 회의실
**주의사항 : 앱 캠프는 무료로 진행되며 별도로 노트북을 제공해 드리지 않습니다. 참석하시는 분들은 필요한 소프트웨어를 설치한 노트북을 지참해 주십시오.


참가 신청하기 : http://blogs.msdn.com/b/eva/

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 아 참가하고 시퍼랑...

    2011.08.06 15:26 신고 [ ADDR : EDIT/ DEL : REPLY ]

Visual Studio2011. 4. 14. 17:00

안녕하세요. 오랫만에 블로그에 글을 올립니다. 지난번 Visual Studio Camp에서 옴니버스 형식의 세미나로 Visual Studio 2010 Service Pack 1에 대하여 말씀을 드렸던 세션이 있는데, 발표 자료와 더불어서 Visual Studio 2010 SP1에 대한 간략한 소개를 위하여 글을 씁니다.


Visual Studio의 새 도움말 시스템

Visual Studio 2010 RTM 버전부터는 새로운 형태의 도움말 시스템이 도입되는데, 로컬 웹 서버를 통하여 도움말 컨텐츠가 제공되는 방식으로 이전의 Visual Studio 2005와 Visual Studio 2008에서 제공되던 방식과 다르게 제공됩니다. Visual Studio 2005와 Visual Studio 2008의 경우 자체 URI Scheme을 Windows Registry에 등록하고 이를 Internet Explorer를 통하여 탐색할 수 있도록 확장하는 방식이었습니다. 그러나 새로운 도움말 컬렉션을 추가하거나 삭제하는 과정에서 시스템 성능에 따라 재배열 시간이 상당히 오래 걸리는 문제가 있어 불편한 점도 있었습니다. 이러한 방식 대신 더 단순하지만 더 유연한 방식으로 바꾸게 된 듯 합니다.

그렇지만 이전 버전에서 제공되던 색인, 검색 기능 등이 웹 사이트 형식으로 바뀌면서 이전에 사용했던 기능들이 사라져서 아쉬운 점도 있었는데 이번 Service Pack 1에서는 다시 Help Browser Software가 부활했습니다. 그래서 로컬 웹 서버로 컨텐츠를 보여주는 것은 동일하지만 Visual Studio를 통해서 컨텐츠를 탐색하면 Help Browser가 별도로 나타납니다.

그리고 이번 도움말 시스템에서의 백미는 인터넷을 통한 업데이트가 가능해졌다는 점입니다. 실제로 설치한 적이 없는 제품이라 할지라도, 그리고 DVD를 통해서만 설치할 수 있는 전체 버전의 MSDN 안에서만 제공되던 컨텐츠까지도 인터넷을 통하여 항상 최신 버전을 다운로드받아 로컬 도움말 컬렉션에 추가하거나 필요하지 않으면 삭제할 수 있습니다.

Silverlight 4에 대한 지원 추가

Visual Studio 2010 SP1을 설치하면 별도로 Silverlight 4에 대한 Tools for Visual Studio를 추가 설치할 필요가 없습니다. Silverlight 4부터는 이전의 WPF보다 작지만 웹이 아닌 데스크탑 및 오프라인 환경에서 잘 동작하는 응용프로그램을 제작할 수 있는 기능이 더 완벽하게 제공됩니다. 이러한 기술 전반은 권한 상승이 적용된 실버라이트 응용프로그램에서 가능한 것이며, 여기에는 파일 입출력이나 로컬 COM 컴포넌트와 연계하는 방안이 포함되어있습니다. 아래의 예제는 권한 상승이 적용된 Silverlight 4 기반 응용프로그램 샘플의 소스 코드이며, 사용자 프로필 디렉터리 내의 "내 그림" 폴더에 있는 이미지들을 열거하고 뷰어를 통하여 보여주는 예제입니다.



위 프로그램의 소스 코드 중 파일 입출력에 대한 소스 코드를 실제로 발췌하면 다음과 같습니다.

private void UpdateFileList()
{
    string targetPath = Environment.GetFolderPath(
        Environment.SpecialFolder.MyPictures);
 
    List<object> content = new List<object>();
    foreach (string eachFile in Directory.EnumerateFiles(targetPath))
    {
        switch (System.IO.Path.GetExtension(eachFile).ToLower())
        {
            case ".jpg":
            case ".jpeg":
            case ".png":
                break;
 
            default:
                continue;
        }
 
        content.Add(eachFile);
    }
    this.fileList.ItemsSource = content;
}
Visual Studio 2010 SP1을 설치한 후 Silverlight 프로젝트를 생성하려고 하면 다음과 같이 대화 상자가 나타나는데 이 때 Silverlight 4를 사용하도록 지정하면 사용이 가능합니다.

IIS Express 7.5에 대한 지원 추가

Visual Studio 2005부터는 Cassini Web Server라고 불리던 ASP.NET Development Server를 통하여 전체 버전의 IIS가 없어도 쉽게 ASP.NET 응용프로그램을 테스트할 수 있는 환경이 제공되었습니다. 그러나 Visual Studio 2008의 등장과 더불어 IIS 역시 대폭 업그레이드되어 Windows Server 2008부터는 완전히 새로워진 아키텍처를 기반으로 하는 IIS 7이 등장하게 됩니다. 이에 따라, 어느 정도 호환성을 보장하기는 하지만 이전의 IIS와는 많이 달라졌기 때문에 Cassini Web Server 만으로는 테스트가 어려운 점이 많았습니다. 통합 IDE의 이점도 확보하고, 전체 버전의 IIS를 사용하지 않으면서도 충분히 모든 기능을 점검해볼 수 있는 방향으로 가기 위하여 IIS Express가 등장하게 됩니다.

IIS Express를 사용하는 것은 실제 IIS를 사용하는 것과 비교했을 때 다음과 같은 장점이 있습니다.

  • ASP.NET Development Server와는 달리 FastCGI 모듈을 호스팅할 수 있으므로 PHP와 같은 FastCGI 지원 웹 언어들을 같은 환경에서 동시에 테스트할 수 있습니다.
  • 웹 프로젝트에서 IIS를 사용하도록 지정한 경우, 관리자 권한을 얻을 수 없는 다른 컴퓨터에서는 웹 프로젝트를 열 수 없는 문제점이 있었으나 IIS Express를 사용하도록 하면 이런 제약이 없습니다.
  • IIS Hosted Core를 사용하므로 전체 버전의 IIS가 없어도 상관이 없으며, IIS Express가 설치되어있지 않은 경우 Visual Studio가 자동으로 이를 감지하여 Web Platform Installer를 호출하여 IIS Express가 설치될 수 있도록 해줍니다.
  • 개별 프로세스 형태로 실행되므로 여러 사람이 사용하는 컴퓨터에서도 시스템 설정을 편집하는 일 없이 안전하게 실행할 수 있습니다.

 

HTML 5와 CSS 3에 대한 문법 검증 지원

Visual Studio 2010 SP1 및 Visual Web Developer 2010 Express SP1을 설치하면 HTML 5, XHTML 5 및 CSS 3에 대한 지원이 기본으로 내장되어있어 정확한 코딩이 가능합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>HTML5 Test</title>
    <link type="text/css" rel="Stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/themes/redmond/jquery-ui.css" /> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#test').dialog({ show: "drop", hide: "drop", width: "auto", height: "auto", title: "html 5 rocks!" }).show();
        });
    </script>
</head>
<body>
    <div id="test">
        <video src="demo.mp4" width="700" height="500" id="testVideo" autoplay="autoplay">
            <strong>Your web browser does not support video element.</strong>
        </video>
    </div>
</body>
</html>



위의 그림과 같이 검사할 문법을 지정하여 프로그래밍하면 꼭 지정해야 할 프로퍼티를 검사하여 경고를 띄우거나, 프로퍼티에 포함되어야 할 값의 유형을 자동으로 유추해주어 규칙을 몰라서 잘못 코딩할 가능성을 예방해 줍니다.

그 외에 눈여겨 볼만한 것들

Visual Studio 역시 최근에 급격한 변화를 맞이하고 있습니다. 빠르게 변화하는 기술을 수용하기 위해서 Internet Explorer의 런칭 주기가 짧아진 것과 비슷하게, Visual Studio 역시 자주 새로운 형태의 도구와 프레임워크를 업데이트하고 있으며, 이러한 노력의 일환으로 Express Edition의 가치가 더 높아지고 있습니다.

대표적으로 Visual Studio LightSwitch와 Visual Web Developer Express Edition, 그리고 Visual Studio for Windows Phone 7이 그 예시입니다. 전체 버전의 Visual Studio 제품 구성을 바꾸지 않고 안전하게 테스트해볼 수 있는 방법으로서도, 그리고 실무 개발 환경에서도 유용하게 쓰일 수 있습니다.

그러나 서비스 팩 출시와 더불어서 Express Edition의 경우 한 박자 정도 업데이트가 늦어지는 편입니다. 이 때문에, 먼저 설치한 서비스 팩과 나중에 설치한 RTM 버전의 Express Edition 사이의 버전 차로 인한 충돌 문제가 이슈가 되었던적이 있는데, 이번 버전부터는 그러한 상황이 있을 경우 Visual Studio가 시작되기 전에 해당 문제점을 사용자에게 정확히 알려줍니다. 그 외에, 다양한 도구와 런타임에서 기능 및 성능 향상이 있었습니다.

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Visual Studio2011. 4. 14. 10:36

안녕하세요. 오랫만에 블로그에 글을 올립니다. 지난번 Visual Studio Camp에서 옴니버스 형식의 세미나로 Visual Studio 2010 Service Pack 1에 대하여 말씀을 드렸던 세션이 있는데, 발표 자료와 더불어서 Visual Studio 2010 SP1에 대한 간략한 소개를 위하여 글을 씁니다.


Visual Studio의 새 도움말 시스템

Visual Studio 2010 RTM 버전부터는 새로운 형태의 도움말 시스템이 도입되는데, 로컬 웹 서버를 통하여 도움말 컨텐츠가 제공되는 방식으로 이전의 Visual Studio 2005와 Visual Studio 2008에서 제공되던 방식과 다르게 제공됩니다. Visual Studio 2005와 Visual Studio 2008의 경우 자체 URI Scheme을 Windows Registry에 등록하고 이를 Internet Explorer를 통하여 탐색할 수 있도록 확장하는 방식이었습니다. 그러나 새로운 도움말 컬렉션을 추가하거나 삭제하는 과정에서 시스템 성능에 따라 재배열 시간이 상당히 오래 걸리는 문제가 있어 불편한 점도 있었습니다. 이러한 방식 대신 더 단순하지만 더 유연한 방식으로 바꾸게 된 듯 합니다.

그렇지만 이전 버전에서 제공되던 색인, 검색 기능 등이 웹 사이트 형식으로 바뀌면서 이전에 사용했던 기능들이 사라져서 아쉬운 점도 있었는데 이번 Service Pack 1에서는 다시 Help Browser Software가 부활했습니다. 그래서 로컬 웹 서버로 컨텐츠를 보여주는 것은 동일하지만 Visual Studio를 통해서 컨텐츠를 탐색하면 Help Browser가 별도로 나타납니다.

그리고 이번 도움말 시스템에서의 백미는 인터넷을 통한 업데이트가 가능해졌다는 점입니다. 실제로 설치한 적이 없는 제품이라 할지라도, 그리고 DVD를 통해서만 설치할 수 있는 전체 버전의 MSDN 안에서만 제공되던 컨텐츠까지도 인터넷을 통하여 항상 최신 버전을 다운로드받아 로컬 도움말 컬렉션에 추가하거나 필요하지 않으면 삭제할 수 있습니다.



Silverlight 4에 대한 지원 추가

Visual Studio 2010 SP1을 설치하면 별도로 Silverlight 4에 대한 Tools for Visual Studio를 추가 설치할 필요가 없습니다. Silverlight 4부터는 이전의 WPF보다 작지만 웹이 아닌 데스크탑 및 오프라인 환경에서 잘 동작하는 응용프로그램을 제작할 수 있는 기능이 더 완벽하게 제공됩니다. 이러한 기술 전반은 권한 상승이 적용된 실버라이트 응용프로그램에서 가능한 것이며, 여기에는 파일 입출력이나 로컬 COM 컴포넌트와 연계하는 방안이 포함되어있습니다. 아래의 예제는 권한 상승이 적용된 Silverlight 4 기반 응용프로그램 샘플의 소스 코드이며, 사용자 프로필 디렉터리 내의 "내 그림" 폴더에 있는 이미지들을 열거하고 뷰어를 통하여 보여주는 예제입니다.



위 프로그램의 소스 코드 중 파일 입출력에 대한 소스 코드를 실제로 발췌하면 다음과 같습니다.

private void UpdateFileList()
{
    string targetPath = Environment.GetFolderPath(
        Environment.SpecialFolder.MyPictures);
 
    List<object> content = new List<object>();
    foreach (string eachFile in Directory.EnumerateFiles(targetPath))
    {
        switch (System.IO.Path.GetExtension(eachFile).ToLower())
        {
            case ".jpg":
            case ".jpeg":
            case ".png":
                break;
 
            default:
                continue;
        }
 
        content.Add(eachFile);
    }
    this.fileList.ItemsSource = content;
}
Visual Studio 2010 SP1을 설치한 후 Silverlight 프로젝트를 생성하려고 하면 다음과 같이 대화 상자가 나타나는데 이 때 Silverlight 4를 사용하도록 지정하면 사용이 가능합니다.


IIS Express 7.5에 대한 지원 추가

Visual Studio 2005부터는 Cassini Web Server라고 불리던 ASP.NET Development Server를 통하여 전체 버전의 IIS가 없어도 쉽게 ASP.NET 응용프로그램을 테스트할 수 있는 환경이 제공되었습니다. 그러나 Visual Studio 2008의 등장과 더불어 IIS 역시 대폭 업그레이드되어 Windows Server 2008부터는 완전히 새로워진 아키텍처를 기반으로 하는 IIS 7이 등장하게 됩니다. 이에 따라, 어느 정도 호환성을 보장하기는 하지만 이전의 IIS와는 많이 달라졌기 때문에 Cassini Web Server 만으로는 테스트가 어려운 점이 많았습니다. 통합 IDE의 이점도 확보하고, 전체 버전의 IIS를 사용하지 않으면서도 충분히 모든 기능을 점검해볼 수 있는 방향으로 가기 위하여 IIS Express가 등장하게 됩니다.

IIS Express를 사용하는 것은 실제 IIS를 사용하는 것과 비교했을 때 다음과 같은 장점이 있습니다.

  • ASP.NET Development Server와는 달리 FastCGI 모듈을 호스팅할 수 있으므로 PHP와 같은 FastCGI 지원 웹 언어들을 같은 환경에서 동시에 테스트할 수 있습니다.
  • 웹 프로젝트에서 IIS를 사용하도록 지정한 경우, 관리자 권한을 얻을 수 없는 다른 컴퓨터에서는 웹 프로젝트를 열 수 없는 문제점이 있었으나 IIS Express를 사용하도록 하면 이런 제약이 없습니다.
  • IIS Hosted Core를 사용하므로 전체 버전의 IIS가 없어도 상관이 없으며, IIS Express가 설치되어있지 않은 경우 Visual Studio가 자동으로 이를 감지하여 Web Platform Installer를 호출하여 IIS Express가 설치될 수 있도록 해줍니다.
  • 개별 프로세스 형태로 실행되므로 여러 사람이 사용하는 컴퓨터에서도 시스템 설정을 편집하는 일 없이 안전하게 실행할 수 있습니다.

HTML 5와 CSS 3에 대한 문법 검증 지원

Visual Studio 2010 SP1 및 Visual Web Developer 2010 Express SP1을 설치하면 HTML 5, XHTML 5 및 CSS 3에 대한 지원이 기본으로 내장되어있어 정확한 코딩이 가능합니다.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>HTML5 Test</title>
    <link type="text/css" rel="Stylesheet" href="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/themes/redmond/jquery-ui.css" /> 
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.1.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {
            $('#test').dialog({ show: "drop", hide: "drop", width: "auto", height: "auto", title: "html 5 rocks!" }).show();
        });
    </script>
</head>
<body>
    <div id="test">
        <video src="demo.mp4" width="700" height="500" id="testVideo" autoplay="autoplay">
            <strong>Your web browser does not support video element.</strong>
        </video>
    </div>
</body>
</html>



위의 그림과 같이 검사할 문법을 지정하여 프로그래밍하면 꼭 지정해야 할 프로퍼티를 검사하여 경고를 띄우거나, 프로퍼티에 포함되어야 할 값의 유형을 자동으로 유추해주어 규칙을 몰라서 잘못 코딩할 가능성을 예방해 줍니다.

그 외에 눈여겨 볼만한 것들

Visual Studio 역시 최근에 급격한 변화를 맞이하고 있습니다. 빠르게 변화하는 기술을 수용하기 위해서 Internet Explorer의 런칭 주기가 짧아진 것과 비슷하게, Visual Studio 역시 자주 새로운 형태의 도구와 프레임워크를 업데이트하고 있으며, 이러한 노력의 일환으로 Express Edition의 가치가 더 높아지고 있습니다.

대표적으로 Visual Studio LightSwitch와 Visual Web Developer Express Edition, 그리고 Visual Studio for Windows Phone 7이 그 예시입니다. 전체 버전의 Visual Studio 제품 구성을 바꾸지 않고 안전하게 테스트해볼 수 있는 방법으로서도, 그리고 실무 개발 환경에서도 유용하게 쓰일 수 있습니다.

그러나 서비스 팩 출시와 더불어서 Express Edition의 경우 한 박자 정도 업데이트가 늦어지는 편입니다. 이 때문에, 먼저 설치한 서비스 팩과 나중에 설치한 RTM 버전의 Express Edition 사이의 버전 차로 인한 충돌 문제가 이슈가 되었던적이 있는데, 이번 버전부터는 그러한 상황이 있을 경우 Visual Studio가 시작되기 전에 해당 문제점을 사용자에게 정확히 알려줍니다. 그 외에, 다양한 도구와 런타임에서 기능 및 성능 향상이 있었습니다.
Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

Exploring2011. 4. 2. 21:40

[Internet Explorer에 대한 내용을 정정하였습니다.]

이전부터 포터블 응용프로그램을 만들기 위한 시도는 많이 있었고 최근들어서는 이러한 시도들이 가상화 기술의 한 장르로 발전하게 되었습니다. 대표적으로 Thinstall이 과거에 있었는데 이 솔루션은 VMware ThinApp으로 재탄생했지요. 그리고 Microsoft 역시 App-V 기술을 제공하고 있습니다. 그런데 오늘은 이러한 응용프로그램 가상화 솔루션에 클라우드 기술, 그리고 적절한 사용자 인터페이스까지 결합한 해외 서비스 하나를 소개해볼까 합니다. 바로 roozz입니다.


roozz는 Firefox와 Google Chrome 브라우저에서 사용할 수 있는 전용 플러그인을 다운로드받아 설치하고, Application Feed 페이지를 방문하기만 하면, Application이 Windows 기반이었든, Linux 기반이었든 관계없이, 거기에 roozz 플러그인을 설치하고 실행하는 컴퓨터 역시 Windows이든 Linux이든 관계없이 가상화된 소프트웨어가 별도의 격리된 공간 안에서 실행됩니다. 뿐만 아니라, 응용프로그램 가상화를 기반으로 하기 때문에 3D 게임까지 지원됩니다.

제가 평소에 애용하는 개발 도구 중 하나인 LINQpad 역시 roozz에서 호스팅되는 응용프로그램 중 하나입니다. 시험 삼아서, roozz에서 호스팅되는 LINQpad를 직접 실행해보았습니다. 그리고 편의를 위하여, Google Chrome의 웹 어플리케이션 생성 기능을 LINQpad roozz feed page에 대해 적용하여 실행해보았습니다. 그 결과 아래와 같이, 마치 Native application과 같은 UI가 구현되는 것을 볼 수 있습니다.


.NET Framework를 사용하는 응용프로그램임에도, LINQ expression을 잘 실행하고 있는 것이 보입니다. .NET Framework 기반의 응용프로그램을 이와 같이 가상화를 통하여 원활하게 사용할 수 있다는 것은 Windows 개발자에게도 굉장한 메리트가 아닐 수 없습니다. 그런데 여기서 한 가지 궁금한 점이 생깁니다. 지금 이렇게 보는 화면이 원격지 서버의 화면을 기반으로 하는 것은 아닐까 하는 것이지요. 시험삼아서 파일 저장과 로드 기능을 테스트해보았습니다.


터미널 서비스나 Citrix Xen과 같은 VDI나 Remote Session 서비스와는 달리, 로컬 컴퓨터에 직접 저장하는 대화 상자가 나타납니다. 그리고 한 가지 더 확실한 증거가 있는데, 작업 관리자의 메모리 사용량을 보면 알 수 있습니다.


커서를 가져다 놓은 부분에서 알 수 있듯이, LINQpad 자체는 원격지가 아닌 현재 컴퓨터의 메모리를 사용하고 있습니다. 단, 응용프로그램 가상화를 기반으로 하므로 .NET Framework를 메모리에 올려서 사용하기 때문에 다소 메모리 사용량이 많은 것이 보입니다. 하지만, 메모리 사용량과는 별개로 이러한 수준의 기능을 제공할 수 있는 서비스라고 한다면 상당히 괜찮지 않을까 생각합니다.

roozz에 이와 같이 소프트웨어를 게시할 수 있는 방법은, 소스 코드가 아닌, 컴파일된 - 혹은 - 패키징된 소프트웨어 사본을 roozz에 전송하는 것입니다. 이렇게 전송된 사본은 roozz Conversion Tool에 의하여 재배포 가능한 형태로 구성되며 이것을 사용자가 받아볼 수 있는 형태로 게시됩니다. 좀 더 자세한 내용은 http://www.roozz.com/node/3 에서 확인할 수 있습니다.

Roozz로 게시된 LINQpad를 사용해보시려면, Google Chrome이나 Firefox로 아래 웹 사이트를 방문해 보시면 됩니다. 최초에 Roozz Plugin을 설치한 후 페이지를 새로 고치면 됩니다. 아쉽게도, 현재 Internet Explorer는 지원되지 않는다고 합니다. Internet Explorer의 경우 보호 모드때문에 roozz 플러그인이 곧바로 실행되지는 않으며, 적어도 신뢰할 수 있는 사이트 목록에 http://prod.roozz.com 을 추가한 이후에야 아래와 같이 동작합니다. Internet Explorer 9에서도 잘 동작합니다. :-)

http://prod.roozz.com/apps/61/LINQPad.htm

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

PaaS2011. 3. 29. 00:21

이전 글: [Windows Azure Platform/A Lap around Cloud Computing] - A Lap around cloud computing – 지금이 여러분의 이력서를 새로 쓸 시간 

뜬금없이 근두운 이야기가 무엇인가 하고 놀라는 분들이 있으리라 생각한다. 이해가 빠른 분들이 계실 것이므로 단도직입적으로 말하면, 필자가 의도한 그대로, Cloud Computing 이야기를 하고자 했던 것이다. 우리의 머릿속 한 구석에 큰 존재감을 과시하며 차지하고 있는 전설 속 원숭이 손오공의 근두운을 IT 세상에서는 누구나 하나씩 다 가지고 있는 것이다.

여러분이 사용하고 싶어하는 근두운의 종류 또한 다양하다. 그래서 앞서 설명했던 Windows Live, Windows Server 기반 Private Cloud, Office 365가 있었고, 오늘은 마지막으로 개발자와 IT 전문가들의 관점에서 적극적으로 검토해 볼 가치가 있고 든든한 파트너 역을 맡아줄 Windows Azure Platform이라는 근두운을 이야기해볼 생각이다.

IT 관리자의 관점에서 보는 Windows Azure Platform

PDC08에서 처음 소개된 Windows Azure Platform은 전적으로 개발자의 역할을 중시했던 플랫폼이었다. 이는 PDC09, 그리고 PDC 2010 직전까지도 지속되었고 꾸준히 그 색을 더해 나가고 있던 과정이었다. 하지만 PDC 2010에서 처음으로 세간에 루머로만 떠돌던 VM Role이 공식적으로 사용 가능하게 베타 서비스로 출시되었고 이에 따라 IT 관리자들의 관점에서도 Windows Azure Platform을 활용할 수 있는 기회가 대폭 늘어나게 되었다.

Windows Azure Platform이 IT 관리자들에게 제공하는 주요 이점은 한 마디로 정리하면 기존의 IT 자산과 맞물려 사용할 수 있는 다양한 기회를 제공한다는 점이다. Microsoft의 Public Cloud는 모든 것을 Cloud로 올려야 한다고 말하지 않는다. 대신, 네트워크 수준에서의 통합부터 시작하여 Cloud 내부 및 외부에서 발생할 수 있는 문제를 다양한 방법으로 해결할 수 있도록 도와준다.

Windows Azure의 VM Role은 On-Premise 시스템을 분리 해체하는 작업을 거치지 않고 곧바로 Windows Azure 데이터센터에 서버를 올려놓는 방법이다. 기존에 먼저 소개된 Web Role 및 Worker Role과 달리 Windows Server 2008 R2 운영 체제 전체를 하나의 완전한 Role로 채택하여 사용할 수 있는 기법으로, 여러분이 기존에 어떤 라이선스를 가지고 있던지 관계없이 Windows Azure VM Role 라이선스로 전환할 수 있도록 해준다.

매우 이상적인 이야기처럼 들릴 수도 있지만 사실 중요한 문제가 두 가지가 있다. 라이선스에 관한 것이 있고, 또 다른 하나는 기술적인 구성 상의 문제이다. 다음의 표에 대략적인 내용을 언급해두었다.

구성 요소 및 역할

변경 방향

3rd Party Software

Plan A: Public Cloud 호환 라이선스로 재계약

Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합 / 단 Traffic 추가로 인한 변동 사항은 해당 공급자와 재 협상 필요

3rd Party Software Data

SQL Server Embedded DB

è MDF 및 LDF 파일을 SQL Server에 연결하고, 해당 DB를 SQL Azure로 이관해야 함

è MDB 파일이나 ACCDB 파일의 경우 SQL Server로 이관 후 SQL Azure로 이관해야 함

기타 데이터베이스

è 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합

SQL Server

Plan A: SQL Azure로 부분/전체 Migration

Plan B: 관계 지향적이지 않고 대용량 DB가 필요한 경우 Windows Azure Table Storage 사용

Plan C: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합

Exchange Server

Plan A: Office 365로 부분/전체 Migration

Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합

SharePoint Online

Plan A: Office 365로 부분/전체 Migration

Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합

Lync Online

Plan A: Office 365로 부분/전체 Migration

Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합

Active Directory

AD DS, AD LDS 모두 기존의 On-Premise 시스템을 Windows Azure Connect를 경유하여 활용하는 것이 최선

 

라이선스에 관한 문제의 본질은 다음과 같다. Windows Azure Compute를 통해서 서비스가 실행되면, Service Level Agreement (SLA) 계약 이행을 위하여 기본적으로 VM을 1대 이상 사용하는 것을 전제로 한다. 최소 1대만을 유지하도록 설정해도 상관은 없지만, 필연적으로 사용량이 증가하고 서비스를 위하여 배치된 VM들의 상태가 바빠지는 것이 감지되면 자동적으로 Fabric Controller가 원본 VM 이미지를 복제하여 새로운 VM을 복제하기 시작한다. 이것이 의미하는 바는 단순하다. 물리적인 Instance의 수가 자동으로 늘어나므로 그 안에 포함된 3rd Party 소프트웨어에 대한 라이선스도 같이 계산되어야 하고, 그것이 CPU 기반 라이선스이든 연결 개수 기반 라이선스이든 상관이 없는 것이다. 양쪽 라이선스 모두 있는 그대로 (as-is) 해석을 한다면 Public Cloud 내에서는 상식을 넘는 금액을 요구할 수 밖에 없다.

이를 해결하기 위해서는 해당 소프트웨어 공급자가 Public Cloud에 대응되는 사용량 – 또는 – 사용 시간 기반 라이선스를 지원해야 하며, 대다수의 경우 이를 지원하지 않을 것이므로 이러한 소프트웨어를 포함하는 서버를 On-Premise 환경에 배치하고, 이들 서버에 대한 종속성을 지니는 별도의 VM Role, Web Role, Worker Role 만을 Windows Azure에 게시한 후 Windows Azure Connect로 상호 연동을 가능하게 만드는 것이 최선이다.

기술적인 문제의 본질은 다음과 같다. 주로 데이터베이스에 대한 부분과 관련이 깊은데, Windows Azure가 SLA 이행을 위하여 VM을 복제하고, 복제된 VM들의 목록을 기준으로 Load Balancer를 구현하는 것은 매우 바람직한 일이다. 그러나 기존의 서버 모델은 개별 서버가 데이터베이스까지 서버 내에 같이 포함하고 있는 경우가 많은데 여기에 대한 적당한 조치를 취하지 않고 그대로 VM Role로 전환하는 경우 우스꽝스러운 문제가 발생한다. 접속할 때 마다 데이터베이스의 내용이 달라지는 일이 발생하는 것이다. 이를 해결하기 위해서는 사용 중인 데이터베이스의 종류를 파악하는 것이 중요한데, SQL Server로 이관이 가능한 범주 안에 있는 데이터베이스들은 우선 SQL Server로 이관한 후, 이를 SQL Azure로 다시 이관하는 작업이 필요하다. 그리고 기존 응용프로그램들도 SQL Azure를 데이터 소스로 사용할 수 있도록 일부 수정이 필요하다.

SQL Azure로 이관하는 것을 누구나 쉽게 검토해볼 수는 있다. 그러나 생각 외로 만만찮은 문제들이 쌓여있다. 기존에 사용하던 자료 형식 중 CHAR, VARCHAR, TEXT와 같이 유니코드와 호환되지 않는 문자열 자료 형식들은 이관 후 CJK 문자 세트로 구성된 데이터가 소실되므로 NCHAR, NVARCHAR, NTEXT로 업그레이드해야 한다는 부분이 있다. 날짜와 시간의 경우 이관 이전과 이관 이후의 시간대 설정 차이가 있으므로 데이터 일관성에 문제가 있을 수 있다는 점이다. 드문 경우이지만, .NET 어셈블리는 SQL Azure에 설치할 수 없으므로 이와 관련된 기능을 사용하는 경우 SQL Azure로 이관하기 전 적당한 Wrapper나 Agent를 따로 개발해야 한다. 또, 기존의 응용프로그램이 데이터베이스 연결을 헤프게 사용하는 경향이 있다면 SQL Azure 입장에서는 예고 없이 연결을 차단시킬 수 있다는 점도 숙지해야 한다. SQL Azure 서비스 자체는 공유 환경에서 실행되므로 SQL Server 인프라와는 비교할 수 없이 엄격한 정책 준수를 요구하는데, 사실 이 때문에 낭패를 보는 경우가 많다. 이런 모든 문제들을 극복하기 위해서, 데이터베이스 역시 특별한 이슈가 없다면 Windows Azure Connect를 사용하여 기존 On-Premise 환경과 구분선 없이 밀착시키는 것이 좋을 수 있다.

사실 지금 언급한 내용들만 이야기해도 Cloud로 이관하는 것보다는 이관하지 않는 것이 더 좋은 것처럼 들린다. 그래서, IT 관리자 입장에서는 무리해서 기존의 인프라를 Cloud로 이관하기 보다, 기존의 인프라나 IT 자산으로는 충당할 수 없는 새로운 영역을 Cloud를 통해 개발하고 확보하는 방법을 새로 익히는 것이 좋다. 그런 맥락에서, IT 관리자들은 Cloud 환경에 최적화된 VM-Role을 개발하는 방법을 익히고, VM-Role이 Windows Azure Connect를 통하여 기존의 Active Directory Domain Controller에 참가하도록 시스템을 구성하거나, 웹 상에서의 클레임 기반 인증을 구현할 목적으로 Active Directory Federation Services (AD FS)와 Windows Azure AppFabric Access Control을 같이 활용하는 방안을 모색하는 것이 바람직하다.

응용프로그램 개발자 관점에서 보는 Windows Azure

원래부터 그러했지만 Windows Azure는 개발자들을 위한 Cloud 플랫폼이었다. 여러 서비스들이 있지만 각각의 역할을 하나씩 소개하려 한다.

Windows Azure Compute: Windows Azure 데이터센터에서 여러분의 응용프로그램을 Hosting할 수 있도록 해주며, IIS를 활용하여 웹 응용프로그램을 실행할 수 있도록 해주는 Web Role, WCF, Socket, C, C++, Python 등 Win32 기반 시스템에서 사용 가능한 모든 종류의 응용프로그램을 실행할 수 있도록 해주는 Worker Role, 그리고 VHD 기반 이미지를 이용하여 Windows Server 2008 R2 OS를 실행할 수 있도록 해주는 VM Role을 하나의 서비스 안에서 다양한 방법으로 조합하여 실행할 수 있는 서비스이다. Windows Azure SDK에서는 VM Role을 제외한 Web Role과 Worker Role 에뮬레이터가 기본 제공된다.

Windows Azure Storage: 대용량의 데이터를 고속으로 처리할 수 있도록 해주는 특별한 저장소로, HTTP 및 HTTPS 프로토콜을 기반으로 상호 작용할 수 있기 때문에 플랫폼이나 위치에 제약이 없다. 저장소의 유형으로는, 단순 파일 저장 및 대용량 파일의 Paging 연산을 지원하는 BLOB 저장소, 행과 열의 대규모 집합 및 고속 인덱싱을 지원하는 테이블 저장소, 고속 메시지 입력 및 출력을 지원하는 큐 저장소로 구분된다. 저장소의 범주에 속하지는 않으나, Windows Azure Compute 상의 Role들이 Win32 API를 사용하여 파일 입력과 출력 연산을 수행할 수 있도록 해주는 Cloud Drive API가 Windows Azure Storage Emulator와 함께 제공된다.

Windows Azure CDN: 대한민국 및 아시아 권역에서 빠른 속도를 자랑하는 새로운 CDN 서비스 역시 Windows Azure Platform 안에 있다. 기본적으로는 Windows Azure Blob Storage에서 공개 권한으로 설정한 Block BLOB에 대해 CDN 서비스를 사용할 경우 자동으로 Mirroring이 된다. 최근 업데이트에서는 Windows Azure Storage가 아닌, 동적으로 API를 사용하여 특정 Contents를 CDN 서비스를 통해 Mirroring할 수 있게 업데이트되었고, 더불어 HTTPS도 지원하기 시작하였다.

Windows Azure AppFabric: 대규모 서비스 운영에 필요한 주요 서비스 컴포넌트 5가지를 제공하는 온라인 서비스로, Windows Server AppFabric의 기술을 바탕으로 하지만 외부에 드러나는 모습은 많이 다르다.

Windows Azure 초창기부터 지속적으로 제공되어왔던 Service Bus는 Point-to-Point 연결을 구현하는 Tunneling Mechanism을 제공한다. WCF 기술을 기반으로 하며, 서버 역할을 수행하는 WCF 호스트가 Service Bus와 연결을 맺은 뒤, WCF 클라이언트는 직접 WCF 호스트에 접근하지 않는 대신, 암호화된 연결을 사용하는 Service Bus로 방향을 바꾸어 접속을 시도하는 방식이다. 이러한 방식이 유용한 이유는, 방화벽의 존재 여부와 관계없이 네트워크 계층에 일관성이 없는 서로 다른 환경 사이를 완벽하게 연결시켜주기 때문이다.

Access Control 서비스는 또 한 번 업데이트를 준비 중에 있다. 처음 발표된 Access Control은 특정 도메인이나 기관이 운영하는 Active Directory 인프라를 기반으로 인터넷 상에서 클레임 기반 인증을 구현하기 위한 목적으로 처음 소개되었다. 인터넷 서비스를 상대로 클레임 기반 인증을 수행하는 것이기 때문에, 인트라넷 환경과는 달리 수시로 Traffic이 발생하며, 뿐만 아니라 신뢰성도 매우 중요하기 때문에 Azure AppFabric Access Control이 유용하다. 그리고 조만간 대대적인 업데이트를 통하여 Windows Live ID, Yahoo, Google, Facebook 등의 Social Networking Platform을 인증 수단으로 사용할 수 있게 되어 한층 더 폭넓은 활용 가능성을 제공한다.

Cache 서비스는 Server 버전의 AppFabric Cache를 Cloud 버전으로 제공하는 것으로, Cache를 위한 인프라를 직접 구축하지 않으면서, 같은 API, 같은 기술을 사용할 수 있는 것이 장점이다. Windows Azure Storage와 SQL Azure를 AppFabric Cache 원본으로 지정하여 사용할 경우 시간과 비용을 획기적으로 절약할 수 있다. 그리고 올해 연중으로 BizTalk Server와의 연계를 고려한 AppFabric Integration 서비스와 함께 Cloud Computing 전반을 통솔하고 제어할 수 있는 AppFabric Composite App 역시 출시될 예정에 있다.

물론 아직 부족한 서비스들도 있다. 그렇지만 이 정도 수준의 서비스라고 한다면 누구나 원하는 서비스를 제약 없이 구현해 볼 수 있지 않을까? 프로그래밍 언어나 개발 도구에 관계없이, 그리고 여러분이 실행하는 프로그램의 위치와 무관하게 말이다. 다시 강조하지만, Microsoft의 Public Cloud는 다른 Cloud Platform들처럼 강제 이주를 논하지 않는다. 모든 것은 여러분의 결정에 따라 움직이며, 매번 적절한 솔루션은 Microsoft에 의해서이든 오픈 소스 커뮤니티에 의해서이든 쓰여지고 업그레이드되어 나가고 있다. Microsoft가 말하는 Cloud Power의 진가를 확인하고 싶다면 지금 곧 Windows Azure Platform으로 떠나보자.

더 많은 정보가 필요하다면 Windows Azure 홈페이지 (http://www.windowsazure.com/)와 더불어 Windows Azure Café (http://cafe.naver.com/wazure), 그리고 .NET 기반 소프트웨어 개발을 위하여 Visual Studio 2010 한국 공식 팀 블로그 (http://www.vsts2010.net/)을 자주 찾아주기 바란다.

글쓴이 이력

  • Blog: http://www.rkttu.com / E-MAIL: rkttu@rkttu.com / Twitter: @rkttu
  • Windows Azure MVP (2011) / Visual C# MVP (2009-2010)
  • ㈜코아뱅크 코아기술연구소 (http://www.corebank.net) 연구원 재직 중
  • Windows Azure Café SYSOP (http://cafe.naver.com/wazure)
  • Visual Studio 2010 Team Blog (http://www.vsts2010.net) 집필진 활동 중
Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

이벤트2011. 3. 25. 22:05

세미나 등록 : http://onoffmix.com/event/2600

스마트한 당신은 진정한 VS 2010의 개발자입니다.Visual Studio 2010 IDE를 이용한 유용한 도구 모음과 사용, 그리고 Visual Studio 개발자를 위한 앱스토어 “Visual Studio 온라인 갤러리”에서 개발자들에게 유용한 도구와 기능을 소개합니다

Visual Studio 공식 팀 세미나

- 주최 : 한국Visual Studio 공식 팀
- 일시 :2011 4 6일 수요일
- 시간 : 늦은 오후 7 30 ~ 9 30
- 장소 : 한국 Microsoft Korea 5
- 참가비 : 무료
- 경품 : 삼성동 코엑스 바이킹 뷔페 식권 3

세미나 아젠다

시간

발표자

제목

730~ 735

강성재 차장

VS 2010 개발자 앱스토어 Introduction

735 ~ 750

남정현MVP

VS 2010 Service pack 1 소개

7 50 ~ 8 10

강보람MVP

VS 2010 PowerTools

8 10 ~ 8 20

엄준일MVP

VS 2010 성능 프로파일러

8 20 ~ 8 30

휴식

8 30 ~ 8 50

김병진MVP

P&P 설계 구성하기

8 50 ~ 9 10

오태겸

WCF템플릿과 사용하기

9 10 ~ 9 30

박종혁

VS TFS 2010 Power Tools 업그레이드

경품추첨

섹션 내용

VS 2010 Service pack 1 소개


3
8일 이제 Visual Studio 2010 Service pack1이 발표되었습니다. 이번 Service pack1에 포함된 주요 내용을 알아보고 업데이트를 고민하는 개발자의 고민을 해결해 줄 것입니다

VS 2010 PowerTools


Visual Studio 2010 IDE
만 잘 써도 Smart 한 개발자가 될 수 있습니다. Microsoft 에서 개발자들을 위한 무료앱 천국에 있는 VS 2010 Power Tools에 대한 궁금증을 풀어드립니다.

VS 2010 성능 프로파일러


Visual Studio
에서 개발한 프로그램에 대한 성능을 알수 있을까? ~ 이제 Visual Studio 성능 프로파일러를 이용한 성능 검증에 대한 내용을 알아봅니다.

P&P 설계 구성하기


설계? 이건 어려운 거야 너무 힘들어?

아닙니다. 이제Microsoft 개발자 앱 스토어와 P&P에서 제공하는 무료 템플릿을 이용하면 쉽게 여러분들도 설계를 할 수 있습니다

WCF템플릿과 사용하기


WCF?
이거 그냥 구현하면 되는데. 그런데.. REST 서비스는? 이제 걱정하지 마십시요. Microsoft 갤러리에서 WCF 템플릿에 추가된 REST 서비스 템플릿을 이용하면 쉽게 WCF REST 서비스를 개발할 수 있는 환경을 제공합니다.

VS TFS 2010 Power Tools 업그레이드


Visual Studio Team Foundation Server
관리가 어려우시나요? 아 지긋지긋한 백업 ㅠㅠ DB도 해야하고 SharePoint도 해야하고 너무힘드셨죠? 이제 Power Tools에서 한번에 해결하십시요.

경품

코엑스 오크우드 호텔 뷔페 레스토랑 바이킹 식권 3(1 1인입니다)


세미나 등록 :
http://onoffmix.com/event/2600

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

발표 자료 공유2011. 3. 17. 18:24

올해에도 어김없이 Microsoft TechDays가 찾아왔습니다. 올해 봄 시즌에는 "N 스크린 시대의 IT 전문가들을 위한 온라인 컨퍼런스"라는 주제로 여러 Microsoft MVP들의 온라인 세션이 준비되어있습니다. 그리고, 지금 한창 진행 중인 Imagine Cup 2011 한국 대표 선발전과 더불어서, IT 기술을 통하여 실력을 업그레이드하기도 하고, 전 세계의 수많은 대학생들과 아이디어로 경진해볼 수 있는 Imagine Cup에 대한 상세한 소개도 온라인 세션으로 같이 준비되어있습니다.

이번에도 여러 세션들이 있지만 오늘 제가 소개해드리려고 하는 세션은 개발 - 또는 - Microsoft N 스크린 개발에 처음 입문하시는 분들을 위한 내용, 그리고 모바일, 클라우드, 이매진컵에 대한 내용들을 따로 발췌하여 찾아보시기 편하도록 블로그 포스팅을 재구성해 보았습니다.

개발에 처음 입문하시는 분들께 추천해드립니다.
* Visual Studio 2010 How To Start : 개발자를 꿈꾸는 분들을 위한 입문서 - (주)코아뱅크 연구원 남정현 / Windows Azure MVP
* N-스크린 시대의 필수 Agile 개발 : 1부 모바일 - 강보람 Visual C# MVP
* N-스크린 시대의 필수 Agile 개발 : 2부 WEB - 유니위스 박세식 대리
* N-스크린 시대의 필수 Agile 개발 : 3부 클라이언트 - 엄준일 Visual Studio ALM MVP

Windows Phone 7 개발에 입문하시는 분들께 추천해드립니다.
* 모다의 Windows Phone 뚝딱 팩토리 1. 헬로우 Windows Phone - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 2. 실버라이트, Windows Phone 을 만드는 기술! - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 3. Windows Phone 의 얼굴 만들기, UI - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 4. 인터넷, Windows Phone 과손을 잡다 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 5. 데이터 바인딩의 기초 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 6. 우리 하드디스크가 달라졌어요, 격리된 저장소 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 7. 메뉴? 아니죠, 어플리케이션 바? 맞습니다 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 8. 어플리케이션 속으로 들어간 인터넷 익스플로러 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 9. Where am I? - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 10. 레이싱 게임의 핸들을 구현하는 기술, 가속도계 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 11. 꼭꼭 숨어라 데이터가 보인다 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 12. 잠시 대출(?)이 가능한 기술들, 카메라/주소록/이메일.. - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 13. 다양한 상황에 따라 모양이 변하는 터치 키보드 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 14. LINQ를 이용한 간단한 실전 예제! 블로그 보기 - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 15. 손가락이 하나 더 늘어나면? 멀티터치! - 한국 Microsoft 홍준모 Evangelist Intern
* 모다의 Windows Phone 뚝딱 팩토리 16. 앱 속의 미디어 플레이어 - 한국 Microsoft 홍준모 Evangelist Intern

Windows Azure 개발에 입문하시는 분들께 추천해드립니다.
* 클라우드 응용 프로그램 개발 - Ty Anderson VSTO MVP
* Windows Azure에서 클라우드 응용 프로그램 개발 시작하기 - Hilton Giesenow MVP
* Windows Azure에서 클라우드 응용 프로그램 처음 만들기 - Hilton Giesenow MVP
* SQL Azure : SQL Azure를 사용하여 데이터 액세스를 포함한 클라우드 응용 프로그램 만들기 - Hilton Giesenow MVP
* Windows Azure 현재와 미래 - 한국마이크로소프트 박중석 개발자 에반젤리스트
* Windows Azure 보안 - 한국마이크로소프트 박중석 개발자 에반젤리스트
* Windows Azure 비용 - 한국마이크로소프트 박중석 개발자 에반젤리스트
* Windows Azure 성능 - 한국마이크로소프트 박중석 개발자 에반젤리스트
* 해외 실제 사례로 살펴보는 마이크로소프트 클라우드 개발 - 한국마이크로소프트 박중석 개발자 에반젤리스트
* 마이크로소프트 클라우드 기술 방향성 - 한국마이크로소프트 박중석 개발자 에반젤리스트

Imagine Cup을 준비하시는 분들께, 그리고 대학생 여러분들께 추천해드립니다.
* Imagine Cup : 세상의 난제를 IT기술로 해결하라! - 홍익대학교 황채영 MSP,한국마이크로소프트 최은지 DPE Intern
* Windows Live Mesh 2011 : 동기화 되는 삶  - 프리랜서 박광수 MSP&MVP
* Microsoft Expression Studio 4 : 협력 툴의 결정체 - 프리랜서 노희상 MSP
* Web Matrix : 나만의 블로그를 쉽게 만드는 방법 - 한국기술교육대학교 허찬 MSP, 성신여자대학교 이서연 MSP

더 많은 내용을 보시려면 http://www.techdays.co.kr/2011Spring/ 페이지를 방문해주세요. :-)
Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

  1. 동영상 잘 보았습니다!!
    N-Screen 개발, 재밌네요. ;)

    2011.03.19 02:08 신고 [ ADDR : EDIT/ DEL : REPLY ]

기술 소식2011. 3. 11. 11:06

Windows Azure SDK v1.4가 새로 출시되었습니다. 이번에 업데이트된 내용에는 v1.3 이후로 Windows Azure 고객들 사이에서 수집된 다양한 요구 사항들을 반영하고, 한층 더 실용적인 기능을 포함하고 있습니다. 이번 업데이트에서 변경된 주요 사항은 다음과 같습니다.

* web.config 파일이 읽기 전용으로 설저오디었을 때 전체 IIS 기능이 실패하는 문제를 수정
* 전체 IIS 기능을 사용하는 web role 패키지의 크기가 두 배가 되는 문제를 수정
* 진단 로그 저장소가 꽉 찬 경우 전체 IIS 기능을 사용하는 web role의 재생에 발생하는 문제 수정
* Windows Azure 저장소로 IIS 로그 파일을 이관할 때 로그 파일에 대한 권한 문제 수정
* x86 플랫폼에서 csupload 도구를 사용하는 것에 관련된 이슈 수정
* web.config 파일 상의 사용자 오류에 대한 진단이 더 쉽도록 수정
* Windows Azure의 Role에 대한 원격 데스크 톱 연결 관련 기능 안정성 및 성능 향상

그 외에 이번 업데이트와 더불어서 변경되는 서비스 및 신 기술은 다음과 같습니다.

* Windows Azure Connect
   - 다중 관리자를 지원하도록 UI 수정
   - 상태 알림과 진단 기능을 개선한 새로운 클라이언트 UI
   - 비 영어권 Windows 운영 체제에서 Windows Azure Connect 클라이언트를 설치할 수 있도록 수정

* Windows Azure CDN
   - Windows Azure Web과 VM Role에서 직접 CDN 원본 컨텐츠를 구성하고 배포할 수 있도록 만듦
   - CDN에서 HTTPS 프로토콜을 지원; 관리자 포털에서 HTTPS 사용 여부를 제어 가능

새 버전의 SDK를 다운로드 받으시려면 다음 웹 사이트로 이동하시면 됩니다. 한국어 SDK v1.4는 조만간 출시될 것으로 보입니다.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018&displaylang=en

정보 출처: http://blogs.msdn.com/b/windowsazure/archive/2011/03/09/now-available-updated-windows-azure-sdk-and-windows-azure-management-portal.aspx

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

포트폴리오2011. 3. 2. 23:59

0123


지난번에 소개드렸었던 QRCODE 소셜 앱에 이어, 이번에는 좀 더 다양하고 편리한 기능들을 바탕으로, 그리고 Windows Azure Platform을 기반으로 소셜 앱을 새롭게 업그레이드 런칭하였습니다. 이번 버전에서는 좀 더 다양한 QRCODE 리더 응용프로그램과 상호작용하고, iPhone과 Android 버전 CASEQRCODE Reader App을 설치하시면 일정 관리 등의 기능도 QRCODE를 이용하여 관리하실 수 있습니다.

체험하러 바로 가기 (싸이월드/네이트온 로그인이 필요합니다.)
http://appstore.nate.com/Main/View?apps_no=1376

이번 버전에서 제일 많은 비중을 두고 사용된 것은 Windows Azure Platform의 상호 운용성 기술에 대한 부분으로, Compute의 경우 내부 역할이 2개의 역할로 구성되어있습니다. 앱 스토어에 올라갈 실버라이트 애플리케이션이 호출할 백그라운드 서비스와 더불어, iPhone과 Android 버전 CASEQRCODE Reader App과 상호작용할 REST 기반 API를 호스팅하는 Web Role이 있으며, Java JSP를 기반으로 작성된 QRCODE Image Rendering을 위한 Apache Tomcat 기반의 Worker Role이 있습니다. 그리고 이 둘 사이를 중계하기 위하여 사용자가 직접 업로드하는 이미지들은 물론, 생성되는 QR 코드를 보관하기 위한 Windows Azure Storage가 있으며, SQL Azure를 Web Role과 Worker Role에서 모두 사용합니다. 그리고 실버라이트의 경우, 빠른 다운로드 속도를 제공할 수 있도록 Windows Azure Storage에 현재 게시하였으며 필요한 경우 CDN으로 전환하는 것을 검토 중에 있습니다.

이번 Social App을 런칭하기까지 많은 분들의 기술적 도움과 자문을 바탕으로 성공적으로 Cloud Application을 런칭할 수 있었습니다. 이번에 쌓인 노하우를 다양한 자리에서 다양한 방법으로 전달하고, 또한 많은 발전을 할 수 있도록 노력하고자 합니다. 이번 런칭에 많은 격려와 조언을 아낌없이 해주신 SHESTORY의 김의준 사장님께도 깊은 감사를 드립니다.

감사합니다. :-)

Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

PaaS2011. 2. 27. 16:40

다음 글: [Windows Azure Platform/A Lap around Cloud Computing] - A Lap around cloud computing – 1인 1근두운 시대
이전 글: [Windows Azure Platform/A Lap around Cloud Computing] - A Lap around Cloud Computing – 당신이 어디에 있든 관계없는 세상

이력서 안 고친지 꽤 지났는데……

지난 글에서는 Windows Live, Live@edu, Office 365를 통하여 사람들이 가정에서, 학교에서, 그리고 직장에서 Cloud Computing과 어떻게 친하게 지낼 수 있는지를 살펴보았다. 오늘은 기업 내에서 충실하게 제 몫을 다하고 있는 전산 자원들을 Cloud Computing 환경에 맞도록 업그레이드시키기 위한 방법인 가상화에 대하여 살펴보려고 한다. 가상화는 Cloud Computing의 한 축을 이루는 중요한 기술이다.

일각에서는 Cloud Computing의 도래를 두고, Microsoft나 유명 IT 기업들만의 잔치판이 될 것이므로 기업 내에서 일하는 모든 IT 전문가와 개발자들이 스스로 사표를 내도록 종용 당하게 만들 것이라고 좌절하는 목소리가 심심치 않게 들려온다. 그러나 필자의 생각은 다르다. 오히려 이전보다 더 뛰어나고 완벽한 IT 기술을 필요로 하게 될 것이며, 한 층 더 자동화되고 지능적인 시스템과 같이 일할 수 있도록 해야 하며, 사실 지금이 바로 열심히 여러분의 이력서의 새 버전을 작성해야 할 때인 것이다.

가상화에 대한 이해

이 글을 읽는 독자 대다수는 집에서 여러분의 배우자나 어머님께서 설거지하시는 모습을 잘 기억하고 있을 것이다. 그릇을 닦기 위하여 수세미를 사용하고, 그릇에 묻어있는 기름기를 걷어내기 위하여 매직 블록을 조각 내어 주방 세제에 묻혀 사용하는 그런 모습 말이다. 필자는 서버 가상화를 설명하는데 이보다 더 좋은 소재는 없다고 생각한다.

방금 이야기한대로 서버 가상화는 멀티 코어로 확장되는 엄청난 성능의 서버 컴퓨터를 효율적으로 사용할 수 있도록 도와주는 매우 똑똑한 전략이다. 매직 블록을 통으로 다 쓰는 것보다는, 잘게 조각 내어 여러 차례 필요한 만큼 사용하는 것이 더 오래 쓰고 좋은 세척 능력을 보여준다. 이전과는 다르게 서버 컴퓨터도 이러한 방법으로 나누어 쓰는 것이 대세인 시대가 되었다. 그렇지만 이를 어떻게 나누고 관리할 것인가?

응용프로그램 개발자들에게 있어서 이 질문에 대한 답은 병렬 프로그래밍 기법이다. 병렬 프로그래밍 그 자체는 이전부터 계속 사용이 가능했던 기법이었지만 최근에 중요한 변화를 맞이하게 되었다. 병렬 프로그래밍은 엄밀히 말하면 사람이 인지하기 어려울 정도로 빠른 속도로 사용자가 컴퓨터에게 지시하여 형성한 문맥들을 회전하면서 작업을 처리하는 것으로, CPU의 발전 과정과 연계를 지어보면 쉽게 이해할 수 있다. 초창기의 CPU들은 회전의 빠르기를 뜻하는 주파수가 높지 않았기 때문에 많은 작업을 할 수 없었지만, 어느 순간에 이르러서는 단일 CPU가 GHz 단위까지 주파수를 높여서 만족스러운 성능을 보여주기도 하였다. 그러나 속도가 아무리 빠르다 한들 결국 문맥들 사이를 전환할 수 있는 성능 상의 임계는 변치 않기 때문에 이를 원점에서 극복할 수 있도록 다중 CPU의 시장 진출이 활성화된 것이다. 이에 따라 여러 개의 CPU를 기본적으로 운영 체제의 재량에 따라 활용할 수 있는 기회가 생겼고, 응용프로그램 개발자들에게도 같은 기회가 주어진 셈이다.

서버 가상화는 여기에서 출발한다. 운영 체제가 사용자에게 제공할 수 있는 병렬 연산은 두 가지로 볼 수 있는데, 비교적 실행 시간이 짧거나 유한한 범위 내에서 작업이 완료될 수 있는 알고리즘의 병렬화를 커버하기 위한 Multithread 연산은 개발자들을 위한 영역이다. 그러나 유한한 시간 내에 종결되는 작업이 아닌, 독립적인 세션을 만들어서 운영하는 방법도 필요했는데 그것이 가상화 기술이다. 초창기의 가상화 기술은 Emulation에 가까웠던 것으로 다른 시스템의 동작을 모방하여 특정 프로그램이나 동작을 재현하는 경우가 많았다. 그러나 시간이 흐를수록 좀 더 실용적으로 가상화 기술을 개발하기 시작하여 실제로 사용할 수 있는 형태로 만들기 시작하여 현재의 가상화 기술에 이르게 되었다. 이러한 가상화 기술을 Hypervisor라고 하며, 우리가 흔히 이해하는 것은 Type 2의 개념이고, 요즈음 주목을 받는 것은 Type 1의 개념이다.

Type 1과 Type 2 사이의 차이점은 한 마디로, 가상화 기술을 사용자에게 서비스하는 관점의 차이이다. Type 2의 경우 사용자는 가상화 기술을 하나의 하위 응용프로그램으로 보는 구조이고, Type 1은 가상화 기술로 생성된 다수의 독립적인 서브 시스템 앞에 사용자가 한 명 이상 접근하는 구조이다.

사실 Type 1의 Hypervisor 자체는 1960년대부터 지속적으로 개발해온 시스템이지만, 일부 고가의 하드웨어에 한정되는 사양이었기 때문에 많은 관심을 받지 못하였다. 뿐만 아니라 일반 PC에서 이를 구현하기에는 성능도 부족하였고, 또한 일반 PC에서 실행되는 운영 체제의 전부를 Type 1의 가상화를 구현하는 데에 모두 바치는 것 또한 굉장한 낭비였기 때문이다. 그러나 PC 및 Workstation Computer의 사양이 드디어 이런 기능을 구현하기에 충분한 수준까지 이르게 되면서 다시금 주목 받게 된 것이다.

가상화를 구현하는 방법에 있어서는 전 가상화와 반 가상화로 나눌 수 있는데 전 가상화는 동일한 아키텍처의 시스템을 하나의 격리된 영역에서 다시 구축하는 것을 말하는데, CPU, BIOS 등 가장 하단에 위치하는 하드웨어까지 Emulation을 하는 것을 말한다. 가상화를 통하여 모든 운영 체제를 완전히 독립적으로 실행할 수 있는 것은 이런 사양을 전제로 하기 때문이다. 그러나 전 가상화 이외에도 호스트 시스템과의 상호작용, 연동 제어 등의 요구 사항이 실제로는 더 필요했기 때문에 가상과 실제 사이의 경계를 가로지를 수 있는 인터페이스가 필요한데 이를 반 가상화를 통하여 구현하고, 반 가상화 기술을 통하여 가상 환경 상의 성능 저하를 개선하는 경우도 있다. 즉, 현실과 타협한 것이 반 가상화에 의한 구현인 셈이다.

반 가상화를 구현하는 방법은 가상화 기술 제조 업체마다 차이가 많지만, 호스트 운영 체제를 처음부터 가상화 기술을 잘 수용할 수 있도록 개조하는 방법이 있고, 기본 목적을 유지하면서 확장된 아키텍처를 수용할 수 있도록 확장하는 방법이 있는데, Microsoft의 Hyper-V는 후자에 속하는 방법을 제공한다. 뿐만 아니라 Windows Server Core 환경 위에도 Hyper-V Hosting 기능을 제공하여 호스트 컴퓨터가 외부 네트워크에 노출되는 표면적을 최소화하고 안정성을 보장하는 기법을 구상하는 것 역시 다른 오픈 소스 플랫폼들과 마찬가지로 가능하다. 기존에 구매한 Windows Server 인프라를 버리고 중복 투자할 필요 없이, 약간의 방법 터득 만으로도 충분히 만족스러운 Private Cloud를 구현할 준비가 이미 되어있는 것이다. 그러므로 부디 멀리 떠나지 말자.

IT 전문가들은 가상화로 무엇을 어떻게 할 것인가?

가상화 기술로 시스템을 분할하고 나면 그 다음에는 무엇을 할 것인가? 이 질문에 대해 IT 전문가들이 찾을 수 있는 방안은 시스템 구성 복잡도의 감소, 빠른 테스트 환경 구축, 가상 데스크톱 인프라 구축으로 분류할 수 있다.

서버를 한 대 이상, 여러 대를 배치할 수 있는 전산 환경에서는 한 서버에 1개 이상의 역할을 맡기지 않지만 현실적인 이유와 비용 상의 문제 때문에 이런 규칙은 쉽게 깨진다. 가상화를 이용하여 시스템을 나눈다면 이 규칙을 다시금 당연하게 받아들일 수 있게 될 것이다. 여기에, 게스트로 사용하려는 서버 운영 체제가 Windows Server 2008에 해당하는 경우 테스트 환경까지 자동화할 수 있는 혜택도 덤으로 얻는다. Windows AIK를 사용하여 자동 응답 파일을 만들 수 있고, 이렇게 만들어진 자동 응답 파일을 WIM2VHD와 같은 도구에 매개 변수로 지정하여 Windows 설치 디스크 이미지를 곧바로 부팅 가능한 가상 하드 디스크로 Provisioning하는 것뿐만 아니라 기초 설정까지 단번에 Customizing하는 것이 가능하다.

이렇게 만들어진 원본 가상 하드 디스크를 기점으로 차이점 보관 디스크 등을 사용하여 가상 하드 디스크들을 버전 관리할 수 있으므로 각종 업데이트와 Hotfix 설치에 민감하게 반응하는 시스템을 가상화해야 하는 경우 이는 매우 이상적인 환경이 아닐 수 없다. 이러한 작업들을 Private Cloud Computing 환경에 알맞게 솔루션 차원에서 도와주는 것이 바로 System Center Virtual Machine Manager이며, 관리자가 수작업으로 이러한 과정을 수행하지 않고 Active Directory 인프라를 이용하여 인증부터 시스템 Provisioning까지 웹 상에서 처리할 수 있도록 돕는 것이 SCVMM Self Service Portal이다.

가상 데스크톱 인프라는 앞서 설명한 기술들로 갖추어진 인프라를 이용하여 종전에 널리 사용되었던 터미널 서비스가 결합되어 완성된다. 종전의 터미널 서비스에서 보여지던 것은 동일하게 구성된 서버들 사이를 라운드 로빈 등의 알고리즘을 이용하여 연결을 분산시키고, 사용자가 응용프로그램을 빌려 쓰는 방식이었다. 반면 VDI는 응용프로그램 대여가 아닌 가상 PC 전체를 완전히 특정 사용자에게 임대하는 방식이기 때문에 VDI로 만족할만한 성과를 얻을 수 있으려면 얼마나 빠르게 VDI용 가상 PC를 Provisioning할 수 있는지도 관건이 된다. 뿐만 아니라, 이런 식으로 만들어진 가상 PC들에 대한 최신 업데이트와 보안 점검을 수행하기 위해서는 종전에 잘 알려진 WSUS나 Forefront를 쉽게 제어할 수 있는 System Center 솔루션 전반이 역시나 필요하다.

지금 언급한 사항들만 대충 살펴보더라도 관리자가 가상화나 Private Cloud 기술 때문에 직업을 잃어버리기는커녕 한층 더 복잡하고 높은 수준의 기술에 대한 이해가 필요함을 알 수 있다. Microsoft VDI에 대한 전반적인 Overview 및 Licensing 정보를 살펴보려면 아래의 동영상을 살펴보기 바란다.



http://www.microsoft.com/showcase/en/us/details/9291a982-2f32-4d25-84bb-671accbcb002

그리고 여기에 여러분들은 한 가지 더 이점을 얻을 수 있다. Windows 7 SP1과 Windows Server 2008 R2 SP1의 출시와 더불어서 가상 컴퓨터 상의 게스트 운영 체제들의 성능을 미리 계산된 불연속적인 값에 의한 설정이 아닌, 연속적이고 유동적으로 변경 가능한 설정으로 재 구성이 가능한 Dynamic Memory 기능과 더불어, 다소 비싼 하드웨어를 필요로 하지만 Remote Session을 경유하더라도 3D 그래픽과 렌더링을 경험할 수 있는 RemoteFX 기술 지원까지 가능하게되어 한 층 더 높은 활용도를 제공한다. Windows 7 SP1과 Windows Server 2008 R2 SP1은 지금 Windows Update를 통하여 업데이트가 가능하며, 기술적인 상세 정보는 http://blogs.technet.com/b/koalra/archive/2011/02/10/windows-7-windows-server-2008-r2-1-rtm.aspx 의 내용을 확인하기 바란다.

개발자들은 가상화로 무엇을 할 것인가?

개발자들에게도 가상화는 작업하는 방법에 많은 변화를 가져다 준다. 그 중에서도 테스트 과정에 지대한 영향을 가져다 준다. 가상화를 통해서 가장 먼저 수혜를 누리는 것은 바로 Mobile 및 Embedded 장치 개발이다. 원칙적으로, Mobile과 Embedded 장치를 대상으로 응용프로그램을 개발하기 위해서는 개발자 당 1대 이상의 실제 장치가 필요한 것이 당연하다. 하지만, 앞에서 언급한 전 가상화 기술을 통해서 Intel CPU가 아닌 Mobile 장치의 CPU를 Emulation하여 약간의 제한 사항이 있지만 기본적인 테스트에는 문제가 없도록 해주는 테스트 및 디버깅 환경을 완성시켜준다. 이는 Windows Mobile 6.x, Windows Phone 7, Windows Embedded Compact 7을 통해서 쉽게 경험할 수 있었던 부분들이다.

그러나 한 발 더 나아가서, 테스트와 디버깅을 실제 Windows 운영 체제에서도 실행할 수 있어야 하고, 테스트 주도 개발 (TDD) 방법론에 입각하여 테스트를 수행하고, 확실한 QA를 수행하여 개발자와 직접 상호 작용할 수 있는 개발 방법론을 구현할 수 있도록 하려면 그 다음은 무엇이 필요할까? 답은 Visual Studio 2010 Ultimate부터 제공되는 Test Lab Management이다.

Test Lab Management는 내부적으로 SCVMM와 Hyper-V를 사용하여 테스트 환경을 구축하게 되며, Team Foundation Services (TFS) 영역 내에서 관리되는 프로젝트와 통합되어 자동 및 수동 테스트 케이스에 따라 테스트를 진행하고 Screenshot과 같은 일차원적인 정보 수집 말고도 시스템 상태, 문제가 발생했던 시점의 Stack Trace 기록은 물론 변수 상태까지 기록하여 데이터베이스로 저장하는 IntelliTrace 로그 수집까지 처리한다. 필요한 모든 주변 정황들이 소프트웨어 통제 환경 아래에 놓이게 되므로 재현 불가능한 버그가 나타나지 않도록 도와준다. 아래의 동영상은 Test Lab Management로 실제로 QA를 진행하는 과정을 보여주는 Overview 동영상이며 한 번 재미 삼아 보기를 권한다.




http://msdn.microsoft.com/en-us/vstudio/ff945982

다음 시간에는

기본적으로 가상화를 통하여 일상적인 시스템 관리 작업 및 테스트 작업들을 소프트웨어가 서 있는 땅 아래로 가져다 놓고 모든 것을 Top-Down으로 관리하는 것이 이루려고 하는 목표이다. 이전에 언급하였던 대로, 개념적으로는 간단할 수 있지만, 이러한 작업들을 성공적으로 수행할 수 있으려면 적어도 규모에 관계없이 여러분이 완전히 제어하고 통솔할 수 있는 데이터 센터의 소유와 IT 전문가, 그리고 개발자들을 필요로 한다. 그리고 이런 환경을 가지고 있든, 가지고 있지 않든 진정으로 뛰어난 성능을 필요로 하고, 비즈니스의 핵심 가치에 집중하기를 원한다면, 다음 시간에 언급할 Windows Azure Platform으로의 이동을 바로 지금 준비할 때이다.

처음 Windows Azure Platform이 발표된 이후부터 지금 이 순간까지 많은 변화가 있었고, 지난 PDC'10에서 발표된 업데이트에는 IT 전문가들이 Private Cloud 뿐만 아니라 Public Cloud에서도 역량을 펼칠 수 있도록 도와주는 Windows Azure Connect 및 Virtual Machine Role이 발표되었다. 앞으로 2회 연재에 걸쳐서 Windows Azure Platform이 IT 전문가들과 개발자들에게 어떤 변화를 가져다 줄 수 있는지 더 살펴보려고 한다.

글쓴이 이력

  • Blog: http://www.rkttu.com / E-MAIL: rkttu@rkttu.com / Twitter: @rkttu
  • Windows Azure MVP (2011) / Visual C# MVP (2009-2010)
  • ㈜코아뱅크 코아기술연구소 (http://www.corebank.net) 연구원 재직 중
  • Windows Azure Café SYSOP (http://cafe.naver.com/wazure)
  • Visual Studio 2010 Team Blog (http://www.vsts2010.net) 집필진 활동 중
Posted by Cloud Developer 남정현 (rkttu.com)

댓글을 달아 주세요

PaaS2011. 2. 25. 10:36

안녕하세요. Windows Azure MVP 남정현입니다. 이제 2월도 얼마 남지 않았네요. 2011년을 새로운 마음으로 맞이하고나서 정말 빠르게 시간이 흐르는것 같습니다. 오늘은 Windows Azure를 좀 더 쉽고 간편하게 경험할 수 있는 방법을 소개해드리기 위하여 글을 올립니다.

Windows Azure Virtual Lab

이전에 특정 프로그래밍 언어나 Windows Server 제품군, 또는 실버라이트 개발 등을 위하여 Virtual Lab으로 미리 학습을 해보신 적이 있으신가요? Microsoft는 가상화 기술을 이용하여 인터넷 상에서 누구나 무료로 Microsoft의 최신 기술을 컴퓨터에 추가적인 소프트웨어를 설치하지 않고서도 테스트해볼 수 있는 Virtual Lab을 운영합니다. 단순히 테스트 환경만 제공하는 것이 아니라 구체적인 실습 가이드 라인을 통하여 자습할 수 있도록 도와줍니다. Windows Azure Virtual Lab의 컨텐츠는 계속 업데이트되고 있으며 이 글을 올리는 현 시점에서 다음의 Virtual Lab이 제공됩니다.

  • MSDN Virtual Lab: Windows Azure Native Code
  • MSDN Virtual Lab: Building Windows Azure Services with PHP
  • MSDN Virtual Lab: Getting Started with Windows Azure Storage
  • MSDN Virtual Lab: Building Windows Azure Services
  • MSDN Virtual Lab: Using Windows Azure Tables
  • 실제 Windows Azure 계정을 제공하는 것은 아니며, Visual Studio 및 Windows Azure Tools for Visual Studio가 미리 설치된 가상 PC 환경을 제공하는 것입니다. 업데이트되는 전체 Virtual Lab 컨텐츠를 보시려면 http://msdn.microsoft.com/en-us/dd540819 페이지를 방문하시면 되겠습니다.

    Posted by Cloud Developer 남정현 (rkttu.com)

    댓글을 달아 주세요

    발표 자료 공유2011. 2. 24. 01:52

    CODEPARTY 2011년 2월 / 세션 1 발표 자료 공유합니다. 삼성 소프트웨어멤버십의 조수현 회원님과 세션을 진행하였으며, 당일 세션 2에서는 삼성 소프트웨어멤버십 회원이자 Microsoft Client App Dev MVP로 활동 중이신 김현중 MVP님, 그리고 삼성소프트웨어멤버십 회원으로 활동 중이신 진성주 회원님께서 세션을 진행하여 주셨습니다. 세미나에 참석해주신 모든 분들께 감사드리며, 앞으로 Windows Azure Cafe 차원에서 더욱 다양하고 알찬 정보를 전달할 수 있도록 노력하겠습니다. 감사합니다. :-)


    Posted by Cloud Developer 남정현 (rkttu.com)

    댓글을 달아 주세요