라스베가스에서 진행되고 있는 MIX11에서 Windows Azure Platform (이하 애저) 관련한 새로운 기능 서비스가 공개되었다. 새롭게 추가되거나 공개된 기능에는 다음과 같은 것들이 있다.

1. 버전의 Windows Azure SDK 공개 (오늘 중으로 공개 예정)

  • IIS, 싸이트 관리와 마이그레이션을 도와주는 Web Deployment Tool 포함되어 있다.
  • 툴은 Visual Studio 2010 Web Platform Installer 통합된다.

2. Windows Azure AppFabric Access Control Service 2.0 업데이트

  • CTP 상태로 제공되던 ACS 2.0 기능 정식 출시
  • 인터넷 기반 다양한 ID 관리체계와 통합 기능을 제공하여 SSO 쉽게 구현 가능
  • 전세계 85,000 싸이트에 적용된 가장 인기있는 .NET 기반 CMS 솔루션 Umbraco ACS Extension 제공 - 다운로드
  • 말이 필요없는 블로그 엔진 WordPress ACS Extension 제공 - 다운로드

3. Windows Azure AppFabric Caching 정식 서비스 개시 (30일 이내 공개)

  • On-premise 애플리케이션 개발시 사용하는 Windows Server AppFabric Caching과 symmetric 솔루션
  • 분산 In-memory 캐시 솔루션

4. Windows Azure Traffic Manager (WATM) CTP 공개

  • On-premise 환경에서 L4 부하분산, Fault Tolerance HA 위해 필요로 했던 기능을 Windows Azure 상에서 서비스로 제공
  • 서비스 제공자의 동일한 서비스를 애저 데이터센터 여러 곳에 올려놓고 단일한 URL 통해 접근하도록 하여 정책 기반으로 서비스 사용자의 요청을 여러 데이터센터에 분산 처리하도록 하는 기능
  • CTP 상태이며 원한다고 모두 사용해볼 있는 것이 아니라 본사에서 초청 기반으로 일부에게만 사용 기회 제공. http://windows.azure.com 접속하면 아래처럼 신청할 있는 화면이 나옴 (아래 계정은 현재 신청중)
  • 현재 제공되는 옵션은 가지 - Performance, Failover, Round Robin
    • Performance 경우, 정해진 정책 기반으로 애저가 판단하여 "가장 최선" 혹은 "가장 가까운" 데이터센터를 판단하여 사용자의 요청을 전달하는 방식
    • Failover 경우, 데이터센터의 서비스를 primary, 다른 서비스를 secondary 지정하여 모든 사용자의 요구는 primary 데이터센터에 접속토록. 정해진 정책에 의거하여 Fail이라고 판단되면 secondary 데이터센터의 서비스로 사용자 요청을 돌리는 방식
    • Round Robin 경우, 여러 데이터센터에 분산 처리할 있도록 사용자의 요청을 순차적으로 전달하는 방식
  • 밖에 몇몇 옵션이 현재 개발 중이며, 아마 서비스 시에 공개될 것으로 판단됨
  • 주의) WATM 이전 포스팅에서 말씀드린 Windows Azure SQL Azure 내부의 로드 밸런서와는 다른 것이며, WATM 서비스 형태로 사용자가 제어 설정할 있는 기능임

5. Windows Azure CDN Smooth Streaming 서비스 Preview 공개

  • IIS7.x에서 제공하는 Smoothing Streaming 기능을 CDN 서비스 이용시에도 사용할 있도록 제공
  • N-Screen 추세와 맞물려 급증하는 미디어 생산, 공유 활동에 직접적인 영향을
  • Windows Azure Storage 올려진 미디어 컨텐츠를 Silverlight, iOS, Android Honeycomb 기반 클라이언트에게 네트웍 대역폭에 따라 화질이 다른 동영상 블록을 전송하여 사용자에게 끊김없이 영상을 제공

6. 기타

  • Windows Azure Platform Training Kit - April Update 공개 - 다운로드
  • Identity Developer Training Kit 공개 - 다운로드
  • ACS 2.0 기반의 SaaS 형태의 물류 서비스 샘플 - Fabrikam Shipping
Posted by 장현춘

클라우드 컴퓨팅이 이제 확실하게 대세로 자리잡은 모양이다. 업종을 막론하고 클라우드 컴퓨팅에 대한 논의가 활발하고, 서비스를 Windows Azure Platform (이하 애저) 환경에서 제공하고자 PoC 실제 개발이 진행되는 사례가 늘고 있다. 다양한 업종의 사람들과 만나 애저 적용을 논의하는 과정에서 생겨나는 문제점이나 이슈를 해결하는 과정에서 알게된 것들을 정리하고자 한다.

마이크로소프트가 클라우드 플랫폼으로서 시장에서 판매하고 있는애저는 개발자나 사용자가 제어하거나 심지어 감지할 없지만, 내부적으로 로드 밸런서가 내장되어 있다. 이를 통해 개발자들이 클라우드 플랫폼에 기대하는, 부하 폭주시 대처할 있는 확장성이나 부하에 따라서 서비스 인프라를 조절하여 비용을 절감할 있는 인프라의 탄력성을 제공하게 된다. 바로 이러한 성격 때문에 플랫폼으로서의 애저는 약간의 제약이 존재하게 된다.

애저는 크게 Windows Azure SQL Azure 구분할 있는데, 각각 로드 밸런서가 내장되어 있다. 아래는 Windows Azure 내장되어 있는 로드 밸런서의 동작 방식을 보여주는 그림이다. 사용자는 Web Role 사용할 Windows Azure Compute Large (CPU 4 core) 타입 3개를 신청하여 사용 중이며, 이때 애저 내부에서는 아래와 같은 모습으로 사용자의 로지컬 서버가 배치된다. 그림에서 보듯이 Rack Switch 공유하지 않는 곳의 서버에 4 Core VM 각각 생성하여, 서비스 업데이트 혹은 VM OS 업데이트시에도, 또는 장애 발생시에도 심지어 전체가 장애를 일으키는 경우에도 사용자의 서비스를 유지될 있도록 설계 되어 있으며, 이들에게 할당된 IP 전면에 위치한 로드 밸런서에 등록되어 관리된다.

   

일반적으로 클라우드에 적합한 비즈니스 시나리오가 4가지 있다는 점은 수많은 매체에서도 언급되어서 생략하기로 하고 그러한 시나리오가 제대로 클라우드의 장점을 활용하기 위해서는 클라우드 사업자가 제공하는 서비스의 특징을 파악할 필요가 있다. Windows Azure 경우 Stateless 애플리케이션에게 최상의 확장성을 보장할 있는 구조이며, 따라서 Web Role이든 Worker Role이든 상태 관리가 필요없는 경우에 가장 유연하게 서비스를 활용할 있다. , 같은 사용자가 Windows Azure 상의 서비스를 호출시 이전 호출의 결과에 상관없이 서비스가 유지될 있는 그런 타입의 Stateless 애플리케이션이 가장 적합하다는 것이다.

이를 위해서 Windows Azure 로드 밸런스의 TCP 타임 아웃을 1분으로 제한하고 있다. 1분이상 TCP 커넥션을 맺어야 하는 상황에서 Windows Azure 로드밸런서는 이를 자동으로 끊어버린다. 따라서 사용자의 호출이 1 이상 소요되어 값을 리턴하고자하는 경우 에러가 발생하고, 1 이상 TCP 소켓을 열어 놓으면 서버쪽에서 자동으로 끊기게 된다. 이는 일반적인 애플리케이션에 가장 적합한 운영 환경이라 있다. Windows Azure 내장되어 있는 로드밸런서의 부하 분산 알고리즘은 순차적인 Round Robin 방식이다. (Sticky Round Robin이나 Weighted Round Robin 지원하지 않는다.)

그럼, 상태를 관리해야 하는 경우는 Windows Azure 사용하지 않아야 할까 ? 부분에 대해서는 다음에 논의하기로 하고 SQL Azure 내장되어 있는 로드 밸런서에 대해 살펴보자.

SQL Azure 내장 로드 밸런서는 아래 그림에서와 같이 Windows Azure 달리 Sticky 세션을 지원하며 TCP 타임 아웃도 30분이다. 30 동안 세션을 끊지 않는다. 하지만, 여전히 주의해야 사항이 있다.

먼저, 개발 언어를 막론하고 데이터베이스 접근은 대부분 커넥션 풀을 사용한다. 닷넷의 경우 ADO.NET 통해 기본적으로 제공되는 커넥션 풀을 이용하는데, 경우 미리 물리적으로 데이터베이스에 연결을 갖고 있는 커넥션들이 30 이후에는 서버에서 일방적으로 커넥션이 종료된다. 실제 커넥션을 끊겼지만 커넥션 풀에 들어 있는 커넥션 객체를 애플리케이션이 얻어 쓰려고 하면 당연히 에러가 발생하게 된다. 따라서 이를 회피하기 위해서는 에러 발생시 다시 커넥션을 얻는 시도를 하는 로직을 삽입하는 것이 바람직하다.

또한 SQL Azure 접근하는 클라이언트가 Windows Azure 위치할 경우 다른 이슈가 발생할 있다. , Windows Azure TCP 타임 아웃이 1분이기에 1분이 경과하면 커넥션이 종료되는 현상을 보고하고 있다. Windows Azure SQL Azure 함께 사용하는 대부분의 경우에 물리적으로 같은 데이터센터에 위치하는 경우가 많아서 크게 1 이상의 응답이 걸리는 호출이 많지 않을 것이라고 판단은 되지만, 이를 회피하고자 한다면 TCP Keep Alive 옵션을 설정하는 것이 바람직하다.

어느 경우에는 TCP 커넥션을 Idle 상태에 두지 않는 방안을 강구하라고 조언하기도 한다.

자바의 경우 지난 포스팅에서 JDBC 드라이버 소개했는데, 드라이버를 설치하고 나면 release.txt 있다. 여기에 커넥션 타임 아웃 관련하여 아래와 같은 구문이 있으니, 눈여겨 필요가 있다.

<<KNOWN ISSUES
------------
The following are known issues with the Microsoft SQL Server JDBC Driver 3.0: 
1) PARAMETER METADATA LIMITATIONS WITH THE SQL MERGE STATEMENT 
PreparedStatement.getParameterMetadata() throws an SQLException when used with a parameterized MERGE query.
2) LIMITATIONS OF SSL WITH SQL AZURE 
The hostNameInCertificate connection property must be used to validate an SSL certificate against SQL Azure. 
3) LIMITATIONS OF USERNAME WITH SQL AZURE 
When connecting to SQL Azure, the user name should be specified in the format username@servername.    
4) LIMITATIONS OF DATABASE NAME WITH SQL AZURE 
i
f you connect to SQL Azure and specify an invalid database name, SQL Azure may block the client application for 5 minutes. 
5) CONNECTION DROPPING WITH SQL AZURE 
When connecting to SQL Azure, idle connections may be terminated by a network component (such as a firewall) after a period of inactivity. To avoid dropping idle connections by a network component, the following registry settings (or their non-Windows equivalents) should be set on the operating system where the driver is loaded:             

           Registry Setting                                                                     Recommended value HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveTime                 30000      HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\KeepAliveInterval             1000 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\TcpMaxDataRetransmission      10
>>

참고로 SQL Azure의 내부 동작 방식에 관해서는 이전 포스팅을 참고하길 바란다. 특히 13번 Throttling 관련한 사항은 성능 테스트시 뜻하지 않는 에러의 원인이 될 수 있다.

Posted by 장현춘
좀 지난 소식이긴 한데, SQL Azure가 공식적으로 JDBC를 지원하는군요.
마이크로소프트가 제공하는 SQL Server 2008 R2 및 SQL Azure용 JDBC 드라이버는 아래에서 다운로드 받으실 수 있습니다.
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ae924066-2946-40a7-93c6-c7e83f54072f&displaylang=en

- 위 드라이버로 접근 가능한 데이터베이스는 SQL 2000, 2005, 2008, 2008 R2 및 SQL Azure입니다.
- JDBC 4.0 compliant한 드라이버로서 JDK 5.0 이상에서 사용가능합니다.
- 제공하는 JDBC 드라이버가 Type 4이기 때문에 사용가능한 운영체제는 윈도우즈, 리눅스, 유닉스 등 JVM이 제공되는 것이면 가능합니다.
Posted by 장현춘
마이크로소프트가 오픈 소스를 대하는 자세의 변화를 아직도 의심하는 사람이 있을까 ?

오는 4월 12~14일까지 미국 라스베가스에서 개최되는 MIX11 기간 중에 Open Source Fest가 진행된다. 전야 행사로 11일 저녁 6시부터 음식과 음료가 제공되는 축제 분위기 속에 오픈 소스 소프트웨어를 전시하고 MIX11 참석자들과 교류하며 그들의 투표를 통해 순위를 매기고 상금이 주어진다. 상금 자체 보다는 MIX11 행사를 통해 거대한 네트웍을 활용하여 오픈 소스 프로젝트를 홍보할 수 있는 장이 마련된다는 점이다.
국내에도 많은 오픈 소스 프로젝트들이 현재에도 진행중이고 일부로 성공적으로 실 시스템에 적용되는 모습을 볼 수 있다. 이들이 국내를 벗어나 전세계를 무대로 그들의 잠재력과 창의성을 뽐내고 그를 노고의 댓가를 거둘 수 있기를 희망해본다.
참가 조건은 마이크로소프트의 기술과 연관되어 있다는 것 뿐이며, 각자 자신들의 랩탑에 설치하여 전시해야한다.

좀 더 상세한 관련 정보는  MIX11 사이트에서 확인할 수 있다.
http://live.visitmix.com/OpenSourceFest
Posted by 장현춘

지난 2월 24일부로 Windows Azure CDN의 24번째 노드가 카타르 도하에 설치되어 서비스에 들어갔다. 국내에서도 클라우드 사업자간 혹은 기존 CDN 전문 업체 사이의 치열한 경쟁이 이미 시작되었고, CDN의 비즈니스 영역은 기존 대기업 중심의 CDN 비즈니스 뿐만 아니라, 새로운 기술 흐름에 맞추어 소셜 및 N-Screen과의 접점에서 점점 경쟁이 치열해지고 있다.

현재 서비스 중인 24개 Windows Azure CDN노드는 다음과 같다.

US/EMEA

US

  • Ashburn, VA
  • Bay Area, CA
  • Chicago, IL
  • San Antonio, TX
  • Los Angeles, CA
  • Miami, FL
  • Newark, NJ
  • Seattle, WA

EMEA

  • Amsterdam, NL
  • Doha, QT  NEW
  • Dublin, IE
  • London, GB
  • Moscow, RU
  • Paris, FR
  • Stockholm, SE
  • Vienna, AT
  • Zurich, CH

Asia-Pacific/Rest of World

  • Hong Kong, HK
  • São Paulo, BR
  • Seoul, KR
  • Singapore, SG
  • Sydney, AU
  • Taipei, TW
  • Tokyo, JP

       

관련 정보는 아래에서 확인할 수 있다.
http://blogs.msdn.com/b/windowsazure/archive/2010/08/09/20-nodes-available-globally-for-the-windows-azure-cdn.aspx

Posted by 장현춘