Windows Azure Update: CloudStorageAccount 클래스 사용 시 주의 사항

Cloud 2010. 8. 23. 02:00 Posted by 알 수 없는 사용자

안녕하세요. Visual C# MVP 남정현입니다. 지난번 Windows Azure Update (2010/07/29 - [Cloud] - Windows Azure Update: Microsoft Project Code-Named "Houston" CTP 1) 에 이어서 오늘은 Windows Azure Cafe 내에서 발견한 이슈에 대하여 소개하는 글을 올립니다. 이 글은 Windows Azure Tools for Visual Studio 버전 1.2에 적용되며 향후에 개선될 여지가 있는 부분으로 꼭 메모해두시면 좋을만한 부분입니다.

CloudStorageAccount 클래스에 대하여

Windows Azure Platform에서 사용하는 서비스의 유형 중에서, BLOB, Table, Queue를 다루기 위해서는 Windows Azure Storage 서비스를 신청하고 여기에 직접 접근하는 API를 호출해야 하는 데, 이 때 최초에 사용자 인증을 완료하기 위하여 제일 먼저 활용하는 클래스가 바로 CloudStorageAccount 클래스입니다. 이 클래스에는 다음과 같은 멤버들을 포함하고 있습니다.

  • [static] FromConfigurationSetting: Windows Azure의 Worker - 또는 - Web Role의 개별 환경 설정 파일에 들어있는 설정 파일로부터 Storage 연결 문자열을 가져와 CloudStorageAccount 객체를 생성하는 Factory Method입니다.
  • [static] Parse: 형식과 규칙에 맞는 연결 문자열이 있을 경우 문자열을 해석하여 CloudStorageAccount 객체를 생성하는 Factory Method입니다. 만약 분석에 실패할 경우 예외를 발생시킵니다.
  • [static] SetConfigurationSettingPublisher: Windows Azure Management API 등을 통해서 동적으로 설정 내역이 바뀌었을 경우 이를 전달하고 시스템 내부에 반영하는 통지 이벤트 처리기를 등록합니다.
  • [static] TryParse: 기본적으로 Parse 메서드와 하는 일이 동일하지만, 예외를 직접 던지지 않고 실패할 경우 반환값으로 false를 반환하도록 설계되어있어 조건문 만으로 예외 상황을 처리할 수 있도록 도와주는 도우미 메서드입니다.

위의 Static Member들 중에서도 특별히 굵게 강조 표시한 메서드 2개는, 기본적으로 제공되는 프로젝트 템플릿 상에 별도의 언급도 없으며, 이에 대한 구체적인 문서를 쉽게 발견하기 힘들지만, 이 글에서 소개하는 내용을 적용하지 않았을 경우 다음의 문제가 발생할 수 있습니다.

  • FromConfigurationSettings 메서드를 호출할 때 예외가 발생합니다.
  • FromConfigurationSettings 메서드를 사용하지 않기 위하여 Role의 자체적인 Configuration File을 사용하도록 구성한 경우 설정 변경을 위하여 매번 Role을 새로 업데이트해야 하는 비효율적인 상황에 직면할 수 있습니다.

문제 해결 방법

이러한 문제를 해결하고, Storage API의 설정이 매 순간 관리 도구에 의하여 편집되고 정확히 반영될 수 있도록 하려면 SetConfigurationSettingPublisher 정적 메서드를 호출하여 이벤트 핸들러를 하나만 지정하면 됩니다. 아래의 코드를 WebRole.cs 파일 - 또는 - WorkerRole.cs 파일의 내용 중 OnStart 메서드에 추가하시면 됩니다.

CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =>
            {
                string connectionString;

                if (RoleEnvironment.IsAvailable) [각주:1]
                {
                    connectionString = RoleEnvironment.GetConfigurationSettingValue(configName); [각주:2]
                }
                else
                {
                    connectionString = System.Configuration.ConfigurationManager.AppSettings[configName];
                }

                configSetter(connectionString); [각주:3]
            });

같이 보기: http://social.msdn.microsoft.com/Forums/en-US/windowsazure/thread/6d79ca07-f53a-4110-af46-e4edc7e34e9b 

아래 그림은 적용 예시입니다.

감사합니다. :-)

  1. Windows Azure SDK Simulator 위에서 실행 중이거나 실제 Windows Azure Platform 위에서 실행 중일 때 이 Static Property의 반환값은 항상 True이며, 그 외에 단순히 일반 ASP.NET 웹 사이트로 기동 중일 때에는 항상 False가 됩니다. [본문으로]
  2. 관리 도구 등에 의하여 변경된 신규 설정값을 읽습니다. [본문으로]
  3. 실제 설정이 반영되는 구간입니다. [본문으로]

구름 속의 미래 : Windows® Azure™ Platform [1]

Cloud 2009. 8. 13. 02:12 Posted by 알 수 없는 사용자


    반갑습니다
    ! Q3 에서 활동하게 Ted 라고 합니다. ^^

    저는 Q3 에서 MS 클라우드 플랫폼 Azure 대해 이야기 하려고 합니다.

     

    시작하면서...

     

     

    단순히 서버에 저장된 정보를 액세스 하는 것이 아니라 ‘구름(Cloud)’의 컴퓨팅 능력을 얻어서 사용 하는 클라우드 컴퓨팅이 글로벌 기업들의 적극적인 투자와 구축에 따라 점차 대중화 되어 가고 있습니다.

     

    상대적으로 MS 늦게 클라우드(Cloud) 시장에 뛰어 들었습니다.
    클라우드 컴퓨팅 플랫폼 Azure 발표하면서 MS 최고 아키텍트 레이 오지는 인터뷰 중에 "Azure 새로운 컴퓨터" 라고 말했었죠.

     

    구름.. 구름에서의 컴퓨팅.. 새로운 컴퓨터..

    새로운 기술과 개념들이 지적 호기심과 즐거움을 주고 있습니다.

     

    글에선 간단하게 클라우드(Cloud) 컴퓨팅의 개념을 알아보고 Azure Platform 어떻게 구성되어 있는지 살펴보겠습니다.

     

     

    클라우드 컴퓨팅? 플랫폼?

     

    클라우드(Cloud) 그대로 구름입니다. ^^

    IT 분야에서 최근 유행하는 클라우드(Cloud) 의미는 복수의 데이터센터(IDC) 가상화 기술을 통해 소프트웨어, 하드웨어, 네트워크, 컴퓨팅 파워 등의 전산 자산을 통합해 놓은 것을 의미합니다.

     

    그렇다면 클라우드 컴퓨팅이란 무엇일까요?

    사용자가 PC, 휴대폰, PDA 등 컴퓨팅이 가능한 단말기를 통해 구름(Cloud)에 접속해서 원하는 작업을 하는 것입니다. 크게 가지 작업을 있겠죠.
    언제 어디서나 데이터를 저장하고 프로그램을 실행시킨다.


    뿐만 아니라 인프라를 서비스로 제공받거나(IaaS), 플랫폼을 서비스로 제공(PaaS) 받는 것이 또한 클라우드 컴퓨팅에서 가능합니다.


    클라우드를 제공하는 회사 입장에서 본다면 애플리케이션, 인프라, 플랫폼을 "서비스"의 형태로 일정 금액을 받고 제공해 주는 것입니다. 이 서비스들을 통털어 클라우드 플랫폼이라고 하는 것이죠.


    아래
    그림은 현존 하는 클라우드 플랫폼들이 제공하는 서비스를 분류해 놓는 도식 입니다.

    클라우드 컴퓨팅을 제공하는 글로벌 벤더들은 서비스들 중에 일부 또는 전부를 제공하고 있습니다.

    SaaS, IaaS, PaaS
    없는(?) 말들이 난무 합니다. 관련해서 좋은 있으니 참고하세요!

     

    < 출처 : http://nexr.tistory.com/ >

     

    오늘은 정도로 클라우드에 대한 설명을 마치겠습니다. (앞으로 ~ 계속 됩니다)

    광범위고 추상적인 개념이다 보니 아직은 멀게만 느껴집니다.

    앞으로 Azure 통해 프랙티스를 경험해 보고 실제로 사용하면 많이 가까워 있겠죠? ^^

     

     

    An Overview of The Windows® Azure™ Platform

     

    < 여기서 잠깐! >

    Window Azure Azure Platform 다른 것입니다.

    Window Azure Azure 플랫폼에서 운영체제를 담당하는 부분입니다.! 


    Azure Platform?
     


    Azure Platform 은 클라우드
    운영체제(Windows Azure) 와 클라우드 컴퓨팅을 위한 편의를 제공하는 다양한 서비스들(Live Service, .NET Service..) 을 말합니다.


     

    1. Windows Azure
     클라우드 운영체제입니다. 

    사진 및 동영상 등의 Blob(바이너리 형식의 큰 파일)을 저장하는 스토리지, 실제 연산 및 처리 작업을 수행하는 컴퓨팅, 서비스에 대한 관리의 역할을 제공합니다.
     

    2. 서비스 모듈들 

     Azure Platform 클라우드 컴퓨팅을 이용해 쉽게 개발할 수 있도록 다양한 서비스가 제공됩니다.


     기반 애플리케이션 모듈

    Live Services: Live Mesh 개념의 Social Service 애플리케이션 개발

    SQL Services: 클라우드 서비스용 SQL Server 연동 모듈

    .NET Services: 클라우드 애플리케이션 서비스 개발 프레임웍

     
     전용 애플리케이션 모듈

    Sharepoint Services: 협업 관련 서비스 개발

    Dynamics CRM Services: CRM 관련 서비스 개발


    Windows Azure?

     
    Windows Azure
    는 레드 독(Red Dog)이란 코드명으로 알려진, 마이크로소프트의 클라우드용 운영체제로, 마이크로소프트가 데이터센터에서 운영하게 될 Azure Platform의 핵심 요소입니다. 또한, Windows Azure 는 클라우드용 애플리케이션 개발자들을 위한 개발 환경이기도 하지요.

     > 최신 CTP 다운로드

     > Azure 컬러 설명

     > Windows Azure 블로그


    처음에는 Azure 관련 자료를 찾아보면 수록 이름도 헷갈리고 서비스들의 역할이 아리송 했는데요, Azure MSDN 개발자 사이트 화면에서 바로 "Window Azure 클라우드 운영체제" 라는 말을 보고 "아하" 했답니다.

     

    윈도우나 리눅스 같은 운영체제의 제일 주된 역할은 무엇일까요?

    중요한 역할 중에 하나가 하드웨어 자원을 사용 하는 추상화 방법(HAL) 제공함으로써 소프트웨어 작동 환경을 만들어 주는 것입니다.

     

    같은 맥락에서 보면, 클라우드 운영체제인 Azure 클라우드 자원을 관리하고 추상화 사용 방법을 제공함으로써 컴퓨팅 환경을 제공하는 입니다.

    ( 클라우드 자원이란 위에서 언급한 복수의 데이터센터(IDC) 가상화 기술을 통해 소프트웨어, 하드웨어, 네트워크, 컴퓨팅 파워 등의 전산 자산 입니다. )

     

    아직 모르시겠다구요? FAQ 참고해 주세요!



    마치면서...

    다음 포스팅에서는 Azure 플랫폼을 구성하는 기능들에 대해 상세히 살펴보고 실제 Azure 서비스를 사용해 보겠습니다!