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)

오늘 도착한 ZDNET 코리아 메일링 리스트를 통해 아주 흥미로운 웹 캐스트가 하나 게시되었습니다. Delphi Prism은 Embacadero의 최신 Rapid Application Development Tool로서 종전의 Delphi .NET에 대한 업그레이드 제품이자, RemObjects사의 Object Pascal 제품의 최신 버전입니다. Visual Studio Shell을 통하여 이전 버전의 Delphi IDE에서 사용헀던 .NET 개발 환경때 보다 더 풍부하고 확장된 기능을 제공하기도 하고, 특히 이번 XE 버전에서는 MonoDevelop 기반의 IDE도 동시에 지원하고 있어서 기능성이 매우 돋보이기도 합니다.

이 동영상에서 소개하는 기술들에 대해 간단히 요약하면, 리눅스, 솔라리스, 맥 OS X에서 데스크 탑 및 서버 닷넷 프레임워크 대체 구현을 제공하는 Mono 프레임워크 (http://mono-project.com/Downloads), 상용 제품군으로 판매되는 MonoTouch (http://monotouch.net/) SDK, 맥 OS X 환경에서 구동 가능한 iPhone 및 iPad SDK (http://developer.apple.com/iphone/), 그리고 Embacadero Delphi Prism XE (http://www.embarcadero.com/products/delphi-prism)를 활용하여 iPhone과 iPad에서 실행 가능한 응용프로그램을 디자인하는 것입니다. 이 중에서 상용 라이선스가 필요한 것은 MonoTouch와 Delphi Prism XE가 되겠습니다.

만약 Delphi가 아닌 C#을 이용하여 응용프로그램을 개발하기 원한다면 Delphi Prism XE 대신 MonoTouch와 함께 제공되는 기본 IDE인 MonoDevelop 만으로도 충분한 개발이 가능합니다.

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

최근 열린 Professional Developer Conference 2010 (이하 PDC 2010)에서, Windows Azure Platform의 실행 환경을 담당하는 Windows Azure Compute에 획기적인 기능이 추가되었습니다. 바로 VM Role의 추가인데, 여기에는 상당히 시사하는 점이 많습니다. VM Role은 이전 글 "[Software Development/Windows Azure] - PDC 2010에서 공개된 Windows Azure 업데이트"의 내용에서 소개했던 것 처럼 Windows Server 2008 R2 기반의 서버 컴퓨터를 Physical Machine to Virtual Machine (이하 P2V) 기술을 통해 Windows Azure에서 실행 가능한 Cloud Computing Appliance로 변환할 수 있습니다.

이 덕분에 좀 더 많은 종류의 서버 응용프로그램이 Windows Azure Platform의 수혜를 얻을 수 있게 됩니다. 이 중에는 기존의 전통적인 Microsoft Back Office Server들에 대한 것은 물론이거니와, 이전에 우리에게 Service For Unix라는 이름으로 잘 알려진 Microsoft의 Unix 호환성 도구인 SFU 및 SUA의 이점을 충분히 활용할 수 있게 될 것입니다. 즉, 기존에 FreeBSD, NetBSD, Linux, POSIX용 응용프로그램을 성공적으로 Windows Server 기반의 응용프로그램으로 마이그레이션할 수 있었다면, 약간의 수정을 통하여 성공적으로 Public Cloud Computing을 위한 응용프로그램으로도 출사표를 낼 수 있음을 뜻합니다.

SFU 및 SUA가 혹시 낯설다면, Cygwin 프로젝트를 참조하셔도 좋습니다. 그리고, 당연한 이야기이지만 Cygwin 프로젝트 기반의 유닉스 응용프로그램에게도 같은 혜택이 제공될 수 있습니다.

아래는 SUA 설치 과정 및 SUA에 대한 설명 동영상입니다. SUA Community 웹 사이트 http://www.suacommunity.com/ 에 방문하시면, SUA 위에 추가 설치 가능한 주요 유틸리티 패키지들을 더 추가하실 수 있으므로 요즈음 널리 사용되는 유닉스 기반 인기 유틸리티들을 Windows에서도 사용하실 수 있습니다. 아래 동영상은 SUA Community에서 제작한 동영상이며 저작권은 해당 원 저작자에게 있음을 밝힙니다.

SUA Installation Video

SUA Familization Video

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

가상 PC 패키지를 만드는 작업은 상당히 손이 많이 가고 시간도 오래걸리는 작업 중에 하나입니다. 하지만 이러한 작업을 단순화하고 웹 기반으로 손쉽고 정확하게 처리해주는 획기적인 서비스 하나가 등장하였습니다. SuSE Studio가 그 주인공인데, 오픈수세 리눅스 배포판을 기반으로 하는 어플라이언스를 만들어줍니다.

http://susestudio.com/

다음은 DEMO 영상입니다.

최근 배포되는 Mono Framework의 가상 어플라이언스 역시 이 서비스를 기반으로 제작된 것입니다. 향후 Mono와 Linux 기반으로 닷넷 응용프로그램을 작성하여 시장에 공개하거나 판매할 요량으로 가상 PC 패키지를 만들 일이 있으시다면 이 서비스를 적극 활용하시면 좋겠습니다. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)

지난번에 이어서 이번 글에서는 MonoDevelop을 이용하여 지역화 프로그래밍을 다루는 방법을 소개하고자 합니다. 이미 이전 글에서 언급하였듯이 Mono에서는 지역화를 위하여 libintl 기반의 프로그래밍 기법을 사용합니다. Microsoft .NET Framework가 사용하는 방법과는 다소 차이가 있으며 접근 방법도 조금 다릅니다.

국제화 기능을 적용해보기 위하여 새로운 프로젝트를 하나 만들어 보도록 하겠습니다.

사용자 삽입 이미지

새로운 프로젝트를 여느떄와 같이 작성합니다.

사용자 삽입 이미지

하단의 Translation 항목을 체크하면 추가할 지역화 대상 언어를 관리할 수 있는 리스트박스와 UI가 나타나는 것을 볼 수 있습니다. Add 버튼을 클릭합니다.

사용자 삽입 이미지

언어와 함께 지역 코드를 선택할 수 있는 세부 대화 상자가 나타납니다. 우리가 여기서 시험해 볼 것은 단순한 번역이므로 지역 코드는 사용하지 않고 언어만을 선택하기로 합니다. Korean (한국어)를 선택하고 OK 버튼을 클릭합니다. 같은 방법으로 Japanese (일본어)도 추가합니다.

사용자 삽입 이미지

C# 프로젝트 외에 지역화 프로젝트가 추가된 것을 볼 수 있습니다. 지역화 프로젝트를 사용하기 전에 C# 프로젝트에도 약간의 추가 작업이 필요하므로 다음 단계를 계속하기로 합니다.

사용자 삽입 이미지

C# 프로젝트의 References 폴더를 오른쪽 버튼으로 클릭한 다음, "Edit References" 메뉴를 클릭하면 위와 같이 대화 상자가 나타납니다. 수많은 어셈블리 참조들이 있는데 이 중에서 Mono.Posix 항목 앞의 체크 박스를 클릭하고 OK 버튼을 클릭합니다. Mono.Posix 어셈블리의 유틸리티 클래스를 기준으로 번역할 메시지를 찾고, 여기에 맞는 파일을 제공할 수 있습니다.

사용자 삽입 이미지

C# 코드 편집기에서 사용이 편할 수 있도록 Mono.Unix 네임스페이스를 using 절에 추가합니다. Mono.Unix 네임스페이스를 가지고 프로그래밍하는것은 잠시 후에 다시 살펴보겠습니다.

사용자 삽입 이미지

이번에는 국제화 프로젝트 항목을 오른쪽 버튼으로 클릭하여 Options 메뉴를 클릭합니다.

사용자 삽입 이미지
 

Init String 항목을 잘 살펴보시기 바랍니다. 이 항목에 나타나있는대로 libintl을 초기화해야 실질적인 연동이 가능합니다. 여기서 참고해야 할 것은, 지역화 프로젝트도 여러 개가 존재할 수 있다는 점입니다. Package Name 부분을 달리 설정하면 이러한 내용이 반영됩니다. Package Name을 입력하면 Init String 항목도 같이 바뀌는 것을 볼 수 있습니다.

사용자 삽입 이미지

위의 Init String 항목의 내용을 기억하여 호출할 때 전달할 인수를 정확히 지정해야 합니다. 아래는 C# 코드에서 카탈로그를 실제로 초기화한 예제입니다.

사용자 삽입 이미지

이렇게 함으로서 런타임 상에서의 libintl 연동이 가능해졌습니다. 그렇다면 실제로 다국어 번역을 어떻게 이끌어낼 수 있을까요?

사용자 삽입 이미지

Catalog 클래스 내의 GetString 메서드를 사용하여 기준이 되는 영어 문장을 먼저 입력합니다. 만약 복수 명사를 구분하여 취급할 필요가 있다면 GetPluralString을 대신 이용합니다. 여기서는 간단한 인사 메시지 번역을 해볼 것이므로 GetString 메서드를 이용합니다. 번역할 대상이 있으면 GetString 메서드에 전달된 인수에 대응되는 국제화 프로젝트 내의 실제 문자열로 치환되어 반환될 것이며, 그렇지 않으면 Fallback 모드로 대응되어 전달한 인수 그대로 반환됩니다.

사용자 삽입 이미지

C# 프로젝트를 우선 다시 빌드합니다. 문법적인 오류가 없음을 확인합니다.

사용자 삽입 이미지

이어서 국제화 프로젝트를 오른쪽 버튼으로 클릭한 뒤 Update Translations 메뉴를 클릭하여 번역 대상 문자열 리소스들을 MonoDevelop가 수집할 수 있도록 명령을 내립니다.

사용자 삽입 이미지

이제 시험삼아서 일본어 PO 파일을 열어보겠습니다. 놀랍게도, Catalog.GetString 메서드로 호출한 대상 메시지만을 정확하게 가져온 것을 볼 수 있습니다. 이제 Translated 란에 해당 일본어 메시지를 입력하고, Comments에 약간의 부연 설명도 달아봅니다. 만약, 번역이 어려운 상태의 문장이라면 상단의 리스트 뷰에서 Fuzzy 열의 체크 박스를 클릭해놓아도 됩니다.

사용자 삽입 이미지

이제 같은 방법으로 한국어도 번역을 완성합니다. 참고로, MonoDevelop VMware Image에서는 기본적으로 한국어/일본어/중국어 입력이 지원되지 않는데 이를 해결하기 위하여 전용 IME를 설치하지 않는 대신 호스트 컴퓨터에서 해당 문자열을 클립보드로 복사하여 가상 머신에 붙여넣기하는 방식으로 가져왔습니다. :-)

사용자 삽입 이미지

다국어 프로젝트를 다시 빌드하도록 합니다. 다국어 프로젝트의 산출물은 EXE 파일이나 DLL 파일 외부에 배포되기 때문에 별도로 빌드해야 합니다. 이제, 콘솔을 열어서 해당 디렉터리까지 이동해 봅니다.

우리가 작성한 로케일 파일인 ja와 ko 파일이 있는 것을 볼 수 있습니다. 우선 일본어 파일의 내용을 제대로 반영하고 있는지 확인해보기 위하여 다음과 같이 명령을 내립니다.

  LANGUAGE=ja mono i18n_test.exe

그리고 한국어도 같은 방법으로 테스트할 수 있습니다.

  LANGUAGE=ko mono i18n_test.exe

만약 LANGUAGE 변수 설정 없이 시작하면 어떨까요? 기본 문자열이 나타나겠지요. :-)

** 노트: 정정사항이 있습니다. 다음 그림에서처럼 빌드 유형에 대하여 실행 방법을 정의하여 외부 콘솔 프로그램에서 띄워볼 수 있도록 할 수도 있습니다.

사용자 삽입 이미지

다음번에는 GTK# 디자이너인 Stetic을 이용한 간단한 응용프로그램 디자인 및 테스트를 다루어보기로 하겠습니다. 감사합니다. :-)

크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by Windows Azure MVP 남정현 (rkttu.com)