Windows Azure에서 리눅스를 게스트 OS로 2012년 중에 지원을 추가할 예정입니다.

Microsoft 전문 테크니컬 칼럼니스트인 Mary-Jo Foley의 기사에 따르면, Microsoft가 2012년 중에 리눅스를 실행할 수 있도록 Windows Azure 서비스를 업데이트할 예정이라고 합니다. 워낙에 특이하고 걸출한 토픽인지라 이 기사 자체가 잘못된 것이 아니냐는 반문을 살 정도로 뜨거운 이슈인 것 같습니다. :-)

현재 나와있는 Web Role, Worker Role은 Visual Studio를 이용하여 개발자가 Application Instance를 패키징해서 Windows Azure에 배포할 때 이것을 VM으로 변환하여 Windows Server 2008이나 Windows Server 2008 R2에서 실행할 수 있도록 바꾸고 있고, 작년에 나온 VM Role은 여기서 좀 더 나아가서 VHD 안에 Windows Server 2008 R2를 설치하고 VHD 단위로 VM을 만들 수 있도록 하는 기능을 내놓았습니다. 그러나 지금까지 나온 것은 모두 한 가지 기술적 특징이 있는데, 실행 중인 VM이 예고 없이 자동으로 재시작되거나 초기화될 수 있다는 점입니다. 그래서 Windows Azure 기반으로 서비스를 개발할 때에는 VM 안에 상태를 보관하는 방식 대신 Stateless/Remote Storage를 활용하는 전략을 택해야 했었습니다.

하지만 Linux VM에 대한 지원과 더불어 장기 실행 VM이 Windows Server에 대해서도 같이 제공되어 Amazon Web Service의 Elastic Cloud Computing 서비스와 같은 형태의 VM Hosting을 Windows Azure에서도 사용할 수 있을 것으로 보입니다. 현재 예상되는 리눅스 배포판으로는 CentOS, RHEL, Suse Linux 등 기존의 Hyper-V 스택에서 원활하게 구동 가능한 상용 리눅스 배포판 대부분이 여기에 포함될 것으로 보입니다.

지금 소개하는 기능은 CTP 버전으로 올해 봄 (2012년 봄) 시즌에 새로 런칭될 것으로 보입니다. 그리고 이 외에도 SharePoint 서버와 SQL Server를 탑재한 가상 머신 이미지의 배포도 같이 지원함으로서 SQL Azure 특유의 기술적 한계를 보완하고 Private Domain에서 사용 가능한 SQL Server를 Windows Azure에서도 이용할 수 있을 것으로 보입니다.

좀 더 자세한 내용은 http://www.zdnet.com/blog/microsoft/microsoft-to-enable-linux-on-its-windows-azure-cloud-in-2012/11508 에서 보실 수 있습니다.

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

PDC2010이 미국 시간으로 2010년 10월 28일 목요일 오전 9시부터, 우리나라 시간으로 2010년 10월 29일 금요일 새벽 1시부터 이틀간 열립니다. 아래는 이번 PDC2010에서 소개되는 라이브 세션 및 사전 녹화 세션들의 요약 내용을 정리한 것으로, PDC2010 행사 종료 이후에 블로그에 관련 내용, 강의 자료, 동영상 등을 하나씩 소개하며 업데이트해나갈 예정입니다.

이번 PDC 2010에서 클라우드 컴퓨팅에 관하여 언급되는 세션의 수는 라이브 세션 총 13개와 사전 녹화 세션 8개로, 총 21개 세션에 걸쳐서 클라우드 컴퓨팅 전반에 대한 내용을 언급하게 됩니다. 아래의 세션들 중에서 굵은 글씨에 밑줄로 표시한 항목은 On-Demand 서비스로 제공될 때, 블로그 아티클 등의 형태로 추가적인 내용을 게시하거나, 한국어로 번역하여 내용을 공유할 예정입니다.

[2010.10.27 Update]: 한국 Microsoft 박중석 대리님의 Blog Posting을 일부 인용하여 세션 요약을 추가하였습니다. http://blogs.msdn.com/b/eva/archive/2010/10/26/pdc10-13.aspx

PDC2010 Key Note
- 발표: Steve Ballmer and Bob Muglia
- 미국 시간: 2010년 10월 28일 목요일 오전 9시
- 한국 시간: 2010년 10월 29일 금요일 오전 1시
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/6f853fa2-06f6-45e5-ac25-18c31cc4ba32
- 세션 요약: 첫째 날은 먼저 Bob Muglia와 Steve Ballmer가 진행하는 키 노트에서 Microsoft의 Cloud 와 관련한 놀라운 소식들을 들으실 수 있을 것으로 생각 합니다. 실제 클라우드 플랫폼을 이용하는 데 있어서 보다 성숙된 서비스들로 예상되며 클라우드 플랫폼을 고려한 업체라면 고민했을 만한 것들이 될 것 입니다. 다른 세션들을 보실 시간이 없더라도 이 키 노트만큼은 보실 것을 추천 드립니다.

** Live Sessions **

Building Windows Phone 7 applications with the Windows Azure Platform
- 발표: Steve Marx (Kodiak Room)
- 미국 시간: 2010년 10월 28일 목요일 오전 11시 30분
- 한국 시간: 2010년 10월 29일 금요일 오전 3시 30분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/58d670be-bd26-4ee3-9db1-5f2767eba4f8
- 세션 요약: Windows Azure 플랫폼과 함께 Windows Phone 7 용 애플리케이션을 개발하는 세션으로 Windows Azure 전문가로 많이 알려진 Steve Marx가 진행을 합니다. 윈도우 폰 7이 화두가 되고 있는 만큼 특정 Device가 이용하는 서비스를 클라우드에 올리는 시나리오로서 도움이 될 것으로 생각 합니다.
Learn how to build Windows Phone 7 applications that are backed by scalable cloud components hosted in Windows Azure. This demo-heavy session will cover best practices relating to communication, authentication, and data synchronization between phone applications and cloud components.

Building, Deploying, and Managing Windows Azure Applications
- 발표: Jim Nakashima (Hood Room)
- 미국 시간: 2010년 10월 28일 목요일 오전 11시 30분
- 한국 시간: 2010년 10월 29일 금요일 오전 3시 30분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/19c4c834-3cae-408c-96f0-e87bfad92cff
- 세션 요약: 이전 컨퍼런스에서 실제 데모를 엮은 좋은 발표를 보여줬던 Jin Nakashima의 발표로서, 실제적으로 Windows Azure를 개발 및 배포하는 과정을 보여줄 것으로 보입니다.
In order to take full advantage of Windows Azure and SQL Azure, you need to know more than just how to write the code. You need to know how to incorporate your application in a team environment, deploy, monitor, manage and retrieve diagnostic information back from the cloud. In this session, you will learn everything you need to know to be successful with a project that utilizes Windows Azure and SQL Azure including setting up your development environment, automating build, unit test and deployments to different deployment environments from staging to production, and managing credentials and user roles using the Windows Azure Portal.

Migrating and Building Apps for Windows Azure
- 발표: Mohit Srivastava (McKinley Room)
- 미국 시간: 2010년 10월 28일 목요일 오후 2시
- 한국 시간: 2010년 10월 29일 금요일 오전 6시
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/94694704-1b10-49fd-a09d-574c8bb364b8
- 세션 요약: 키노트에서 발표할 기술을 이용해서 기존 애플리케이션들을 윈도우 애저에 올리는 것에 대한 내용이 다루어 집니다. 기존의 애플리케이션 이동이 얼마나 쉬운지 여부가 Windows Azure와 같은 Cloud 플랫폼에서는 가장 중요한 이슈가 되겠지요.
In this session you will learn how to run your existing applications on Windows Azure using some of the new features that we’ll announce during the keynote.

Composing Applications with AppFabric Service
- 발표: Karandeep Anand (Kodiak Room)
- 미국 시간: 2010년 10월 28일 목요일 오후 3시 15분
- 한국 시간: 2010년 10월 29일 금요일 오전 7시 15분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/c3c5f2d9-0481-4be1-9742-4dfa4de184d0
- 세션 요약: Service Bus와 Access Control의 기능이 있는 Windows Azure AppFabric 서비스에 대한 세션 입니다. 새로 출시되는 서비스도 같이 소개가 될 것 같네요.
AppFabric provides a rich set of application platform services as part of the Windows Azure Platform to enable developers to create line of business applications that span multiple tiers and technologies. Learn how to create scalable web-based & hosted applications in the cloud, compose them with other cloud services (such as SQL Azure Database and other forthcoming new services) and integrate them with on-premises systems using Windows Azure AppFabric technologies like Service Bus and Access Control services. This session will also cover the roadmap of AppFabric Services and demonstrate how developers will get richer application building blocks, development tools & management capabilities to compose and manage a distributed application using the Windows Azure Platform. Come and see how AppFabric Services can be integrated in to your application development & management lifecycle to reduce time & cost.

Enabling New Scenario and Applications with Data in Cloud
- 발표: Dave Campbell (Hood Room)
- 미국 시간: 2010년 10월 28일 목요일 오후 4시 30분
- 한국 시간: 2010년 10월 29일 금요일 오전 8시 30분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/64f43e11-f88f-4e59-954b-fadeaf5f3537
- 세션 요약: 달라스와 같은 데이터를 클라우드를 이용해서 새롭게 활용할 수 있는 방법에 대한 세션이며, 역시 새로 출시되는 서비스에 대한 이야기가 나올 것 같네요.
The cloud enables new scenarios for sharing and consuming data. In this session you will learn how to differentiate your applications by building them on top of Windows Azure platform and leveraging visualization and access to private, public and premium content available through Microsoft Codename “Dallas”. You will also learn how to use some of the new services and features announced at the PDC.

Connecting Cloud & On-Premises Apps with the Windows Azure Platform
- 발표: Yousef Khalidi (McKinley Room)
- 미국 시간: 2010년 10월 29일 금요일 오전 9시
- 한국 시간: 2010년 10월 30일 토요일 오전 1시
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/fe7e140b-de62-4768-9306-23d0bdcabc5c
- 세션 요약: 온프레미스 애플리케이션과 클라우드 애플리케이션의 연동이라는 화두로 진행되는 세션으로 Windows Azure AppFabric이 중심이 될 것 같네요.
Not every application or service can be hosted entirely in the cloud. Cloud services often need to provide a combination of cloud-based data access as well as connectivity to on-premises assets in a variety of geographies. Getting access to your on-premises or partner hosted assets securely has never been easier. In this session, learn how to securely connect applications today that span the cloud to on-premises world using Windows Azure AppFabric Service Bus and SQL Azure Data Sync Service. Also, gain insight into future scenarios and technologies for assembling these types of services.

Open in the Cloud: Windows Azure and Java
- 발표: Vijay Rajagopalan (Cascade Room)
- 미국 시간: 2010년 10월 29일 금요일 오전 9시
- 한국 시간: 2010년 10월 30일 토요일 오전 1시
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/6ae95ba0-c185-4546-9d66-2604ac6b6cef
- 세션 요약: 오픈 클라우드로서 여러 개발 플랫폼들이 동작할 수 있는 Windows Azure의 모습을 Java 개발로서 보여주는 세션.
The Windows Azure Platform is an open and interoperable platform which supports development using many programming languages and tools. In this session, you will see how to build large-scale applications in the cloud using Java, taking advantage of new Windows Azure Platform features. You will learn how to build Windows Azure applications using Java with Eclipse, Apache Tomcat, and the Windows Azure SDK for Java.

Identity & Access Control in Cloud
- 발표: Vittorio Bertocci (McKinley Room)
- 미국 시간: 2010년 10월 29일 금요일 오전 10시 15분
- 한국 시간: 2010년 10월 30일 토요일 오전 2시 15분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/0099d03d-bbc4-4612-87e1-f7d4da8b8a78
- 세션 요약: 보안이 클라우드에서 매우 중요한 이슈가 될 것이므로, 이를 위해서 필요한 Windows Identity Foundation 및 Windows Azure AppFabric의 Access Control 확인 할 수 있는 세션
Signing users in and granting them access is a core function of almost every cloud-based application. In this session we will show you how to simplify your user experience by enabling users to sign in with an existing account such as a Windows Live ID, Google, Yahoo, Facebook, or on-premises Active Directory account, implement access control, and make secure connections between applications. You will learn how the AppFabric Access Control Service, Windows Identity Foundation, and Active Directory Federation Services use a claims-based identity architecture to help you to take advantage of the shift toward the cloud while still fully leveraging your on-premises investments.

Windows Azure Storage Deep Dive
- 발표: Jai Haridas (Kodiak Room)
- 미국 시간: 2010년 10월 29일 금요일 오전 10시 15분
- 한국 시간: 2010년 10월 30일 토요일 오전 2시 15분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/1c6f9726-11c6-4ed1-97e6-0bcaf7ee6660
- 세션 요약: 클라우드로 애플리케이션 옮길 때 가장 먼저 고려할 것중의 하나인 Storage 에 대해서 좀 더 깊이 있게 알아보는 세션
Windows Azure Storage is a scalable cloud storage service that provides the ability to store and manipulate blobs, structured non-relational entities, and persistent queues. In this session you will learn tips, performance guidance, and best practices for building new applications or migrating an existing applications that use Windows Azure Storage.

Inside Windows Azure
- 발표: Mark Russinovich (McKinley Room)
- 미국 시간: 2010년 10월 29일 금요일 오전 11시 30분
- 한국 시간: 2010년 10월 30일 토요일 오전 3시 30분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/18a38105-520f-486a-9e04-d956736e506d
- 세션 요약: 애저 개발 팀에서 이야기 하는 Windows Azure가 동작하는 하부 단의 이야기를 들려 줍니다. 매우 관심 가는 세션 입니다.
Join Mark Russinovich, now working on Windows Azure, for an under the hood tour of the internals of Microsoft’s new cloud OS. Topics will include datacenter architecture, cloud OS architecture, and what goes on behind the scenes when you deploy a service, a machine fails or comes online and a role fails

Building Scale-Out Database Solutions on SQL Azure
- 발표: Lev Novik (McKinley Room)
- 미국 시간: 2010년 10월 29일 금요일 오후 2시
- 한국 시간: 2010년 10월 30일 토요일 오전 6시
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/591d586f-3732-4bff-8ee2-857f27d74df4
- 세션 요약: 현재 SQL Azure의 경우는 최대 50G사이즈이지만, 보다 더 큰 용량이 필요한 서비스를 위한 세션
SQL Azure provides an information platform that you can easily provision, configure, and use to power your cloud applications. In this session we will explore the patterns and practices that help you develop and deploy applications that can exploit the full power of the elastic, highly available, and scalable SQL Azure Database service. The talk will detail modern scalable application design techniques such as sharding and horizontal partitioning and dive into future enhancements to SQL Azure Databases.

Building High Performance Web Applications with the Windows Azure Platform
- 발표: Matthew Kerner (McKinley Room)
- 미국 시간: 2010년 10월 29일 금요일 오후 3시 15분
- 한국 시간: 2010년 10월 30일 토요일 오전 7시 15분
- ICS 파일: http://player.microsoftpdc.com/Schedule/AddToOutlook/1b08b109-c959-4470-961b-ebe8840eeb84
- 세션 요약: 보다 고성능으로 서비스를 운영할 수 있도록 CDN서비스를 이용하거나 최적화를 하는데 필요한 기술을 전달하는 세션
Windows Azure Platform enables developers to build dynamically scalable web applications easily. Come and learn how forthcoming new application services in conjunction with services like the Windows Azure Content Delivery Network (CDN) can help you build high-performance web applications in Azure while lowering your total costs by reducing the pressure on the data-tier. In this session, we’ll take some real world scenarios & design patterns to showcase how existing or new web applications can be quickly built to leverage these capabilities. We’ll also share some tips & tricks to improve performance when using web & worker roles in Azure and optimizing your overall application for maximum performance. Developers will be able to make their applications match increasing demand with increasing throughput by using caching and CDN will enable better performance & user experience for users who are farther from the source of the content.

** Pre-recorded **

Building Business Applications in the Cloud with CRM Online
- 발표: Andrew Bybee
Microsoft Dynamics CRM Online is all about providing compelling business applications to your customer and accelerating development of your applications in the cloud. The upcoming 2011 release has a wide array of new development capabilities such as Solution Packaging, Sandboxed Code, Built-in Dashboards, and much more. Watch this session to understand the innovation behind this new CRM Online release powered by .NET 4.0. Specifically, we’ll cover how to build a CRM Online Solution, take advantage of native SharePoint & Office integration and deploy your application to Dynamics Marketplace to reach a broader customer base.

Developing PHP Applications on the Windows Azure Platform
- 발표: Vijay Rajagopalan
Microsoft’s Windows Azure Platform provides a comprehensive set of services for building and running scalable PHP applications targeting cloud. In this session we go on a coding tour using open source development tools (Eclipse, Command line), SDKs and applications (Drupal, WordPress) on the Windows Azure platform. On this tour, see how PHP web applications can use the scalable compute and storage services with Windows Azure, secure connectivity and data service techniques in the cloud using OData and Microsoft SQL Azure.

Integrating SharePoint with Windows Azure
- 발표: Steve Fox
SharePoint 2010 provides many ways to integrate with Windows Azure. From simple SQL Azure data-centric applications to complex workflow that leverages custom Azure services, there is great potential to integrate these two growing technologies. This session will provide a code-centric view of the ways in which you can integrate with Azure, covering areas such as web part development, data programmability, service consumption, and Business Connectivity Services integration. If you’re looking to take your SharePoint solutions into the cloud with Azure, then you can’t miss this session.

Building Offline Applications using the Sync Framework and SQL Azure
- 발표: Nina Hu
In this session you will learn how to build a client application that operates against locally stored data and uses synchronization to keep up-to-date with a SQL Azure database. See how Sync Framework can be used to build caching and offline capabilities into your client application, making your users productive when disconnected and making your user experience more compelling even when a connection is available. See how to develop offline applications for Windows Phone 7 and Silverlight, plus how the services support any other client platform, such as iPhone and HTML5 applications, using the open web-based sync protocol.

Management of your Access Control Service (ACS) Namespace
- 발표: Justin Smith
The Windows Azure AppFabric Access Control Service provides a simple way to add enterprise and web Single Sign On into your applications. In this session, we will discuss how you can configure ACS for a variety of scenarios. Topics covered include: ACS entity overview, namespace partitioning, credential management, federation management, and rule management. Basic knowledge of the Windows Azure AppFabric Access Control Service is a suggested pre-requisite.

Microsoft BizTalk Server 2010 and Roadmap
- 발표: Sreeram Nivarthi
Learn how BizTalk Server 2010 and AppFabric together help you create composite applications (building on Windows Azure, Windows Server and SharePoint) which connect to existing line-of-business (LOB) systems. Understand future plans of how you will be able to compose applications using integration services – for applications running on Windows Azure, connecting to other services in the cloud, and with line-of-businesses & business partners in future. You will also learn future plans on how business users can get visibility into services built on AppFabric.

SharePoint in the Cloud: Developing Solutions for SharePoint Online
- 발표: Chris Mayo
With the most recent release of SharePoint comes the ability to build and deploy applications of many types and flavors. Using SharePoint Server 2010, you can develop a wide variety of applications for the enterprise using .NET, Silverlight, JavaScript, and much more. But with the release of SharePoint Online on our horizon, what are the possibilities and the boundaries here? And how is the design and development process different? If you want to develop for SharePoint Online, but are unsure about the boundaries then you’ll not want to miss watching this demo-heavy session.

Taking High Performance Computing to the Cloud - Windows HPC and Azure
- 발표: Richard Ciapala
Scale-out or conveniently parallel HPC applications are well suited to running in Windows Azure. Windows HPC Server 2008 R2 SP1 provides a gateway for running existing HPC applications seamlessly on Azure. Learn how to develop Windows HPC Cluster SOA WCF-based applications, parametric sweep and MPI applications to run on Azure or a cluster. Different alternatives to handle data, storage, security, and troubleshooting these applications will be discussed. This session will also show developers how to set up a single box development environment for HPC Server applications, and how to provision compute nodes and Azure and monitor applications.

공식 홈페이지 바로 가기: http://www.microsoftpdc.com/
상세 정보 보기: http://player.microsoftpdc.com/

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

Windows Azure에서 Java 기반의 응용프로그램을 만들고 호스트할 수 있다는 이야기는 지속적으로 제시되어왔었습니다. 하지만, JSP 서블릿 페이지도 Windows Azure에서 호스트할 수 있을까요? Microsoft Architect로 활동 중인 David Chou가 작성한 블로그 포스트에 답이 있습니다. 오늘 제가 올리는 블로그 포스트는 다음 포스트에 대한 설명을 기초로 중요한 부분을 추출한 것임을 밝힙니다. (http://blogs.msdn.com/b/dachou/archive/2010/03/21/run-java-with-jetty-in-windows-azure.aspx)

Jetty (http://jetty.codehaus.org/) 프로젝트는 자바 기반의 오픈 소스 웹 서버로, HTTP 서버로서의 역할과 서블릿 컨테이너의 기능을 제공합니다. 정적, 동적 컨텐츠를 모두 지원하고, 독립적으로 실행할 수도 있고, 다른 프로세스에 부착되어 실행되는 기능 또한 제공됩니다. 이러한 특성을 바탕으로, Apache Project의 ActiveMQ, Cocoon, Hadoop, Maven Project, BEA Web Logic Event Server, Eucalyptus, FioranoMQ Java Messaging Server, Google AppEngine 및 안드로이드, Eclipse용 웹 툴킷 플러그인, 레드햇 J보스, Sonic MQ, 스프링 프레임워크, 사이베이스 EA서버, 짐브라 데스크톱 등 광범위하게 Jetty가 채택되고 있습니다.

Jetty 프로젝트는 아래와 같은 기능들을 제공합니다.

  • 비동기 HTTP 서버
  • 표준 지향의 서블릿 컨테이너
  • 웹 소켓 서버
  • 비동기 HTTP 클라이언트
  • OSGi, JNDI, JMX, JASPI, AJP 지원

응용프로그램 컨테이너의 관점에서 보면, Jetty는 전통적인 Java 기반의 Web Application Server들 (Tomcat과 같은)을 대치하는 배포 방법으로 사용될 수 있으며, 스프링 프레임워크 및 관련된 모든 파생 프로젝트들, EJB 컨테이너 등 대부분의 일반적인 웹 기반 자바 어플리케이션을 손쉽게 제공할 수 있는 것이 특징입니다.

Windows Azure에서의 Java 기술 지원

PDC'09 이후로 http://code.msdn.microsoft.com/winazuretomcat 웹 사이트를 통하여 Windows Azure 환경 위에서 Tomcat을 이용하여 JSP 기반 웹 응용프로그램의 구동 가능 여부와 샘플 코드를 지속적으로 홍보해왔었습니다. 그리고 이러한 사실을 바탕으로 http://blogs.msdn.com/jonbox/archive/2009/11/17/domino-s-demonstrates-tomcat-site-on-windows-azure.aspx 에서는 도미노 피자의 기존 피자 온라인 주문 웹 서비스를 Windows Azure 환경에서 구동하는 사례도 선보였습니다. 아래는 그동안 언급되거나 발표되어왔던 Windows Azure 환경에서의 Java 구동 방법에 관한 간략한 리스트입니다.

  • http://code.msdn.microsoft.com/winazuretomcat
  • http://www.interoperabilitybridges.com/projects/windows-azure-sdk-for-java.aspx
  • http://microsoftpdc.com/Sessions/SVC50
  • http://blogs.msdn.com/jonbox/archive/2009/11/17/domino-s-demonstrates-tomcat-site-on-windows-azure.aspx
  • 그러나 위에서 언급하는 Tomcat만이 Windows Azure 환경에서 사용할 수 있는 유일한 Web Application Server의 종류는 아닙니다. 사실, 위의 접근 방법들은 모두 Windows Azure Role에 함께 첨부되어 배포되는 Java 실행 환경 (JRE)를 기초로 하는 것이고, 그러므로 어떤 종류의 Java 패키지이든 관계없이 명령줄을 통하여 Classpath를 명시하는 방식으로 실행될 수 있습니다. 대개의 경우, 작업자 역할 (Worker Role) 패키지 위에서 실행되도록 디자인되고, Windows Azure 환경으로 배포될 수 있습니다. 그리고, 당연한 이야기이지만 Java와 Fast CGI를 결합하고, IIS 7.x를 기반으로 Fast CGI를 지원하는 Web Role을 이용할 수도 있습니다. 이 부분은 나중에 좀 더 자세히 소개하도록 하겠습니다.

    Windows Azure 환경에서 Jetty 실행

    아래는 실제 Windows Azure 환경에서 Jetty를 기반으로 실행하는 Windows Azure Worker Role의 구동 예시입니다.

    위와 같이 구현하기 위한 방법을 지금부터 차례대로 따라해보기로 하겠습니다.

    1. Windows Azure Worker Role 프로젝트를 만들고, Worker Role 진입점 메서드인 Run 메서드의 중심부에 다음과 같이 프로그래밍합니다.

    string response = "";
    try
    {
        System.IO.StreamReader sr;
        string port = RoleEnvironment.CurrentRoleInstance.InstanceEndpoints["HttpIn"].IPEndpoint.Port.ToString();
        string roleRoot = Environment.GetEnvironmentVariable("RoleRoot");
        string jettyHome = roleRoot + @"\approot\app\jetty7";
        string jreHome = roleRoot + @"\approot\app\jre6";
        Process proc = new Process();
        proc.StartInfo.UseShellExecute = false;
        proc.StartInfo.RedirectStandardOutput = true;
        proc.StartInfo.FileName = String.Format("\"{0}\\bin\\java.exe\"", jreHome);
        proc.StartInfo.Arguments = String.Format("-Djetty.port={0} -Djetty.home=\"{1}\" -jar \"{1}\\start.jar\"", port, jettyHome);
        proc.EnableRaisingEvents = false;
        proc.Start();
        sr = proc.StandardOutput;
        response = sr.ReadToEnd();
    }
    catch (Exception ex)
    {
        response = ex.Message;
        Trace.TraceError(response);
    }

    제가 이전에 게시한 글 "[Software Development/Windows Azure] - Windows Azure 들여다보기"에서 언급한 내용들을 참조하여 위의 코드를 보시면 이해하기 쉽습니다. 몇 가지 Windows Azure 환경에서 기본으로 제공되는 환경 변수, 디렉터리 설정 등을 바탕으로 Jetty 프로세스를 Java VM (java.exe)를 통하여 실행하도록 명령어를 구성하고 실행한 다음, 표준 출력의 내용을 Windows Azure Worker Role Process로 가져오도록 만드는 것을 볼 수 있습니다.

    2. Jetty 프로젝트와 Java VM의 최신 버전을 Windows Azure Worker Role 프로젝트에 추가합니다.

    다음 그림과 같이 폴더를 구성하면 되겠습니다. jetty7 폴더와 jre6 폴더 아래에 직접 해당 프레임워크 및 시스템의 실제 디렉터리 구조가 오도록 맞추면 문제 없습니다. 참고로, 확실하게 동작할 수 있도록 만들기 위하여 Java VM의 경우는 특별히 Windows Platform을 기반으로하는 x64 아키텍처 버전을 다운로드하여 아래 그림과 같이 넣어두어야 합니다. (중요)

    3. ServiceDefinition.csdef 파일 수정하기

    1단계에서 사용한 HttpIn이라는 설정을 Worker Role에 추가해야 하므로, ServiceDefinition.csdef 파일을 찾아 "WorkerRole" 요소 아래에 다음과 같이 내용을 추가하고 저장합니다. 참고로 이 설정은 Windows Azure Worker Role이 80번 TCP 포트 통신이 필요함을 Windows Azure 환경 내의 방화벽에게 통지하기 위한 목적으로 사용됩니다.

    <Endpoints>
      <InputEndpoint name="HttpIn" port="80" protocol="tcp" />
    </Endpoints>

    4. Windows Azure에서 사용할 수 있도록 Jetty 환경 설정

    Jetty가 사용되거나 환경 설정을 만드는 방법은 Windows Azure 환경에서 여러 가지가 있을 수 있지만, 특별히 이와 같이 Worker Role 위에서 Standalone Server로 동작하기 위하여 필요한 환경 설정이 있어서 이를 소개합니다. Windows Azure 환경에서는 Jetty가 기본으로 사용하는 NIO ChannelConnector 대신 BIO SocketConnector를 사용하도록 구성해야 합니다. NIO ChannelConnector에서는 내부적으로 루프백 연결을 기초로 하지만 Windows Azure 환경에서는 이것이 가로막혀있기 때문이라는 것이 David Chou의 설명입니다.

    이러한 설정을 수정하기 위해서는 Jetty 패키지 디렉터리 아래의 etc 디렉터리의 jetty.xml 파일을 수정해야 하며, <New> 태그의 class attribute를 org.eclipse.jetty.server.nio.SelectChannelConnector 대신 org.eclipse.jetty.server.bio.SocketConnector로 변경하고, NIO ChannelConnector에만 한정되는 몇 가지 옵션을 제거하는 방법으로 변경이 가능하며 정리하면 다음과 같습니다.

    <Call name="addConnector">
      <Arg>
        <New class="org.eclipse.jetty.server.bio.SocketConnector">
          <Set name="host"><SystemProperty name="jetty.host" /></Set>
          <Set name="port"><SystemProperty name="jetty.port" default="8080" /></Set>
          <Set name="maxIdleTime">300000</Set>
        </New>
      </Arg>
    </Call>

    그리고 좀 더 최적화된 설정을 위하여, Jetty가 자체 로그를 기록하지 않도록, etc 디렉터리의 jetty.xml 파일에서 RequestLog 핸들러 부분을 주석으로 처리하고, 확장자가 war인 패키지의 압축을 풀지 않도록 etc 디렉터리의 jetty.xml 파일에서 addBean "org.eclipse.jetty.deploy.WebAppDeployer"의 "extract" 프로퍼티의 값을 "false"로 지정하고, contexts 디렉터리의 test.xml 파일에서 <Set name="extractWAR"> 부분의 프로퍼티 값을 "false"로 지정하였다는 것이 저자의 설명입니다.

    이러한 설정들이 모두 적용된 실제 샘플은 http://cid-b43074894ffe6264.skydrive.live.com/self.aspx/.Public/Projects/JettyCloudService.zip 에서 다운로드받아보실 수 있습니다. :-)

    마무리

    Windows Azure Platform이 Microsoft의 기술이므로 철저히 .NET Framework 기반의 응용프로그램 개발만을 지원할 것이라는 편견은 종합적으로 "잘못된 것입니다." Windows Server 2008 R2의 기술을 기반으로 하고 있기 때문에, 여러분의 응용프로그램이 Windows Server 2008 R2, 그리고 64비트 환경에서 성공적으로 수행될 수 있는 조건을 갖추고 있다면 Windows Azure Platform은 성공적으로 여러분들의 클라우드 컴퓨팅으로의 계획을 이끌어 줄 수 있을 것입니다.

    만약 좀 더 심층적인 예제나, Tomcat 기반의 Windows Azure 구동 사례를 보기 원하신다면, http://code.msdn.microsoft.com/winazuretomcat 를 방문하셔서 샘플 코드와 문서를 다운로드하시기를 권합니다.

    감사합니다. :-)

    저작자 표시 비영리 동일 조건 변경 허락
    크리에이티브 커먼즈 라이선스
    Creative Commons License
    Posted by Windows Azure MVP 남정현 (rkttu.com)