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

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

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

로드 밸런싱 환경이란?

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

/* 중략 */

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Windows Azure 환경에서의 고려 사항

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

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

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

'Cloud' 카테고리의 다른 글

SQL Azure Data Sync (3) – 고려사항  (0) 2011.09.22
SQL Azure Data Sync (2) – Sync Group  (0) 2011.09.16
SQL Azure Data Sync (1) – 소개와 Agents 구성  (0) 2011.09.09
SQL Azure Sharding 소개  (0) 2011.09.08
SQL Azure Reporting (3)  (1) 2011.08.25

Windows Azure Sample – All in One Code Framework

Cloud 2011. 7. 27. 08:30 Posted by 알 수 없는 사용자

Windows Azure Sample – All in One Code Framework

영문 MSDN을 보시면 아래와 같은 All in One Code Framework에 대한 내용을 보실 수 있습니다.

실제 Site Codeplex 이며 주소는 다음과 같습니다.

http://1code.codeplex.com/

Sample 찾아보기 하면 아래와 같이 여러 Sample 들이 보이고 Windows Azure Sample을 확인 가능합니다. SharePoint에 대한 내용은 안 보이는군요 ^^

Windows Azure Code Sample을 클릭해보시면 32개 정도의 Sample 을 보시고 다운로드 가능합니다. 약간 고쳐서 바로 써 먹거나 참조해도 도움이 될 듯 합니다.

다음 글에서는 Azure + Bing Map sample application 을 돌려볼까 합니다.


Windows Azure Application - Hello Azure (2)

Cloud 2011. 5. 10. 08:30 Posted by 알 수 없는 사용자

Windows Azure Application - Hello Azure (2)

이전 글에서 로컬에서 Windows Azure 응용 프로그램을 처리했으므로 여기서는 Cloud로 배포를 해보도록 하겠습니다. 업데이트된 Management Portal을 통해 진행합니다.

HelloAzure 프로젝트를 클릭해서 게시 메뉴를 사용해봅니다. 게시 메뉴를 클릭하면 어셈블리, 구성 파일을 포함하는 서비스 패키지 파일을 생성하게 됩니다.


Windows Azure 프로젝트 배포 창이 나타나며 서비스 패키지만 만들거나 Windows Azure로 자격증명을 이용해서 배포할 수 있습니다. 여기서는 서비스 패키지만 만들기를 클릭합니다.


탐색기가 나타나며 서비스 패키지를 확인 할 수 있습니다.



Windows Azure 사이트를 액세스합니다. http://windows.azure.com



Live ID로 로그인합니다. Windows Azure Management Portal에서 구독을 생성되어야 합니다. 활성화 되어 있다면 New Hosted Service 프로젝트를 클릭할 수 있습니다.


또한 기존에 생성된 서비스를 확인할 수 있습니다.

New Hosted Service 메뉴를 클릭합니다.



서비스 이름에는 “Hello Azure” 를 입력하고 URL에는 원하는 주소를 입력합니다.

Choose a region에서는 적절한 지역을 선택합니다.

Deployment Name에는 “HelloAzure” 로 입력합니다.

Package location, Configuration File은 패키지 만들기에서 탐색기에서의 파일을 선택합니다.

OK를 클릭합니다.

Hosting을 생성하고 Staging 환경으로 배포를 하게 됩니다.

Instance Status의 값이 Ready가 되면 Staging 생성이 완료된 것이며 Deployment 타입의HelloAzure 를 선택하고 오른쪽 속성 창의 DNS Name을 클릭하면 staging에서의 결과를 알 수 있습니다.

Production 환경으로의 배포는 SWAP VIP 아이콘을 클릭하면 됩니다. Staging에서 Production으로 변경된 것을 확인 가능합니다.



그러면 위에서 입력한 URL 내용으로 결과를 확인 가능합니다.

VS 2010을 통해 Windows Azure 프로젝트로 Hello Azure를 생성해서 업데이트된 Management Portal 에 배포하여 실제 Production으로 게시해서 결과를 확인해보았습니다. 여러 가지를 응용이 가능하며 VS 2010 개발 경험에 C#으로 손쉽게 클라우드 응용 프로그램을 생성할 수 있다는 것을 알 수 있습니다.


Windows Azure Application - Hello Azure (1)

Cloud 2011. 5. 3. 08:30 Posted by 알 수 없는 사용자

Windows Azure Application - Hello Azure (1)

Hello Azure 응용 프로그램을 만들고 Cloud로 배포하는 내용을 다루어보도록 하겠습니다.

ManManagement Portal이 업데이트 된지 오래인데 아직 배포까지 다루지 못해 여기서 Hello Azure를 배포해보도록 하겠습니다.

Visual Studio 2010을 통해 Windows Azure 프로젝트를 생성하고 Cloud로 배포해서 Cloud에서 응용 프로그램을 서비스 할 수 있습니다. 물론 C#을 이용해서 처리합니다. 또한 PHP 도 사용이 가능합니다.

아래에서 Visual Studio 2010을 통해 Windows Azure 프로젝트를 로컬에서 생성하고 디버깅하는 내용에 대한 부분을 알아보도록 하겠습니다.

먼저 VS 2010에서 파일 > 새로 만들기 > 프로젝트에서 Visual C#에서 Cloud 템플릿을 선택합니다.



새 프로젝트 창에서 Cloud를 선택하고 프로젝트 이름은 “HelloAzure” 으로 입력합니다.

Windows Azure 프로젝트에서 역할 영역에서 Visual C# ASP.ENT 웹 역할을 선택하고 “>” 를 클릭합니다. 오른쪽 영역의 역할의 편집을 클릭해서 이름을 “HelloAzure_WebRole” 로 입력하고 OK 를 클릭합니다.

VS 2010의 솔루션 탐색기의 구조를 살펴봅니다.

ServiceDefinion.csdef : Role, trust level, endpoint 등 메타데이터

ServiceConfiguration.cscfg: Instance , 구성값

자 그러면 Default.aspx의 디자인을 클릭하여 도구 상자로부터 Label 컨트롤을 드래그하고

속성에서 Font Size를 “30, Bold를 “True” 지정합니다.

디자인 영역을 오른쪽 클릭하여 코드보기를 클릭하여 Default.aspx.cs 로 이동합니다.

Page_Load 이벤트에서 아래와 같은 코드를 작성합니다.

protected void Page_Load(object sender, EventArgs e)

{

this.Label1.Text = "Hello Azure";

}

ServiceConfiguration.csfg 를 열어서 Instance 값을 2로 변경합니다.

<Role name="HelloAzure_WebRole">

<Instances count="2" />

<ConfigurationSettings>

<Setting name="DiagnosticsConnectionString" value="UseDevelopmentStorage=true" />

</ConfigurationSettings>

응용 프로그램을 디버깅을 시작하기 위해 디버그 메뉴에서 디버깅 시작을 클릭합니다.

Windows Azure Compute Emulator가 시작할 때까지 시간이 걸립니다. Cloud Service 프로젝트가 시작프로젝트로 되어 있어 실행하면 작업 표시줄의 메뉴에서 Windows Azure Compute Emulator (로컬의 Windows Azure App의 테스트, 개발환경 에뮬레이팅) 의 아이콘을 볼 수 있으며 아이콘을 오른쪽 클릭하여 Compute Emulator열기를 클릭하면 UI와 웹 페이지를 볼 수 있습니다.



Azure 응용 프로그램이라고 해서 디버깅을 못하는 것은 아닙니다. Visual Studio CS 파일에 중단점을 적용하고 웹 페이지를 새로 고침하면 중단점으로 디버깅이 위치하는 것을 알 수 있습니다.

잘 동작이 되므로 로컬에서 작업은 끝났습니다.



자 그럼 다음에서 서비스 패키지를 만들어서 Management Portal을 이용해서 Cloud로 배포해보도록 하겠습니다.

'Cloud' 카테고리의 다른 글

Windows Azure VM Role 미리보기 #2  (0) 2011.05.09
Windows Azure VM Role 미리보기 #1  (0) 2011.05.09
SQL Azure Sample Database 설치  (0) 2011.04.29
DataMarket (2) - 데이터 구독 및 탐색  (0) 2011.03.07
DataMarket (1) - 소개  (0) 2011.02.28

DataMarket (2) - 데이터 구독 및 탐색

Cloud 2011. 3. 7. 08:30 Posted by 알 수 없는 사용자


Account Key 생성이 끝났으므로 데이터를 구독하고 브라우저에서 데이터를 탐색이 가능합니다. 또한 다양한 인터페이스를 이용해서 데이터 솔루션을 구축 가능합니다.

자 이제 왼쪽 Statistics 메뉴를 클릭하거나 검색에서 “Gender Info 2007”을 검색하여 아래 화면이 표시되게 합니다.



해당 링크나 이미지를 클릭하여 보다 더 자세한 정보를 확인합니다.



해당 데이터가 원하는 데이터라면 SIGN UP 을 눌러 구독을 신청합니다. 구독 신청 페이지에서는 동의함을 체크하고 SIGN UP 을 눌러 구독을 완료합니다.

구독을 완료하였습니다. 데이터 집합을 액세스 할 수 있는 방법은 아래와 같이 4 가지가 있다는 것을 아래 화면에서 확인할 수 있습니다.

l  DataMarket Service Explorer

l  Excel PowerPivot

l  Tableau Software

l  Visual Studio 2010



My Data 메뉴를 클릭하면 구독 데이터를 확인할 수 있습니다.



이제까지 했던 것을 요약하면 DataMarket에 가입을 하고 My Account Key를 생성하고 카테고리에서 특정 데이터를 구독했습니다.

여러 방법을 통해 데이터 집합을 살펴볼 수 있지만 여기서는 DataMarket Service Explorer에서 액세스해보도록 하겠습니다.

My Data 메뉴에 있는 구독 데이터 들 중에서 하나를 선택해서 링크를 클릭하면 아래와 같은 화면을 볼 수 있습니다.



화면에서 Explore this Dataset” 링크를 클릭합니다. 그러면 새 창이 열리면서 DataMarket service explorer 에서 데이터 집합을 바로 직접 액세스할 수 있습니다. 

 쿼리 집합을 수정하여 데이터를 쿼리 해보도록 하겠습니다. 직접 웹에서 결과를 Table, atom Pub 포맷으로 살펴볼 수 있는 것이 DataMarket Service Explorer 이며 Query 드롭 다운에서 Values를 선택하고 CountryName“Korea Rep”, Year“2005”을 입력해서 “RUN Query” 메뉴를 클릭하면 아래와 같은 결과를 알 수 있습니다.

다른 인터페이스를 통해 DataMarket을 처리하는 것을 이후에서 다뤄보도록 하겠습니다.

'Cloud' 카테고리의 다른 글

Windows Azure Application - Hello Azure (1)  (0) 2011.05.03
SQL Azure Sample Database 설치  (0) 2011.04.29
DataMarket (1) - 소개  (0) 2011.02.28
SQL Azure Update (3)  (0) 2011.02.21
SQL Azure Update (2)  (0) 2011.02.11

DataMarket (1) - 소개

Cloud 2011. 2. 28. 09:00 Posted by 알 수 없는 사용자

“Dallas” 라는 코드네임으로 불리던 부분이 DataMarket 으로 작년 말에 출시되었는데 여기서 소개를 드리도록 하겠습니다. 몇몇 화면과 Account Key를 생성하는 것을 알아보도록 하겠습니다.

DataMarket 을 액세스하려면 아래 주소로 액세스 할 수 있습니다.

https://datamarket.azure.com/



분석을 위한 데이터를 클라우드 서비스를 통해 얻을 수 있는 데이터 시장이 DataMarket 이며 콘텐트 파트너는 데이터를 DataMarket에 게시하고 사용자들은 손쉽게 데이터를 찾고 구독하며 활용할 수 있습니다. 또한 개발자들은 기본적으로 제공되는 여러 표준을 통해 강력한 데이터 솔루션을 개발 할 수 있습니다.

 

Learn 메뉴에서 보면 다운로드나 비디오 등을 통해서 DataMarket의 이해가 보다 더 용이하니 링크를 클릭해보셔요~

Browse 탭을 클릭해보면 다양한 카테고리별로 데이터들이 나열된 것을 확인할 수 있습니다. 


DataMarket
Application에서 이용하기 위해서는 먼저 Account Key를 생성해야 합니다. 그래서 상단의 Register 메뉴를 클릭하고 정보를 입력해서 가입을 합니다. 물론 먼저 Windows Live ID로 로그인해야 합니다.



사용 동의에 대해서는 체크를 하고 Register 버튼을 클릭합니다.


가입을 하고 나서는 상단의 My Account 링크를 클릭하면 아래와 같은 화면을 볼 수 있고 Account Keys에서 PowerPivot 등에서 사용할 새로운 Account Key를 생성할 수 있습니다. 


Add account Key
메뉴를 클릭하여 새로운 키를 생성합니다. Description에 적절한 이름을 입력하고 Create 버튼을 클릭합니다.



My Account의 Account Keys에 보면 새롭게 생성된 것을 확인 가능합니다.

자 이제 Browse 메뉴를 클릭해서 데이터를 구독하고 다양한 표준 인터페이스를 통해 데이터 솔루션에서 이용할 수 있습니다.

데이터를 구독하고 활용하는 것은 다음 블로그에서...,

'Cloud' 카테고리의 다른 글

SQL Azure Sample Database 설치  (0) 2011.04.29
DataMarket (2) - 데이터 구독 및 탐색  (0) 2011.03.07
SQL Azure Update (3)  (0) 2011.02.21
SQL Azure Update (2)  (0) 2011.02.11
SQL Azure Update (1)  (0) 2011.01.28

SQL Azure Update (2)

Cloud 2011. 2. 11. 09:00 Posted by 알 수 없는 사용자


Windows Azure Platform Management Portal을 통해 데이터베이스 서버와 데이터베이스를 생성했습니다여기서는 Management Portal을 통해 Database Manager를 통해 SQL Azure 를 액세스하는 내용을 다룹니다.


데이터베이스에 테이블을 생성, 입력하고 새 쿼리를 생성하는 내용에 대한 부분을 알아보겠습니다. 위에서 생성한 데이터베이스 이름을 클릭하고 상단 메뉴의 “Manage” 를 클릭합니다. 


Database Manager
창이 새롭게 나타나며 제일 처음 시작할 경우는 동의 함을 체크하면 아래와 같이 연결 창을 볼 수 있습니다.



비밀번호를 입력하고 connect를 클릭합니다. 물론 방화벽 규칙에 허용으로 추가되어 있어야 합니다.

연결이 성공하면 아래와 같이 Database Manager 창을 볼 수 있습니다 


상단의 New Table 메뉴를 클릭해서 새로운 테이블을 디자인합니다. Employee 테이블에 ID, Name, Email 열을 정의합니다. 디자인이 끝났으면 Save 메뉴를 클릭합니다.


Data
메뉴를 클릭해서 샘플 데이터 값을 추가합니다. Save 버튼을 클릭합니다.
 



Database
탭을 클릭하고 New Query 메뉴를 클릭합니다. 쿼리 창에서 SELECT * FROM Employee를 입력하고 Execute 메뉴를 클릭합니다. 결과 창에서 위에서 입력한 데이터를 확인 할 수 있습니다.
 


Windows Azure Platform
Management Portal에서 SQL Azure에 대한 내용을 액세스할 수 있는 Database Manager를 알아보았습니다. 새롭게 변경된 Portal을 통해 데이터베이스 서버와 데이터베이스, 테이블을 생성해보았으며 다음 블로그에서 Windows Azure Platform Management Portal에 있는 SQL Azure 데이터베이스를 SQL Server Management Studio Windows Azure에서 액세스해 보도록 하겠습니다.

'Cloud' 카테고리의 다른 글

DataMarket (1) - 소개  (0) 2011.02.28
SQL Azure Update (3)  (0) 2011.02.21
SQL Azure Update (1)  (0) 2011.01.28
Windows Azure Update: Windows Azure CDN의 활용  (2) 2010.10.01
SQL Azure 와 SQL Reporting Service  (0) 2010.09.30

SQL Azure Update (1)

Cloud 2011. 1. 28. 09:00 Posted by 알 수 없는 사용자



Azure가 많은 부분이 Update  되었습니다.

2010
년 말에 Azure PlatformManagement Portal 이 새롭게 선보였으며 SQL Azure 에 대한 내용을 업데이트합니다.

Portal에 액세스하기 위해서는 https://windows.azure.com 에 액세스하고 Windows Live ID를 제공하면 됩니다. 리본과 유사하게 변경되었으며 Hosted Service, Storage Account, Database Server, Connect 메뉴가 상단에 보이고 있습니다.


왼쪽 메뉴는 Hosted Services, Storage Account & CDN, Database, Reporting, Service Bus, Access Control & Caching, Virtual Network 로 되어 있습니다.

SQL Azure를 살펴볼 것이므로 왼쪽 메뉴의 Database나 상단 메뉴의 New Database Server 를 클릭해보겠습니다. 

l  Database Server 생성

Database New 메뉴를 통해 구독을 생성해야 하며 구독을 생성하고 나면 Create 메뉴가 활성화됩니다.

hongju 라는 Subscription 에 새로운 SQL Azure Database Server를 생성해보겠습니다. Create 메뉴를 클릭하면 먼저 지역을 선택하게 되는데 여기서는 “East Asia”를 선택하고 다음을 클릭 해보겠습니다.

 

관리자 계정과 비밀번호를 설정하게 됩니다. 비밀번호는 복잡성 규칙을 따르니 복잡하게 구성하면 됩니다.


관리자 계정과 비밀번호를 설정하고 다음을 클릭하면 방화벽 규칙을 지정하는 창을 볼 수 있으며 여기서는 마침을 클릭합니다. 별도로 방화벽 규칙을 지정할 수 있습니다.

 

작업이 완료되었으면 아래와 같은 Database Server가 생성된 것을 확인할 수 있습니다.


왼쪽 트리를 확장해서 보면 master 데이터베이스가 생성된 것을 알 수 있습니다.

  

방화벽 규칙을 클릭해서 방화벽을 설정해줄 수 있습니다. 그렇지 않으면 기본값으로 Deny이므로 허용 IP 대역을 설정해야만 합니다.

 

l  Database 생성

해당 데이터베이스 서버를 클릭하고 데이터베이스를 생성해보도록 하겠습니다.

상단의 Create 메뉴를 클릭합니다.



Create Database 창에서 적절한 데이터베이스 이름을 입력하고 Edition Size를 지정합니다.

 

 



이상으로 Management Portal에서 SQL Azure의  데이터베이스 서버와 데이터베이스를 생성해보았습니다.

다음 블로그에서  Management Portal에서 테이블을 생성하고 SELECT 하는 내용과 SQL Denail CTP 에서 액세스하고 Windows Azure에서 액세스하는 추가적인 내용을 알아보도록 하겠습니다.



'Cloud' 카테고리의 다른 글

SQL Azure Update (3)  (0) 2011.02.21
SQL Azure Update (2)  (0) 2011.02.11
Windows Azure Update: Windows Azure CDN의 활용  (2) 2010.10.01
SQL Azure 와 SQL Reporting Service  (0) 2010.09.30
Windows Azure Update: myAzureStorage  (0) 2010.09.06

SQL Azure Update: Dynamic Management View

Cloud 2010. 8. 25. 19:30 Posted by 알 수 없는 사용자

안녕하세요. Visual C# MVP 남정현입니다. 가을을 재촉하는 비가 여기저기 내리면서 무더웠던 날씨가 한풀 꺾이는듯 합니다. 오늘은 Windows Azure Update와 Side-by-Side로 SQL Azure Update에 대한 이야기를 진행해보고자 합니다. :-)

SQL Azure의 주요 기능이 우리가 생각하는것과 같이 상당한 수준에 있기 때문이거나, SQL Azure에 대해서 아직까지 많은 내용이 전달되지 않았기 때문일 수 있지만 SQL Azure 만의 고유한 기능을 다루는 섹션도 필요하다고 생각하여 진행하고 있으니 역시 많은 Feedback을 부탁드립니다.

Dynamic Management View란?

Dynamic Management View (이하 DMV)는 SQL Azure Team Blog에서 SQL Azure Service Update 1과 함께 제공한 새로운 기능으로, 이 글을 작성하는 현 시점에서는 매우 요긴하게 사용될 수 있고, 데이터베이스에 대한 정확한 사용량 추이를 파악할 수 있는데 도움을 주는 관리 API의 일종입니다. DMV는 시스템 뷰의 일종으로 다음과 같이 제공됩니다.

  • sys.dm_exec_connections: 최근에 접속한 모든 클라이언트들의 정보들을 조회합니다.
  • sys.dm_exec_requests: 최근에 실행된 Query의 상태와 실행 정보들을 조회합니다.
  • sys.dm_exec_sessions: 현재 연결된 클라이언트 및 세션에 대한 정보들을 조회합니다.
  • sys.dm_tran_database_transactions: 데이터베이스 수준의 트랜잭션들에 대한 정보를 조회합니다.
  • sys.dm_tran_active_transactions: 현재 활성화된 트랜잭션들에 대한 정보를 조회합니다.
  • sys.dm_db_partition_stats: 데이터베이스의 파티션 상태 및 각 파티션 별 사용량 정보를 조회합니다.

DMV의 데이터를 살펴보는 방법

DMV의 데이터는 관리를 위한 목적으로 활용하기에 알맞습니다. 또한, 데이터베이스 관리자가 별도의 응용프로그램을 사용하지 않고 손쉽게 상태를 파악할 수 있기 위해서는 Codename: Houston과 같은 SQL Azure 전용 데이터베이스 관리 도구를 활용하는 것이 편리합니다. (이 도구를 사용하면 별도의 방화벽 설정을 추가함으로 인해서 발생할 수 있는 노출 영역의 확대를 회피할 수 있기 때문입니다.)

Codename: Houston에 관한 좀 더 자세한 정보는 2010/07/29 - [Cloud] - Windows Azure Update: Microsoft Project Code-Named "Houston" CTP 1 에서 확인하실 수 있으며, 현재 이 도구는 CTP 단계에 있으므로 실무에 곧바로 적용하여 활용하는 것에는 다소 불편함이 따를 수 있습니다. (관리 목적으로 활용할 때 제일 빈번하게 사용되는 결과 집합의 내보내기 기능이 아직 지원되지 않습니다.)

DMV 데이터 조회 예시

그 이외에 Service Update 1에서 개선된 부분들

Service Update 1 이후부터는 이미 만들어진 데이터베이스의 상품 크기를 동적으로 관리 차원에서 변동을 줄 수 있습니다. 다음의 Query를 관리자 권한으로 SQL Azure Database에 접속한 후 실행하면 원하는 데이터베이스 크기를 설정하고 그 이후부터 변경된 데이터베이스 인스턴스 크기에 따른 요금을 자동으로 과금받을 수 있습니다.

ALTER DATABASE database_name
{
    MODIFY (MAXSIZE = {1 | 5 | 10 | 20 | 30 | 40 | 50} GB)
}

그리고 SQL Azure에서 세션 타임 아웃은 현재 30분으로 연장된 상태이며, 기본적으로 SQL Server 2008 R2에서 제공하는 장기 실행 트랜잭션 (혹은 교차 잠금 상태의 트랜잭션)을 찾아내서 정리하는 알고리즘이 좀 더 최적화되어있다는 것이 Service Update 1 이후의 변경 사항임을 알아두시면 유용할 것 같습니다.

감사합니다. :-)

안녕하세요. Visual C# MVP 남정현입니다.

정규 강좌를 올리기 전에, 몇 가지 Windows Azure에 관련된 국내외 소식을 종합하는 업데이트 아티클들을 올려봅니다. 이번 업데이트에 반영된 내용들은 Windows Azure를 개발 플랫폼으로 택하시는 데에 있어서 중요한 정보들을 많이 포함하고 있습니다.

1. Windows Azure Tools for Visual Studio 1.2, Windows Azure SDK 1.2, Windows Azure Platform Training Kit 2010.06 업데이트 및 Windows Azure Tools 한글화!

Windows Azure Tools for Visual Studio, Windows Azure SDK, Windows Azure Platform Training Kit의 새 버전이 출시되었습니다. 이번 버전에서 가장 중점적으로 개선된 것은 Visual Studio 2010과의 연동과 .NET Framework 4.0에 대한 지원이며, 특히 최근에 중국어 간체, 중국어 번체, 일본어, 한국어 등 영어 이외의 다수 언어를 위한 Language Pack까지 같이 업데이트된 것이 주목할만한 점입니다. 아직 정식 Windows Azure 서비스가 출시되지는 않았지만 개발 도구에 대한 준비가 좀 더 완벽해진 것은 반길만한 일입니다. 이에 대한 자세한 내용은 http://www.rkttu.com/410 를 참고해주십시오.

2. Windows Azure AppFabric 2010.07 업데이트 및 SDK 출시

Windows Azure Tools for Visual Studio 1.2와 Windows Azure SDK 1.2 출시와 더불어서 Windows Azure AppFabric의 새 버전이 업데이트되었습니다. 이번 버전에서는 모바일 및 웹 브라우저 기반의 클라이언트 및 Microsoft Silverlight, Adobe Flash 기반의 RIA 클라이언트에서 직접 Service Bus나 Access Control에 접근할 수 있도록 개선된 것이 가장 큰 주안점입니다. 특히 RIA 클라이언트에서 AppFabric Service Bus나 Access Control에 접근하는데에 있어서 가장 큰 장애 요소였던 Cross Domain Policy에 대한 지원이 추가되었습니다. 더불어서 Windows Azure AppFabric SDK의 이번 버전에서는 .NET Framework 4.0에 대한 지원이 추가되었습니다. 좀 더 자세한 내용은 http://www.rkttu.com/414 를 참고하여 주십시오.

3. Codename: Dallas @ WWPC2010 업데이트

Codename: Dallas는 Windows Azure Platform과 더불어서 같이 제공되는 새로운 유형의 데이터 공급자 서비스로 각종 프리미엄 통계 자료, 뉴스, 동향 등의 정보를 ATOM, XML, Open Data Protocol 등의 데이터 형식을 이용하여 손쉽게 가져올 수 있습니다. 현재 확정된 데이터 공급사 (NASA, National Geographic, Associated Press, Zillow.com, Weather Central, NAVTEQ 등)외에도 아래의 그림에서 언급하는 추가 제공사들을 포함하여 올해 4분기에 Codename: Dallas가 정식 서비스로 전환될 예정에 있으며, 8월 중에 새로운 UI를 포함하는 CTP가 런칭될 예정이라고 합니다. 이에 대한 원문 기사는 http://blogs.msdn.com/b/zaneadam/archive/2010/07/12/news-on-microsoft-codename-dallas-at-wwpc-2010.aspx 에서 확인하실 수 있습니다.

4. Windows Azure Platform Appliance 발표

그 동안 Windows Azure Platform 자체는 전형적인 Public Cloud Platform으로서 잘 알려져있었고, 이에 대한 Counter Product로 Hyper-V나 System Center 등의 제품군이 Private Cloud Platform으로 소개되는 일이 많았습니다만 Windows Azure Platform의 기술 자체를 Private Cloud Platform화 하는데에 필요한 새로운 제품을 런칭하였습니다. 좀 더 자세한 정보는 http://www.rkttu.com/412 에서 확인하실 수 있습니다.

다음 강좌부터는 한글화된 Windows Azure Tools for Visual Studio 2010을 기반으로하는 Twitter Style의 Azure Guestbook 만들기 Walkthrough 강좌를 진행할 예정입니다. 많은 관심 부탁드립니다. :-)

I'd like to thank all those who have believed in and supported me. - a digression about Imagine Cup 2010

[수정] 누락된 이미지 파일을 추가하였습니다.

Hello Windows Azure / Understanding Windows Azure Development Process

Cloud 2010. 6. 7. 09:00 Posted by 알 수 없는 사용자

지난번 글 (http://www.vsts2010.net/313)에 이어서, 오늘은 Windows Azure 기반의 응용프로그램을 작성하는 과정에 대해서 실습하고 기본적인 이해를 더하는 내용을 살펴보도록 하겠습니다. 지난번 글에서 언급한 모든 구성 요소들이 설치되고, 관련된 패치들도 설치가 되어야 Windows Azure 기반의 응용프로그램 개발을 시작할 수 있음을 다시한번 말씀드립니다.

Windows Azure 개발 과정에서의 각 구성 요소들에 대한 이해

Windows Azure 위에서 호스팅될 응용프로그램을 개발하는 과정에서, 여러가지 구성 요소들이 필요합니다. 그리고 이러한 구성 요소들은 상당히 유기적으로 작용하게 되는데요, 겉으로 보기에는 복잡하지만 나름대로의 이유와 규칙들이 있습니다. 이번 장에서는 이러한 세부적인 내용들을 조명해보기로 하겠습니다.

우선, 지난번 글에서 언급한 Windows Azure Tools for Visual Studio의 역할을 살펴보겠습니다. Windows Azure Tools for Visual Studio는 이름에서 알 수 있듯이 Visual Studio와 연동하여 Visual Studio를 이용하여 손쉽게 응용프로그램을 개발하고 테스트할 수 있는 수단을 제공해줍니다. Visual Studio 2008과 Visual Studio 2010에 대한 연동 기능을 제공하고, 프로젝트 템플릿과 Visual Studio 확장 기능을 제공해주는 것이 주된 역할입니다. 그리고, Windows Azure SDK도 같이 설치해줍니다.

Windows Azure SDK는 실제 클라우드 컴퓨팅 환경과 최대한 비슷하게 기능을 재현하는 Emulation Service와 Windows Azure의 핵심 API, 클라우드 환경에서 응용프로그램 패키지를 쉽게 배포할 수 있도록 해주는 Package Builder를 제공합니다. Windows Azure SDK의 핵심 기능만 잘 이해하고, 활용할 수 있어도 Windows Azure 기반의 응용프로그램 개발은 이미 절반 이상 안 것이나 다름 없습니다.

실제로 실습을 하다보면 느끼시게 되겠지만 (특히 이전에 Windows Mobile이나 Windows Phone Series 7 기반의 개발 환경을 경험해보신 분들께서는 쉽게 이해할 수 있을 것입니다) Windows Azure의 개발 환경은 모바일 응용프로그램의 개발과 상당히 유사한 Perspective를 보여줍니다. 실제로 응용프로그램을 실행할 장치와 환경은 별도의 위치에 존재하지만, 그 이전까지 충분히 테스트를 해볼 수 있는 에뮬레이터와 모의 API 집합, 그리고 이에 관련된 문서들을 받아서 개발할 수 있다는 점이 비슷합니다. 다른 점이 있다면, 모바일이 아닌 전체 버전의 Windows Server를 기반 OS로 사용하는 응용프로그램을 개발한다는 점이 되겠습니다.

Windows Azure SDK를 이용하여 개발된 프로그램은 확장자가 CSPKG인 파일과 CSCFG인 파일로 최종 결과물이 나타납니다. CSPKG 파일은 몇 가지 기본적인 메타데이터와 함께 Windows Azure Fabric Controller를 통하여 배포할 수 있는 Binary Image가 담겨있는 (여기서의 Binary Image는 PE 파일 형식이 아닙니다. DLL의 형태도 아니고 EXE의 형태도 아닙니다.) ZIP 형식의 파일이고, CSCFG 파일은 XML의 형태를 띄고 있는 응용프로그램 전체에 대한 설정 파일입니다. 이 두 개의 파일을 Windows Azure Portal을 통하여 배포하게 되면 모든 처리 과정이 Windows Azure에 의해서 이루어지게되고 여러분의 서비스가 사용 가능한 상태로 진입하게 되는 것입니다.

Visual Web Developer 2010 Express로 Windows Azure 응용프로그램 개발 시작하기

앞서 설명드렸던 것처럼, Windows Azure 개발 환경을 Visual Studio와 함께 구축하셨을 경우에는 에뮬레이션 환경까지 같이 제공이 됩니다. 여기서 두 가지 선택을 할 수 있습니다.

에뮬레이션 환경에서 테스트하고 디버깅하는 과정을 거칠 필요가 있는 경우: 대부분의 경우 여기에 해당됩니다. 이 경우, 에뮬레이션 환경이 정상적으로 시스템에 설치되고 기동되기 위하여 Visual Studio 2008이나 Visual Studio 2010을 관리자 권한으로 "권한 상승"시킨 상태에서 시작해야 합니다.

간단하게 코드를 수정한 후 단순히 CSPKG, CSCFG 파일을 제작하기 위한 경우: 이 경우에는 관리자 권한으로 "권한 상승"한 상태에서 시작하지 않아도 무방합니다.

관리자 권한으로 권한 상승 시킨 상태에서 Visual Studio를 실행하는 경우, 일반적으로는 문제되지 않습니다. 하지만 다른 응용프로그램과 OLE 방식 (Drag & Drop과 같은 유형의 통신)으로 상호 작용하는 데에 문제가 있을 수 있습니다. 이러한 기능을 자주 사용하시거나, 프로그래밍하는 시간이 오래 걸리신다면 권한 상승을 하지 않고 먼저 완벽하게 프로그래밍을 끝낸 후 다시 관리자 권한으로 권한 상승시킨 후에 시작하여도 좋습니다.

관리자 권한으로 권한 상승하는 방법은 다음과 같습니다.

혹은, 관리자 권한 상승을 매번 사용하도록 고정시킬 수 있습니다. Windows Azure 기반 응용프로그램 개발을 집중적으로 활용하실 때에는 이 방법을 적용하시는 것도 좋습니다.

Note 1: 만약 Windows Azure Tools for Visual Studio를 설치하지 않은 상태에서 Cloud Project를 만들면?

기본으로 제공되는 개발 환경이 아니기 때문에 간혹 Visual Studio나 Visual Web Developer Express만 설치하고 Cloud Project를 생성하게 될 때가 있는데요, 걱정하지 않으셔도 됩니다. 아직 Tool과의 연동이 되지 않았다면 아래와 같이 Enable Windows Azure Tools 항목이 나타나며, 이를 이용하여 프로젝트를 생성하면 안내 웹 페이지를 포함하는 기본 문구가 나타납니다.

단순히 아래의 웹 페이지에서 Download Windows Azure Tools 버튼을 클릭하고, 다운로드 페이지에서 필요한 소프트웨어들을 모두 내려받아 설치하면 됩니다. (이 때, Visual Studio나 Visual Web Developer는 종료되어야 합니다.)

그리고 정상적으로 설치가 되었다면, 각 언어 별 (Visual C#, Visual Basic .NET, Visual F#)로 Cloud Category 아래에 Windows Azure Cloud Service 프로젝트 템플릿 항목이 보일 것입니다.

Note 2: 설치 시작과 동시에 혹시 아래와 같은 오류 메시지가 보이세요?


Installation Requirements:

These versions of Windows Azure SDK and Windows Azure Tools for Microsoft Visual Studio 2008 and Windows Azure Tools for Microsoft Visual Studio 2010 are already installed.  If the Windows Azure Cloud Service project templates are missing from Visual Studio, please uninstall the Windows Azure Tools and run this installer again.

내용인즉 그렇습니다. Windows Azure Tools는 일반적인 Windows Installer 기반의 응용프로그램이나 Visual Studio Installer 기반의 응용프로그램처럼 In-place Update가 (아마도 아직은) 지원되지 않습니다. 문제가 있어서 재설치하는 경우, 새 버전이 발표되어 재설치하는 경우, Visual Studio와 Visual Web Developer 중 어느 한쪽에 먼저 설치하고 나중에 추가 설치하게 되는 경우 모두 기존에 설치된 Windows Azure Tools를 먼저 제거한 후 다시 설치해야 합니다.

Windows Azure Tools로 프로젝트 만들어보기

이제 Windows Azure Tools를 이용하여 프로젝트를 시험삼아 만들어보겠습니다. Windows Azure Cloud Service 프로젝트 항목을 이용하여 프로젝트를 생성하면 아래의 화면과 같이 별도의 프로젝트 생성 마법사가 나타납니다. 여기서 필요한 만큼 Worker Role과 Web Role, 각 Role에서 사용할 언어, Role의 성격을 정의할 수 있습니다. Visual Studio 2008의 경우 사용 가능한 언어가 C#과 VB.NET으로 제한되고, Visual Studio 2010의 경우 C#과 VB.NET 외에 Worker Role에 한하여 F#도 사용할 수 있습니다.

추가하기를 원하는 프로젝트 템플릿의 종류를 좌측 Roles 목록에서 선택하고, ">" 버튼을 클릭하여 Cloud Service Solution 목록에 추가합니다. 여러 언어를 동시에 추가하고 관리할 수 있으며 필요하지 않을 것 같은 프로젝트는 우측에서 항목을 선택한 후 "<" 버튼을 클릭하여 다시 제거할 수 있습니다. 아래는 선택의 예시입니다. 일반적으로, 대표 Web Role 하나와 여러 개의 Sub Worker Role의 조합을 많이 사용합니다.

프로젝트의 이름을 지정하기 위하여, 우측 목록에서 이름을 바꾸기 원하는 항목을 선택하고, 마우스가 항목 위에 롤 오버 되었을 때 나타나는 우측의 연필 모양 아이콘을 클릭하면 이름을 바꿀 수 있는 입력란이 나타나게 됩니다. 이 때 원하는 이름을 입력하면 됩니다. 모든 설정이 아래와 같이 끝이 났다고 하였을 때 OK 버튼을 클릭하여 프로젝트를 생성합니다.

이제 아래와 같이 프로젝트가 생성되는 것을 보실 수 있습니다.

위의 그림에서 주황색 사각형으로 강조 표시한 파일들이 각각의 Role에서 핵심이 되는 파일들입니다. Worker Role은 백그라운드 작업을 중심으로 구성되는 프로그램이기 때문에 프로그램의 시작을 직접 프로그래밍 코드로 구현하는 것이 주가 되며, Web Role은 처음 보여줄 웹 페이지를 정의하는 일이 주가 되기 때문입니다. 그리고 우측의 솔루션 탐색기에서 파란색 사각형으로 강조 표시한 항목이 우리가 나중에 Windows Azure에 프로그램을 배포할 때 사용하는 핵심 단위 프로젝트입니다. 이 프로젝트를 정상적으로 표현하고 기능을 활용할 수 있기 위한 것이 Windows Azure Tools for Visual Studio의 주된 역할입니다.

다음 시간에는

다음 시간부터는 Windows Azure 기반의 응용프로그램에서 가장 고른 기능 사용 분포를 보여주는 트위터 스타일의 방명록 응용프로그램을 단계별로 작성하는 과정을 설명하도록 하겠습니다. Windows Azure Storage의 Queue, BLOB, Table을 사용하도록 구성되어있으며, SQL Azure를 이용하여 사용자 인증을 수행하기까지 하는 과정을 종합적으로 다루게 될 것입니다.

감사합니다. :-)

Hello Windows Azure / Windows Azure 개발 환경의 구축

Cloud 2010. 6. 3. 09:00 Posted by 알 수 없는 사용자

지난번 글 (http://vsts2010.net/303)에 이어서 오늘부터는 Windows Azure 기반 응용프로그램을 개발하기 위한 본격적인 실습 위주의 글을 시리즈로 연재하게 되었습니다. Windows Azure 기반의 응용프로그램을 개발하는 방법은 여러 가지가 있을 수 있습니다만 Visual Studio 2010을 활용하여 Windows Azure 기반의 응용프로그램을 개발하는 것에 관한 내용을 중심으로 블로그를 연재할 예정임을 미리 밝혀둡니다.

Windows Azure 기반 응용프로그램 개발을 위한 필요 사양 요약

  • 필요한 운영 체제: Windows Vista, Windows 7, Windows Server 2008, Windows Server 2008 R2를 지원합니다. Windows 2000, Windows XP에서는 개발하실 수 없습니다.
  • 필요한 구성 요소: IIS 7.x (ASP.NET, WCF HTTP 활성화, 정적 컨텐츠, CGI 기능이 필요합니다.)
  • 필요한 개발 도구: Visual Studio 2008 SP1, Visual Web Developer 2008 Express SP1, Visual Studio 2010, Visual Web Developer 2010 Express 중 하나가 필요합니다. 이 글에서는 Visual Web Developer Express 2010을 택하여 설명을 드리겠습니다.
  • 필요한 데이터베이스: SQL Server 2005 Express 이상의 데이터베이스
  • 주의 사항: Visual Studio, Visual Web Developer의 모든 CTP, RC, Beta 버전 및 .NET Framework의 CTP, RC, Beta 버전을 설치 전에 완전히 제거하여 주십시오.
  • 팁: 배포 후 호환성 문제를 최소화하기 위하여, Windows Azure 기반 응용프로그램을 개발할 때에는 64비트 버전의 Windows Vista, 7, Server 2008, Server 2008 R2를 이용하여 개발하시는 것을 권장합니다. 64비트 버전의 Windows를 가지고 있지 않은 경우 32비트 버전의 개발 환경을 이용하더라도 문제는 없습니다.

Visual Web Developer Express 2010으로 시작하는 Windows Azure 개발 환경 구축

Visual Web Developer Express 2010은 학생, 프로그래밍 입문자, 아마추어 개발자 등을 위하여 제공되는 Visual Studio의 무료 버전입니다. 그러나, 상용 목적으로 소프트웨어 개발을 하는 동안에도 자유롭게 제한없이 이용하실 수 있으며, 전체 버전의 Visual Studio 2010을 구입하기 이전에 Visual Studio 2010이나 최신 기술을 빠르게 테스트해보기 위한 목적으로도 이용이 가능합니다. 이번 글에서는 Visual Web Developer Express 2010을 이용하여 개발 환경을 구축하는 과정을 보여드리도록 하겠습니다.

Windows Vista / 7에서 기본 환경 설정하기

1. 시작 메뉴를 클릭하고 프로그램 및 파일 검색란에 아래와 같이 appwiz.cpl을 입력한 후 Enter 키를 누릅니다. Windows Vista를 사용 중이시고, 고전 메뉴를 사용 중이신 경우 키보드의 Windows 키와 R 키를 동시에 눌러 나타나는 실행 대화 상자에서 같은 방법으로 실행할 수 있습니다.

Windows 7에서 실행

Windows Vista에서 실행

2. 아래의 화면에서, Windows 기능 사용/사용 안함 항목을 클릭합니다. 사용자 계정 컨트롤 설정에 따라 최소 한 번 이상 관리자 권한이 필요함을 승인해야 하는 대화 상자가 나타날 수 있습니다.

3. Windows 기능 대화 상자에서, Microsoft .NET Framework 3.5.1 항목 아래의 Windows Communication Foundation HTTP Activation 항목을 체크합니다. 그리고, 아래의 이어지는 그림에서와 같이, 인터넷 정보 서비스 항목 아래의 응용프로그램 개발 기능 아래의 "ASP.NET"과 "CGI", 일반적인 HTTP 기능의 "정적 콘텐츠" 항목을 체크한 후, 확인 버튼을 클릭하여 설정을 적용합니다.

Windows Server 2008 / 2008 R2에서 기본 환경 설정하기

1. 시작 메뉴를 클릭하고 프로그램 및 파일 검색란에 아래와 같이 appwiz.cpl을 입력한 후 Enter 키를 누릅니다. Windows Vista를 사용 중이시고, 고전 메뉴를 사용 중이신 경우 키보드의 Windows 키와 R 키를 동시에 눌러 나타나는 실행 대화 상자에서 같은 방법으로 실행할 수 있습니다.

2. 아래의 화면에서, Windows 기능 사용/사용 안함 항목을 클릭합니다. 이 기능을 이용하여 설정을 변경하기 위해서는 관리자 계정 - 또는 - 대행 계정으로 시스템에 접속한 상태여야 합니다.

3. 서버 관리자 콘솔이 나타나면, 오른쪽 트리뷰에서 기능 항목을 오른쪽 버튼으로 클릭합니다. 그 후 나타나는 팝업 메뉴에서 "기능 추가" 메뉴를 클릭합니다.

4. 기능 추가 마법사에서 .NET Framework 3.5.1 기능 항목 아래의 WCF 활성화 항목의 HTTP 활성화를 체크합니다. 이미 설치되어있는 경우, 체크된 상태로 비활성화된 항목이 보입니다. 다음 버튼을 클릭하여 진행하거나, 이미 설치되어있는 경우 취소 버튼을 클릭하여 마법사를 종료할 수 있습니다. 시스템을 다시 시작해야 할 경우, 다시 시작한 다음 5단계로 이동합니다.

5. 이제 웹 서버로서의 역할을 추가하기 위하여 역할 항목을 오른쪽 버튼으로 클릭하고, 역할 추가 메뉴를 클릭하여 역할 추가 마법사를 시작합니다. 시스템을 다시 시작하도록 권고 받았지만 재시작하지 않았을 경우 재시작을 안내하는 대화 상자가 나타날 수 있습니다.

6. 이어지는 두 화면에서처럼 웹 서버에 대한 역할이 구성되어있는지 확인 후, 웹 서버 역할 항목이 설치되어있지 않은 경우 체크하여 설치를 진행합니다. 이미 설정되어있는 경우 비활성화된 상태로 나타나므로 이 경우에는 마법사를 그냥 종료하면 됩니다.

Visual Web Developer 2010 다운로드 및 설치

Visual Web Developer 2010은 Windows Azure 기반 응용프로그램 개발을 위하여 사용할 수 있는 무료 개발 도구입니다. Visual Web Developer 2008의 경우 Service Pack 1 이상을 포함한 버전을 다운로드하여 사용할 수 있습니다. 더불어서, Silverlight Tools 역시 Visual Web Developer를 기반으로 맞추어진 개발 도구이기 때문에 같이 설치하여 사용하면 Microsoft의 최신 웹 기술의 혜택도 같이 얻을 수 있습니다.

Visual Web Developer 2010 Express를 다운로드하려면 http://www.microsoft.com/web 에서 다운로드 가능한 Web Platform Installer를 설치해야 합니다. 이 프로그램을 설치하고 난 후에 시작 메뉴에 아래 그림과 같이 바로 가기 메뉴가 생성되며, 언제든 이 메뉴를 이용하여 최신 웹 제품이나 널리 사용되는 웹 어플리케이션을 다운로드할 수 있습니다.

Web Platform Installer를 시작하면 아래와 같은 화면이 나타납니다. 여기서, 웹 플랫폼 탭을 선택하고, 도구 섹션으로 이동하여 사용자 지정 링크를 클릭합니다.

아래와 같이 개발자 도구 그룹이 나타나면 여기서 Visual Web Developer 2010 Express 체크 박스를 선택합니다. 필요한 경우, WCF RIA Services Toolkit과 Silverlight Toolkit 등을 같이 설치하여 Windows Azure Web Role 개발 때 같이 적용할 수 있습니다.

설치 버튼을 누르면 이후의 모든 설치 과정을 Web Platform Installer가 대행하여 처리하고 그 결과를 보여줍니다. 설치 과정 중에는 관리자 권한이 필요하며, 사용자 계정 컨트롤이 설정된 시스템에서는 한 번 이상 관리자 권한 요청에 대한 승인이 필요할 수 있습니다.

개발자를 위한 설치: Windows Azure Tools for Visual Studio 설치하기

Windows Azure SDK와 함께 Visual Studio에 연동하기 위한 환경을 구축하려면, Windows Azure Tools for Visual Studio를 선택하여 설치하면 됩니다. 이 설치 패키지 안에 Windows Azure 환경을 Emulation하기 위한 SDK까지 모두 포함되어있으므로 간단히 설치를 완료할 수 있습니다. 이 글을 작성하는 현 시점에서 2010년 2월 버전이 가장 최신의 SDK이며, http://www.microsoft.com/downloads/details.aspx?FamilyID=5664019e-6860-4c33-9843-4eb40b297ab6&displaylang=en 페이지에서 다운로드 가능합니다.

만약 단순히 만들어진 Windows Azure Package를 Local Machine에서 테스트하기 위하여 환경을 구축하고자 하는 경우에는 아래의 "테스트 환경을 위한 설치: Windows Auzre SDK 설치하기" 절을 참조하여 주십시오. 64비트 버전의 Windows Server 2008 환경에서 Cloud Application을 미리 테스트하는 시나리오에서 유용할 수 있습니다.

테스트 환경을 위한 설치: Windows Azure SDK 설치하기

Windows Azure 환경에서는 Windows Server 2008 R2 x64를 기본 운영 체제로 사용합니다. 만약 상호운용성 등의 복잡한 요구 사항을 필요로 하는 클라우드 기반 응용프로그램의 경우, 이 운영 체제와 동일한 환경에서 Windows Azure SDK만을 설치하여 Windows Azure Tools로 제작된 배포용 패키지 파일을 실제로 Windows Azure Cloud Environment에 게시하기 전에 올려보는 것은 문제를 사전에 진단하고, 디버깅을 하는데에 무척 유리한 전략이 될 수 있습니다.

http://www.microsoft.com/downloads/details.aspx?FamilyID=dba6a576-468d-4ef6-877e-b14e3c865d3a&displaylang=en 페이지에서 이 글을 작성하는 현 시점의 최신 버전인 2010년 2월 버전의 SDK를 설치할 수 있습니다.

Windows Azure SDK 설치 후 필요한 추가 구성 확인하기

Windows Azure 환경을 위하여 최적화된 운영 체제와 플랫폼을 이용하기 때문에, RTM 버전으로 출시된 운영 체제와 환경 설정과는 구분되는 점이 몇 가지 있습니다. 아래는 Windows Azure 환경에 특화하기 위하여 변경된 설정을 로컬 / 개발자 컴퓨터에서 재현하기 위한 패치들로 원활한 개발과 테스트를 위해서는 반드시 설치해야 하는 패치들입니다.

다음 시간에는

다음 글에서는 본격적으로 Windows Azure Tools for Visual Studio를 이용하여 프로젝트를 만들고, 샘플 응용프로그램을 만들고 테스트하는 과정을 실습해보도록 하겠습니다. 궁금하신 점이나 어려운 점은 rkttu nospam rkttu dot com - 또는 - twitter at rkttu 에서 이야기하실 수 있습니다.

감사합니다. 즐거운 하루 되십시오. :-)

Hello Windows Azure / Gallery of 'Powered by Windows Azure Platform'

Cloud 2010. 5. 25. 09:00 Posted by 알 수 없는 사용자

지난번 글 (http://vsts2010.net/294)에서 예고하였던 대로, 오늘은 Windows Azure Platform을 기반으로 만든 성공적인 응용프로그램들을 조명해보고 어떤 방법으로 Windows Azure Platform이 활용될 수 있는지를 살펴보도록 하겠습니다. 이 글에서 언급하는 프로그램들은 대부분 Visual Studio 2010과 Windows Azure Platform SDK for Visual Studio를 기초로 작성된 것입니다.

추로 (推路)

01234

지난 봄에 열렸던 클라우드 어플리케이션 경진 대회에서 대상을 수상한, (주)드원테크놀로지의 추로 (推路 - 밀 추, 길 로) - 자동차 보험회사 콜센터 편 응용프로그램입니다. 여러분께서 생각하시는 퍼블릭 클라우드 컴퓨팅의 전형적인 모습을 아주 잘 보여주고 있는 응용프로그램이라 할 수 있겠습니다. 이 솔루션에서 주목하실만한 부분은, Worker Role과 Web Role 사이의 유기적인 통신에 관한 부분입니다. Windows Azure Platform의 Compute 서비스와 Storage 서비스를 균형있게 잘 활용한 것이 특징입니다.

자동차 보험 회사에 가입한 고객이 어떤 사고를 당하였을 때, 고객은 자동차 보험 회사 콜 센터에 전화 등의 수단을 사용하여 긴급 연락을 취합니다. 콜 센터 직원은 CS 응용프로그램을 통하여 SQL Azure Database에 협력사에 전달할 정보를 저장합니다.

협력사 직원의 PDA - 또는 - 스마트 폰 단말에는 사고 Case ID가 할당되며, 단말에 내장된 GPS 수신 장치를 통하여 현재 위치에 관한 정보를 Windows Azure Web Role이 노출하는 WCF 서비스에 전송할 것입니다. 정보를 수신한 WCF 서비스는 최적 경로 계산을 담당하는 Role에 메시지를 전달하기 위하여 Queue Storage에 메시지를 Enqueue할 것입니다. 해당 Worker Role은 수신한 위치와 사고가 발생한 위치 사이를 조율하여 최적의 경로를 탐색한 후, 이를 다시 SQL Azure 데이터베이스에 저장합니다.

일련의 처리 과정이 모두 완료된 후에, 협력사 직원은 최적의 탐색 경로를 바탕으로 신속하게 사고 지점까지 이동하여 업무를 처리할 수 있을 것이며, CS 응용프로그램을 살펴보고 있는 콜센터 직원은 결과를 실시간으로 통지받을 수 있을 것입니다.

이와 같이 클라우드 기반의 인프라를 활용하여, 기존에 제공되던 위치와 상태 파악 기능을 좀 더 실시간에 가깝게 개선할 수 있고, 더불어서 저렴한 운영 비용까지 가져갈 수 있는 효과를 얻을 수 있을것입니다.

Time in the cloud

01234567

Hugeflow의 Time in the cloud는 앞서 소개한 추로와 마찬가지로, 클라우드 어플리케이션 경진 대회에 참가하였던 작품으로, 금상을 수상하였습니다. 자칫 재미없고 식상하게 들릴 수 있는 근태 관리 솔루션을 재미있고 참신하게 접근했던 새로운 유형의 근태 관리 솔루션으로 인상 깊었습니다. :-)

Time in the cloud는 우리가 일상적으로 사용하는 SNS (예를 들어, 트위터나 미투데이 같은)를 이용하여 손쉽게 "출근 도장"을 찍는 방식으로 근태 관리를 돕습니다. 출근만 관리하는것이 아니라, 근태에 관해서 변동 사항이 있을 경우 이를 승인받기 위한 목적으로도 활용할 수 있게 되어있습니다. 이러한 시스템이 어떻게 클라우드 환경 위에서 구현이 될 수 있을까요?

답은 간단합니다. 특정 SNS 서비스가 노출하는 API와 이를 지속적으로 모니터링할 충실한 Worker Role이 있기 때문입니다. 그리고 근태 관리 이력을 차곡차곡 저장하기 위한 데이터베이스로는 SQL Azure를 활용할 수 있습니다. 나중에 통계를 내거나 할 때에도 도움이 되겠지요. 여담이지만, Hugeflow 회사 내에서는 이 솔루션을 통해서 근태 관리를 실제로 재미있게 하였다고 합니다. 덕분에 지각 벌금으로 회식도 자주 하셨을 것 같네요. :-)

클라우드 서비스는 대외적으로도 노출과 활용이 가능하기 때문에, 특별히 관리 도구의 경우에는 회사별로 관리할 수 있도록 하거나, 사용자 등록까지 동적으로 받아들일 수 있도록 만들어진 것도 특징입니다.

음악 가사 분석 통한 음악 추천 서비스

0123456789101112131415

진성주님의 음악 가사 분석을 통한 음악 추천 서비스는 앞서 소개한 추로, Time in the cloud와 마찬가지로, 클라우드 어플리케이션 경진 대회에 참가하였던 작품으로, Time in the cloud와 같은 금상을 수상하였습니다. 누구나 한번 즈음 "오늘은 뭘 듣나"라는 생각으로 가지고 있던 MP3 플레이어나 여러분의 쥬크박스를 켰던 경험이 있으실 텐데요, 그럴 때 참 요긴하게 쓰일 수 있는 멋진 클라우드 기반 서비스입니다. :-)

이 솔루션에 사용된 Lucene을 잠시 주목하여 주십시오. Lucene을 이용하여 단어 데이터베이스를 구축했다는 사실에 주목하여 주십시오. 클라우드 컴퓨팅은 여러분이 가지고 있는 On-Premise의 컴퓨팅 자산보다 기본적으로 "풍부"합니다. 비단 Lucene이라서가 아니라도, 인덱싱 작업은 기본적으로 많은 비용과 시간을 필요로 하는 작업이지만 클라우드 컴퓨팅을 이용하면 문제가 단순해질 수 있습니다.

참고로, 이 서비스를 통하여 음악을 추천받았을 때 측정된 만족도가 원래 예상치였던 65%보다 무려 18.6%가 높은 83.6%의 만족도를 기록하였다고 합니다. 혹시 상용화 계획이 있다고 한다면 저는 당장이라도 베타 테스팅을 신청해서 서비스를 마음껏 즐기고 싶습니다. 아, 그리고 기왕이면 이 서비스와 잘 연동되는 Windows Mobile 기반 플레이어도 있다면 더 편리할것 같습니다. :-)

Shutomatic

Windows Azure Platform 팀에서 근무하는 Steve Marx의 샘플 응용프로그램으로, Windows Azure Platform의 Interoperbility가 얼마나 유연한지를 잘 보여주는 멋진 샘플입니다. 그렇긴 합니다만 실로 복잡한 구성을 가지고 있는데요, 요약하면 아래와 같습니다.

  • PHP: IIS7 위에서 FastCGI를 이용하여 구동하고, 메인 웹 사이트를 보여주거나, Queue Storage에 트위팅할 메시지를 쌓는 프론드 엔드를 구현합니다.
  • C#: Worker Role 그 자체를 구현합니다. 하지만 내부적으로 Java Virtual Machine을 구동하는데에 필요한 Stub Loader로 사용하는 것 같네요.
  • Java: 실제로 Worker Role에서 수행해야 할 트위터로 메시지를 보내는 작업을 Java 코드로 구현하고 있습니다.
  • Python: Windows Azure Storage에 Queue Storage를 만드는데 필요한 간단한 Python Script 코드를 구현하고 있습니다.

Shoutomatic 소스 코드를 다운로드받고 싶으신 분들은 http://cdn.blog.smarx.com/files/shoutomatic_source.zip 에서 다운로드 가능합니다. :-)

Phone'N Use

 

지난 3월 30일에, 폴란드에서 열릴 2010 Imagine Cup의 소프트웨어 디자인 부문 한국 대표 선발전이 있었습니다. 여기서 1위를 한 팀이 한국 대표 자격으로 2010 Imagine Cup의 소프트웨어 디자인 부문에 참가할 수 있는데, 제가 참여한 팀인 WeRain 팀이 대상을 수상하게 되었습니다. 지금은 한창 아이디어를 보완하고 수정하는 단계에 있습니다. :-)

Phone'N Use는 경제적, 지리적 환경이 열악하여 출생 등록을 제 때 하지 못하여 보호받지 못하는 아이들을 위한 솔루션으로 대회 당시 저희 팀은 Windows Azure Platform을 이용하여 기본 시스템을 구축하고, Voxeo Corporation의 Cloud 기반 전화 통신 서비스인 Tropo를 이용하여 ARS 시스템을 구현하였습니다. 일반적으로 구축 비용이 비싸다고 알려진 ARS 시스템을 클라우드 환경에 어울리는 새로운 시스템으로 대치하여 비용과 효율성을 동시에 챙길 수 있었습니다.

다음 시간에는

이번 시간에는 Windows Azure 기반의 응용프로그램에 대한, 최근에 제가 발견하거나 작업하고 있는 주변 사례들을 들어서 이번 Article의 내용을 꾸며보았습니다. 클라우드 어플리케이션 경진 대회 수상작에 관련된 자료 참조를 허락해주신 한국 Microsoft의 박중석님께 감사드립니다.

다음 시간에는 Windows Azure Platform을 이용하여 어떻게 클라우드 기반 응용프로그램을 작성할 수 있는지 본격적인 실습 위주의 글을 올릴 예정입니다. 아직 우리 나라에 정식 출시되지 않은 서비스임을 감안하여, 별도의 서비스 비용을 들이거나 하지 않더라도 블로그에 올라오는 글 만으로도 손쉽게 따라해볼 수 있게 꾸며볼 예정이니 많은 관심 부탁드립니다.

감사합니다. 오늘도 좋은 하루 되십시오. :-)

Hello Windows Azure / Windows Azure Platform의 이해

Cloud 2010. 5. 16. 15:00 Posted by 알 수 없는 사용자

안녕하세요. Visual Studio 2010 팀 블로그에 새로 참여하는 새내기, Visual C# MVP 남정현입니다. 데브피아 C# 포럼 SYSOP으로 활동 중이기도 하고, 데브피아 오프라인 세미나를 통해서 .NET 커뮤니티 개발자 여러분들과도 몇 번 인사드렸던 적이 있었는데, 이번에 VSTS 2010 팀 블로그에서 인사를 드리게 되었습니다. 반갑습니다. :-)

요즈음 클라우드 컴퓨팅에 관해서 이곳 저곳에서 이야기도 많이 회자되고 있는 것을 볼 수 있습니다. 2008년 후반에 Buzz Keyword로 급부상했던 아이템이 점차 트렌드로 바뀌어가고 있는 추세인데, 여러 유수 IT 기업들이 클라우드 컴퓨팅에 대한 다양한 해석과 아이디어를 더하여 자신들만의 플랫폼 구축에 열과 성을 다하고 있습니다. Microsoft에서도 지난 2월, 미국, 유럽, 일부 아시아 국가를 대상으로 Windows Azure Platform을 정식으로 런칭하였습니다.

VSTS 2010 팀 블로그를 통하여 제가 연재하게 될 Article Series인 "Hello Windows Azure"의 내용은, Windows Azure Platform에서 실행되는 응용프로그램을 Visual Studio 2010을 통하여 개발하는 과정을 주로 소개하는 내용으로, Visual Studio 2010 이외의 다른 IDE를 활용한 개발 방법 및 Windows Azure Platform 기반의 상호 운용성에 대한 주제는 저의 블로그 (http://www.rkttu.com/) - 또는 - 저의 개인 메일 (rkttu nospam rkttu dot com)을 통하여 질문, 토론, 의견 등을 받고자 합니다. 많은 관심 부탁드립니다.

Windows Azure Platform 개요

Windows Azure Platform은 Microsoft Data Center 위에서 실행되는 Public Cloud Platform으로, 응용프로그램을 호스팅하고 실행하는 기능을 제공하는 Windows Azure, 관계형 데이터베이스 (RDBMS) 데이터를 호스팅하고 제공하는 SQL Azure, 분산 컴퓨팅 기술의 구현과 Hybrid Cloud Platform의 구현을 가능하게 하는 AppFabric, 실시간으로 제공되는 동적 데이터 카탈로그를 구현할 수 있는 SQL Data Services (Codename: Dallas) 등으로 구성됩니다.

그 외에 부수적으로는 Windows Azure Platform과 조합하였을 때 훨씬 더 효과적으로 사용할 수 있는 Microsoft의 다른 Web SDK 및 온라인 서비스들 (예: Facebook SDK, Windows Live ID 및 Windows Live 관련 SDK)을 접목한다면 더욱 사용성이 편리하고 우수한 클라우드 기반 응용프로그램을 만드실 수 있습니다.

위의 그림에서 보여지는 것처럼, Windows Azure Platform은 핵심 인프라를 기반으로하여, End User들에게는 실제 클라우드 응용프로그램이 제공하는 서비스를 활용할 수 있게 하고, 개발자들에게는 Visual Studio 및 기존에 자신이 사용하던 IDE를 이용하여 Cloud Application을 개발할 수 있게 하고, 호스팅되는 Cloud Application의 재량이지만, SOAP, REST, XML-RPC 등의 통신 프로토콜을 통하여 기존의 On-Premise 기반 소프트웨어에서도 클라우드 응용프로그램의 이점을 누릴 수 있게함을 보여줍니다.

특히, Visual Studio는 이 블로그를 찾아주시는 여러분들께서 제일 많이 애용하시는 개발 도구일 것입니다. 익숙한 프로그래밍 언어 (C#, VB.NET, F#)들을 활용해서 최신의, 그리고 강력한 컴퓨팅 환경 위에서 구동 가능한 응용프로그램을 자유롭게 개발하실 수 있다는 것을 뜻합니다. 아직까지 국내에 정식 출시되지 않은 서비스이지만, Windows Azure가 실제로 어떻게 동작하고, 어떤 절차를 거쳐서 개발이 이루어지는지에 대해서 먼저 아실 수 있다면 그 또한 좋은 이득이 되지 않겠는가 하는 생각입니다.

Windows Azure에 대하여

아래 그림은 Windows Azure Platform을 이루는 주요 구성 요소들을 Layer별로 표현한 모식도입니다. 아래 그림에서 몇 가지 핵심적인 요소들을 살펴보겠습니다.


Windows Azure는 Windows Azure Platform에서 운영 체제에 해당하는 인프라 구성 요소입니다. 내부적으로 Windows Server 2008 R2 x64를 Guest OS로 사용하여, Hypervisor 및 Load Balancer를 기반으로 외부에서 발생하는 요청을 항상 고성능 / 실시간으로 처리하고 결과를 내보낼 수 있도록 돕습니다. Windows Azure는 응용프로그램을 게시하고 실행할 수 있는 Compute 서비스와, 인스턴스 및 응용프로그램의 개수나 종류에 관계없이 동일한 영속성을 부여하기 위한 Storage 서비스를 제공합니다.

Compute 서비스를 통하여 실행되는 Windows Azure 응용프로그램은 보통 여러 개의 역할 (Role) 구성 요소가 동시에 실행됩니다. Role 하나에는 하나 이상의 Virtual Machine Instance가 복제되어 서비스를 담당하게 됩니다. 이 때, Load Balancer가 하는 일은, 실행되는 Virtual Machine Instance의 네트워크 부하, CPU 부하 등을 측정하여 현 시점에서 제일 최적의 성능을 낼 수 있는 Instance가 처리를 대행하도록 연결해주는 일입니다. Compute 서비스를 통하여 실행할 수 있는 Role의 종류는 크게 두 가지인데, Web Role과 Worker Role이 있습니다.

Web Role은 IIS를 내장하고 있는 OS 템플릿을 바탕으로 구축됩니다. IIS를 이용하여 기본적으로는 ASP.NET 응용프로그램을 호스팅할 수 있게 되어있습니다. 여기에 IIS 7.x 이후부터는 Fast CGI를 지원할 수 있게 되어 PHP, Perl, Python 등 대중의 인기를 많이 받는 새로운 웹 프로그래밍 언어까지 더할 수 있고, 특별히 Windows Azure SDK for Visual Studio에서는 Windows Azure용 Fast CGI를 개발할 수 있는 템플릿도 제공하고 있어서 더욱 편리하게 웹 응용프로그램을 개발할 수 있는 것이 특징입니다.

Worker Role은 OS의 핵심 기능을 템플릿으로 하여 구축됩니다. 별도의 기본 서비스 없이, 최소한의 운영 체제의 기능을 이용하여 고속의 연산 처리나 백그라운드 응용프로그램 처리 작업을 개발할 때에는 유용하게 쓰일 수 있습니다.

012345678910


동일하게 복제된 여러 Virtual Machine Instance는, 장애나 Load Balancer의 판단으로 내부적으로 외부의 응답을 처리하는 Instance가 계속 바뀌게 됩니다. 이에 따라, 여러 Instance들이 동일한 내용을 보고 처리할 수 있게 하기 위해서는 외부적인 저장소가 필요한 데, 이 때 사용할 수 있는 것이 바로 Storage 서비스를 통하여 제공되는 Table, Queue, BLOB Storage입니다. Table Storage는 행과 열로 구성된 2차원 행렬 타입의 테이블 자료 구조를 구현하고, Queue Storage는 응용프로그램간 실시간 메시지 교환을 목적으로 사용하는 FIFO (First In First Out) 타입의 큐 자료 구조를 구현하며, BLOB Storage는 파일 크기에 관계없이 대용량의 BLOB (Binary Large Object)를 저장하고 로드할 수 있도록 한 것입니다. 특별히 BLOB Storage의 경우, BLOB Storage의 파일을 외부에서 안정적으로 다운로드할 수 있도록, CDN (Contents Delivery Network) 서비스와 연계하는 기능을 제공합니다. 이 글을 작성하는 시점에서 CDN 서비스와의 연동은 아직 CTP (Community Technology Preview) 단계에 머물러 있습니다.


그리고 최근에는 Windows 7, Windows Server 2008 R2 이후부터 본격적으로 Native Format으로 자리잡은 VHD File을 이용하여 Win32 I/O API를 통한 파일 입/출력을 가능하게 하는 Windows Azure Drive API가 새롭게 런칭되었습니다. Windows Azure Drive API를 이용하여 VHD를 생성하고, 마운트하는 기능을 제공하며, VHD 파일 내부적으로는 NTFS 파티션을 자동으로 생성합니다. Windows Azure Drive와 BLOB Storage 사이의 가장 큰 차이점을 꼽는다면, Windows Azure Drive는 CreateFile 같은 Win32 API로 파일 입/출력이 가능한 저장소이고, BLOB Storage는 외부에 파일을 직접 노출하거나, 서로 다른 시스템간에 파일을 교환할 수 있다는 것입니다. 상황과 조건에 따라서 적절한 방법을 택할 수 있을것입니다.

다음 시간에는

이번 첫 Article에서는 Windows Azure Platform에 대한 개요와 Windows Azure의 기본적인 구성 요소에 대해서 살펴보는 내용을 다루었습니다. 다음 시간에는 Windows Azure Platform 서비스를 신청하고 활용하는 방법을 소개하고, 몇 가지 실제 Windows Azure 기반 응용프로그램 및 개발 사례들을 소개하도록 하겠습니다.

감사합니다. 즐거운 하루 되세요. :-)

이미지 파일 인용: Microsoft Cloud Platform - David Chou / Microsoft

Visual Studio 2010 RC 공개 임박!

Visual Studio 2010 2010. 2. 3. 09:00 Posted by 알 수 없는 사용자

현재 Visual Studio 2010 Beta 2까지 공개가 되었는데 RC버전의 발표가 임박한 것 같습니다. 
원래 1월 공개 예정이었으나 알려진대로 약간 딜레이 되어서 2월 중에 발표된다는 소식이 있었는데 곧 나올 것 같습니다.

우리나라 시간으로 2월 2일 Windows Azure Tools 1.1 버전이 공개되었는데 지원하는 Visual Studio 버전이 Visual Studio 2008 SP1과 Visual Studio 2010 RC버전입니다.


이것을 보았을 때 RC버전이 곧 공개된다는 뜻이고 Windows Azure Tools 팀 블로그에서도 Windows Azure Tools의 새로운 버전 발표와 함께 Visual Studio 2010 RC 버전이 곧 나온다는 소식을 전하고 있습니다.
최신 소식에 의하면 RC버전에서는 퍼포먼스가 대폭 향상되어 아주 만족스럽다는 내용을 볼 수 있었습니다.

보통 이정도 발표되면 늦어도 2주 내에는 나올 것 같고 빠르면 며칠 내로 발표될 가능성도 있습니다.
아직 정확한 일정은 나온게 없으니 참고만 하시고 자세한 정보가 나오면 알려드리도록 하겠습니다.