'cloud'에 해당되는 글 81건

  1. 2013.04.16 Windows Azure Lounge - Global Windows Azure Bootcamp in Korea
  2. 2013.04.01 Windows Azure Virtual Machine을 위한 FileZilla Server 방화벽 설정법
  3. 2013.02.03 Azure BLOB 저장소 레시피 - 모바일 홈페이지 만들기
  4. 2013.02.01 Windows Azure 사용 후기도 올리고 경품도 가져가세요!
  5. 2012.09.15 Visual Studio 2012 Express 출시 (1)
  6. 2012.08.06 클라우드 시대의 피아식별: Access Control #3
  7. 2012.05.25 CentOS, Fedora, RHEL에서 SQL Azure 접속하기
  8. 2011.09.27 Windows Azure Storage 2011-09 Update 소개
  9. 2011.09.05 사내 인프라와 인트라넷 개발은 이제 Office 365가 좋은 선택입니다.
  10. 2011.06.21 Windows Azure Cafe Boot Camp #2
  11. 2011.03.29 A Lap around cloud computing – 1인 1근두운 시대
  12. 2011.03.17 Microsoft TechDays 2011 Spring - N-스크린 시대의 IT 전문가를 위한 온라인 컨퍼런스 (2)
  13. 2011.03.11 Windows Azure SDK v1.4 출시
  14. 2011.03.02 CASEQRCODE powered by Windows Azure Platform
  15. 2011.02.27 A Lap around cloud computing – 지금이 여러분의 이력서를 새로 쓸 시간
  16. 2011.02.25 Windows Azure Virtual Lab으로 쉽고 빠르게 클라우드 개발 실습하기
  17. 2011.02.24 CODEPARTY 2011년 2월 / 세션 1 발표 자료 공유합니다.
  18. 2011.02.19 Windows Azure Cafe Boot Camp 2010-02 발표 자료 공유합니다.
  19. 2011.02.17 DevForce 프레임워크의 Windows Azure 마이그레이션 DEMO 동영상
  20. 2011.02.17 실전 Cloud App 분석 세미나 발표 자료 공유합니다. (2)
  21. 2011.02.17 {CODE PARTY} 세미나 개발자들을 위한 클라우드 개발
  22. 2011.02.14 A Lap around Cloud Computing – 당신이 어디에 있든 관계없는 세상
  23. 2011.02.08 TEMENOS T24 코어뱅킹시스템의 Windows Azure 플랫폼 도입
  24. 2011.02.01 Windows Azure Platform Training Kit 2011년 1월 버전 출시
  25. 2011.02.01 Windows Azure Consumption Rate 자동 계산 Excel 워크시트
  26. 2011.02.01 [이벤트] 마이크로소프트 클라우드 파워 컨퍼런스
  27. 2011.01.30 클라우드 시대의 피아식별: Access Control #1
  28. 2011.01.27 Windows Azure Cafe Boot Camp #1
  29. 2011.01.22 A Lap around Cloud Computing - “Everything as a Service”
  30. 2011.01.20 Windows Azure Compute의 업그레이드 메커니즘에 대한 이해
이벤트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)

댓글을 달아 주세요

IaaS2013. 4. 1. 10:01

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

오늘 살펴보려는 내용은 Windows Azure Virtual Machine 환경에서 FileZilla Server를 구축하려는 경우 어떻게 해야 파일 전송 채널들을 열 수 있는지 그 방법을 살펴보려고 합니다. FileZilla Server는 기본적으로 FTP (File Transfer Protocol)를 구현하는 서버이며 무료로 사용 가능한 서버이고 다양하고 풍부한 기능을 제공하면서도 안정적으로 작동해서 많은 곳에서 널리 사용되고 있습니다.

우선 FTP 서버가 어떻게 동작하는지 잠시 상기해볼 필요가 있습니다. FTP 서버는 기본적으로 명령어를 주고 받기 위한 채널 포트인 21번 포트가 가장 핵심이 됩니다. 최초의 연결도 이 21번 포트를 시작으로 이루어지고 이후에 모든 데이터 전송은 별도의 포트를 통해서 이루어지게 됩니다. FTP 서버를 방화벽 뒤에 배치하는 것이 왜 까다로운가 하면 바로 이러한 FTP의 설계 때문입니다. 데이터 전송을 위한 포트를 FTP 서버의 사용량에 맞추어 개방을 해야 하기 때문입니다. 그래서 서버가 사전에 TCP 포트 대역을 정해놓고 지정된 범위에서만 데이터 전송을 위한 채널을 제공하는 Passive Mode가 많이 사용됩니다.

1단계: FileZilla Server Passive Mode 설정

기본적으로 Passive Mode를 사용하는 것은 특이 사항이 없습니다만, Windows Azure Virtual Machine의 경우 Windows Azure Virtual Machine이 제공하는 기본 방화벽과 Windows Server의 기본 방화벽, 그리고 FileZilla Server만을 위한 특별한 설정이 더해져야 하기 때문에 따로 아티클로 정리할 필요가 있어 이번 글을 작성하게 되었습니다.

FileZilla 서버에 사용자 계정을 등록하고 홈 디렉터리를 설정하는 방법은 생략하겠습니다. 이 과정이 되어있어야 실제 접속과 테스트가 가능하니 설정되어있지 않은 경우 반드시 사용자 계정과 홈 디렉터리 설정을 먼저 해주셔야 합니다. 이 설정이 끝난 상태에서, FileZilla Server Options 페이지로 들어가서 아래 그림과 같이 Passive Mode Settings 항목을 클릭하여 주십시오.

위의 그림에 나타난 것 처럼, 다음의 설정 사항들을 확인하여 적절히 수정해야 합니다.

  • Use Custom Port Range: 체크하시고 적절한 포트 대역을 지정합니다. Windows Server 및 Windows Azure Virtual Machine의 방화벽 설정에 모두 등록되지 않은 대역을 지정합니다. Windows Azure Virtual Machine의 방화벽 설정은 범위 설정이 아니라 1개 포트씩 따로 등록하도록 되어있고 등록과 할당에 시간이 걸리니 이를 감안하시어 2개~3개 정도의 포트만 개방하는 것이 작업 시간 단축에 도움이 됩니다.
  • IPv4 specific 아래의 Retrieve external IP address from: 기본값은 이 항목으로 설정되어있습니다. 그러나 간혹 이 설정으로 IP 주소를 얻어올 수 없는 경우, Use the following IP 항목의 라디오 버튼을 체크하고 이 서비스에 접속할 수 있는 외부 IP 주소 (Virtual IP)를 직접 설정하거나 FQDN을 지정하여 문제를 해결할 수 있습니다.
  • Don't use external IP for local connections: 이 항목도 체크합니다.
2단계: Windows Server 방화벽 구성

위와 같이 설정이 끝나면, Windows 방화벽 설정으로 이동하여 방화벽에 FileZilla Server 프로그램 자체를 허용 대상에 추가하여 주십시오. Windows Server 64비트 버전을 사용하게 되실 것이므로 아래 경로를 지정하시면 됩니다.

%PROGRAMFILES(X86)%\FileZilla Server\FileZilla server.exe

정상적으로 등록이 되면 아래 그림과 같이 속성에 나타날 것입니다.

3단계: Windows Azure Virtual Machine 방화벽 설정

1단계에서 설정한 포트 대역의 각 포트 번호들과 TCP 21번 포트를 빠짐없이 Windows Azure Virtual Machine 방화벽 설정으로 가서 개방해야 밖에서 데이터 전송이 가능합니다.

위 그림에서 보시는 것과 같이 Passive 포트 대역을 모두 TCP 포트 번호로 지정하여 공용 포트와 개인 포트 번호를 일치시켜주고, 최종적으로 21번 포트를 지정하면 됩니다. 여기서는 Secured FTP를 위하여 별도 포트 번호를 지정하였습니다만 상황에 맞게 설정해주시면 문제 없습니다.

4단계: 접속 및 파일 송수신 테스트

정상적으로 접속과 파일 송수신이 이루어지는지 다시 한 번 확인합니다. 클라이언트의 경우 아래 그림과 같은 모습으로 진행이 이루어져야 합니다.

서버의 경우 아래 화면처럼 로그가 나타나게 될 것입니다.


다른 FTP 서버에 대한 설정도 지금 설명한 사항들을 점검하여 설정을 업데이트하면 Virtual Machine에서 정상적인 FTP 서비스 구축이 가능할 것입니다.

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

댓글을 달아 주세요

Azure Storage/Database2013. 2. 3. 15:16

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

Windows Azure를 가지고 무엇을 할 수 있을까? 이 점에 대해서 궁금해하시는 많은 분들을 위하여 레시피 강좌 시리즈를 지속적으로 업로드하려고 합니다.

이번에 소개해드리려고 하는 내용은 요즈음 유행하는 HTML5 기반의 앱과 관련된 내용입니다. 서버의 렌더링을 필요로하지 않고 스스로 동작할 수 있는, 마치 앱과 같은 특성을 지닌 지능적인 HTML 페이지를 Windows Azure BLOB Storage위에서 호스팅하는 방법입니다.

사실 지금 소개해드리려는 내용은 굉장히 간단한 내용이지만, 활용하기에 따라서는 굉장히 유용한 레시피가 될 수 있습니다. 이벤트나 행사 웹 사이트와 같이 단순하지만 기간 내에 액세스가 폭증하는 페이지들을 호스팅해야 하는 요구 사항이 종종 있는데 이럴 때 활용하시면 일을 매우 단순하게 만들 수 있습니다.

정적 웹 사이트에 담을 내용 준비하기

정적 웹 사이트란 문자 그대로 웹 디자이너가 작업을 끝마친 시안 형태의 웹 페이지에서부터 ASP, PHP, ASP.NET, CGI, Python, Perl 등 생각할 수 있는 서버측 구성 요소를 하나도 들여오지 않고 jQuery나 Dojo 같은 자바스크립트 프레임워크들, 그리고 외부의 Open API만을 활용해서 온전하게 작동하는 웹 앱에 이르기까지 운영해야 할 서버 측의 비용을 고려하지 않고 만들 수 있는 모든 종류의 웹 사이트 및 웹 앱을 뜻합니다. 자바스크립트 세계의 발전에 따라 정적 웹 사이트의 의미도 크게 확장되었다고 볼 수 있습니다.

여기서는 jQuery Mobile을 이용하여 만든 간단한 웹 사이트를 Windows Azure Storage를 이용해서 호스팅하도록 해보겠습니다. 소개하는 내용이 아니더라도 여러분이 손수 만든 개인 모바일 홈페이지도 괜찮고 무엇이든 시험해볼 수 있는 것이면 됩니다.

  • 준비물 1: CloudBerry Client for Windows Azure BLOB Storage (Pro 버전 대신 Freeware를 설명합니다.)
  • 준비물 2: jQuery Mobile 패키지 파일
  • 준비물 3: 여러분이 올릴 간단한 웹 페이지 파일 및 이미지 파일

CloudBerry Client for Windows Azure BLOB Storage 설치하기

CloudBerry Client는 여러 종류의 Windows Azure BLOB Storage 클라이언트 중 다루기 쉽고 간편한 인터페이스를 제공하는 무료 클라이언트입니다. CloudBerry Client는 Windows Azure 이외에도 KT UCLOUD Biz Storage 클라이언트와 같은 OpenStack Client도 지원합니다.

http://www.cloudberrylab.com/ 웹 사이트에 방문하시면 메인 페이지에 CloudBerry Explorer Freeware라는 이름의 다운로드 링크 컬렉션이 보일 것입니다. 여기서 for Windows Azure를 선택하여 이번 레시피에서 설명하는데 필요한 도구를 다운로드하고 설치합니다.

프리웨어이지만 사용자 등록을 권하는 부분이 있는데, 지속적으로 이 도구를 사용하게 될 것을 감안하여 재량껏 등록하여 사용하기 바랍니다. 등록하지 않고 진행해도 사용에는 큰 지장은 없을 것입니다.

설치 후 아래와 같이 프로그램이 나타나는지 확인합니다.

계정 정보 등록하기

새로운 계정 정보를 등록하려면 아래 그림과 같이 File 메뉴의 Azure Blob Storage Accounts 메뉴를 선택합니다.

아래와 같이 대화 상자가 나타날 것입니다. Add 버튼을 클릭합니다.

아래와 같이 계정 정보 입력 대화상자가 나타나는지 확인합니다.

  • Display name: 이 프로그램 상에서 나타낼 항목 이름으로 자유롭게, 알아보기 쉬운 이름으로 입력합니다.
  • Account: Windows Azure 저장소의 ID를 입력합니다. URL을 보면 <계정 이름>.blob.core.windows.net와 같은 형태로 구성되어있는데 여기서 <계정 이름>에 해당하는 ID를 입력합니다.
  • Shared Key: Windows Azure 관리 포털에서 나타나는 이 저장소에 대한 Shared Key를 입력합니다. Primary Key나 Secondary Key 중 하나를 입력하면 됩니다. 보안 향상을 위하여, 서비스 구성을 위해 활용하는 Key와는 다른 여분의 Key를 이곳에 설정하는 것이 좋습니다. 이렇게 하여 불시에 이 Key를 갱신하여 유출 사고 등에 유연하게 대처할 수 있게 됩니다.
  • Use SSL: SSL 통신을 사용할 지의 여부를 결정합니다.
  • Development Storage: 실제 서비스가 아니라 Windows Azure Storage Emulator로 연결할 경우 이 항목을 체크합니다.

계정 정보를 확인하려면 http://manage.windowsazure.com/ 으로 이동하여 저장소 계정 화면에 대한 대시 보드를 아래와 같이 확인합니다. 그 다음 하단의 도구 모음에서 Manage Keys 버튼을 클릭합니다.

아래와 같이 모달 대화 상자가 나타나면 Storage Account Name을 복사하시고, Primary Access Key 또는 Secondary Access Key 중 하나를 복사하여 위의 대화 상자에 입력하도록 합니다.

모든 설정이 완료되면 Test Connection 버튼을 클릭하여 연결이 잘 되는지 확인합니다. 연결에 성공하면 아래와 같이 대화 상자가 나타날 것입니다.

jQuery Mobile 패키지 준비하기

기본적으로 jQuery Mobile 패키지 파일을 CDN에서 받아서 이용하는 방법이 편리합니다. 이렇게 하면 jQuery Mobile 다운로드에 관한 트래픽을 우리쪽 서버가 아닌 다른 위치의 CDN으로 분산시킬 수 있으므로 트래픽 관련 비용 절감에 도움이 되기도 합니다. 여기서는 jQuery Mobile 패키지를 우리쪽 서버에 업로드하는 것을 기준으로 예제를 만들어 보도록 하겠습니다.

http://jquerymobile.com/download/ 웹 페이지에 접속하여 아래와 같이 Latest Stable Release를 찾아 JavaScript와 CSS 파일 패키지를 Minified Version으로 다운로드하기 바랍니다. 링크를 클릭하면 저장이 아니라 파일이 열리는 동작으로 다운로드가 발생할 수 있으므로 링크를 오른쪽 버튼으로 클릭하고 다른 이름으로 저장 기능을 사용하여 저장하기 바랍니다.

그리고 jQuery Mobile이 필요로하는 jQuery 라이브러리 파일도 가져와야 합니다. http://jquery.com/download/ 웹 페이지에 접속하여 아래와 같이 Minified Version을 다운로드합니다.

NOTE: 최근에 릴리즈한 1.9.x 버전의 경우 jQuery Mobile과 호환성 문제가 있을 수 있으므로 1.8.x 릴리즈를 다운로드해야 할 수 있습니다. 1.9.x 버전이 작동하지 않을 경우 1.8.x 버전을 사용하여 진행할 수 있습니다.

컨테이너를 만들고 권한 설정하기

이제 컨테이너를 만들고 여기에 파일을 업로드할 차례입니다. 다시 CloudBerry Storage Explorer로 되돌아가서 오른쪽 패널의 Source 드롭 다운 상자에서 방금 추가한 계정을 선택하여 접속을 시도합니다. 

Windows Azure Storage는 전통적인 웹 호스팅 환경과는 다르며, 기본적으로 1계층의 컨테이너만을 지원합니다. 그리고 컨테이너보다 더 깊이있는 레벨의 폴더 계층을 형성하려면 올리는 파일의 이름에 경로 구분을 위한 문자 ('/')를 포함시켜 폴더처럼 보이게 하는 방법을 사용하게 됩니다.

API에서 폴더를 탐색한다는 것은 이러한 특성에 따라 실제 폴더로 스택 자료 구조를 이용해서 탐색하는 방식이 아니라, Where Clause를 이용할 때 사용할 수 있는 Prefix Matching 기법을 사용하게 됩니다. 즉, 같은 Prefix를 보유하는 컨테이너 내의 파일들은 논리적으로 같은 폴더에 있는 것으로 취급이 가능합니다.

컨테이너를 만들기 위해서는 아래 그림과 같이 오른쪽 편의 도구 모음을 클릭합니다.

아래와 같이 대화 상자가 나타나면 컨테이너의 이름을 입력하고 권한을 설정합니다.

위의 권한들에 대해 각각 내용을 살펴보면 다음과 같습니다.

  • Full public read access: 이 컨테이너의 URL로 접속하면 컨테이너 안에 무슨 파일이 들어있는지 목록을 조회할 수 있는 기능과 더불어 모든 파일에 대해 다운로드 기능을 제공함을 의미합니다.
  • Public read access for blobs only: 이 컨테이너의 URL로 접속하면 권한이 없다는 오류 메시지가 나타나고, 대신 이 컨테이너 안의 정확한 파일의 URL을 알고 있는 경우 해당 파일은 다운로드가 가능함을 의미합니다.
  • No public read access: 컨테이너이든 그 안에 들어있는 파일이든 인증을 거치지 않고는 읽을 수 없도록 보호함을 의미합니다.

위의 세 가지 옵션 중에서 지금 우리가 선택하려는 것은 두 번째 옵션으로, 정적 웹 호스팅에서 어떤 파일이 들어있는지 사용자가 확인할 필요 없이 개별 URL에 대해서만 안다면 자동으로 모든 서비스가 제공되므로 파일에 대해서만 공개하도록 만들 것입니다.

파일 업로드하기

여기서는 정적 웹 호스팅을 간단하게 테스트해볼 목적으로 1계층 컨테이너 안에 같은 파일들을 넣어보려고 합니다. 여러분의 컴퓨터에서 아래와 같이 파일을 준비하시면 됩니다.

그리고 위의 index.html 파일의 소스 코드는 아래와 같습니다.

이제 위의 소스 코드를 Azure Blob Storage로 업로드합니다. 아래와 같이 파일이 업로드된 것을 확인합니다.

결과 확인하고 QR코드로 만들어 배포하기

이제 마지막으로 올라간 파일이 잘 작동하는지 확인할 차례입니다. 위의 파일들 중 index.html 파일을 오른쪽 버튼으로 클릭하여 URL을 확인합니다.

아래와 같이 대화 상자가 나타나면 Copy to clipboard 버튼을 클릭하여 주소를 복사하고 웹 브라우저에서 열어보도록 합니다. (혹은 Open link 버튼을 눌러도 됩니다.)

웹 브라우저에서 아래와 같이 잘 나타나는지 확인합니다.

이제 이 URL을 QR코드로 만들기 위하여 http://qr.naver.com/ 으로 접속하여 QR코드를 만들면 모바일 웹 사이트 구축이 완료됩니다.

더 나아가기

만약 폴더 구조를 유지하면서 파일 업로드를 하기 원한다면, Storage Explorer에서는 폴더를 직접 생성하는 기능이 없지만, 미리 로컬에서 만든 폴더째로 한꺼번에 업로드하면 자동으로 폴더를 생성하게 됩니다.

그리고 Windows Azure CDN 노드를 추가하면 이 상태 그대로 CDN 서비스를 받을 수 있습니다. CDN 엣지 노드 형성은 2013년 2월 현재 신규 포털이 아닌 구 버전의 포털 http://windows.azure.com/ 에서 관리할 수 있습니다.

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)

댓글을 달아 주세요

Windows + .NET2012. 9. 15. 20:37

안녕하세요. Windows Azure MVP 남정현입니다. 오늘은 Visual Studio 2012 출시와 더불어서 Express Edition의 업그레이드에 대한 이야기를 전해드리려고 합니다.

개인적으로 매우 좋아하고 아끼는 Visual Studio 제품 라인 업 중에 Express Edition이 있습니다. 무료로 제공되는 개발 도구임에도 기능에서나 활용 면에서 부족함이 전혀 없고, 제 스스로에게 있어서 작업 시간을 줄여주고 시행 착오를 최소화하는데에 지대한 공헌을 하는 멋진 개발 툴입니다.

이번 2012 라인 업에서는 아래와 같이 구성이 변경되었습니다.

  • Visual Studio 2012 Express for Web: 기존의 Visual Web Developer 2010을 이어서 업그레이드된 버전으로 ASP.NET 4.5와 Windows Azure 최신 개발 툴킷, Silverlight 개발 환경등을 포함하고 있습니다.
  • Visual Studio 2012 Express for Desktop: 기존의 Visual C# Express 2010, Visual Basic .NET Express 2010, Visual C++ Express 2010을 통합하여 데스크탑 응용프로그램 개발에 최적화된 버전으로 업그레이드되었습니다.
  • Visual Studio 2012 Express for Windows 8: Windows 8에서 새로 추가된 Windows Store 앱을 만들기 위하여 필요한 개발 도구로 동시에 Expression Blend for Windows 8이 같이 설치됩니다.
  • Visual Studio Team Foundation Server 2012 Express: 고가의 상용 버전 제품으로만 알려져있었던 Team Foundation Server도 Express 버전을 새로 출시하게 되었습니다. 소규모 개발 팀을 운영 중인 경우 한 번즈음 고려해볼 수 있는 형상 관리, 작업 관리, 빌드 자동화를 제공합니다.

언어 별로 나누어져 있었기 때문에 장점이자 단점으로 동시에 작용하던 작고 가벼움은 아쉽게도 더 이상 존재하지는 않습니다. 그렇지만 Express Edition 특유의 한계를 극복하고 더 강력한 기능을 더하고 단순히 학습용이 아닌 소규모 개발 팀을 위한 배려를 모두 포함하고 있다는 것은 매우 기쁜 일입니다.

그리고 실제로 Visual Studio 2012 전체 버전을 구입하시기 전에 제품의 표면적인 기능만을 제한된 시간 내에 평가해야 하는 트라이얼 버전 대신, 실제 업무에도 자연스럽게 반영해볼 수 있는 Express Edition을 통해서 충분한 시간을 가지면서 활용하시면 좀 더 좋은 부분을 많이 보실 수 있을 것이라고 기대합니다.

Web과 Desktop 버전은 Windows 운영 체제 버전과 관계없이 사용이 가능하며, Windows 8 버전의 경우에는 실제로 Windows 8 운영 체제 위에서 실행되어야만 개발 환경 구축이 가능합니다. 그리고 이전과 마찬가지로, 무료로 사용이 가능하고 상용으로도 활용이 가능하지만 설치 후 기간 내에 Microsoft 등록 페이지에 가서 제품에 대한 25자리 등록 번호를 받아서 등록해야 하는 절차는 변함 없습니다.

2012 Express Edition과 2010 Express Edition을 다운로드하시려면 http://www.microsoft.com/visualstudio/kor/downloads 페이지로 가시면 됩니다. :-)

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

댓글을 달아 주세요

  1. 현재 네이버 메인에 나오고 있습니다.

    2013.01.28 15:38 신고 [ ADDR : EDIT/ DEL : REPLY ]

PaaS2012. 8. 6. 08:00

지난번 글에 이어서 Access Control을 실제 ASP.NET 응용프로그램에 연동하는 방법을 살펴보도록 하겠습니다. Access Control을 연동하기 위해서는 .NET의 경우 Windows Identity Foundation이라는 새로운 기술을 필요로 합니다. Windows Identity Foundation은 여러 버전의 런타임으로 나누어져 있으며, Windows Server 2003부터 Windows Server 2012까지 지원되지만, 보통은 Windows Server 2008 이후의 OS를 사용하는 것이 구성이나 배포가 단순합니다.

이 글에서는 Visual Studio 2010과 WIF 3.5를 사용하는 것을 기준으로 가이드를 쓰려고 합니다. 역시 나중에 기회가 되면 Visual Studio 2012와 WIF 4.5기준의 업데이트를 한 번 더 소개하겠습니다.

글에 있는 내용을 따라서 시작하기 전에 ACS를 이용하는 웹 사이트를 배포할 서버와 개발자 컴퓨터에 다음의 런타임을 버전에 맞추어 선택적으로 미리 설치하여 구성하셔야 합니다.

운영 체제 버전 별 런타임 설치하기

개발 도구 (SDK) 설치하기

개발 도구의 경우 한국 Microsoft 홈페이지에는 3.5 버전의 SDK만 게시되어있는데, .NET Framework 3.5가 아닌 4.0을 타겟으로 하는 경우에는 영어 홈페이지로 이동해서 직접 다운로드해야 합니다. 아래는 패키지 파일 다운로드 경로를 직접 걸어놓은 것으로 필요한 패키지를 골라 설치하면 됩니다.

SDK 또한 Windows Server 2003 SP2 부터 설치가 가능합니다.

Windows 8 및 Windows Server 2012에서 WIF 3.5 런타임 설치하기

Windows Identity Foundation 4.5 대신 3.5 버전을 사용해야 할 경우 아래 절차를 거쳐 설치할 수 있습니다.

제어판의 프로그램 및 기능 - 또는 - 프로그램 빠른 검색이나 Windows + R 단축키로 사용 가능한 실행 대화 상자에서 appwiz.cpl 제어판 애플릿을 시작합니다.

그 다음 Windows 기능 켜기/끄기 마법사를 시작합니다.

여러 항목들 중에서 Windows Identity Foundation 3.5 항목을 체크하고 확인 버튼을 클릭합니다.

잠시 기다리면 아래와 같이 완료 대화 상자가 나타납니다.

이제 여기에 WIF SDK 3.5 - 또는 - 4.0 버전을 설치하면 됩니다.

Visual Studio 2008 및 Visual Studio 2010의 경우 - FEDUTIL.EXE 사용하기

런타임의 경우 Windows Identity Foundation의 실행을 위한 클래스 라이브러리 및 네이티브 구성 요소들을 배포하기 위한 목적으로 사용하는 것이고, 기존에 만든 응용프로그램의 환경 설정 파일을 변경하거나 클래스 라이브러리 도움말 등을 포함하는 것이 SDK의 구성입니다. 그리고 부가적으로 SDK의 경우에는 Visual Studio와 연동하는 기능도 제공합니다만 이 기능은 제대로 설치가 될 수도 있고 그렇지 않을 수도 있어서 신경쓸 필요는 없는 부분입니다. SDK에서 진짜 중요한 부분은 FEDUTIL.EXE 라는 마법사형 프로그램으로 이 프로그램을 사용하여 여러분의 asp.net 응용프로그램을 WIF, ACS와 연결시킬 때 필요한 복잡한 설정을 자동화할 수 있습니다.

시스템 사용 환경에 따라 FedUtil.exe 파일의 설치 위치에 다소 차이가 있지만 아래와 같이 요약할 수 있습니다.

  • 32비트 버전 설치 시: %programfiles%\Windows Identity Foundation SDK\v4.0\FedUtil.exe
  • 64비트 버전 설치 시: %programfiles(x86)%\Windows Identity Foundation SDK\v4.0\FedUtil.exe

FedUtil.exe 프로그램을 실행시키고 잠시 기다리면 아래와 같이 마법사가 시작됩니다.

UI 언어는 환경에 따라 한국어가 나올 수도, 영어가 나올 수도 있습니다. 응용프로그램 설정 파일의 위치를 묻는 부분에는 여러분이 WIF를 적용하려는 ASP.NET 웹 프로젝트의 기본 web.config 파일 경로를 지정하는 곳이며, Visual Studio로 해당 프로젝트를 편집 중에 있더라도 안전하게 적용할 수 있습니다.

노트: Visual Studio와 연동된다는 것은 이 유틸리티를 프로젝트 실행 도중 즉시 호출할 수 있도록 "STS 추가 마법사"라는 이름으로 솔루션 탐색기 컨텍스트 메뉴에 추가하는 정도의 편의 제공이기 때문에 이 유틸리티를 직접 호출해도 무방합니다.

그리고 Application URI에는 지난번 글에서 소개했던 것과 같이 Ad-hoc 서버의 포트 번호를 확인하여 얻을 수 있는 localhost 주소를 이곳에 기재해야 합니다. 프로덕션 환경에서 적용하려면 당연히 이 부분이 실제 프로덕션 웹 사이트의 주소가 되어야 합니다.

Application URI에 HTTPS대신 HTTP 주소를 지정할 경우 아래와 같은 경고 메시지가 나타나지만, Access Control 테스트를 위한 것이므로 지금은 무시하고 넘어갑니다.

계속 진행하면 보안 토큰 서비스의 주소를 물어보는 단계가 나타납니다. 이 단계에서 실제로 Azure Access Control Service의 웹 서비스 주소를 지정하여 WIF와 ACS간에 연동을 이루게 됩니다.

여기에 어떤 주소를 넣어야 할까요? 다시 Azure Access Control 관리자 웹 서비스로 되돌아가봅니다. 관리자 웹 서비스 페이지 좌측 제일 하단의 응용프로그램 통합 링크를 클릭하면 페이지 하단에 STS 서비스를 위한 WS-Federation Metadata Endpoint URL이 보이는데 이 주소를 그대로 Copy & Paste합니다.

다음 단계로 진행하면 ACS 서비스가 제시한 인증서가 올바른 인증서가 아니라는 오류를 표시합니다. 이전에 언급한대로 Azure ACS가 프로덕션 환경에서 제대로 작동하려면 정식 서버 인증서를 필요로 합니다. 여기서는 마법사가 기본으로 제안하는 인증서 체인 검사 비활성화를 선택하고 진행하겠습니다.

토큰 암호화에 대한 설정을 지정하는 페이지가 나타납니다. ACS 설정에서 토큰 암호화에 대한 부분을 구성하였다면 이 단계에서도 호환 가능한 설정을 같이 지정해야 합니다.

웹 서비스가 던져줄 수 있는 클레임의 종류에 대한 설명이 열거됩니다. 다음 버튼을 클릭합니다.

이제 마침 버튼을 눌러 web.config 파일을 업데이트합니다.

별다른 이상이 없다면 아래와 같이 성공 메시지 상자가 나타나고 FedUtil.exe 프로그램이 종료될 것입니다.

NOTE: Visual Studio를 실행 중이었다면 web.config 파일을 열어둔 상태였을 경우 파일이 변경되었음을 감지하고 다시 읽어들일 것인지 물어볼 수 있습니다. 이 경우 꼭 바뀐 파일 내용을 다시 읽도록 해주어야 하며, 편집기 버퍼에 남아있는 컨텐츠를 저장하면 FedUtil.exe로 변경한 내용이 소실되므로 유의해야 합니다. 편집기 버퍼에서 바꾼 내용이 FedUtil.exe 실행 전에 많이 존재한다면 변경된 web.config 파일을 별도로 백업받아놓고 두 파일을 적절하게 병합해야 합니다.

변경된 web.config 파일 내용 살펴보기

이제 FedUtil.exe 프로그램에서 어떤 일을 해주었는지 살펴볼 차례입니다. 우선 여러분의 웹 프로젝트 디렉터리에 새로운 디렉터리와 파일들이 나타나는데, 아래와 같습니다. 

FederationMetadata 폴더에 ACS 서비스와 상호대조를 위한, ACS로부터 복제한 메타데이터 파일이 들어있습니다. 실제 서비스가 제대로 작동하기 위해서는 이 파일이 개발자 환경이나 프로덕션 서버로 정확하게 배포되어야 합니다. 버전 관리 시스템을 사용하는 경우 이 파일이 버전 관리 대상에 포함될 수 있도록 해야 합니다.

그리고 web.config 파일이 변경된 것과 더불어 이전 파일에 대한 백업도 들어있습니다. 백업 파일은 확인 후 필요없으면 삭제해도 무방합니다.

그렇다면 web.config 파일은 어떻게 바뀌었는지 한 번 살펴보도록 할까요?우선 파일을 열었을 때 가장 먼저 눈에 띄는 것은 새로운 Configuration Handler를 추가한 부분인데, 아래와 같습니다.

  <configSections>
    <section name="microsoft.identityModel" type="Microsoft.IdentityModel.Configuration.MicrosoftIdentityModelSection, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
  </configSections>

새로운 Configuration Handler를 지정하고 있으므로 설정 파일 어딘가에 새로운 설정 섹션이 하나 더 추가되어있겠군요. 그리고 appSettings 태그 아래에는 메타데이터 원본 경로에 대한 설정이 들어있습니다.

  <appSettings>
...
    <add key="FederationMetadataLocation" value=https://<네임스페이스>.accesscontrol.windows.net/FederationMetadata/2007-06/FederationMetadata.xml />
...
  </appSettings>

그리고 직전에 살펴본 FederationMetadata 폴더를 위한 특권이 하나 들어있습니다. 인증 세션을 거치지 않았어도 누구나 FederationMetadata 폴더는 접근할 수 있도록 열어놓았군요.

  <location path="FederationMetadata">
    <system.web>
      <authorization>
        <allow users="*" />
      </authorization>
    </system.web>
  </location>

반면에 웹 응용프로그램의 모든 영역에 대해서는 보호가 걸리게 됩니다.

  <system.web>
...
    <authorization>
      <deny users="?" />
    </authorization>
    <authentication mode="None" />
...
    <!--Commented out by FedUtil-->
    <!--<authentication mode="Forms"><forms loginUrl="~/Account/LogOn" timeout="2880" /></authentication>-->
  </system.web>

달리 표현하면 web.config이 관할하는 모든 영역에 대해서는 ACS를 통한 로그인을 거치지 않을 경우 자동으로 ACS측 로그인 페이지로 리디렉션됨을 의미합니다. 이 부분에 대한 조율이 필요하다면 ASP.NET MVC의 경우 영역으로 별도 영역을 파티셔닝하거나, Location 태그를 적극 활용해야 합니다. 그리고 중요한 차이점이 하나 더 보이는데 WIF의 인증 체계는 기존의 ASP.NET이 제공하던 Form 인증, AD 인증, Windows 인증 및 Passport 인증 어디에도 속하지 않는다는 것입니다.

그리고 당연한 이야기이지만 어셈블리 참조가 걸려있습니다. web.config 파일 및 동적 컴파일 호출 시 유효한 대상으로 걸려있는 것이고, Visual Studio 프로젝트나 별도 컴파일 호출 시 WIF를 사용하려면 프로젝트 참조에서 Microsoft.IdentityModel 어셈블리를 직접 추가해야 합니다.

  <system.web>
    <compilation debug="true" targetFramework="4.0">
      <assemblies>
...
        <add assembly="Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
...
      </assemblies>
    </compilation>
...
  </system.web>

ASP.NET 차원에서는 마지막으로 HTTP 모듈이 대체되는 부분이 있습니다. WIF가 기존 ASP.NET 인증 체계를 완전히 재정의해야 하므로 아래의 모듈이 새로 추가됩니다.

    <httpModules>
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" />
    </httpModules>

같은 설정이지만 IIS 7 이후의 서버들을 위해서는 <system.webServer> 태그 설정도 동일하게 추가됩니다.

  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <add name="WSFederationAuthenticationModule" type="Microsoft.IdentityModel.Web.WSFederationAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
      <add name="SessionAuthenticationModule" type="Microsoft.IdentityModel.Web.SessionAuthenticationModule, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" preCondition="managedHandler" />
    </modules>
  </system.webServer>

이제 끝으로 제일 서두에 언급된 새로운 설정 핸들러가 web.config 끝자락에 보입니다.

  <microsoft.identityModel>
    <service>
      <audienceUris>
        <add value="http://localhost:50086/" />
      </audienceUris>
      <federatedAuthentication>
        <wsFederation passiveRedirectEnabled="true" issuer="https://rkttuacs.accesscontrol.windows.net/v2/wsfederation" realm="http://localhost:50086/ " requireHttps="false" />
        <cookieHandler requireSsl="false" />

      </federatedAuthentication>
      <applicationService>
        <claimTypeRequired>
          <!--Following are the claims offered by STS 'https://rkttuacs.accesscontrol.windows.net/'. Add or uncomment claims that you require by your application and then update the federation metadata of this application.-->
          <claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name" optional="true" />
          <claimType type="
http://schemas.microsoft.com/ws/2008/06/identity/claims/role" optional="true" />
          <!--<claimType type="http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" optional="true" />-->
          <!--<claimType type="
http://schemas.microsoft.com/accesscontrolservice/2010/07/claims/identityprovider" optional="true" />-->
        </claimTypeRequired>
      </applicationService>
      <issuerNameRegistry type="Microsoft.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, Microsoft.IdentityModel, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35">
        <trustedIssuers>
          <add thumbprint="CE5BF1CE19528FEDA7FA9F3ECF87A85E3B1B6AED" name="https://rkttuacs.accesscontrol.windows.net/" />
        </trustedIssuers>
      </issuerNameRegistry>
      <certificateValidation certificateValidationMode="None" />
    </service>
  </microsoft.identityModel>

위의 내용들 가운데에서 굵게 강조 표시한 항목들이 변경의 여지가 있고 제어가 가능한 부분들입니다. 지금으로서는 테스트를 목적으로 하는 것이므로 따로 변경할 것은 없겠습니다.

잘 작동할까요?

워낙에 중요하고 어려운 부분들만 수정해놓은 것이라 불안하게 보입니다. 잘 작동할까요? 한 번 실행해보겠습니다. 

설정 파일에서 변경한대로 사이트에 접속하자마자 ACS 로그인 페이지로 이동합니다. 이후에 다시 살펴보겠지만 이 페이지의 디자인은 얼마든지 재정의 가능합니다. 여기서 Google ID를 시험삼아 로그인에 사용하도록 해보겠습니다.

로그인을 거치고나니 이런 오류 메시지가 나타납니다. 이 문제를 어떻게 해결해야 할까요?

WIF 3.5의 호환성 문제 해결하기

전통적인 로그인 및 사용자 인증 모델에서는 고려할 수 없었던 동작을 수행해야 하는데 안타깝게도 ASP.NET은 이러한 부분에 대해서 다소 부정적인 면모를 보입니다. 이 문제를 해결하는 방법 자체는 단순합니다. 입력 폼으로 들어오는 XML 데이터를 무시하도록 설정을 완화시키면 가능합니다. 그렇지만 그냥 그렇게 프로덕션 환경에 설정을 풀어놓은채로 올리기에는 너무 안일합니다. 뭔가 좋은 방법이 없을까요?

유효성 검사를 풀지 않으면서도 안전하게 WIF와 ACS 사이의 통신을 인정할 수 있는 방법으로 Custom Validation Handler를 추가하는 방법이 있습니다. 이 코드는 아래의 웹 페이지의 코드를 인용한 것입니다.

http://social.technet.microsoft.com/wiki/contents/articles/1725.windows-identity-foundation-wif-a-potentially-dangerous-request-form-value-was-detected-from-the-client-wresult-t-requestsecurityto.aspx

C# 소스 코드

//-----------------------------------------------------------------------------
//
// THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF
// ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
// THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
// PARTICULAR PURPOSE.
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
//-----------------------------------------------------------------------------

using System;
using System.Collections.Specialized;
using System.Web;
using System.Web.Helpers;
using System.Web.Util;
using Microsoft.IdentityModel.Protocols.WSFederation;

/// <summary>
/// This SampleRequestValidator validates the wresult parameter of the
/// WS-Federation passive protocol by checking for a SignInResponse message
/// in the form post. The SignInResponse message contents are verified later by
/// the WSFederationPassiveAuthenticationModule or the WIF signin controls.
/// </summary>
public class SampleRequestValidator : RequestValidator
{
    protected override bool IsValidRequestString(
        HttpContext context, string value, RequestValidationSource requestValidationSource,
        string collectionKey, out int validationFailureIndex)
    {
        validationFailureIndex = 0;

        if (requestValidationSource == RequestValidationSource.Form &&
            !String.IsNullOrEmpty(collectionKey) &&
            collectionKey.Equals(WSFederationConstants.Parameters.Result, StringComparison.Ordinal))
        {
            NameValueCollection unvalidatedFormValues = Validation.Unvalidated(context.Request).Form;
            SignInResponseMessage message = WSFederationMessage.CreateFromNameValueCollection(
                WSFederationMessage.GetBaseUrl(context.Request.Url),
                unvalidatedFormValues) as SignInResponseMessage;

            if (message != null)
                return true;
        }

        return base.IsValidRequestString(context, value, requestValidationSource, collectionKey, out validationFailureIndex);
    }
}

Visual Basic .NET 코드

'-----------------------------------------------------------------------------
'
' THIS CODE AND INFORMATION IS PROVIDED 'AS IS' WITHOUT WARRANTY OF
' ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO
' THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A
' PARTICULAR PURPOSE.
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
'
'-----------------------------------------------------------------------------

Imports System
Imports System.Collections.Specialized
Imports System.Web
Imports System.Web.Helpers
Imports System.Web.Util
Imports Microsoft.IdentityModel.Protocols.WSFederation

''' <summary>
''' This SampleRequestValidator validates the wresult parameter of the
''' WS-Federation passive protocol by checking for a SignInResponse message
''' in the form post. The SignInResponse message contents are verified later by
''' the WSFederationPassiveAuthenticationModule or the WIF signin controls.
''' </summary>
Public Class SampleRequestValidator
    Inherits RequestValidator

    Protected Overrides Function IsValidRequestString( _
        context As HttpContext, value As String, requestValidationSource As RequestValidationSource, _
        collectionKey As String, ByRef validationFailureIndex As Integer) As Boolean

        validationFailureIndex = 0

        If requestValidationSource = Util.RequestValidationSource.Form AndAlso _
            String.IsNullOrEmpty(collectionKey) = False AndAlso _
            collectionKey.Equals(WSFederationConstants.Parameters.Result, StringComparison.Ordinal) Then

            Dim unvalidatedFormValues As NameValueCollection = Validation.Unvalidated(context.Request).Form
            Dim message As SignInResponseMessage = TryCast(WSFederationMessage.CreateFromNameValueCollection( _
                WSFederationMessage.GetBaseUrl(context.Request.Url), _
                unvalidatedFormValues), SignInResponseMessage)

            If message IsNot Nothing Then
                Return True
            End If
        End If
        Return MyBase.IsValidRequestString(context, value, requestValidationSource, collectionKey, validationFailureIndex)
    End Function
End Class

위의 코드가 이상 없이 컴파일이 잘 되는지 프로젝트에 클래스를 새로 하나 추가하여 확인하고, web.config으로 이동하여 아래와 같이 설정을 수정합니다.

C#의 경우

<system.web>
  ...
  <httpRuntime requestValidationType="SampleRequestValidator" />
  ...
</system.web>

VB.NET의 경우

<system.web>
  ...
  <httpRuntime requestValidationType="[프로젝트 이름].SampleRequestValidator" />
  ...
</system.web>

VB.NET의 경우 네임스페이스의 경로가 상대성을 가지기 때문에 정확한 것은 개체 탐색기 등을 이용하여 확인해보는 것이 필요합니다. 대개는 위와 같이 기술했을 때 문제가 없습니다.

이제 다시 로그인을 시도하면 아래 그림과 같이 인증이 통과되는 것을 볼 수 있습니다. 

한 가지 더 - 로드 밸런싱에 대응하기

아직 모든 것이 완벽하게 마무리 되지 않았는데, 로드 밸런싱에 대한 부분이 해결되지 않았습니다. 기본적으로 ASP.NET과 마찬가지로 컴퓨터 상태에 의존하여 난수를 생성하는 DPAPI (Data Protection API)를 기반으로 하므로 로드 밸런싱 환경에서는 아래와 같은 유형의 오류 메시지가 나타납니다.

Key not valid for use in specified state

위의 오류를 해결하기 위해서는 DPAPI 기반의 암호화 대신 로드 밸런싱이나 웹 팜에 참여하는 노드들 간의 키를 일치시켜야 합니다. Global.asax 파일이 없을 경우 하나 추가하여 Application_Start 메서드 혹은 이벤트 처리기에 아래의 코드 조각을 추가합니다.

C# 코드

FederatedAuthentication.ServiceConfigurationCreated += OnServiceConfigurationCreated;

VB.NET 코드

AddHandler FederatedAuthentication.ServiceConfigurationCreated, OnServiceConfigurationCreated()

이어서 추가된 이벤트 처리기의 코드 내용을 아래와 같이 프로그래밍합니다.

C# 코드

using System.Collections.Generic;
using Microsoft.IdentityModel.Tokens;
using Microsoft.IdentityModel.Web;
using Microsoft.IdentityModel.Web.Configuration;
...
    private void OnServiceConfigurationCreated(object sender, ServiceConfigurationCreatedEventArgs e)
    {
       List<CookieTransform> sessionTransforms = new List<CookieTransform>(
           new CookieTransform[] {
               new DeflateCookieTransform(),
               new RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate),
               new RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate) 
           });
       SessionSecurityTokenHandler sessionHandler = new SessionSecurityTokenHandler(
          sessionTransforms.AsReadOnly());
       e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace(sessionHandler);
    }

VB.NET 코드

Imports System.Collections.Generic
Imports Microsoft.IdentityModel.Tokens
Imports Microsoft.IdentityModel.Web
Imports Microsoft.IdentityModel.Web.Configuration
...
    Private Sub OnServiceConfigurationCreated(sender As Object, e As ServiceConfigurationCreatedEventArgs)
        Dim sessionTransforms As New List(Of CookieTransform)(New CookieTransform() { _
            New DeflateCookieTransform(), _
            New RsaEncryptionCookieTransform(e.ServiceConfiguration.ServiceCertificate), _
            New RsaSignatureCookieTransform(e.ServiceConfiguration.ServiceCertificate)
            })
        Dim sessionHandler As New SessionSecurityTokenHandler( _
            sessionTransforms.AsReadOnly)
        e.ServiceConfiguration.SecurityTokenHandlers.AddOrReplace( _
            sessionHandler)
    End Sub

마지막으로 Azure Cloud Service나 VM, 혹은 여러분의 웹 팜 환경에서 실행되는 컴퓨터에 동일한 인증서를 사용하도록 배포하면 로드밸런싱 환경에서도 안전하게 ACS 기반 인증을 처리할 수 있게 됩니다.

좀 더 많은 자료들과 글 작성에 도움이 된 자료들

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

댓글을 달아 주세요

Azure Storage/Database2012. 5. 25. 01:02

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

SQL Azure를 사용한다면 아마 거의 예외없이 접속하는 클라이언트 측의 운영 체제는 Windows 운영 체제일 것입니다. 그러나 만약 리눅스를 클라이언트 측의 운영 체제로 직접 사용하기 원한다면 어떻게 해야 할까요? 기존에 여러분이 사용하고 있을 가능성이 높은 드라이버로 FreeTDS가 있겠습니다만 버전이 낮은 드라이버는 SQL Azure가 철칙으로 사용하는 SSL 연결을 지원하지 못합니다. 최근에 출시된 FreeTDS의 경우 SSL을 지원하기는 하지만, SQL Azure로 연결을 시도할 경우 연결 과정에서 응답 없음 상태로 빠지거나 여러가지 다른 오류가 발생할 수 있습니다. 아마도 향후에 개선될 것으로 기대합니다. 이 블로그에서 설명하려는 내용에 대해 최상의 결과를 얻기 위하여 현재는 Microsoft SQL Server ODBC Driver 1.0 for Linux가 필요합니다.

시스템 요구 사항

Microsoft SQL Server ODBC Driver for Linux를 설치하기 위해서는 다음의 조건을 만족해야 합니다.

  • 64비트 지원 프로세서가 필요합니다. (x64 또는 AMD64)
  • CentOS, Fedora, RHEL 등의 Redhat 계통의 최신 리눅스 운영 체제가 필요합니다.
  • 실행 중인 운영 체제의 커널이 x86_64 환경에서 실행 중이어야 합니다.

그리고 당연한 이야기이지만 시스템 관리자 권한을 얻은 상태에서 실행해야 합니다.

설치 전에 필요한 모든 패키지 설치하기

운영 체제의 버전마다 필요로 하는 패키지의 최소 버전에 차이가 존재하기는 하나, 아래의 명령어들을 사용하여 일반적인 종속성 상의 요구 사항을 모두 정리할 수 있습니다. 아래 명령어들은 설치 전후반에 걸쳐 필요한 패키지들을 모두 설치해 줄 것입니다.

  • yum install glibc
  • yum install e2fsprogs
  • yum install krb5-libs
  • yum install openssl
  • yum install libgcc
  • yum install libstdc++
  • yum install make
  • yum install gcc
  • yum install bison
  • yum install byacc
  • yum install libuuid
  • yum install wget
  • yum install tar

드라이버 파일 내려 받기

드라이버 파일을 내려받기 위하여 http://www.microsoft.com/en-us/download/details.aspx?id=28160 페이지에서 적절한 버전의 tar 패키지 파일을 내려 받아야 합니다. 만약 서버 환경에서 직접 설치해야 하는 상황인 경우, 다운로드 URL을 확인하여 bit.ly 등의 단축 주소로 주소를 줄이고 그 주소를 wget 명령에 대입하면 수고스러움을 덜 수 있습니다.

파일을 다운로드하고나서 tar 유틸리티로 압축을 해제합니다.

tar xvzf sqlncli-11.0.1790.0.tar.gz

그 이후에는 해당 디렉터리로 이동한 다음 필요한 작업을 진행합니다.

unixODBC Driver Manager 설치하기

SQL Server Driver for Linux는 unixODBC 환경 아래에서 작동하도록 만들어진 드라이버이므로 반드시 unixODBC Driver Manager를 시스템에 설치해야 합니다. 만약 기존에 이미 설치가 되어있는 상태이면 다음 섹션으로 넘어가서 곧바로 드라이버를 설치해도 됩니다.

아래 명령어를 sqlncli 디렉터리에서 실행합니다.

./build_dm.sh

상세한 안내 메시지가 나타나게 되는데, YES를 입력하여 내용에 동의함을 표시합니다. 그 다음에는 unixODBC를 대신 다운로드하고 컴파일하고 설치하는 작업이 자동으로 진행될 것입니다. 그리고 최종적으로 사용자가 직접 설치를 진행해야 하는데, 스크립트 실행이 완료되면 아래와 같은 메시지를 볼 수 있을 것입니다. 메시지에 실제로 출력된 임시 경로로 이동하도록 정확히 이름을 지정하는 것에 유의하여 아래와 유사한 명령어를 실행합니다.

cd /tmp/unixODBC.x.x.x/unixODBC-2.3.0; make install

Linux나 Unix 명령어에 익숙하지 않은 분들을 위하여 부연 설명을 드리면, 세미콜론은 순차적인 실행을 위하여 사용되는 연산자입니다. 즉, 디렉터리를 이동하고난 다음에 make install 명령어를 실행하라는 의미입니다. 설치가 끝나고 나면 다시 sqlncli 디렉터리로 이동합니다.

ODBCINST.INI 파일 백업하기

실제 드라이버를 설치하기 전에 만약 odbcinst.ini 파일을 백업해야 할 필요가 있다면 아래 명령어를 사용하여 정확한 경로를 확인하고 해당 파일을 복사하여 백업하기 바랍니다.

odbc_config odbcinstini

실제 드라이버 설치하기

이제 실제 드라이버를 설치할 차례입니다. sqlncli 디렉터리로 이동한 다음, 아래와 같이 명령어를 입력합니다.

./install.sh install

사용자 계약서를 표시하는데, 모두 읽어보기 귀찮으시다면 키보드의 q키를 누릅니다. 그러면 동의 여부를 곧바로 묻는 프롬프트가 나오는데 여기서 YES를 입력하고 기다립니다. 특별한 오류 없이 설치가 끝났다면 마지막으로 아래 명령어를 입력하여 정상적으로 설치가 되었는지 확인해봅니다.

./install.sh verify

특별한 오류 메시지가 없다면 정상적으로 설치가 완료된 것입니다.

SQL Azure 연결 테스트해보기

이제 리눅스 환경에서도 SQL Azure에 연결이 잘 되는지 확인해볼 차례입니다. ODBC를 사용한다고 하였지만 별도로 인스턴스를 등록하거나 복잡한 절차를 거치지 않고 곧바로 테스트해볼 방법이 있는데, FreeTDS와 마찬가지로, 그리고 FreeTDS가 그러했듯이 Microsoft가 제공하는 sqlcmd 유틸리티가 여기에서도 그대로 제공됩니다.

sqlcmd -U <SQL Azure 계정 ID> -P <SQL Azure 비밀 번호> -S <서버 ID>.database.windows.net -d <데이터베이스 이름>

Windows에서 사용하던 것과 다르지 않음을 알 수 있습니다. 정상적으로 접속이 되면 1> 프롬프트가 나타날 것이고, 여기에 아래와 같이 쿼리를 수행해 봅니다.

select @@version
go

그러면 아래 그림과 같이 결과가 나타나는 것을 볼 수 있습니다. 보시는 것과 같이 SQL Azure를 Linux에서도 Native Driver를 사용하여 접속할 수 있습니다. :-)

결론

다소 복잡한 내용들이었지만, 리눅스에서도 SQL Server와 SQL Azure를 얼마든지 접근하고 다룰 수 있는 방법이 있기 때문에 데이터베이스 때문에 Windows를 써야 하는 불편함을 감수해야 할 필요가 전혀 없다는 것을 확인하였습니다. 향후에는 더 나은 방법으로 더 리눅스 환경에서 최적화된 형태로 SQL Azure나 SQL Server에 접속할 수 있을 것으로 기대합니다. 아티클에 대해서 개선할 점이나 의견을 주실 부분이 있으시면 언제든 의견을 주십시오.

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)

댓글을 달아 주세요

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. 6. 21. 10:42

행사 등록: http://onoffmix.com/event/3146


Windows Azure Cafe Boot Camp #2

 
Windows Azure Cafe (http://cafe.naver.com/wazure)에서는 지난해에 이어 올해부터는 매월 다양한 주제를 통하여 개발자, IT 전문가들에게 Windows Azure 기반의 실전 개발에 대한 이야기를 전할 수 있또록 Boot Camp 세미나를 준비하였습니다. 클라우드 컴퓨팅에 관심이 있는 분들을 모시고, 세미나 전/후로는 클라우드 컴퓨팅과 최신 기술 동향에 대한 자유로운 토론도 같이 진행할 수 있도록 하겠습니다.
 
제목: 기존 소프트웨어에서 Windows Azure를 활용하는 방법
일시: 2011년 7월 2일 토요일 / 오후 2시
장소: 포스코센터 서관 5층 한국 마이크로소프트 GROW룸
대상: 소프트웨어, 웹 개발자
 
세션 소개
 
(1) Windows Azure Storage 활용 전략
Windows Azure Storage는 익히 알려진대로 세 가지의 대표적인 저장소 (테이블, BLOB, 큐)를 이용하여 개발할 수 있는 것이 특징입니다. 그러나 이들 저장소는 우리가 기존에 알고 있던 파일 시스템이나 관계형 데이터베이스와는 전혀 다른 시스템들입니다. 이러한 시스템들을 어떻게 효과적으로 사용할 수 있는지에 대해 알아보도록 하겠습니다.
- Windows Azure Storage 및 주요 기능 소개
- Storage를 중심으로 활용하는 몇 가지 유용한 모델에 대한 소개
 
(2) .NET 클라이언트 및 웹 개발자들을 위한 활용 전략
Windows Azure Storage를 .NET 클라이언트 개발 환경에서는 어떻게 활용할 수 있는지 클라이언트 및 웹 개발자들의 관점에서 유용한 정보를 알려드리도록 하겠습니다.
- Windows Azure Storage 라이브러리를 활용하는 방법
- 관계형 데이터베이스가 아니라는 것이 끼칠수 있는 문제점들
- LINQ to Table Storage에 대한 몇 가지 이슈
 
아젠다
14:00 ~ 14:50 (1) Windows Azure Storage 활용 전략
14:50 ~ 15:00 휴식
15:00 ~ 15:50 (2) .NET 클라이언트 및 웹 개발자들을 위한 활용 전략
15:50 ~ 16:00 질문/답변
 
시간, 장소, 날짜
일시: 2011년 6월 25일 토요일 / 오후 2시
장소: 포스코센터 서관 5층 한국 마이크로소프트 (ROOM은 추후 확정 후 다시 공지하겠습니다.)
 
알립니다: 본 세미나는 커뮤니티가 주최하는 비영리 세미나이며, 주차권은 별도로 제공되지 않으니 가급적 대중 교통을 이용하여 주시면 감사하겠습니다.

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. 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)

    댓글을 달아 주세요

    PaaS2011. 2. 14. 17:22

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

    여러분이 어디에 있든 관계없는 세상은 이제 현실

    당연한 이야기이지만 여러분이 어디에 있든 관계없는 세상은, 이제는 전세계 어디서나 적용된다. 물론 세세하게 따지고 들어가면 예외 사항이 많지만 필자가 이 글에서 논하고 싶은 것은 "가능성"에 대한 사실이다. 여러분이 자주 다니고 이용할 수 있는 공항, 커피 전문점, 식당, 심지어는 호텔 안에서도 즉시 노트북이나 스마트폰을 켜고 3G 인터넷이나 WIFI 인터넷을 쓸 수 있다. 회사 컴퓨터 앞에 앉아서 하던 것처럼 메일 서비스에 접속하여 여러분 앞으로 메일을 확인하거나, 가까운 사람과 이야기를 나누기 위하여 메신저에 접속하여 수다를 떠는 것이 너무 당연하다.

    클라우드 시대 이전에도 이런 일은 가능했다. 물론 여기에도 클라우드에 대한 이야기가 일부 – 또는 – 전체가 포함이 되어있을 것이다. 그러나 클라우드의 도래를 말하는 지금, 여기서 무엇을 더 기대할 수 있을까? 이번 글에서 이야기하려는 Office 365는 앞에서 이야기하였던 "여러분이 어디에 있든 관계없는 세상"에 덧붙여 – 여러분이 어디에 있든 자유롭게 일할 수 있는 세상이 이제 현실이라는 말을 만들어준다.

    가정과 회사를 넘나들며 사용할 수 있는 최고의 소프트웨어+서비스 – Windows Live

    Windows Live는 Microsoft가 일반 사용자들에게 제안하는 온라인 서비스이자, 동시에 서비스에 연동되는 소프트웨어 전반을 제공하는 패키지로, 대표적인 소프트웨어+서비스 전략 기반의 상품이다. 2005년 11월 1일 처음 발표된 이후로 지속적으로 새로운 제품 라인을 구축하고, 사용자들의 요구 사항을 반영하며, 더 새로운 서비스와 소프트웨어로 개선해 나가고 있는 중인 "진행형" 서비스이다.

    Windows Live에서 가장 유명한 것은 여러분이 MSN 시절부터 줄곧 사용해왔을 Windows Live Messenger이다. 멀리 떨어져있는 사람들과 마치 옆에 있는 것처럼 화상 카메라와 마이크로 폰 등을 이용하여 실시간으로 영상 채팅을 하기도 하고, 텍스트와 이미지 등을 잘 사용하여 간단한 메시지를 주고 받기도 해왔다. 그리고 더 길고, 더 많은 메시지를 전달하기 위하여 Windows Live Messenger와 함께 Hotmail 전자 메일 서비스도 같이 활용하는 사람들이 많았다. 결론적으로, 이 두 가지의, MSN 포털 서비스의 일부로 출발한 소프트웨어와 서비스를 필두로 수 많은 확장 소프트웨어와 서비스들이 지금의 Windows Live를 이루고 있는 것이고 더 나아가서는 Windows 운영 체제의 강력한 확장 패키지로 자리잡게 된 것이다.

    그 중에서도 이 글을 쓰는 현 시점에서는 단연 Windows 7과 Windows Live의 조합이 여러분을 위치로부터 자유롭게 해줄 프리미엄 패키지가 되어줄 것이다. 2010년 말에 새롭게 선보인 Windows Live Essential 2011과 더불어, 몇 가지 주목할 만한 온라인 서비스를 살펴보자.

    Windows Live Mail - Windows 98 이상, Windows XP 이하의 운영 체제들을 자주 사용해왔던 많은 사용자들의 기억에 남아있는 Outlook Express를 계승하는 차세대 경량 메일 클라이언트 소프트웨어이다. Outlook Express에서는 이전에 Hotmail 웹 API를 이용하여 메일을 보내거나 확인할 수 있는 기능을 제공했지만 현재는 Windows Live Mail로만 이 기능을 이용할 수 있다. Windows Live 소프트웨어의 일부이므로 Windows Live ID를 사용하여 사용자 인증을 수행하고, Windows Live Messenger와 함께 사용할 수도 있다. 이번 2011 버전에서 더 좋아진 점은 다른 인터넷 서비스들과 더 친화적으로 가까워져서 Google의 메일 서비스 등과도 더 잘 작동한다.

    Windows Live Mesh - 이번 Windows Live Essential 2011에서 많은 사용자들의 인기를 얻고 있는 동기화 소프트웨어이다. 초고속 인터넷이 활성화되고, 사용자들이 컴퓨터를 켜놓고 이동하거나, 컴퓨터의 성능이 좋아짐에 따라 유휴 시간에 처리할 수 있는 작업량이 늘어났다는 점에 착안하여 지정한 폴더를 클라우드 서비스 저장소 상에 미리 동기화하는 방법으로 여러분이 언제 어디에 있든 자료를 빠르고 쉽게 접근할 수 있도록 도와주는 백그라운드에서 실행되는 소프트웨어이다.

    Windows Live Family Safety - Windows Vista에서 제공된 자녀 보호 기능과 Windows Live OneCare에서 제공되던 동일 서비스를 좀 더 확대하고 강력하게 기능을 보강한 서비스이다. 일방적인 ID/암호를 사용하여 관리하는 타 소프트웨어처럼 Brute Force 방식으로 뚫릴 가능성이 있거나, Windows 운영 체제 기능의 일부가 아니라는 한계 때문에 쉽게 파괴되는 등의 취약점을 일절 허용하지 않는, Microsoft가 검증하는 자녀 보호 기능을 무료로 사용할 수 있다. 이러한 기능을 위하여 불완전한 추가 소프트웨어를 구입하는 일은 없어야 하겠다.

    Windows Live Writer - 블로거들을 위한 소프트웨어로 처음 알려진 이후로 국내외 수많은 블로거들이 애용하는 소프트웨어이다. 주요 블로그 서비스들을 모두 지원하고, 다른 Windows Live 소프트웨어와 Microsoft Office 제품과 호환되는 WYSIWYG 편집 기능을 제공하므로 웹 브라우저로 작업하면서 느끼는 불편함을 겪지 않고 최상의 편집 환경을 유지할 수 있는 장점이 있다.

    Windows Live Photo Gallery - 디지털 카메라를 이용하는 사람들의 수가 전세계적으로 매우 많다. 하지만 디지털 카메라를 이용하여 사진을 관리하는 작업은 결코 간단하지 않다는 것을 이미 우리는 여러 해 동안 잘 경험해왔다. 그리고 가끔은 사진을 잘못 찍어서 다른 사람에게 미안했던 경험도 있을 것이다. Windows Live Photo Gallery는 Windows Live SkyDrive와 연계하여 사진을 체계적으로 클라우드에 저장하고 공유할 수 있는 방안, 전자 메일로 손쉽게 전송할 수 있는 방안, 그리고 비슷한 여러 장의 사진을 이용하여 마음에 들지 않는 사진을 원하는 사진으로 전문적인 소프트웨어 없이 편집할 수 있는 기능까지 기존의 멀티미디어 관련 기능 위에 신 기능으로 중무장하였다.

    Windows Live Messenger – Windows Live Essential 이전부터 지속적으로 발전을 거듭해왔고, 두 말할 필요 없는 최고의 메신저 서비스와 소프트웨어이다. 역사가 오래된 만큼 이제는 더 넣을 것이 없지 않겠는가 하는 생각이 들기도 했지만 이런 예상을 뒤엎고 더 많은 사람들에 다가갈 수 있는 기능이 더해져 더욱 매력적으로 업그레이드되었다. Social Network 서비스, 그 중에서도 Facebook과 같이 이전의 메신저나 전자 메일과는 조금 다른 형태의 커뮤니케이션 방식에 대해서도 완벽한 기능을 제공한다. 이에 맞추어, 기존의 메신저 대화 이름은 가장 최근에 남긴 상태 메시지로, 첫 화면은 대화 상대 목록을 보여주는 화면 말고도 넓은 패널에 여러 Social Network 서비스로부터 수집된 지인들의 동향까지 보여주며, 동영상과 사진도 브라우저를 열지 않고 그 자리에서 바로 볼 수 있게 해준다. 무엇보다도, Facebook의 채팅 기능과 Messenger 대화 상대 기능을 직접 연결할 수 있는 것은 참 좋은 기능이다.

    Windows Live Hotmail – Hotmail이 더 새로워졌다. 이전의 느리고 답답한 화면은 잊어버려도 좋다. 사용자가 원하는 것이 무엇인지 스스로 찾아 알려주는 똑똑한 기능과 함께 이번 2011 업데이트에서는 별도의 소프트웨어를 설치하지 않아도 메일을 이용하여 슬라이드 쇼를 작성하거나 오피스 문서를 곧바로 작성하여 첨부할 수 있으며, 역으로 받아온 메일의 사진들을 슬라이드 쇼로 보거나 오피스 문서를 웹 상에서 보고 편집할 수 있는 기능도 제공한다. 또한, Live View의 기능은 지속적으로 발전하여 별 뜻 없이 메일 본문에 YouTube 동영상 링크를 붙여 넣었거나 FEDEX의 운송장 번호를 붙여 넣었다면 Live View 영역에 YouTube 동영상을 웹 브라우저를 열지 않고 바로 볼 수 있게 해주고, 물류 운송 상태를 FEDEX 홈페이지에 직접 가지 않고 곧바로 조회하여 보여주기까지 한다.

    Windows Live SkyDrive – 많은 인기가 없을 것이라 생각한, 여느 웹 저장소와 다를 것이 없어 보였던 이 서비스가 바로 이번 Windows Live 2011 업데이트의 중추라고 한다면 아마 놀라게 될 것이다. 제품 로고에 있는 것처럼 하늘 위에 떠 있는 구름에 저장하는 것처럼 답답한 메일 첨부 파일이나 하드 디스크의 어느 한 구석이 아닌, 언제 어디서나 찾아 쓸 수 있는 여러분만의 대용량 저장 공간을 제공한다. 이를 이용하여 Hotmail과 Photo Gallery는 슬라이드 쇼를 남들에게 보여줄 수 있도록 도와주고, 또 Hotmail과 Office Web App이 웹 상으로 문서를 편집하는 기능도 제공하며, 앞서 살펴본 Live Mesh 또한 다름아닌 SkyDrive에 모든 데이터를 저장하기도 하고 로컬 드라이브에 다시 파일을 내려주기도 한다. 무엇보다도 Office Web App을 직접 사용하면 여러 사람이 동시에 편집에 참가하여 공동 작업을 할 수도 있으므로 못하는 것이 없다.

    12년동안 학생 여러분들의 베프 (Best Friend)가 되어줄 Live@edu

    초등학교 6년, 중학교 3년, 고등학교 3년 동안 학교 생활을 하는 수많은 어린이와 청소년들에게도 이제는 과거와 다르게 컴퓨터를 사용하는 것은 과제에서부터 학습에 이르기까지 꼭 필요한 일이 되었다. 이 단락을 시작하기 전에, 독자 여러분이 아직도 컴퓨터를 사용하는 것이 게임만 하기 위함이라고 생각하여 아직도 컴퓨터를 사주지 않은 부모에 해당된다면 당장 생각을 바꾸기를 권한다. 컴퓨터 게임을 오래 하는 것이 걱정된다면 Windows Live Family Safety를 설치하여 이를 예방할 수 있기 때문이다. :-)

    본론으로 돌아와서, Live@edu는 학교 IT 관리자가 추가 비용 없이, Microsoft의 클라우드 데이터 센터를 활용하여 학교 내의 전자 메일 및 저장소 시스템을 구축할 수 있도록 도와주는 서비스이다. 앞에서 살펴본 Windows Live 서비스가 개인을 위한 서비스라면, Live@edu는 Microsoft Exchange Online을 기반으로 제공되지만 공동 편집, 웹 오피스 등의 기능을 추가로 제공하여 학생이나 선생님이 컴퓨터를 사용하는 위치가 문제가 되지 않게 하여 실시간으로 과제를 수행하고 평가할 수 있도록 도와준다. 교사들의 경우, 문서 작성 후 공유에 드는 시간과 비용을 최소화하여 더 본질적인 업무를 수행할 수 있도록 도와준다.

    더 나아가서, Microsoft가 고등 교육 기관의 학생들을 위하여 제공하는 무료 소프트웨어 제공 프로그램인 DreamSpark를 Live@edu를 이용하여 손쉽게 신청할 수도 있다. 국내의 경우, DreamSpark를 이용하여 학생들이 참가할 수 있는 각종 IT 관련 경진대회에 필요한 소프트웨어를 스스로 다운로드 받을 수 있도록 해준다. Live@edu 서비스는 뒤에서 소개할 Office 365 for Education으로 업그레이드될 예정에 있다.

    사무실에 천근만근인 몸을 운반하지 않도록 도와줄 구세주 – Office 365

    Office 365는 이전에 Microsoft Business Productivity Online Suite (BPOS)로 소개되었던 세 가지 온라인 서비스인 Exchange Online, SharePoint Online, Lync Online을 필두로 기존에 출시된 Microsoft Office 2010을 소프트웨어로 채택하여 소프트웨어+서비스를 구현하는 기업용 오피스 클라우드 솔루션이다. 클라우드 솔루션이므로, 전체 서비스를 구현하기 위하여 기존과 같이 모든 것을 구입하고 관리하고 유지 보수할 필요가 "전혀" 없이 Microsoft에게 맡기면 되는 것이다.

    Exchange Online은 Exchange Server 2010을 기반으로 구현된 클라우드 서비스로, 전문적인 Exchange Server 엔지니어 없이도 엔터프라이즈 서비스를 가능하게 한다. 메일 뿐만이 아니라 일정 관리, 연락처 동기화, Windows Mobile 6.5 및 Windows Phone 7, iPhone, Android, BlackBerry 등 다양한 스마트 폰 장치와의 동기화를 지원하므로 언제 어디서나 업무에 관한 커뮤니케이션이 중단되지 않도록 도와준다. 무엇보다도 클라우드 기반의 서비스이므로 비싼 서버 장비와 서버 소프트웨어 라이선스를 필요로 하지 않는다는 것은 많은 기업들에게 직접 사용할 수 있는 플랫폼이든 기존의 전산 자원을 보호하기 위한 추가 계층이든 그 의미에 관계 없이 매력적으로 다가올 것이다.

    SharePoint Online은 기업이 Enterprise Social Communication을 구현할 수 있도록 도와준다. 단순한 문서 공유 및 팀 협업의 차원을 뛰어넘어, 최근 SharePoint를 통하여 구현하는 다양한 비즈니스 응용프로그램과의 호환성이 보장되므로 기업 내부에서는 저렴한 비용으로 다차원의 데이터를 관리할 수 있으며, 기업 외부를 위해서는 SharePoint Online을 통하여 만들 수 있는 공개 웹 사이트를 이용하여 주문 요청, 사용자 피드백 수렴 등 다양한 마케팅 및 영업 활동을 가능하게 해준다. 기술적으로 보면, 당연히 OData 프로토콜을 사용할 수 있으므로 SharePoint Online 그 자체는 훌륭한 Contents Management System이자 Database인 셈이다.

    Lync Online은 기존의 Office Communications Server의 차기 제품인 Lync Server의 클라우드 버전으로 기업 내 인스턴트 메시징을 역시 클라우드 기반에서 해결할 수 있도록 도와준다. 그리고 Lync Client는 이전 버전의 클라이언트처럼 단순한 메신저 – 또는 – Outlook에 제한적으로 통합되는 형태를 넘어서서 Office 응용프로그램 곳곳에서 쉽게 활용할 수 있도록 추가 기능으로 제공되었다. Lync Client를 사용하는 방법을 이용하여 위치에 관계없이 클라우드를 이용하여 다른 사람에게 즉시 인스턴트 메시징을 보낼 수 있다는 것은 매력적인 일이다.

    Office Web App은 Windows Live에서와 마찬가지로 Exchange Online과 SharePoint Online의 웹 확장 기능에서 그 진가를 발휘한다. 그리고 여러분의 컴퓨터에 지금 당장 Office Professional Plus 2010이 설치되어있다면 소프트웨어의 장점과 서비스의 편리함을 모두 누릴 준비가 되어있는 것이다.

    다음 시간에는

    다음 시간에는 IT 관리자와 개발자 여러분들이 지금껏 열정과 혼을 다하여 능력을 발휘해왔던 Windows Server 플랫폼이 클라우드 시대에서는 어떻게 변화하고, 더 나은 기능을 제공하는지에 대하여 살펴볼 것이다. 클라우드 시대에 알맞은 관리 방법과 개발 방법론을 익히는 것은 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)

    댓글을 달아 주세요

    기술 소식2011. 2. 8. 09:58

    오늘 아침 트위터를 통하여 매우 흥미로운 소식을 접하였습니다. 세계적인 코어뱅킹시스템 공급사인 TEMENOS의 T24 코어뱅킹시스템이 Windows Azure Platform 기반으로 전환된다는 소식이었습니다.

    이 소식에 따르면 TEMENOS의 T24 코어뱅킹시스템을 Windows Azure Platform 내의 Windows Azure Compute 및 SQL Azure를 활용하여 확장 가능하고 실리적인 서비스 비용을 유지하며 더 나은 코어 뱅킹 시스템 운용을 지향한다고 되어있습니다. (기사 원문: http://www.temenos.com/Press-Releases/2011/Temenos-takes-banks-into-the-cloud-with-the-launch-of-T24-on-Windows-Azure-/) TEMENOS T24 시스템을 이용하는 금융 기관들이 이미 해외에는 다수 존재하고 있으며 이러한 결정이 앞으로 여러 금융 기관들에게 큰 영향으로 다가오게 될 것이라고 봅니다.

    TEMENOS T24와 같은 코어뱅킹시스템에 있어서 가장 중요한 부분은 데이터베이스 확장성에 관한 부분이 될 것입니다. 이러한 경우 Windows Azure Platform은 시스템 사업자에게 있어 좋은 플랫폼이 됩니다. 시스템 통합 사업자는 모든 시스템을 Windows Azure Platform 위로 이동하는 위험부담을 감수하지 않고 점진적으로 이동할 수 있도록 Windows Azure Connect와 같은 연결 수단을 사용하여 온 프레미스 환경과 클라우드 환경을 구분없이 중계할 수 있습니다.

    Windows Azure Connect를 이용하여 실제로 확장성이 필요한 부분에 대해서는 클라우드 컴퓨팅 파워를 사용하도록 하고, 법적으로 민감한 개인 정보들은 온 프레미스 환경에서 접근하도록 제어하는 방법을 도입할 수 있을 것입니다. 그리고 SQL Azure 데이터베이스의 개별 상품들 자체는 최대 50GB까지만 지원이 되는 단점이 있지만, 횡단 파티션 (레코드의 분산 저장) 기반의 Shard 패턴을 이용하여 데이터베이스의 확장을 꾀할 수도 있을 것이란 계산이 나옵니다.

    다양한 기술적 아키텍처와 더불어서 유비쿼터스 시대에 알맞는 더 효율적이고 더 능동적인 클라우드 기반의 신규 차세대 프로젝트들도 기대되는 시점입니다. :-)

    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. 2. 1. 01:30
    한국 Microsoft의 박중석 Evangelist님의 아이디어 (http://blogs.msdn.com/b/jspark/archive/2011/01/31/110131-windows-azure.aspx) 를 기초로 Windows Azure Consumption Rate를 계산하고, 환율을 입력하면 자동 계산이 가능하도록 만든 Excel Worksheet를 공유합니다. 필요한 부분만 편집할 수 있도록 워크시트를 잠가두었습니다. 비용 계산이 필요하신 분들께 도움이 되고자 자료를 만들어 공유하며, 잘못된 부분이나 수정이 필요한 부분은 이야기해주시면 곧바로 업데이트하겠습니다. :-D

    http://cid-318484c5aad6b73d.office.live.com/browse.aspx/rkttu.com%20Documents/Windows%20Azure%20Consumption%20Calculator
    Posted by Cloud Developer 남정현 (rkttu.com)

    댓글을 달아 주세요

    이벤트2011. 2. 1. 01:22

    2011년 2월 23일 수요일 오후 1시부터 오후 6시까지 롯데호텔 잠실 크리스탈 볼륨에서 한국 Microsoft, HP KOREA, INTEL KOREA가 공동으로 개최하는 마이크로소프트 클라우드 파워 컨퍼런스가 열립니다. 클라우드 컴퓨팅의 국내 도입에 관한 다양한 이야기와 실무적인 논의가 함께 이루어질 이번 행사에 많은 관심과 참여가 있었으면 합니다. 

    행사 홈페이지: http://www.microsoft.com/korea/events/2011/cloudseminar/default.aspx
    행사 등록 바로가기: http://www.microsoft.com/click/services/Redirect2.ashx?CR_EAC=300012932

    행사 등록 바로가기: http://www.microsoft.com/click/services/Redirect2.ashx?CR_EAC=300012932
    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)

    댓글을 달아 주세요

    이벤트2011. 1. 27. 11:04

    중요: 행사 등록은 http://onoffmix.com/event/2345 에서 꼭 해주세요!

    Windows Azure Cafe Boot Camp #1

    Windows Azure Cafe (http://cafe.naver.com/wazure)에서는 지난해에 이어 올해부터는 매월 다양한 주제를 통하여 개발자, IT 전문가들에게 Windows Azure 기반의 실전 개발에 대한 이야기를 전할 수 있또록 Boot Camp 세미나를 준비하였습니다. 클라우드 컴퓨팅에 관심이 있는 분들을 모시고, 세미나 전/후로는 클라우드 컴퓨팅과 최신 기술 동향에 대한 자유로운 토론도 같이 진행할 수 있도록 하겠습니다.

  • 제목: 뜬 구름 잡기가 제일 쉬웠어요 - Azure 개발 첫 시작하기
  • 일시: 2011년 2월 19일 토요일 / 오후 2시
  • 장소: 포스코센터 서관 5층 한국 마이크로소프트 시너지 룸 (SYNERGY ROOM)
  • 대상: 초중급 소프트웨어 및 웹 개발자

    세션 소개

    (1) Windows Azure로 Cloud App을 만든다는 것 - Windows Azure MVP 남정현

    클라우드 컴퓨팅에 대한 다양한 이야기들이 오고 가는동안 많은 개발자들은 아마존 웹 서비스, 구글 앱 엔진과 같이 정식 출시가 되지 않았지만 비교적 한국에서 사용하기 쉬운 퍼블릭 클라우드 컴퓨팅 서비스를 자주 접하였을 것입니다. Windows Azure가 이들 플랫폼과 비교했을 때 어떤 면에서 더 나은지, 그리고 Cloud App을 만든다는 것이 어떤 의미인지 이야기를 나누어보고자 합니다.

    - Windows Azure Platform에 대한 간략한 소개
    - Amazon Web Service, Google App Engine과의 비교
    - 다양한 Cloud Platform의 활용 전략
    - Windows Azure의 2011년중 업데이트에 대한 소개

    (2) 비교 체험 - 웹 호스팅 vs Windows Azure - Windows Azure MVP 남정현

    Windows Azure가 기존에 우리나라에서 많이 사용되는 Windows Server 기반 웹 호스팅과 무엇이 얼마나 다른지 궁금하게 생각하시는 분들이 많을 것입니다. 웹 호스팅과 Windows Azure 사이의 차이점을 기술적으로 분석하고 파악하실 수 있도록 도와드리는 세션을 준비하였습니다.

    - 공통점: ASP.NET을 통한 개발
    - 차이점 1: 배포 방법
    - 차이점 2: 운영 방법
    - 차이점 3: 확장성
    - 차이점 4: 데이터베이스

    아젠다

  • 14:00 ~ 14:50 (1) Windows Azure로 Cloud App을 만든다는 것
  • 14:50 ~ 15:00 휴식
  • 15:00 ~ 16:50 (2) 비교 체험 - 웹 호스팅 vs Windows Azure
  • 16:50 ~ 질문/답변

    시간, 장소, 날짜

  • 일시: 2011년 2월 19일 토요일 / 오후 2시
  • 장소: 포스코센터 서관 5층 한국 마이크로소프트 시너지 룸 (SYNERGY ROOM)

    알립니다: 본 세미나는 커뮤니티가 주최하는 비영리 세미나이며, 주차권은 별도로 제공되지 않으니 가급적 대중 교통을 이용하여 주시면 감사하겠습니다.

  • 중요: 행사 등록은 http://onoffmix.com/event/2345 에서 꼭 해주세요!

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

    댓글을 달아 주세요

    PaaS2011. 1. 22. 03:11

    이전 글: [Windows Azure Platform/A Lap around Cloud Computing] - A Lap around Cloud Computing - “Dynamic Set of Connected Computers”
    다음 글: [Windows Azure Platform/A Lap around Cloud Computing] - A Lap around Cloud Computing – 당신이 어디에 있든 관계없는 세상

    모든 것은 서비스로 통한다

    지난 글에 이어서 오늘은 Everything as a Service, 줄여서 흔히들 XaaS라고 부르는 개념에 대한 이야기를 나누어보려고 한다. 지난 시간에는 Cloud Computing에 대한 기술적인 정의를 살펴보기 위하여 “Dynamic Set of Connected Computers”라는 문장을 이야기했었는데 그렇다면 이 문장에 부합하는 시스템을 가지고 도대체 무엇을 어떻게 할 것인가라는 이야기를 해야 할 필요가 있을 것이다.

    사실 Cloud Computing은 우리도 모르는 사이에 이미 우리 생활 속 깊숙이 자리잡고 있었다. 다만 이것이 Cloud Computing이라고 이야기할 수 있을 만큼 성숙했는가 그렇지 않았는가의 차이일 뿐이다. 실질적으로 Cloud Computing은 언제부터 우리 생활 속에 자리 잡았을까?

    현 시점에서 Windows 운영 체제의 사용에 익숙한 대다수의 컴퓨터 사용자들은 과거에 발표된 적이 있는 Windows 98이라는 운영체제를 잘 알고 있다. 1997년 말에 처음 발표되었고, 사전적인 정의로만 놓고 본다면 시장에서 획기적인 사용자 인터페이스로 사람들의 이목을 잡아 끌었던 Windows 95라는 운영체제의 성공적인 후속 버전으로 잘 알려져 있다. 약간 기술적으로 접근해보면 Internet Explorer 4.0을 포함하고 있고, 이 때문에 반독점 시비에 휘말렸던, Microsoft의 입장에서는 다소 쓰라린 추억을 품게 했던 그런 운영 체제였다. 우리가 아는 모습은 여기까지였다.

    하지만 Windows 98에서 우리는 Cloud Computing의 시작을 이미 경험하였다. 놀랍게도, Microsoft는 인터넷이라는 수단을 이용해서 Windows 운영 체제를 출시 이후에도 신속하게 수정하고 사용자들의 요구 사항을 전세계 어디에서든 직접 반영할 수 있도록 하는 기술인 Windows Update를 처음 선보였다. 우리는 이것이 당연한 일이라고 생각한다. 하지만 이러한 서비스를 제공해야 하는 Microsoft의 입장에서는 어떠했을까? 대충 계산해보아도 Windows 98을 각 가정에서 하나씩 사용한다고 가정하더라도 전 세계적으로 보면 정말 엄청난 수의 클라이언트를 보유한 셈이다. 이러한 클라이언트들에게 서비스차원에서 소소한 업데이트들을 제공하기 위하여 데이터센터를 구축하고 운영해왔던 것이다.

    Cloud Computing은 이와 같이 정확한 규모를 파악하기 어려운 서비스에 대하여 꼭 필요한 접근 방식이다. 우리가 흔히 이야기하는 클라이언트-서버 컴퓨터 환경을 기반으로 하지만, 접속을 하는 클라이언트의 수가 사실 천문학적으로 많을 수도, 혹은 처음 잡았던 운영 규모에 비해 접속하는 클라이언트의 수가 얼마 되지 않아 비용이 낭비되는 상황이 될 수도 있는 서비스의 운영에 대해 확실한 방안을 제시한다. 우리가 평소에 물을 사용하기 위하여 사용한 물의 양을 재거나 양동이를 가지고 물을 받아서 쓰는 일을 하지 않는 것과 마찬가지로, Cloud Computing을 사용하면 Web Hosting이나 Server Hosting을 할 때와는 다르게 서비스를 사용한 만큼만 비용을 지불하면 된다. , 서비스의 본질에만 초점을 맞추기만 하면 나머지는 Cloud Computing 서비스 제공자의 역할로 모든 것이 돌아간다는 것이다.

    무엇으로 서비스를 만드는가?

    Cloud Computing 서비스 제공 업체 입장에서는 무엇으로 서비스를 만들어 제공하는가가 중요한 관점이 될 수 있다. 대부분의 경우 세 가지 범주 안에 모든 것이 설명되는데, 인프라를 기반으로 서비스를 제공하는 Infrastructure as a Service (이하 IaaS), 플랫폼을 기반으로 서비스를 제공하는 Platform as a Service (이하 PaaS), 그리고 소프트웨어나 이에 관련된 기반 기술을 활용하여 서비스를 제공하는 Software as a Service (이하 SaaS) 세 가지로 나눌 수 있다.

    IaaS의 경우 Cloud Computing의 도래 이전부터 하드웨어, 네트워크 통신망과 같이 근간이 되는 인프라와 자원에 대한 전문적인 서비스를 제공해오던 사업자들의 관점에서 강점으로 내세우는 Cloud Computing 방식이다. 인터넷 연결을 이용하여 장소와 시간의 제약을 없애고, 약간의 제어용 소프트웨어를 덧붙여 하드웨어, 네트워크 통신망을 자유롭게 제어하고 필요한 만큼 추가하거나 삭제할 수 있는 방안을 제시한다. 여기에는 대표적으로 Amazon, Rackspace 등의 기업이 잘 알려져 있다.

    PaaS의 경우 Cloud Computing 이전부터 기반 기술을 보유하고 발전시켜왔던 사업자들의 관점에서 강점으로 내세우는 Cloud Computing 방식이다. IaaS 사업자 또는 독자적 IaaS 플랫폼을 구축한 이후에 각자 자신들의 철학과 이념을 잘 반영한 Cloud Computing 기반 플랫폼을 IaaS와 마찬가지로 인터넷 연결을 이용하여 사용하고 제어할 수 있도록 제공한다는 취지이다. 여기에는 대표적으로 Microsoft, Salesforce 등의 기업이 잘 알려져 있다.

    마지막으로 SaaS의 경우 IaaS PaaS를 통하여 최종 사용자에게 실질적인 서비스를 제공하기 위한 취지로 해석되는 경우가 많다. 대표적으로 Google Docs Microsoft Office Web Apps가 이러한 범주에 속하는데, 데스크 탑에서 구현할 수 있는 소프트웨어를 웹에서 동시에 사용할 수 있도록 하는 것이 특징이다. 특별히, Microsoft의 경우 SaaS가 보통 의도하는 인터넷 전용의 서비스를 넘어서 기존의 데스크 탑에 설치되는 소프트웨어와 SaaS 기반의 서비스가 서로 균형을 맞추어 사용자에게 적절한 선택을 할 수 있도록 Software + Service 전략을 제시하곤 한다.

    지금 열거한 IaaS, PaaS, SaaS는 하드웨어, 소프트웨어, 그리고 전략적 플랫폼이라는 IT 업계의 3대 주요 구성 요소들을 빠짐없이 모두 열거한 것이다. 이 세 가지 범주를 벗어나는 Cloud Computing 서비스는 없으며, 정확히 한 가지에 국한되는 Cloud Computing 서비스도 없다. , 이 세 가지 범주를 이용하여 과거, 지금, 그리고 앞으로 등장할 Cloud Computing 서비스에 대한 이야기를 할 수 있을 것이다. 다만 한 가지 주의해야 할 점이 있다면, Cloud Computing이 반드시 인터넷과 전형적인 컴퓨터 장치만 사용해서 이뤄지는 것은 아니라는 점이다.

    서비스로 무엇을 제공하는가?

    이러한 특성을 기반으로 무엇을 서비스화하고 Cloud Computing에 올린다면 좋을까? 여기에 대한 답은 의외로 쉽게 찾을 수 있다. 서비스의 규모에 관계없이 사람들이 원하고 바라는 것이면 무엇이 되어도 좋다. 지금부터는 XaaS의 광범위함을 이야기해볼까 한다.

    Case #1 – TTS (텍스트를 음성으로 변환) 기술

    펜티엄 컴퓨터의 판매가 활발하던 시절, 모 대기업의 컴퓨터 제품을 구입하면 번들로 따라오던 소프트웨어를 모두들 기억할 것이다. 텍스트를 입력하면 여기에 해당되는 사람의 음성 출력을 컴퓨터가, 어눌하지만 꽤나 자연스럽게 표현하는 것이다. 그래서 별로 새로울 것이 없어 보인다. 하지만 이러한 TTS 기술이 Cloud Computing 환경을 만나서 서비스로 탈바꿈하면 어떨까?

    iSpeech.org (http://www.ispeech.org)를 방문하면 여기에 대한 현실적인 구현 사례를 만나볼 수 있다. 텍스트 음성 변환을 구현하는 곳은 많았지만 그 지속성이 오래가지 못하는 경우가 대다수인데, 이것을 하나의 완성된 Cloud Computing 서비스로 만들어서 매우 주목을 받고 있다. 여기서 중요한 것은 기존의 경우 텍스트 음성 변환을 이용하기 위하여 음성 데이터 파일과 이를 구현하는 소프트웨어 엔진을 특정 컴퓨터에 설치해야 했으며 심지어는 이 소프트웨어의 파일 크기도 매우 크고, 가격도 매우 비싸기까지 했다. 그러나 이제는 이러한 서비스를 특정 컴퓨터에 설치하는 일 없이, 필요해서 생각이 나면 곧바로 여러분의 웹 브라우저는 물론, 여러분이 개발할 응용프로그램의 기능 상 일부분으로 통합하는 것까지 정당한 비용 지불만 있다면 24시간 365일 가능한 것이다. 이해를 돕기 위하여, iSpeech.org 에서 만든 샘플 오디오를 첨부하였다.

    문장: Barack Obama said: I think when you spread the wealth around it's good for everybody.
    오디오:


    이 서비스를 이용하여 회원 가입 없이는 10, 무료 회원은 1분 이내의 음성 변환을 시험해볼 수 있으며, API를 사용하거나 전문적인 활용이 필요한 경우 계정을 업그레이드하고 비용을 지불하는 방법으로 더 나은 서비스를 받을 수 있다. 한 마디로, TTS as a Service (TaaS)라고 정의할 수 있는 것이다.

    Case #2 – Windows Live

    Windows Live의 역사는 장대하다. 그리고 다양한 실험을 거쳐서 지금의 형태를 띠게 된 것이라 할 수 있다. Windows 95 시절 처음 소개되었던 The Microsoft Network를 통하여 인터넷 서비스를 어떻게 제공하면 좋을지 Microsoft는 지속적으로 고민의 고민을 거듭해왔고, 본격적으로 TCP/IP 기반의 인터넷이 활성화되기 시작할 무렵 출시된 Windows 98부터는 동적 웹 페이지 기능 혹은 – DHTML, AJAX (COM 기반 HTTP Request), 웹 서체와 같은 더 확장된 인터넷 기능을 제공하는 Internet Explorer 4.0과 더불어 인터넷의 본질에 접근하기 시작하였다. 물론 이 무렵에도 지속적으로 MSN은 전형적인 Internet Contents 제공 사업자로서의 모습을 갖추고 있었다.

    그러나 MSN 이상으로, 사용자가 인터넷을 좀 더 친숙하고 편리하게 사용할 수 있는 방안이 없을지에 대한 지속적인 고민이 더해져, 2005년 늦가을에 Microsoft Windows Live의 첫 버전을 발매하였다. Windows 운영 체제를 사용하는 사용자들의 경험을 배반하지 않으면서도 인터넷 서비스가 갖추어야 할 강력함을 동시에 유지하는 어려운 실험을 시작하였고, 시간이 갈수록 이 실험에 대한 성과가 나타나기 시작하였다.

    현재의 Windows Live는 개인 사용자들이 Microsoft의 다양한 인터넷 자원에 접근하기 위한 핵심 운영 체제와 동일한 맥락을 갖는다. Microsoft Windows 95 시절 이후부터 유지하고 발전시켜왔던 MSN 웹 사이트는 물론, 전자 메일 서비스를 제공하는 Hotmail, 인스턴트 메신저 서비스를 제공하는 Windows Live Messenger 등 일반 사용자를 위한 서비스가 핵심이 되고, Windows Azure Platform의 등장과 더불어서 Cloud Computing 환경에서의 Claim 기반 인증 수단으로 Windows Live ID는 그 핵심을 차지하고 있다.

    그리고 Windows Live는 지속적으로 다른 웹 응용프로그램들의 장점을 수용하고 발전시켜나가면서 우리가 잘 아는 Google AJAX 기반 Web Application과 다르지 않은, 그러면서도 기존 Office Windows 사용자들의 경험을 배반하지 않는 Web Application을 성공적으로 Windows Live에서 제공하기 시작하였다. 한 마디로, Windows Live Microsoft의 핵심 인터넷 서비스이자 Microsoft가 출시하는 각종 소프트웨어는 물론 여러분이 고객에게 제공하게 될 서비스에 Microsoft의 인터넷 서비스를 자연스럽고 강력하게 통합시킬 수 있는 확장 기능 집합이라 할 수 있다.

    Case #3 – TROPO

    TROPO에 대해서는 생소한 사람들이 많을 것이다. 이 서비스를 한 마디로 요약하면, 전화 통신 시스템을 가상화한 것이라고 말할 수 있다. 어떻게 그게 가능했을까? 답은 VOXEO Corporation의 기술력에 있다.

    VOXEO Corporation은 전통적으로 전화 통신 기반으로 지속적으로 연구 개발을 해왔던 기업으로 기간 망을 운용하는 사업자들처럼 사업의 규모에 집중한 것이 아니라, 전화를 이용한 부가 가치 창출에서 꼭 필요한 자동화 시스템을 구현하는 일에 많은 자원을 투자한 것으로 유명한 회사이다. 덕분에 이 분야에 뛰어든 다른 여러 회사들 가운데에서도 VOXEO Corporation의 행보는 남다르다고 할 수 있다.

    필자 역시 이 회사의 존재도, 이 회사가 Cloud Computing 서비스라고 소개하는 TROPO에 대해서도 사실은 전혀 알지 못하였다. 그러나 인터넷 검색을 통하여 처음 접하였고, 이 회사에서 제공하는 TROPO 서비스를 알게 되었으며, 덕분에 Imagine Cup 2010 대회에 참가하기 위하여 제출한 아이디어에서 이 서비스의 능력을 Windows Azure Platform과 연계하여 적극 활용하여 원하는 IT 솔루션을 실제로 그려낼 수 있었다.

    종전에는 자동 응답 시스템, 혹은 대화형 음성 응답 시스템을 구현하기 위해서는 여러 개의 전 이중 회선을 전화국으로부터 할당 받아 전화 수신이 폭주하는 경우에도 최대한 전화를 받을 수 있도록 해야 했고, 이러한 기능을 수행할 수 있는 매우 비싼 장비를 구축해야 하고, 이러한 장비를 제어하고 유지보수하기 위한 소프트웨어를 개발하는 등 생각할 수 있는 모든 역량을 집중해야 한다. 그러나 여기서 장치, 전 이중 회선, 유지 보수 등 생각할 수 있는 모든 복잡한 요소를 제거하고 순수하게 어떤 시나리오를 재현하는 음성 응답 시스템을 만들 수 있는 스크립트만을 작성하여 게시하면, 미리 지정된 전화 번호로 전화를 걸었을 때 작성한 스크립트대로 동작하는 것을 들을 수 있다. 더 중요한 것은, 기능을 테스트하고 개발하는 동안에는 무료로 사용하고 실제로 서비스를 수행할 때 비용을 지불할 수 있다는 것이다.

    빠른 이해를 돕기 위하여, DEMO 응용프로그램을 Skype를 통하여 직접 테스트해볼 수 있다. DEMO 응용프로그램은 아래와 같은 스크립트로 구성되어있다.

    answer();
    say("Yes, Tropo is this easy!");
    hangup();

    그리고 위의 응용프로그램을 테스트하기 위하여, 다음 중 하나의 수단을 사용할 수 있다.

    전화 또는 문자 메시지: +1.240.242.7909
    IM (Jabber/G-Talk):
    tropo-homepage@tropo.im
    Skype: +99000936 9991429732
    SIP:
    sip:9991429732@sip.tropo.com

    전화, Skype, SIP 등을 이용하여 음성 출력을 사용하는 통신 수단으로 이 응용프로그램에 접근한다면 TTS 엔진을 통하여 변환된 음성을 들을 수 있을 것이다. 반면 텍스트 기반 통신 수단으로 이 응용프로그램에 접근한다면 문자 메시지나 대화에 대한 응답으로 텍스트를 받을 수 있을 것이다. , TROPO는 음성과 텍스트에 대한 완벽한 가상화를 지원하고 있는 것이다.

    만일 TROPO에 대하여 좀 더 자세히 알아보고 싶다면 http://www.tropo.com/ 을 방문하면 된다.

    다음 시간에는

    다음 시간부터는 순차적으로 Microsoft 3Cloud Computing 전략에 대하여 살펴보기로 할 예정이다. 그 중 가장 첫 번째로, Office 365에 대한 이야기를 풀어보고자 한다. Office 365는 이전에 언론 등을 통하여 Business Productivity Online Standard (BPOS) Suite로 소개되었으며 이것이 Microsoft Office 2010 또는 그 이후 버전과 함께 군을 이루어 2010년중에 정식 버전으로 소개될, 현재 Windows Live가 제공하는 개인 및 SOHO를 위한 Office 확장과는 별개인 더 전문적인 Mobile Office Cloud Computing 서비스이다. 그 후, Windows Server Family에서 사용할 수 있는 Cloud Computing과 상호 운용 기술을, 마지막으로는 Windows Azure Platform에 대하여 개발자 관점과 IT Professional 관점으로 나누어 상세하게 다루어볼 예정이다.

    글쓴이 이력

    l  Blog: http://www.rkttu.com / E-MAIL: rkttu@rkttu.com / Twitter: @rkttu

    l  Windows Azure MVP (2011) / Visual C# MVP (2009-2010)

    l  ㈜코아뱅크 코아기술연구소 (http://www.corebank.net) 연구원 재직 중

    l  Windows Azure Café SYSOP (http://cafe.naver.com/wazure)

    l  Visual Studio 2010 Team Blog (http://www.vsts2010.net) 집필진 활동 중

    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)

    댓글을 달아 주세요