'Visual Studio'에 해당되는 글 68건

  1. 2014.06.07 Visual Studio 테스트, 어렵지 않아요
  2. 2013.11.16 Visual Studio 2013에서 ASP.NET 프로젝트가 만들어지지 않는 경우
  3. 2013.11.07 TechDays mini 2013년 11월 - Visual Studio 2013, 제대로 파헤쳐 보기!
  4. 2013.07.16 NuGet 패키지 관리자를 이용한 TDD 초기 환경 구축하기
  5. 2012.10.08 Visual Studio 2012 Express for Web에서 Silverlight 5 개발 환경 구축이 안되는 경우
  6. 2012.08.08 무료 Microsoft eBook 컬렉션 (2)
  7. 2012.07.13 Windows Azure Media Service 활용하기
  8. 2012.02.04 PHP와 .NET의 완벽한 만남 - Phalanger
  9. 2011.04.14 Visual Studio 2010 Service Pack 1에 대한 모든 것
  10. 2011.04.14 Visual Studio 2010 Service Pack 1에 대한 모든 것
  11. 2011.03.29 A Lap around cloud computing – 1인 1근두운 시대
  12. 2011.03.25 [세미나] Visual Studio 공식 팀 - Your Smarter Visual Studio 2010
  13. 2011.03.17 Microsoft TechDays 2011 Spring - N-스크린 시대의 IT 전문가를 위한 온라인 컨퍼런스 (2)
  14. 2011.03.11 Windows Azure SDK v1.4 출시
  15. 2011.03.02 CASEQRCODE powered by Windows Azure Platform
  16. 2011.02.27 A Lap around cloud computing – 지금이 여러분의 이력서를 새로 쓸 시간
  17. 2011.02.25 Windows Azure Virtual Lab으로 쉽고 빠르게 클라우드 개발 실습하기
  18. 2011.02.24 CODEPARTY 2011년 2월 / 세션 1 발표 자료 공유합니다.
  19. 2011.02.19 Windows Azure Cafe Boot Camp 2010-02 발표 자료 공유합니다.
  20. 2011.02.17 DevForce 프레임워크의 Windows Azure 마이그레이션 DEMO 동영상
  21. 2011.02.17 실전 Cloud App 분석 세미나 발표 자료 공유합니다. (2)
  22. 2011.02.17 {CODE PARTY} 세미나 개발자들을 위한 클라우드 개발
  23. 2011.02.01 Windows Azure Platform Training Kit 2011년 1월 버전 출시
  24. 2011.01.30 클라우드 시대의 피아식별: Access Control #1
  25. 2011.01.20 Windows Azure Compute의 업그레이드 메커니즘에 대한 이해
  26. 2011.01.20 Visual Studio Async 소개 및 Async 기술에 대한 백서
  27. 2011.01.06 [이벤트] 제 2회 Visual Studio Ultimate 멤버십 세미나
  28. 2011.01.05 SqlBulkCopy 클래스를 SQL Azure에서 사용하는 방법
  29. 2011.01.03 구관이 명관 - OSQL과 SQL Azure의 만남
  30. 2010.12.30 Windows Azure Platform Training Kit 2010년 12월 버전 출시!
Useful Solutions2014. 6. 7. 09:29

Visual Studio에서 제공하는 테스트 도구에 NUNIT을 결합해서 사용할 수 있다면 정말 유용할 것입니다. 이번 웹 캐스트는 Visual Studio에서 제공하는 테스트 도구와 NUNIT 간의 연동을 도와주는 NUNIT Test Adapter의 사용 방법과 함께, Windows Forms 기반 응용프로그램에서 Visual Studio와 NUNIT Test Adapter를 결합하여 테스트를 진행할 수 있는 방법을 소개합니다.

(비디오 콘텐츠로 올렸던 게시물이었으나 아티클로 조만간 복원할 예정입니다.)

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

댓글을 달아 주세요

Useful Solutions2013. 11. 16. 02:00

Visual Studio 2013에서는 One ASP.NET이라는 새로운 형태의 프로젝트 생성 방식을 제공하고 있습니다. 이전에는 ASP.NET MVC, Web Form, Web Page, Web API가 각기 다른 프로젝트로 분리되어있어서 구성하기에 불편한 점이 많았습니다만 2013부터는 한 위치에서 동시에 여러 ASP.NET 웹 스택을 선택하고 조합할 수 있게 되었으며, 인증 시나리오도 Windows Identity Foundation, 기본 인증, 소셜 네트워크 기반 인증 등을 지원할 수 있는 옵션이 추가되었습니다.

그런데 이러한 특성 때문에, 처음부터 NuGet 패키지 관리자에 대한 의존성이 필수가 되었습니다. 그래서 간혹 어떤 컴퓨터에서는 Visual Studio 2013으로 ASP.NET 프로젝트를 생성하려 할 때 다음과 같은 오류 메시지가 나타나기도 합니다.

지정된 파일을 찾을 수 없습니다. (예외가 발생한 HRESULT: 0x80070002) 

오류: 이 템플릿에서 구성 요소 어셈블리 'NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'을(를) 로드하려고 했습니다. 이 문제에 대한 자세한 정보 및 이 템플릿을 활성화하는 방법에 대한 정보는 "프로젝트 템플릿 사용자 지정"의 설명서를 참조하십시오. 

위와 같은 오류 메시지가 나타나는 것은 NuGet Package Manager 애드인이 설치되어있지 않기 때문이며, ASP.NET 프로젝트 생성과 동시에 인터넷 상에서 NuGet Package Manager를 이용하여 프로젝트 구성에 필요한 각종 라이브러리들 (jQuery, ANTLRv3 등)을 내려받으려고 시도하기 때문입니다.

문제를 진단하기 위하여, Visual Studio에 현재 설치된 확장 및 업데이트 내역을 확인합니다. 메뉴에서 아래와 같이 실행하면 해당 항목을 찾을 수 있습니다.

도구(T) - 확장 및 업데이트(U) 클릭 

온라인 - Visual Studio 갤러리 선택 - 검색어에 nuget 입력 후 Enter 키 누름 - "NuGet Package Manager for Visual Studio" 선택 - 다운로드 버튼 클릭 

다운로드 진행 - EULA 동의 - 설치 - 아래와 같이 화면이 나타나면 하단의 "지금 다시 시작(R)" 버튼 클릭

이제 ASP.NET 프로젝트를 다시 생성하면 정상적으로 생성이 완료될 것입니다.

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

댓글을 달아 주세요

이벤트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)

댓글을 달아 주세요

Windows + .NET2013. 7. 16. 00:00

NuGet Visual Studio에 추가하여 사용할 수 있기도 하고, 독립적으로도 사용할 수 있는 패키지 관리 시스템으로 기존의 Windows Forms 응용프로그램에서부터 ASP.NET, 그리고 Windows 8Windows Phone 8에 이르기까지 다양한 종류의 프로젝트를 지원하는 전천후 패키지 관리 시스템이자 또한 NuGet 웹 사이트와 연동하여 최신의 패키지를 자유롭게 활용할 수 있는 멋진 기능입니다.

.NET Framework 관련 소프트웨어 개발을 시작할 때 새로운 프로젝트를 만들고 TDD 초기 환경 구축을 하는 과정은 다양합니다. Visual Studio가 제공하는 Test Project를 만드는 방법이 있을 수도 있고, 나름대로 Test Mockup을 만드는 방법도 있을 수 있지만, 무료로 사용할 수 있으면서도 분명한 효과를 제공하는 도구로는 단연 NUnit이 거론됩니다. 그런데 Visual Studio의 기본 구성 요소도 아니고, 프로젝트에 추가해서 사용하기 번거로운 면도 일부 있습니다. 그리고 테스트 코드를 만들고 프로젝트에 포함시키는데 있어서도 프로젝트의 코드 관리를 어렵게 만드는 면이 있습니다.

이러한 문제를 해결하기 위한 방법으로 두 가지 방안을 소개하려고 합니다.

첫 번째는, NuGet 패키지 관리자를 이용하여 NUnit Framework는 물론 NUnit RunnerMSI 패키지 설치 방식이 아닌 솔루션 단위의 패키지로 설치하여 버전 관리 시스템에 같이 포함하여 배포할 수 있는 방법에 관한 것입니다. 두 번째는, Friend 어셈블리를 이용하여 테스트 어셈블리에 대해서만 독점적인 접근 권한을 부여하여 테스트 논리를 만드는 절차를 간소화하는 방법에 관한 것입니다.

NuGet 패키지 관리자 버전 확인 후 업데이트하기

NuGet 패키지 관리자는 Visual Studio 2010 이후부터 서비스 팩을 설치하면 극 초기의 버전이 자동으로 추가되는 경우가 있습니다. 하지만 제품과 함께 제공되거나 서비스 팩을 이용하여 설치한 패키지 관리자는 버전이 너무 낮고 기능에도 일부 오류가 있어 쓰기 불편합니다. 당연히 여기에 대한 업데이트가 배포 중이며, 다음과 같은 방법으로 업데이트할 수 있습니다. Visual Studio 2010 이후의 버전은 모두 다음과 같은 방법으로 진행하면 됩니다.

Visual Studio를 시작합니다.

도구 메뉴를 선택한 다음 확장 관리자 메뉴를 아래와 같이 선택합니다.

 

나타나는 대화 상자의 왼쪽 편의 항목들 중 온라인 갤러리선택 후 모두를 선택합니다. 그러면 아래와 같이 NuGet Package Manager가 상위권 항목에 나타납니다. 많이들 사용하는 기능이기 때문에 검색할 필요도 없이 금세 발견할 수 있을 것입니다.

 

업그레이드를 할 필요가 없거나 이미 최신 버전이 설치된 경우 위와 같은 화면이 나타나지만, 대개는 업그레이드가 필요함을 알려줄 것입니다. 리스트에서 다운로드 버튼이 보이면 클릭하여 설치나 업데이트를 진행하시면 됩니다.

설치를 완료한 다음에는 Visual Studio를 다시 시작하라는 메시지가 나타나며, 이 메시지에 따라 다시 시작 버튼을 클릭하면 자동으로 다시 실행됩니다.

기존 프로젝트 또는 새 프로젝트에 NUnit 프레임워크와 NUnit Runner 추가하기

이제 NuGet 패키지 관리자를 새로 업그레이드하였으니 이 패키지 관리자를 사용하여 기존 프로젝트 또는 새 프로젝트에 NUnit 프레임워크와 NUnit Runner를 추가할 차례입니다. 단위 테스트 기능을 추가하려는 프로젝트를 열거나 새로운 프로젝트를 만들고, 아래와 같이 솔루션 탐색기에서 해당 프로젝트를 마우스 오른쪽 버튼으로 클릭한 다음, NuGet 패키지 관리 메뉴를 선택합니다. 만약 테스트 코드와 실제 제품 코드를 분리하고자 할 경우에는 별도의 새로운 프로젝트를 만든 다음 그 프로젝트에 아래 그림과 같이 패키지 관리자를 실행하도록 하면 됩니다.

 

 

그러면 NuGet 패키지 관리자가 다음과 같이 나타납니다. 아무것도 설치한 것이 없으므로 처음에는 덩그러니 빈 화면만 나타나는데, 이번에도 좌측편의 항목들 중 온라인을 선택합니다.

 

그 다음, 우측 상단의 검색 창에 NUnit을 입력하고 검색 버튼을 클릭하면 다음과 같이 NuGet 관련 패키지들이 나타나게 됩니다.

 

이 중에서 우리가 필요로 하는 것은 NUnitNUnit.Runners 패키지입니다. NUnit 패키지에서는 NUnit 프레임워크 어셈블리를 포함하고 있으며, NUnit.Runners 패키지는 NUnit 테스트 실행을 위한 프로그램의 GUI, CLI 및 플랫폼 중립, x86 버전의 파일도 같이 들어있습니다. 그러나 Runners 패키지는 실제 프로젝트에 참조로 추가되는 것은 아니며 Windows 탐색기를 사용하여 파일을 별도로 실행하거나 빌드 자동화 시점에서 활용할 수 있는 유틸리티 정도로 생각하면 편합니다.

이제 새로운 Test Fixture 클래스와 Test Case 메서드들을 몇 가지 추가해봅니다. 테스트해 보고픈 임의의 코드를 추가하고 컴파일이 잘 되는지 확인합니다. 여기서는 다음과 같이 코드를 작성했다고 가정해 보겠습니다.

이제 위의 테스트 어셈블리를 포함한 솔루션을 NuGet이 설치한 NUnit Runner를 통하여 열어보도록 하겠습니다. 솔루션 폴더를 찾아서 폴더 창을 열려고 하면 번거롭습니다. 이를 단순하게 하기 위하여, 현재 열려있는 코드 편집기 창의 탭 부분을 오른쪽 버튼으로 클릭하면 상위 폴더 열기 메뉴가 아래 그림과 같이 나타납니다. 이 메뉴를 클릭합니다.

 

그러면 다음과 같이 폴더 창이 정확한 위치를 가리키며 나타나게 됩니다. 이제 이 위치에서 SLN 파일이 있는 위치로 상위 폴더로 몇 번 이동합니다. 그 다음, 해당 폴더 위치를 기준으로 packages 폴더 > NUnit.Runners.x.x.x 폴더 > tools 폴더 순으로 접근합니다. 그리고 아래 그림과 같이 nunit.exe 파일을 찾아 실행합니다.

 

익숙한 화면이 나타납니다. 시스템에 관리자 권한을 이용하여 설치하지 않았어도 NUnit Runner가 즉시 실행되고 사용 가능한 상태로 준비된 것이 보입니다. 이제 여기서 SLN 파일을 열어보겠습니다. File 메뉴의 Open 메뉴를 선택하여 SLN 파일을 찾아 엽니다.

 

만약 솔루션 파일을 열려고 시도하였을 때, 솔루션이 이상 없이 컴파일이 잘 됨에도 불구하고 다음과 같이 오류 메시지가 나타나면 대상 플랫폼 설정이 NUnit의 대상 플랫폼과 일치하지 않기 때문에 오류가 발생하는 것입니다.

이 경우 문제 해결을 위하여 아래 그림과 같이 대상 플랫폼을 Mixed Platform 대신 x86으로 변경하고 nunit-x86.exe Runner를 대신 사용하거나, Any CPU로 맞추어 다시 솔루션을 빌드합니다.

SLN 파일을 열고 난 다음에는 테스트를 진행할 수 있게 화면이 나타납니다. 현재 활성화된 환경 설정을 기준으로 자동으로 포커스가 변경됩니다.

테스트가 잘 실행되는지 살펴봅니다. 예상대로 Case 1decimal이 정확한 덧셈을 처리하고 있음을 증명하며, Case 2Windows 환경에서 언제나 성공합니다. 그러나 Case 3Windows 환경에서 언제나 실패하며, Case 41글자이지만 StringChar가 분명히 다른 형식임을 확인해주고 있습니다.

실제 코드 어셈블리와 테스트 어셈블리를 분할하는 방법

NuGet 패키지 관리자를 사용하여 NUnit을 전보다 더 가깝고 편리하게 사용할 수 있게 된 것은 좋은 일입니다. 그렇지만 한 가지 고민이 남는데, 인프라의 개선과는 별도로 설계와 유지에 있어서 테스트 코드와 실제 제품 코드가 한 배를 타는 것은 별로 좋은 것 같지 않습니다. 테스트 코드가 제품 코드에 자유롭게 접근할 수 있으면서도, 제품 코드가 테스트 코드를 배려하는 별도의 부수적인 옵션 구성 요소들을 추가하는 일 없이, 테스트 코드가 자유롭게 제품의 기능을 접근하여 확인할 수 있는 수단이 필요할 것입니다.

여기에 대한 답을 .NET FrameworkFriend Assembly라는 이름의 개념으로 정의하고 있는데, 기본적으로 Assembly는 그 안에 속한 Module들 간에는 internal로 선언한 멤버들을 자유롭게 제어하고 다룰 수 있게 되어있습니다. 그런데 이 Assembly 간의 관계를 설정해두면 특정 어셈블리 상의 코드에 대해서만 internal로 선언한 멤버들을 자유롭게 제어하고 호출하거나 다룰 수 있게 해주는 특권의 부여가 가능합니다.

이 기능을 사용하면, 제품에 대한 실제 코드를 담고 있는 클래스 라이브러리나 실행 파일 모듈을 가지고 있는 .NET 어셈블리와 각 유형별 테스트 케이스를 따로 모아놓은 테스트 어셈블리들을 분리하여 테스트 어셈블리는 배포하지 않고, 실제 코드 어셈블리만 배포하는 것이 가능합니다. 그러면서도, 실제 코드 어셈블리의 모든 internal 멤버들을 테스트 어셈블리들이 자유롭게 활용할 수 있습니다. 이렇게 하여 둘 사이에 발생할 수 있는 상호 종속적인 관계를 분리할 수 있으니 훨씬 자유로운 테스트 코드 작성이 가능합니다.

위의 예제에서 보인 것처럼 실제 코드와 테스트 코드를 분리한 상태에서, 실제 코드를 가지고 있는 어셈블리에서는 우선 보호하고 싶은 클래스나 멤버에 대해 internal 키워드를 사용하여 선언합니다. 여기까지는 우리가 알고 있는 그대로이며, 다른 어셈블리에서는 internal 키워드를 사용하여 선언한 멤버들을 접근하거나 활용할 수 없습니다. 그러나, 프로젝트 내에 추가할 테스트 어셈블리의 이름을 아래 그림과 같이 확인해둡니다.

접근을 허용하려는 테스트 어셈블리의 이름을 찾아 복사합니다. 그리고 실제 코드를 포함하는 어셈블리의 적당한 위치에 다음과 같이 코드를 작성합니다. 아래와 같이 어셈블리에 대한 특성을 부여하는 코드는 보통 Visual Studio 프로젝트와 함께 자동으로 생성되는 AssemblyInfo.cs 파일에 기술하면 편리합니다.

[assembly: System.Runtime.CompilerServices.InternalsVisibleTo("<Assembly Name>")]

 

위와 같이 코드를 작성하고 컴파일 한 다음 경고 메시지가 나타나지 않으면 됩니다. 그 다음, 접근을 허용한 어셈블리에서 테스트하려는 코드를 포함한 어셈블리를 참조에 추가한 다음, internal로 선언한 모든 멤버들을 정상적으로 사용할 수 있는지 확인하여, 테스트 코드를 작성할 수 있는 상태이면 테스트 케이스를 만들어나가기 시작하면 됩니다.

결론

테스트 주도 개발은 이번 아티클에서 살펴본 것과 같이 초기의 개발 환경 구축을 단순화할 수 있다면 얼마든지 쉽게 시작할 수 있는 효율적이고 인상적인 개발 방법론입니다. 그러나 여기에서 염두에 두어야 할 것은 이렇게 구축한 개발 환경을 어떤 관점을 유지하면서 활용해 나아갈 것인가에 대한 전략의 설정과 실천에 있을 것입니다.

테스트 주도 개발에 관한 좀 더 근본적인 내용을 검토하기 위해서는 다양한 자료들을 참조할 수 있지만, 가장 추천해 드릴 만한 자료로는 단연 Kent BeckTest Driven Development (ISBN 978-89-91268-04-3)이라는 도서입니다. 테스트 주도 개발의 원칙과 방향성에 대한 이야기를 자세히 들어볼 수 있으므로 꼭 살펴보실 것을 권합니다.


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

댓글을 달아 주세요

Visual Studio2012. 10. 8. 20:43

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

Visual Studio 2012 Full Suite를 사용하는 경우에는 발견되지 않는 것 같습니다만 Visual Studio 2012 Express for Web의 경우 Silverlight 5 개발 환경이 구축되지 않는 문제가 종종 발견됩니다. 이 경우 아래와 같이 간단한 절차를 거쳐서 쉽게 문제를 해결할 수 있습니다.

  • 사용하는 Visual Studio 2012 Express for Web의 언어 버전을 확인합니다. 한국어 버전인 경우 정확히 한국어 패키지를 찾아 설치해야 하며, 영어인 경우도 마찬가지입니다.
  • Visual Web Developer Express 2010 및 Service Pack 1을 설치해야 합니다. Silverlight 5 Tools for Visual Studio 2010 패키지 설치에 필요합니다. http://www.microsoft.com/web 에서 Web Platform Installer를 통하여 설치할 수 있습니다.
  • Silverlight 5 Tools for Visual Studio 2010 패키지를 설치해야 합니다. 영어 버전의 Visual Studio 2012 Express for Web을 사용 중인 경우 http://www.microsoft.com/en-us/download/details.aspx?id=28358 에서 패키지를 다운로드하여 설치하시고, 한국어 버전의 Visual Studio 2012 Express for Web을 사용 중인 경우 http://www.microsoft.com/ko-kr/download/details.aspx?id=28358 에서 패키지를 다운로드하여 설치합니다.

    NOTE: Visual Studio 2010에 맞추어 나온 패키지이지만 Visual Studio 2012에서 동시에 같은 컴포넌트를 공유하기 때문에 이 패키지를 설치하는 것이 이 문제에 대한 해결책이 되는 것 같습니다.
  • Silverlight 5 Tools for Visual Studio를 설치하고 Silverlight 5 기반의 프로젝트를 생성하려고 할 때 Developer Runtime을 설치해야 한다는 메시지가 나오면 지시에 따라 설치를 진행합니다.

    만약 Developer Runtime이 이미 설치 되어있다고 나오는 경우 시스템에 설치되어있는 Silverlight 5 런타임들을 모두 삭제하고 다시 설치를 진행해봅니다.

이와 같이 개발 환경을 구축하고 난 다음에 Visual Studio 2012 Express for Web에서도 Silverlight 5 기반 프로젝트를 빌드하고 개발할 수 있게 됩니다. 단, 주의할 것이 하나 있는데 Expression Blend Preview for Silverlight 5와는 프로젝트 호환성에서 문제가 발생할 수 있으므로 프로젝트 파일의 버전 관리에 각별히 유의하는 것이 필요합니다. Expression Blend Preview for Silverlight 5가 이해하는 솔루션 및 프로젝트 파일의 형식은 Visual Studio 2012의 것보다 이전 버전이기 때문에 특히 같이 따라오는 웹 및 테스트 유닛 프로젝트 등에서 예기치 않은 위험 요소가 있을 수 있습니다.

ps. 프로젝트 로드 후에 %PROGRAMFILES(X86)%\MSBuild\Microsoft\Expression\Blend\Silverlight\v5.0\Microsoft.Expression.Blend.Silverlight.targets (혹은 %PROGRAMFILES%\MSBuild\Microsoft\Expression\Blend\Silverlight\v5.0\Microsoft.Expression.Blend.Silverlight.targets) 파일을 찾을 수 없다는 오류 메시지가 나타나는 경우, Expression Blend Preview for Silverlight 5의 Custom Font Packaging 관련 빌드 Task가 누락된 것이므로 이 경우 Expression Blend Preview for Silverlight 5도 같이 설치해주어야 합니다.

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

댓글을 달아 주세요

Useful Solutions2012. 8. 8. 20:26

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

오늘 소개해드리려고 하는 것은 Microsoft Press에서 그동안 출간된 eBook, 백서, 가이드 문서 등을 eBook 형태로 집대성해서 다운로드할 수 있도록 공개한 내용인데요, 상당히 많은 자료들이 있지만 그 중에서도 개발자나 IT 엔지니어에게 도움이 될 만한 부분들만 따로 간추려서 블로그 포스팅을 해 봅니다. 제공되는 모든 eBook은 영어로 작성되어있습니다.

여기서 소개하지 않은 백서나 가이드 문서, 트레이닝 킷 혹은 PDF 이외의 다른 포맷의 다운로드 컨텐츠를 찾으시려면 아래 웹 사이트에 방문하셔서 더 찾아보실 수 있습니다. :-)

제품 별로 자료들을 분류한 것으로 적절한 카테고리의 항목을 찾아 검색하시면 쉽게 다운로드하실 수 있습니다.

클라우드 기술 관련

프로그래밍 관련

Office 365 및 Office 2010 관련

Windows Server 관련

일반 사용자

출처: http://blogs.msdn.com/b/jspark/archive/2012/08/06/ebook-windows-azure-windows-8-windows-phone-7.aspx

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

댓글을 달아 주세요

  1. 유용한데요? ^^

    2012.08.09 10:47 신고 [ ADDR : EDIT/ DEL : REPLY ]

PaaS2012. 7. 13. 18:07

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

이전에 신청한적이 있었던 Windows Azure Media Service Preview 프로그램에 대한 테스트 계정을 오늘 얻을 수 있었습니다. 이에 맞추어 간단한 기능을 테스트해보고 처음으로 블로그 포스트를 남겨봅니다. Windows Azure Media Service는 Windows Azure Platform에 근래에 새로 추가된 클라우스 서비스의 한 종류로, 여러분이 가지고 있는 동영상 컨텐츠를 클라우드 컴퓨팅 상의 자원을 활용하여 인코딩하고 그 내용을 곧바로 저장소와 CDN에 게시할 수 있도록 도와주는 서비스입니다. 현재는 프리뷰 버전으로 나온 상태이므로 기능이나 API에 많은 변동이 있을 수 있습니다. 그러나 서비스의 기본 방향이나 목적은 지금 설명 드린 내용이 주된 내용이 되므로 국내외에서 미디어 관련 서비스를 활용하고자 하는 많은 고객들의 관심을 얻을 수 있을 것으로 봅니다.

Windows Azure Media Service를 신청하려면?

Windows Azure Media Service는 현재 신청을 별도로 받아서 계정을 할당하는 방식으로 사용해 볼 수 있습니다. 이를 위해서는 우선 Windows Azure 계정을 하나 만드셔야 하며, http://www.windowsazure.com/ 에서 신청하실 수 있습니다. 국내에 서비스가 정식으로 시작되었기 때문에, 이제는 해외 거주지 정보가 필요하지 않고 쉽게 신청을 마무리하실 수 있습니다.

Windows Azure 계정 관리 홈페이지 (account.windowsazure.com)에 접속하신 후에, "미리 보기 기능"을 클릭하면 현재 신청 가능한 프리뷰 프로그램들이 열거됩니다. 이 중에서 Media Services 항목을 신청하시면 대기열에 예약이 됩니다. 승인이 완료되면 아래 그림과 같이 관리 홈페이지 (manage.windowsazure.com)에 접속하였을 때 Media Service에 대한 메뉴가 새로 나타납니다.

 

미디어 서비스를 만든 후에는 새로운 미디어 서비스를 신청해야 하며, 이 때 미디어 서비스와 연결할 스토리지 계정을 하나 지정하게 됩니다. 미디어 서비스 API로 동영상을 업로드하고 인코딩 후 결과물을 받아보는 것이 모두 연결된 스토리지 계정을 통해 이루어지고, 미디어 서비스 자체는 현재 프리뷰 프로그램 상태에 있기 때문에 미디어 서비스를 통해서 실행되는 비용은 발생하지 않지만 스토리지에 파일을 보관하고 트랜잭션이 발생하는 것에 대해서는 비용이 따로 계산이 됩니다.

.NET Framework 기반 미디어 서비스 API 개발 환경 구성하기

.NET Framework로 미디어 서비스 API를 호출하기 위해서는 제공되는 SDK를 사용하는 방법이 가장 유용하고 편리합니다. 이를 위해서는 몇 가지 소프트웨어 패키지를 설치해야 하며, 다음의 패키지를 다운로드하여 설치하시면 됩니다.

미디어 서비스 API 자체가 REST API이므로 .NET 이외의 언어에서도 얼마든지 호출이 가능합니다. 기타 언어에 대한 SDK 및 지원 내용, 구성 방법은 아래의 각 링크를 참고하시면 됩니다.

테스트 프로젝트 구성하기

이 예제에서는 Windows 데스크톱 응용프로그램 환경에서 코드를 작성하는 것을 기준으로 예를 들어보겠습니다. Visual Web Developer 2010 SP1이나 Visual Studio 2012 for Web RC를 설치한 경우, Windows 클래스 라이브러리 프로젝트를 만들고 프로젝트 속성에서 프로젝트의 출력 유형을 클래스 라이브러리에서 콘솔이나 Windows로 변경하면 직접 실행 가능한 EXE 파일로 빌드 결과물을 만들 수 있습니다.

콘솔 프로그램을 하나 만들고, 프로젝트 참조에 필요한 라이브러리들을 모두 추가해야합니다.

우선 WCF Data Service 5.0 for OData v3 어셈블리들을 추가해야 합니다. 64비트 컴퓨터를 사용 중인 경우 %programfiles(x86)%\Microsoft WCF Data Services\5.0\bin\.NETFramework 폴더를, 32비트 컴퓨터를 사용 중인 경우 %programfiles%\Microsoft WCF Data Services\5.0\bin\.NETFramework 폴더에 있는 아래의 5개 DLL을 참조로 추가합니다.

  • Microsoft.Data.Edm.dll
  • Microsoft.Data.OData.dll
  • Microsoft.Data.Services.Client.dll
  • Microsoft.Data.Services.dll
  • System.Spatial.dll

이어서 Windows Azure Storage Client 어셈블리를 추가해야 합니다. %programfiles%\Microsoft SDKs\Windows Azure\.NET SDK\2012-06\bin 폴더로 이동하여 아래의 DLL을 참조로 추가합니다.

  • Microsoft.WindowsAzure.StorageClient.dll

이어서 Windows Azure Media Service SDK 어셈블리를 추가해야 합니다. 64비트 컴퓨터를 사용 중인 경우 %programfiles(x86)%\Microsoft SDKs\Windows Azure Media Services\Services\v1.0 폴더를, 32비트 컴퓨터를 사용 중인 경우 %programfiles%\Microsoft SDKs\Windows Azure Media Services\Services\v1.0 폴더에 있는 아래의 DLL을 참조로 추가합니다.

  • Microsoft.WindowsAzure.MediaServices.Client.dll

마지막으로, Windows Azure Media Service SDK가 필요로 하는 Azure Storage Client DLL의 어셈블리 버전에 대하여 바인딩 리디렉션을 지정하여 Azure Media Service SDK가 최신 버전의 Windows Azure Storage Client 라이브러리와 상호작용할 수 있도록 조정해야 합니다. 이를 위하여 프로젝트에 app.config 파일 (웹의 경우 web.config 파일)을 추가하여 아래의 섹션을 추가합니다.

<?xml version="1.0"?>
<configuration>
...
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.WindowsAzure.StorageClient"
          publicKeyToken="31bf3856ad364e35"
          culture="neutral" />
        <bindingRedirect oldVersion="1.1.0.0" newVersion="1.7.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
...
</configuration>

설치한 Azure SDK의 버전이 1.6 버전인 경우 위의 예제 코드에서 1.7.0.0 대신 1.6.0.0으로 지정하면 됩니다. 저의 경우, Windows 8용 Azure SDK를 설치했기 때문에 1.7 버전으로 지정하였습니다.

테스트 프로젝트 코딩하기

아래의 프로그램 코드를 잠시 살펴보겠습니다.

using System;
using System.Linq;
using Microsoft.WindowsAzure.MediaServices.Client;

namespace MediaServiceTestDrive
{
    class Program
    {
        static void Main(string[] args)
        {
            CloudMediaContext mediaContext = new CloudMediaContext(
                "" /* Account Name */,
                "" /* Account Key */
                );

            IAsset asset = mediaContext.Assets.Create(
                "" /* File Path */,
                AssetCreationOptions.CommonEncryptionProtected);

            IJob job = mediaContext.Jobs.Create("Sample Job");

            IMediaProcessor mediaProcessor = mediaContext
                .MediaProcessors.Where(x => x.Name == "Windows Azure Media Encoder")
                .FirstOrDefault();

            ITask task = job.Tasks.AddNew(
                "Sample task", mediaProcessor,
                "H.264 256k DSL CBR" /* Encoding Template Name */,
                TaskCreationOptions.None);

            task.InputMediaAssets.Add(asset);
            task.OutputMediaAssets.AddNew(
                "Output asset",
                true, AssetCreationOptions.None);

            job.Submit();

            while (true)
            {
                foreach (var eachJob in mediaContext.Jobs.ToList())
                {
                    Console.WriteLine(eachJob.State);
                }
                System.Threading.Thread.Sleep(5000);
            }
        }
    }
}

호출 절차가 다소 복잡해 보이지만 논리적으로 여러 작업들을 비동기 방식으로 찾아볼 수 있도록 구성한 것이 특징입니다. 우선 제일 먼저 CloudMediaServiceContext 클래스의 인스턴스를 만들어 연결을 성립시킵니다. 이 과정에서 계정 이름과 비밀 키 값을 요구하는 데 이 부분은 manage.windowsazure.com에 나와있는 미디어 서비스의 계정 이름과 키 값을 지정하면 됩니다. 스토리지 서비스에 대한 계정 이름과 키 값이 아님을 유의합니다. 스토리지 서비스에 대한 계정 이름과 키 값은 미디어 서비스 내부에서 별도로 동기화하여 보관하는 기능이 있으므로 이를 참고합니다.

그 다음 파일을 스토리지에 올리기 위한 절차이자 인코딩 대상을 지정하기 위한 절차로 Asset을 만듭니다. Asset을 만들 때 지정하는 인수에는 로컬 컴퓨터의 미디어 파일의 경로를 지정하며, 이것을 스토리지에 업로드하기 위하여 시간이 다소 걸릴 수 있습니다.

그 다음으로 작업을 하나 정의합니다. 작업 안에는 여러 가지의 세부 태스크가 존재할 수 있으며 이것을 논리적으로 하나의 작업으로 취급합니다.

그 다음에는 수행하려는 작업을 처리해줄 수 있는 미디어 프로세서 개체를 가져와야 합니다. 프로세서는 Azure Media Service가 제공하는 범위 안에서만 사용이 가능함에 유의합니다. LINQ 식을 사용하여 미디어 프로세서 개체를 확인하고 그 중 필요한 것을 택합니다. 여기서는 단순 인코딩 처리를 위하여 Windows Azure Media Encoder를 선택합니다.

그 다음으로 작업에 태스크를 하나 추가합니다. 태스크를 추가할 때에는 태스크의 이름과 미디어 프로세서 개체, 미디어 프로세서의 동작 특성을 정의하는 인코딩 템플릿 이름 등을 지정합니다. Windows Azure Media Encoder의 경우 인코딩 템플릿 이름에 대한 정보를 Expression Encoder SDK에서 확인할 수 있습니다. 이름들에 대한 목록은 http://msdn.microsoft.com/en-us/library/microsoft.expression.encoder.presets_members.aspx 에서 확인 가능합니다.

만들어진 태스크의 입력과 출력 대상을 정의하는데, 앞서 지정한 asset을 입력에 추가하고, 출력에는 새로운 asset을 생성하도록 예약합니다.

모든 구성이 끝나면 Job 객체의 Submit() 메서드를 호출하여 작업을 의뢰합니다. 이 떄 부터 모니터링 기능을 사용하여 작업의 진행 상황을 실시간으로 질의할 수 있습니다. 각각의 작업이 완료되면 State 속성이 Completed로 나타나므로 이를 통해서 작업 완료 여부를 확인 가능합니다.

실제로 어떻게 결과물이 나타나는가?

스토리지를 실제로 접속해 보면 새로운 컨테이너들이 만들어집니다. 입력용 Asset을 위한 전용 컨테이너가 먼저 만들어지고, 출력용 Asset을 위한 전용 컨테이너가 나중에 만들어지는 순서입니다. 각각의 컨테이너들은 초기에는 비공개 상태로 설정되어있습니다.

입력용 컨테이너로 만들어진 것을 열어보면 요청한 파일어 업로드된 것을 볼 수 있습니다.

출력용 컨테이너에는 기대한대로 인코딩된 파일과 메타 데이터 파일이 들어있습니다. 

출력용 컨테이너 폴더의 퍼미션 설정을 BLOB 공개로 전환하고 CDN을 연결하면 즉시 서비스 가능한 동영상이 제공되는 것입니다.

좀 더 자세한 정보를 보려면?

간단하게 한 페이지 안에 기본적인 코딩 레시피를 모아놓은 페이지가 있으므로 이 이후에 좀 더 구체적인 작업을 하기 원한다면 아래 페이지에서 내용을 확인하기 바랍니다. PlayReady와 같은 DRM 적용도 매우 쉽게 수행할 수 있습니다.

http://go.microsoft.com/fwlink/?LinkId=251359&clcid=0x412

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

댓글을 달아 주세요

Windows + .NET2012. 2. 4. 23:02

그 동안 .NET은 ASP.NET을 통해서 개발하는 것이 가장 최선이었고 실제로도 많은 개발 프로젝트는 ASP.NET 웹 폼을 통해서 진행되어왔습니다. 그리고 당연한 이야기이지만 PHP와 .NET은 전혀 다른 도메인에 속해있던 분리된 환경이었고, 그저 IIS를 통해서 호스팅 가능한 서로 다른 응용프로그램 도메인 상의 환경일 뿐이었습니다.

그러나 최근에 아주 흥미롭고 참신한 발견을 다시 했는데, 그간 베타 수준에만 머물러있던 Phalanger의 꾸준한 버전 업그레이드를 통해서 올해 1월에 3.0 버전을 발표했습니다. 64비트 시스템에 대한 지원도 충실히 하고 있으며, PHP의 태생적 한계로 자주 지목된 성능 상의 문제도 .NET 런타임을 사용하기로 하였기 때문에 구조적으로 해결하고 있으며, 무엇보다도 중요한 것은 엄격하게 PHP의 문법을 준수한다는 전제 아래에서 PHP 코드를 사용할 수 있다는 점입니다.

ps. Phalanger의 발음은 '팔란저'라고 하면 됩니다. 뜻은 '여우 원숭이'입니다.

Phalanger 프로젝트의 주요 기능은 다음과 같습니다.

PHP를 .NET 환경의 주요 프로그래밍 언어로 사용 가능하게 만듭니다.
* PHP 언어를 .NET CLR에서 사용 가능한 MSIL로 컴파일합니다.
* .NET 객체를 직접 PHP/CLR 언어 확장을 통해서 곧바로 사용할 수 있습니다.
* C#, VB.NET 등의 .NET 프로그래밍 환경에서 기존 PHP 코드 기반 라이브러리를 재사용할 수 있습니다.

기존 PHP 응용프로그램의 실행 속도를 향상시킵니다.
* 기존의 많은 수의 PHP 응용프로그램을 컴파일할 수 있습니다.
* Just-in-Time (JIT) 컴필레이션을 통해서 실행 속도를 개선할 수 있습니다.
* 표준 PHP 라이브러리 함수들과 네이티브 PHP4 확장 플러그인들을 그대로 사용할 수 있습니다.

PHP/CLR 확장을 통해서 PHP의 기능을 확장할 수 있습니다.
* PHP/CLR을 통해서 기존의 .NET CTS 시스템과 완벽하게 연동할 수 있습니다.
* PHP/CLR 프로젝트에 기존의 C#, VB.NET, C++ CLR 등으로 작성한 코드의 네임스페이스를 불러올 수 있습니다.
* PHP 언어로 .NET 제네릭 형식을 불러오거나 제작할 수 있습니다.
* .NET 커스텀 어트리뷰트, 부분 클래스, 프로퍼티 등 주요 기능들을 지원합니다.

PHP 언어로 .NET 라이브러리를 만듭니다.
* .NET/Mono 어셈블리에 맞추어 PHP 스크립트를 직접 DLL로 컴파일할 수 있습니다.
* Pure Mode를 사용하면 네이티브 코드에 의존하지 않는 완전한 .NET 환경에 맞출 수 있습니다.
* Legacy Mode를 사용하면 기존 PHP4/PHP5와의 호환성을 유지하면서도 .NET 환경에 맞출 수 있습니다.

PHP 프로젝트에서 .NET 라이브러리를 사용할 수 있습니다.
* C#이나 VB.NET으로 작성한 비즈니스 로직 위에 PHP를 표현 수단으로 채택할 수 있습니다.
* Phalanger를 통해서 기존에 작성한 어떤 종류의 .NET 객체이더라도 PHP에서 사용할 수 있습니다.
* ASP.NET 2.0 멤버십 API를 Phalanger 기반 PHP와 ASP.NET 모두에 적용할 수 있습니다.

PHP 언어를 Visual Studio에 통합할 수 있습니다.
* 프로젝트 템플릿, 문법 하이라이트, 디버거를 설치할 수 있습니다.
* 이를 통하여 Windows Forms, Console, Simple Win32 App을 만들 수 있습니다.

미리 이야기할 것이 하나 더 있는데 안타깝게도, Phalanger가 지원하는 PHP 문법은 기존의 PHP 문법과 완벽하게 일치하는 것이 아닙니다. 그래서 Phalanger를 기존의 PHP와 완벽하게 동일한 집합이나 기술로 보는 것은 다소 무리가 있으며, 대신 기존에 여러분이 알고 있던 PHP를 .NET 환경에서 그대로 쓸 수 있다는 사실에 집중하는 것이 바람직합니다.

개인적으로 Phalanger를 테스트하기에 가장 이상적인 환경은 WebMatrix인 것 같습니다. 다음 아티클에서는 Phalanger를 설치하고 WebMatrix위에 Phalanger로 PHP 코드를 작성하는 방법을 소개하도록 하겠습니다.

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

댓글을 달아 주세요

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)

댓글을 달아 주세요

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)

    댓글을 달아 주세요

    발표 자료 공유2011. 2. 19. 18:07

    2011년 2월 19일 토요일 오후 2시부터 한국 MS에서 있었던 Windows Azure Cafe Boot Camp 2010-02 행사 발표 자료를 공유합니다. 다음달에도 계속 Boot Camp 행사가 있을 예정이 많은 참여와 관심 부탁드립니다. 감사합니다. :-D


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

    댓글을 달아 주세요

    PaaS2011. 2. 17. 16:37

    인터넷 검색 중에 아주 흥미로운 웹 캐스트를 하나 발견하였습니다. 닷넷 기반 응용프로그램 프레임워크 전문 개발 업체인 DevForce를 기반으로 하는 Prism Explorer와 이에 연관된 Northwind 샘플 데이터베이스를 기초로 하는 엔터프라이즈 응용프로그램을 Windows Azure Platform의 Windows Azure Compute와 SQL Azure Database로 마이그레이션하는 웹 캐스트입니다. 기본적으로 이 동영상은 DevForce 프레임워크의 클라우드에서의 활용 가능성 및 실리성을 설명하기도 하지만, 동시에 Windows Azure Platform에 대한 실질적인 예를 들어주는 좋은 사례라 생각하여 블로그에 백서와 동영상에 대한 링크를 첨부하였습니다.

    백서 다운로드 (English Only): http://www.ideablade.com/PDF/DevForceInAzure.pdf
    동영상 출처 (English Only): http://www.ideablade.com/Videos/PrismExToAzure/
    홈페이지: http://www.ideablade.com/DevForceProductPlatform/DevForceInAzure.aspx

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

    댓글을 달아 주세요

    발표 자료 공유2011. 2. 17. 01:37
    실전 Cloud App 분석 세미나 발표 자료 공유합니다. (2010년 겨울 인하대학교 하이테크에서 진행한 세미나)


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

    댓글을 달아 주세요

    1. 고맙습니다. 다운로드해갑니다. :)

      2011.02.24 10:06 신고 [ ADDR : EDIT/ DEL : REPLY ]

    발표 자료 공유2011. 2. 17. 01:16

    이번 2011년 2월 CODE PARTY 세미나에서는 개발자들을 위한 Windows Azure Platform에 대한 전반적인 Overview와 개발 방법론, 그리고 다양한 실전 사례들을 살펴볼 예정입니다. Client Application Development MVP이신 김현중 MVP님과 삼성소프트웨어멤버십에서 활동 중이고 클라우드 어플리케이션 경진 대회 금상 및 바다 어플리케이션 챌린지 수상에 빛나는 진성주 회원님과 같이 2시간 동안 삼성동 포스코센터 서관 5층에서, 2011년 2월 23일 수요일 저녁 7시부터 세미나가 진행될 예정입니다. 관심있으신 분들의 많은 참여와 홍보 부탁드립니다.


    세미나 등록 바로 가기: http://new.imaso.co.kr/seminar_inquiries/add/cp13

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

    댓글을 달아 주세요

    기술 소식2011. 2. 1. 11:17

    Windows Azure Platform Training Kit의 2011년 1월 버전이 새로 출시되었습니다. 다운로드는 카페 대문에 걸려있는 링크 - 또는 - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&displaylang=en 에서 다운로드하실 수 있습니다.

    다음은 2011년 1월 버전에서 변경된 사항들입니다.

    * Windows Azure Connect 데모 스크립트 (NEW)
    * 웹 및 작업자 역할의 기능 향상에 대한 데모 스크립트 (NEW)
    * Windows Azure VM Role 데모 스크립트 (NEW)
    * Rafiki 데모 스크립트 (NEW)
    * Windows Phone 7과 Windows Azure 연동 Hands on lab 추가 (NEW)
    * Access Control 서비스를 통하여 여러 비즈니스 아이덴티티 공급자와 상호 작용하는 방법을 소개하는 Hands on lab 추가 (NEW)
    * Identity 관련 Hands on lab 업데이트
    * Visual Studio 코드 조각 설치 방식 개선
    * 그 외 데모 및 Hands on lab 버그, 잘못된 내용 교정

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

    댓글을 달아 주세요

    PaaS2011. 1. 30. 03:08

    Windows Azure AppFabric에 새로 추가될 구성 요소 중 가장 많은 기대를 받고 있는 서비스가 2011년중 런칭을 준비하고 있습니다. 바로 Access Control에 관한 향상인데, 매력적인 내용이 무궁 무진합니다. 이제 여러분은 기존에 개발한 웹 응용프로그램에 약간의 수정을 가하는것 만으로도 손쉽게 Windows Live ID, Google, Yahoo!, Facebook을 통한 통합 인증을 구현할 수 있고 더불어서 기존에 설치하여 운영 중인 Active Directory Domain이 있다면 여기에 Active Directory Federation Services 2.0을 추가 설치하여 이와 연동하는 것도 가능합니다. ASP.NET 응용프로그램 관점에서 이는 전적으로 Windows Identity Foundation (WIF)을 통하여 손쉽게 구현할 수 있는 부분입니다.

    Windows Identity Foundation에 대한 간략한 소개

    Windows Identity Foundation (이하 WIF)은 XML Web Service Enhancements에서 소개된 적이 있는 WS-Trust와 WS-Federation 표준을 지원하는 .NET 기반의 ID/클레임 기반 인증을 손쉽게 구현할 수 있도록 도와주는 기술 집합입니다. 단순한 프레임워크만 제공되는 것이 아니고, Visual Studio 2008이나 Visual Studio 2010에 연동하여 프로젝트의 설정을 변경할 수 있도록 도와주는 기능도 같이 설치되므로 코드 작업을 거의하지 않고 기본 틀을 만드는 것이 가능합니다.

    WIF는 전통적으로 ASP.NET 기반 응용프로그램에서 사용하던 인증 방식을 초월합니다. 전통적으로 ASP.NET 기반 응용프로그램들은 웹 브라우저를 통하여 접근하는 사용자들에게서 직접 ID와 비밀 번호를 받아 이를 내부 DB와 대조하여 쿠키를 교환하는 방식을 사용해왔습니다. 대부분의 경우 이는 합당한 것이며 당연한 절차였습니다. 하지만 잘못 구현할 경우 정보가 유출되거나 의도하지 않은 사고로 이어지기 쉬웠고, 대개는 이러한 일 때문에 웹이 다소 위험한 공간이라는 편견을 사용자들에게 가지게 하는 부작용도 초래하였습니다. 하지만 WIF는 사용자 인증이라는 다소 민감한 사안을 좀 더 전문적인 기관이나 검증된 솔루션으로 위임한 채, 이들 기관으로부터 결정된 사항을 비대칭 암호화 기반의 데이터로 넘겨받아 피아식별에 필요한 정보만을 추출하여 사용하는 방식을 이용하는데에 큰 도움을 줍니다.

    클레임 기반의 인증에서 가장 좋은 점은, 인증에 관한 모든 불안 요소를 제거하고, 피아식별이 완료된 이후에 해당 사용자를 정확히 식별하고 프로필을 안전하게 관리하는 것에만 집중하면 된다는 것입니다. 좀 더 서비스의 완성도를 높이는 일에 많은 시간을 할애하고 노력을 기울일 수 있음을 의미합니다.

    Windows Identity Foundation의 역할

    WIF를 프로그래밍 코드 측면에서 살펴보면 핵심은 System.Threading.Thread.CurrentPrincipal 정적 프로퍼티에 있습니다. 기본적으로 이 프로퍼티는 IPrincipal 인터페이스를 구현하는 특정 객체의 참조를 반환하는, 즉, ASP.NET의 기본 인증 방식을 통하여 인증이 완료된 사용자임을 증명하는 객체가 반환됩니다. 하지만 WIF를 사용하도록 구성한 시점부터는 IClaimsPrincipal 인터페이스를 사용하여 하나 이상의 클레임 정보를 아래와 같이 액세스할 수 있게 됩니다. (C# 코드)

    IClaimsIdentity claimsIdentity = ((IClaimsPrincipal)Thread.CurrentPrincipal).Identities[0];

    이미 사용자는 이 페이지를 실행하기에 앞서 적당한 인증 절차를 모두 거쳐 웹 사이트에 로그인한 상태이며, 이러한 부분들은 WIF 내의 FedUtil 도구가 자동 생성하는 STS (Secure Token Service) 웹 사이트에 의하여 처리가 끝납니다. WIF의 개발자 경험에 관한 역할은 이 FedUtil 도구를 개발자가 손쉽게 부를 수 있고, FedUtil 도구를 통하여 기존 ASP.NET이나 WCF 프로젝트가 WIF와 성공적으로 통합될 수 있도록 설정을 업데이트하는 데에 주 목적이 있습니다. 물론 필요하다면 FedUtil을 이용하여 STS 없이 Classic ASP.NET 인증 체계를 이용하도록 되돌리는 것도 가능합니다.

    클레임 기반의 인증을 사용한다는 것은 좋은데 이 일을 누가 대신 처리해준다는건지 이해가 잘 되지 않을 수 있습니다. 사실 기본적으로 WIF 내의 FedUtil은 이러한 일을 해주기 위한 도구입니다. WIF 기반 응용프로그램으로 기존 응용프로그램 코드를 변환하거나 복원하는 역할, STS 서비스를 새로 만드는 역할을 담당하게 됩니다. STS 서비스는 자신의 역할을 올바로 수행할 수 있도록 추가적으로 개발될 필요가 있는데 이때 STS 자체는 ASP.NET 응용프로그램의 형태로 작성된 것이고, 다양한 종류의 WIF 보조 서비스들과 상호작용하면서 실제 요구 사항에 부응하는 인증 시스템을 만들 수 있게 된 셈입니다.

    AppFabric Access Control?

    AppFabric Access Control은 이제 여기서 가장 중요한 역할을 담당하게 됩니다. STS를 클라우드로 올려서 서비스로 제공하는 것이기도 하고 동시에 일반적으로 직접 구현이 어려운 주요 유명 서비스들의 인증 방식을 변환하여 제공해주는 매우 중요한 역할을 합니다. AppFabric Access Control의 역할을 로컬 환경에서 구현하려면 많은 기능들을 A-to-Z로 구현해야 하며 이 자체만으로도 굉장한 프로젝트가 될 것입니다.

    AppFabric Access Control이 클레임을 생성하는 과정은 입력과 출력으로 나눌 수 있는데, 입력은 사용자로부터의 입력이 실제 클레임 정보 제공자로부터 들어오는 과정을 말하는 것으로 초기 버전의 Access Control보다 더 강력해진 것입니다. 그렇게 되어 Google과 Yahoo!, Facebook, AD FS를 경유하는 인증이 가능해지게 되었습니다. 그리고 출력은 이후 시리즈에서 더 살펴볼 예정이지만 사전에 정의된 Rule Group에 의하여 조건부로 설정된 결정 사항들을 전달하는 방식을 여러가지 형태로 제공하는 것으로 OpenID, Facebook, OAuth, WS-Authentication, WS-Federation 등 이름만 들어도 쉽게 알 수 있는 인증 방식들을 제공합니다.

    다음 시간에는

    다음 시간에는 WIF를 이용하여 ASP.NET MVC 3 응용프로그램을 코드 수정 없이 신속하게 클레임 기반의 인증을 지원하는 웹 사이트로 변환하는 과정을 보이도록 하겠습니다. 감사합니다.

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

    댓글을 달아 주세요

    PaaS2011. 1. 20. 18:03

    Windows Azure Platform에서 Compute 서비스가 차지하는 비중은 매우 큽니다. 그런 만큼, Compute 서비스가 어떤 방식으로 실행되고 동작하는지를 파악하는 것이 필요한데, 이에 대한 이야기를 블로그 글로 써보고자 합니다. 그 중에서도 이번 글은 웹 역할과 작업자 역할에 대한 업그레이드 메커니즘에 대한 이야기를 하고자 합니다.

    1. 업그레이드 방법 #1 - VIP 교환 (VIP Swap)

    가장 안전하다고 알려진 방법으로, Compute 서비스는 기본적으로 Production와 Staging이 한 벌이 됩니다. 여러분이 신청한 서비스의 실제 도메인 주소와 연결되는 것이 Production 환경이며, Staging 환경은 임의로 생성된 고유 ID 값을 식별자로 사용하는 FQDN 주소를 사용합니다. 만약 기존에 운영 중인 Production 서비스가 이미 있는 상황에서 프로젝트 파일의 구성에 큰 변화가 있을 때, 가령 SDK 버전의 변경, 최소 인스턴스 수 변경, 프로젝트 추가/제거로 인한 구성 변경 등에 해당되는 경우 VIP 교환 방식을 이용하는 것이 필요합니다.

    VIP 교환 방식을 사용하면 Windows Azure는 네트워크 위치를 즉시 Production과 Staging을 서로 바꿉니다. 즉, Production에 있는 서비스 전체는 Staging으로 이동하고, Staging에 있는 서비스 전체는 Production으로 이동합니다. 스포츠 경기에서 자주 보는 선수 교체 같은 개념입니다. :-)

    VIP 교체 전/후로는 서비스 자체에 결함이 없는 한, 사용자가 변경되는 시점을 알아차리지는 못합니다. 하지만 완벽하게 Seamless한 서비스 업그레이드를 구현하기 위해서는 세션 상태를 별도의 저장소에 보관하여 이전에 구동중인 서비스에서 가지고 있던 세션을 새로운 서비스에서 이어받아 서비스할 수 있도록 설계하는 것이 필요합니다.

    2. 업그레이드 방법 #2 - 패키지 업그레이드

    CSPKG 파일과 CSCFG 파일을 Windows Azure SDK나 Visual Studio Tools for Windows Azure를 사용하여 완성하면 이를 Azure Storage나 Management API를 경유하여 직접 업로드하는 방법입니다. 이 방법은 프로젝트에 큰 변화가 없고 소스 코드나 웹 페이지의 일부와 같이 클라우드 응용프로그램의 일부만을 변경할 때에 사용할 수 있는 방법입니다. 효율적인 서비스 관리를 위하여, Windows Azure Storage를 같이 신청하여 비공개 컨테이너를 생성하고 이곳에 여러분의 서비스 패키지를 여러벌을 올려놓고 Management API를 사용하여 필요 시 교체할 수 있습니다.

    패키지 업그레이드는 VM을 새로 생성하거나, 실행 중인 VM의 OS를 다시 시작시키지 않으며, Windows Azure Fabric Controller의 지시에 따라 내부적으로 기존에 사용중이던 가상 하드 디스크를 언마운트하고, 새로운 가상 하드 디스크를 생성하여 마운트를 합니다. 이전에 올렸던 Windows Azure의 파일 시스템에 대한 글 [Windows Azure Platform/Compute] - Windows Azure VM의 파일 시스템 구조 를 잠시 인용하면, C에는 Local Storage를 위한 공간으로 할당이 되고, D에는 Windows OS가 설치된 공간이며, E부터 Z까지는 동적으로 마운트하는 가상 하드 디스크들을 위한 공간으로 활용이 된다고 하였습니다. 여기서 보통은 E로 시작하여 업그레이드 때 마다 F나 E 드라이브로 다시 마운트 되며, Windows Azure Drive는 그 이후, 보통은 G 드라이브부터 가상 하드 디스크를 마운트하는 셈입니다.

    보통은 패키지 내에서 실행되던 응용프로그램은 업그레이드와 함께 종료되고 다시 시작되지만, 패키지의 권한 밖에서, 관리 목적으로 열어놓은 문서 형식의 파일에 대해 명시적으로 Lock을 걸고 있는 경우 업그레이드가 실패할 가능성도 일부 있어보입니다. 지금 언급하는 방법으로 업그레이드에 실패하는 경우 원격 데스크톱으로 열어놓은 항목을 검토할 필요가 있을 것입니다.

    3. 업그레이드 방법 #3 - 완전 삭제 후 다시 배포

    이것은 업그레이드 메커니즘이라기보다 재설정이라고 하는 것이 정확합니다. 보통은 이 방법까지 오지 않고 VIP 교환으로 해결할 수 있고 또한 그럴 필요가 있습니다. 안타깝게도, Visual Studio Tools for Windows Azure에서 패키지를 배포하는 방법은 이 방법에 속합니다. 따라서, Visual Studio를 이용하여 배포할 때에는 도구 자체의 기능을 사용하여 Production Deploy를 수행하는 것은 위험하며, VIP 스왑을 위한 전초 단계로만 제한적으로 활용하는 것이 안전합니다.

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

    댓글을 달아 주세요

    Visual Studio2011. 1. 20. 15:24

    C#과 Visual Basic .NET의 다음 버전에 대한 이야기가 C# 4.0과 VB.NET 10.0이 출시된지 1년이 채 안된 지금 많은 화두가 되고 있습니다. 그러나 다음 버전에 대한 이야기가 아주 낯설은 이야기만은 아닌 것이 바로 비동기 프로그래밍에 대한 것이 뜨거운 이슈가 되고 있습니다. 일반적으로 비동기 프로그래밍은 전문가들만의 전유물로 잘 알려져 있습니다.

    그러나 클라이언트이든 서버이든 더 나은 형태의, 더 유지보수하기 쉬운 형태의 비동기 메커니즘을 찾으려는 시도를 많이 수행해왔으며 그 결과가 이번 Visual Studio Async와 함께 공개될 듯 합니다. Visual Studio Async와 함께 공개되는 업데이트된 버전의 C# 컴파일러와 VB.NET 컴파일러는 아래와 같은 코드를 컴파일하여 비동기로 실행할 수 있도록 번역해줍니다.

    async void ShowMoviesAsync(string[] titles) {
        Task playing = null;
        foreach (var title in titles) {
            var movie = await DownloadMovieAsync(title);
            if (playing != nullawait playing;
            playing = PlayMovieAsync(movie);
        }
    }

    Async Sub ShowMoviesAsync(titles As String())
        Dim playing As Task = Nothing
        For Each title In titles
            Dim movie = Await DownloadMovieAsync(title)
            If playing IsNot Nothing Then Await playing
            playing = PlayMovieAsync(movie)
        Next
    End Sub

    async 키워드와 await 키워드가 사용된 것을 잘 관찰하면 상당히 재미있습니다. 위와 같은 코드를 Visual Studio Async 없이 작성하려면 많은 것을 이해하고 알아야 합니다. 비동기 흐름 제어를 언제 완료할 것이고, 비동기 스레드에서 UI로 데이터를 전달하기 위해서 문맥 전환을 어떻게 해야 할 것이며, 스레드의 순서를 어떻게 제어할 것인가 등등 매우 어려운 이야기를 늘어놓아야 합니다. 그리고 이런 식으로 이야기를 풀어나가다보면 전체적인 그림을 보지 못하고 세부적인 흐름에 집중하게 되어 프로그래밍 효율이 떨어진다는 것도 경험하신 분들이 많으실 것입니다.

    위의 코드는 동기 방식 코드와 유사하지만 성격이 다릅니다. async 키워드를 사용하여 선언된 메서드는 컴파일 이후 자동으로 비동기 메서드와 비동기 메서드의 실행 끝에 불리울 이벤트 통지 메커니즘과 한 쌍이되어 멤버로 표현됩니다. 그리고 이러한 한쌍의 멤버를 부르는 방법이 await 지시자입니다. await 지시자 없이 부를 경우 우리가 원래 알던 비동기의 성질을 그대로 지니게 되어 스레드를 분할하고 작업이 끝나면 결과를 통지하는 방식을 사용합니다. 그러나 이를 한번에 관리하고 코드 문맥 안에서 비동기 상태를 제어할 수 있도록 하는 것이 await 지시자의 역할입니다.

    이 프레임워크는 실버라이트나 WPF와 같이 빠른 화면 전환을 요구로 하는 환경에서 특히 그 활용성이 높을 것입니다. 좀 더 자세한 내용을 전달하기 위하여 공식 Whitepaper를 첨부하였습니다. Visual Studio Async는 http://go.microsoft.com/fwlink/?LinkId=203690 에서 다운로드 가능합니다. :-)

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

    댓글을 달아 주세요

    이벤트2011. 1. 6. 01:53
    Visual Studio 2010 Ultimate 에디션과 떠나는 여행, 그 두번째 : 
    소프트웨어 품질관리 및 무결점 소프트웨어의 중요성
    일시 : 2011. 01. 26(수) 14:00~18:10 | 장소 : 한국 마이크로소프트 Win room(5F)

    Visual Studio 2010 Ultimate 에디션 사용자 여러분 새해 복 많이 받으시길 바랍니다.
    2010
    년 12월에 예정하였던 제2회 Visual Studio Ultimate 멤버십 세미나를 2011년 1월 26일에 개최합니다.

    본 프로그램은 국내 300여개 Visual Studio 2010 Ultimate 을 적법하게 구매하시거나 보유하고 계신 고객사의 개발팀장 여러분들을만을 
    대상으로 하는 프로그램으로 여러분들에게 Visual Studio 2010 Ultimate 에디션을 200% 활용하여 애플리케이션 개발의 혁신을 이루실 수 
    있도록 도와드리는 특별한 프로그램입니다.

    지난 2010년 10월 13일 제 1회 정기 세미나에 이어, 2011년 1월 26일 제 2회 Visual Studio 2010 Ultimate 멤버십 세미나를 개최합니다.
    본 두번째 세미나에서는 요즘 소프트웨어 개발에서 가장 뜨거운 화두로 떠오르고 있는 소프트웨어 품질에 대한 이야기를 해보고자 합니다. 
    소프트웨어 품질의 관리가 여러분들의 비즈니스성공에 얼마나 중요한 요소인지를 알아 보고, Visual Studio 2010 Ultimate 의 IntelliTrace 를 
    활용하여 무결점 소프트웨어 개발을 위한 혁신적인 디버깅 방법, Lab Management 를 활용한 효율적인 소프트웨어 품질관리, 그리고 SDL 과 
    더욱 강력한 소프트웨어 품질관리를 위해 발표된 Visual Studio Ultimate Feature Pack 등을 알려드리는 시간을 가지려고 합니다.

    바쁘시겠지만 꼭 참석하시어 Visual Studio 2010 최상위 에디션인 Ultimate 에디션 사용고객으로서 최고의 가치를 누리실 수 있는 방법을 
    알아 보시기 바랍니다. 2011년 1월 26일, Visual Studio Ultimate 멤버십 고객 여러분들의 많은 참석 부탁드립니다.

    여러분들의 개발능률과 애플리케이션 개발방법의 혁신을 이루어 드릴
    Visual Studio 2010 Ultimate 에디션과의 그 두번째 여행, 2011년 1월 26일 함께 떠날 수 있기를 바랍니다.

    14:00-14:30 등록  
    14:30-14:35 인사말 황재현 부장, 
    한국마이크로소프트
    14:35-14:55 Visual Studio 2010 Ultimate 업데이트 1 : 
    마이크로소프트 Security Development Lifecycle 소개
    강성재 차장, 
    한국마이크로소프트
    14:55-14:15 Visual Studio 2010 Ultimate 업데이트2 : 
    Visual Studio 2010 Ultimate 에 보다 강력한 기능을 더해주는 
    Visual Studio 2010 Feature Pack 2 와 SDK 소개
    강성재 차장, 
    한국마이크로소프트
    15:15-15:25 휴식  
    15:25-16:15 Keynote : 효과적인 소프트웨어 품질 관리의 중요성 신경준 MVP, 
    안철수 연구소
    16:15-16:25 휴식  
    16:25-17:15 Visual Studio 2010 Ultimate 유저만을 위한 디버깅 전문 사립탐정
    - IntelliTrace
    강보람 MVP
    17:15-18:05 테스트와 가상화의 만남 - 테스트 가상화(Lab Management) 엄준일 MVP, 
    NC SOFT
    18:05-18:10 경품 추첨 및 맺음말  
    • 본 행사는 Visual Studio 2010 Ultimate 를 보유하신 VIP 고객사만을 위한 행사입니다.
    • 참석하신 분들 중 추첨을 통하여 푸짐한 경품을 드립니다.
    • 참석하신 모든 분들께 소정의 기념품을 드립니다.
    • 좌석이 한정되어 있으니, 반드시 사전 등록해 주시기 바랍니다.

    행사 등록사무국 02) 598-9898 rgst@neodigm.com
    Posted by Cloud Developer 남정현 (rkttu.com)

    댓글을 달아 주세요

    Azure Storage/Database2011. 1. 5. 01:12

    최근 Windows Azure 기반 Social App을 개발하면서 한 가지 문제에 봉착했었습니다. 인위적으로 생성해낸 수십만건의 레코드를 어떤 방법으로 SQL Azure에 Throttling 현상 없이 (SQL Azure 스스로가 성능 향상을 목적으로 과도한 부하를 일으키는 연결이나 불필요하게 장시간 연결되어있는 연결을 임의로 cut하는 동작) 안전하게 모든 데이터를 게시할 수 있는지에 관한 문제였습니다. 그러던 중 SQL Bulk Copy 클래스를 SQL Azure에서 사용하기 위하여 여러가지 시도를 해보던 끝에 아래와 같은 기본적인 지침을 얻을 수 있었습니다.

    1. 최상의 결과를 내기 위해서는 SQL Azure 대상 테이블과 원본 테이블 사이의 정의를 가능한한 일치시켜야 한다.

    저의 경우, 인위적으로 생성한 수십만건의 레코드를 SQL Azure의 테이블에 게시하기 위하여 여러가지 시도를 해보았지만 데이터 중복에 관한 처리를 정확히 할 수 없어 상당한 시행착오를 겪었습니다. 결국 찾게 된 방법은 ADO.NET이 기본으로 제공하는 In-Memory RDBMS 시스템을 활용하는 것으로, SQL Azure에 게시하면서 유효성 검사를 하지 않고 In-Memory RDBMS에서 미리 유효성 검사를 한 후 최종적으로 산출된 데이터만을 게시하도록 하는 것이었습니다.

    아래의 코드는 history_id, template_id, parameter_id, parameter_value라는 4개의 column을 정의하는 테이블로, history_id, template_id, parameter_id column을 한 번에 primary key로 지정하는 방법을 C# 코드로 보여주고 있습니다.

    DataTable table = new DataTable();
    table.Columns.Add("history_id", typeof(int)).AllowDBNull = false;
    table.Columns.Add("template_id", typeof(string)).AllowDBNull = false;
    table.Columns.Add("parameter_id", typeof(string)).AllowDBNull = false;
    table.Columns.Add("parameter_value", typeof(string)).AllowDBNull = false;
    table.Constraints.Add("history_id_pk",
        new DataColumn[] { table.Columns["history_id"], table.Columns["template_id"], table.Columns["parameter_id"] },
        true);

    SQL Azure에도 위와 비슷한 형태의 테이블이 이미 게시되어있는 상황에서, SQL Azure에 데이터를 삽입하거나 업데이트 - 또는 - 삭제하면서 유효성 검사가 일어나도록 기다리지 않고 로컬에서 간단한 유효성 검사를 미리 수행하여 네트워크 부하를 최소화하고 작업 속도를 개선할 수 있었습니다.

    2. Windows Server 2003 SP2 사용자 필독

    클라이언트 - 혹은 - 관리 도구 차원에서 SqlBulkCopy 클래스를 사용하려는 PC의 환경이 Windows Server 2003 SP2인 경우 SQL Azure로의 연결이 아무런 까닭없이 성립되지 않는 이상한 현상을 보일 수 있습니다. 이 경우, 시스템에 KB977291 Hotfix (http://support.microsoft.com/kb/977291/en-us)가 설치되어있는지 확인하시고, 설치되어있지 않은 경우 해당 핫 픽스를 설치한 후 다시 시도해야 합니다.

    3. SqlBulkCopy 유틸리티를 사용할 때는 가능한한 명시적으로 사용할 것

    애석하게도, 자동화 도구는 편의를 위하여 제공되는 것이지만 편의를 사용자에게 제공하기 위해서는 적정한 설정이 뒷받침되어야만 합니다. SqlBulkCopy 클래스가 그런 유형인데, ColumnMappings 속성, BatchSize 속성, BulkCopyTimeout 속성, DestinationTableName 속성을 정확히 이해하고, WriteToServer 메서드를 호출하기 전에 설정해야 합니다.

    SqlBulkCopy bulkCopy = new SqlBulkCopy(conn);
    bulkCopy.ColumnMappings.Add("history_id", "history_id");
    bulkCopy.ColumnMappings.Add("template_id", "template_id");
    bulkCopy.ColumnMappings.Add("parameter_id", "parameter_id");
    bulkCopy.ColumnMappings.Add("parameter_value", "parameter_value");

    bulkCopy.BatchSize = 100;
    bulkCopy.BulkCopyTimeout = 100;
    bulkCopy.DestinationTableName = "tb_design_image_history";

    bulkCopy.SqlRowsCopied += new SqlRowsCopiedEventHandler(bulkCopy_SqlRowsCopied);
    bulkCopy.WriteToServer(table);

    위 코드에서 특별히 중요한 것은 ColumnMappings, BatchSize, DestinationTableName 속성에 관한 부분입니다. ColumnMappings를 사용하여 원본 데이터 소스에서 대상 데이터 소스로 복사할 때의 위치를 결정해야 합니다. 그리고 BatchSize는 SQL Azure가 수용할 수 있는 범위의 값을 사용해야 하며 개인적인 테스트 결과로는 100이 안전한 값인듯합니다. 기본값을 사용하려고 하면 SQL Azure가 연결을 거부할 수 있습니다. 그리고 DestinationTableName 속성에서 대상 테이블 이름이 정확히 지정되어야 올바르게 작동합니다.

    마지막으로 WriteToServer 메서드는 상당히 유연한 것입니다. 이미 로컬에 캐시된 데이터 테이블과 그 행의 배열은 물론, 아직 연결이 열린 상태인 다른 데이터 소스에 대한 IDataReader 객체의 사용을 허용합니다. 정의만 서로 정확히 일치하고 맞아떨어진다면 동기화를 비교적 손쉽고 간편하게 할 수 있습니다.

    4. 결론

    SqlBulkCopy는 개별적으로 INSERT 명령어를 SQL Azure에 실행하는 것보다 훨씬 빠르게 동작했습니다. 덕분에 40여만건 이상의 레코드를 무사히 모두 복제할 수 있었습니다. 하지만 한 가지 중요한 점이 있는데, 개별적으로 INSERT 명령어를 실행하는 것과 달리 SqlBulkCopy 클래스는 중간에 발생하는 데이터베이스 오류를 핸들링할 수 있는 capability가 없으며 문제가 발생하면 작업이 중간에 끊기게 되므로 이를 예방하려면 Transaction을 사용하여 처리 전후 과정을 보완하는 것이 필요합니다.

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

    댓글을 달아 주세요

    Azure Storage/Database2011. 1. 3. 12:23
    저 개인적으로는 오래된 명령줄 인터페이스 기반의 툴을 매우 사랑합니다. 가끔 GUI로 채워지지 않는 부족함을 명령줄 인터페이스 기반의 툴을 통하여 채울 수 있기 때문입니다. 비유하자면 효자손과 같은 존재이지요. :-)

    오늘은 그 중에서도 SQL Azure를 관리하기 위한 목적으로 OSQL 도구를 사용하는 방법을 설명하고자 합니다. 요즈음은 SQL Management Studio 덕분에 그 수요가 많이 줄어들었지만, 아직 OSQL 도구가 유용하게 사용될 수 있는 여지는 매우 많습니다. 저의 경우, Sync Framework와 SQL Server Agent를 사용하여 쉽게 동기화할 수 있는 상황이 아닌 이기종 데이터베이스간 데이터 마이그레이션 시나리오에서 매우 유용하게 사용하고 있습니다. C#을 이용하여 실제 데이터를 insert하는 구문을 SQL 스크립트로 덤프를 생성하여 이것을 OSQL 도구에 매개 변수로 전달하는 방법을 선호합니다. BLOB이나 CLOB, 개행 문자를 포함하지 않는 데이터로 구성되어있는 경우 이 방법은 매우 유용한 것 같습니다.

    그렇다면 OSQL을 통해서 SQL Azure에 접속하려면 어떻게 해야 할까요? 방법은 다음과 같습니다.

    osql -S<your_server>.database.windows.net -U<your_database_id>@<your_server> -P<your_password> -d<database_name>

    SQL Azure에 접속하는 방법은 일상적으로 우리가 사용했던 SQL Express Edition이나 SQL Server에 접속하는 방법과 조금 다릅니다. 각 스위치별로 필요한 항목들을 하나씩 살펴보겠습니다.

    • -S 스위치: 접속 대상 서버를 지정합니다. SQL Azure의 호스트 이름은 주로 xxxx.database.windows.net과 같은 형태로 되어있고, 이 부분의 정확한 주소는 SQL Azure Portal에서 확인할 수 있습니다.
    • -U 스위치: 사용자 ID를 지정합니다. 통상 사용하는 SQL Server와는 다르게, 사용자 이름 뒤에 서버 이름을 명시적으로 @ 기호와 함께 지정해야 합니다. 예를 들어, <your_server>에 들어가는 식별자가 abcd라고 한다면 <your_database_id>@abcd가 이 스위치에 지정되어야 합니다.
    • -P 스위치: 사용자 비밀 번호를 지정합니다. 띄어쓰기가 있는 비밀 번호의 경우 -P"<your_password>"와 같은 형식으로 따옴표를 이용하여 비밀 번호 문자열 주변을 포장하여 인수로 전달합니다.
    • -d 스위치: -D 스위치가 아닌 -d 스위치로, 대/소문자 구분에 유의합니다. 이 부분에서는 사용하려는 데이터베이스 이름을 지정해야합니다. SQL Azure의 특성 상 한번 연결이 완료되면 다른 데이터베이스로는 문맥 전환을 할 수 없으며, 따라서 USE 문의 사용은 허용되지 않습니다.

    위와 같이 지정하여 성공적으로 접속하였다면 프롬프트가 나타날 것입니다. 하지만 대부분의 경우 방화벽 설정에 의하여 연결이 차단될 수 있습니다. 이 때에는 SQL Azure Portal로 접속하여 현재 여러분이 접속을 시도하는 IP 주소를 SQL Azure에서 접속할 수 있도록 허용해야 합니다. 여기서 주의할 것은, NAT나 인터넷 공유기와 같이 하나의 외부 IP 주소를 여러 PC가 공유하는 환경에서 SQL Azure를 접속하려는 경우 보안 상 위험이 발생할 수 있다는 점입니다.

    이제 대량의 query문을 실행하기 위한 스위치를 하나 더 알아보겠습니다. 바로 -i 스위치입니다. 이 스위치를 이용하여 실행하려는 SQL 문장이 포함된 스크립트 파일을 지정하고, -o 스위치를 사용하여 실행 결과를 텍스트 파일로 갈무리할 수도 있습니다.

    전체 사용 예시는 다음과 같습니다.

    osql -Sabcdefghi0.database.windows.net -Urkttu@abcdefghi0 -Pmypassword -dmydatabase -itest.sql -ooutput.txt

    위와 같이 명령어를 실행하면 test.sql 파일의 내용을 모두 실행하고 그 결과를 output.txt에 써내려갈 것입니다.

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

    댓글을 달아 주세요

    기술 소식2010. 12. 30. 19:11
    Windows Azure Platform Training Kit의 2010년 12월 버전이 새로 출시되었습니다. 다운로드는 카페 대문에 걸려있는 링크 - 또는 - http://www.microsoft.com/downloads/en/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&amp;displaylang=en 에서 다운로드하실 수 있습니다.

    [Updated] All demos were updated to the Azure SDK 1.3 / 모든 DEMO들이 SDK 1.3 버전에 맞추어졌습니다.

    • [New demo script] Deploying and Managing SQL Azure Databases with Visual Studio 2010 Data-tier Applications / Visual Studio 2010 데이터 계층 응용프로그램에서 SQL Azure 데이터베이스를 배포하고 관리하는 프레젠테이션이 추가 되었습니다.

    • [New presentation] Identity and Access Control in the Cloud / 클라우드 환경에서의 아이덴티티와 액세스 제어에 관한 프레젠테이션이 추가되었습니다.

    • [New presentation] Introduction to SQL Azure Reporting / SQL Azure 레포팅에 대한 프레젠테이션이 추가되었습니다.

    • [New presentation] Advanced SQL Azure / SQL Azure의 고급 기능 및 상세 정보에 대한 프레젠테이션이 추가되었습니다.

    • [New presentation] Windows Azure Marketplace DataMarket / 이전 버전인 Codename: Dallas의 정식 버전인 Windows Azure Marketplace DataMarket에 대한 프레젠테이션이 추가되었습니다.

    • [New presentation] Managing, Debugging, and Monitoring Windows Azure: Windows Azure 응용프로그램을 관리, 디버깅, 모니터링하는 방법을 소개하는 프레젠테이션이 추가되었습니다.

    • [New presentation] Building Low Latency Web Applications: 빠른 응답 속도를 구현하기 위하여 웹 응용프로그램에서 취해야 할 가이드라인을 소개하는 프레젠테이션이 추가되었습니다.

    • [New presentation] Windows Azure AppFabric Service Bus: AppFabric Service Bus에 대한 새 프레젠테이션이 추가되었습니다.

    • [New presentation] Windows Azure Connect: 이전 버전인 Codename: Sydney의 정식 버전인 Windows Azure Connect에 대한 새 프레젠테이션이 추가되었습니다.

    • [New presentation] Moving Applications to the Cloud with VM Role: 기존의 응용프로그램을 VM Role 환경으로 이식하는 방법에 대한 새 프레젠테이션이 추가되었습니다.

    이 내용들 중 VM Role에 관한 것은 이전에 제가 같이 게시하였던 VM Role 관련 Step-by-step 문서와 더불어서 보실 것을 권합니다. 감사합니다. :-)
    Posted by Cloud Developer 남정현 (rkttu.com)

    댓글을 달아 주세요