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에서도 이용할 수 있을 것으로 보입니다.
뜬금없이 근두운 이야기가 무엇인가 하고 놀라는 분들이 있으리라 생각한다. 이해가 빠른 분들이 계실 것이므로 단도직입적으로 말하면, 필자가 의도한 그대로, Cloud Computing 이야기를 하고자 했던 것이다. 우리의 머릿속 한 구석에 큰 존재감을 과시하며 차지하고 있는 전설 속 원숭이 손오공의 근두운을 IT 세상에서는 누구나 하나씩 다 가지고 있는 것이다.
여러분이 사용하고 싶어하는 근두운의 종류 또한 다양하다. 그래서 앞서 설명했던 Windows Live, Windows Server 기반 Private Cloud, Office 365가 있었고, 오늘은 마지막으로 개발자와 IT 전문가들의 관점에서 적극적으로 검토해 볼 가치가 있고 든든한 파트너 역을 맡아줄 Windows Azure Platform이라는 근두운을 이야기해볼 생각이다.
IT 관리자의 관점에서 보는 Windows Azure Platform
PDC08에서 처음 소개된 Windows Azure Platform은 전적으로 개발자의 역할을 중시했던 플랫폼이었다. 이는 PDC09, 그리고 PDC 2010 직전까지도 지속되었고 꾸준히 그 색을 더해 나가고 있던 과정이었다. 하지만 PDC 2010에서 처음으로 세간에 루머로만 떠돌던 VM Role이 공식적으로 사용 가능하게 베타 서비스로 출시되었고 이에 따라 IT 관리자들의 관점에서도 Windows Azure Platform을 활용할 수 있는 기회가 대폭 늘어나게 되었다.
Windows Azure Platform이 IT 관리자들에게 제공하는 주요 이점은 한 마디로 정리하면 기존의 IT 자산과 맞물려 사용할 수 있는 다양한 기회를 제공한다는 점이다. Microsoft의 Public Cloud는 모든 것을 Cloud로 올려야 한다고 말하지 않는다. 대신, 네트워크 수준에서의 통합부터 시작하여 Cloud 내부 및 외부에서 발생할 수 있는 문제를 다양한 방법으로 해결할 수 있도록 도와준다.
Windows Azure의 VM Role은 On-Premise 시스템을 분리 해체하는 작업을 거치지 않고 곧바로 Windows Azure 데이터센터에 서버를 올려놓는 방법이다. 기존에 먼저 소개된 Web Role 및 Worker Role과 달리 Windows Server 2008 R2 운영 체제 전체를 하나의 완전한 Role로 채택하여 사용할 수 있는 기법으로, 여러분이 기존에 어떤 라이선스를 가지고 있던지 관계없이 Windows Azure VM Role 라이선스로 전환할 수 있도록 해준다.
매우 이상적인 이야기처럼 들릴 수도 있지만 사실 중요한 문제가 두 가지가 있다. 라이선스에 관한 것이 있고, 또 다른 하나는 기술적인 구성 상의 문제이다. 다음의 표에 대략적인 내용을 언급해두었다.
구성 요소 및 역할
변경 방향
3rd Party Software
Plan A: Public Cloud 호환 라이선스로 재계약
Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합 / 단 Traffic 추가로 인한 변동 사항은 해당 공급자와 재 협상 필요
3rd Party Software Data
SQL Server Embedded DB
è MDF 및 LDF 파일을 SQL Server에 연결하고, 해당 DB를 SQL Azure로 이관해야 함
è MDB 파일이나 ACCDB 파일의 경우 SQL Server로 이관 후 SQL Azure로 이관해야 함
기타 데이터베이스
è 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합
SQL Server
Plan A: SQL Azure로 부분/전체 Migration
Plan B: 관계 지향적이지 않고 대용량 DB가 필요한 경우 Windows Azure Table Storage 사용
Plan C: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합
Exchange Server
Plan A: Office 365로 부분/전체 Migration
Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합
SharePoint Online
Plan A: Office 365로 부분/전체 Migration
Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합
Lync Online
Plan A: Office 365로 부분/전체 Migration
Plan B: 기존 서버를 유지하고, Windows Azure Connect로 네트워크 통합
Active Directory
AD DS, AD LDS 모두 기존의 On-Premise 시스템을 Windows Azure Connect를 경유하여 활용하는 것이 최선
라이선스에 관한 문제의 본질은 다음과 같다. Windows Azure Compute를 통해서 서비스가 실행되면, Service Level Agreement (SLA) 계약 이행을 위하여 기본적으로 VM을 1대 이상 사용하는 것을 전제로 한다. 최소 1대만을 유지하도록 설정해도 상관은 없지만, 필연적으로 사용량이 증가하고 서비스를 위하여 배치된 VM들의 상태가 바빠지는 것이 감지되면 자동적으로 Fabric Controller가 원본 VM 이미지를 복제하여 새로운 VM을 복제하기 시작한다. 이것이 의미하는 바는 단순하다. 물리적인 Instance의 수가 자동으로 늘어나므로 그 안에 포함된 3rd Party 소프트웨어에 대한 라이선스도 같이 계산되어야 하고, 그것이 CPU 기반 라이선스이든 연결 개수 기반 라이선스이든 상관이 없는 것이다. 양쪽 라이선스 모두 있는 그대로 (as-is) 해석을 한다면 Public Cloud 내에서는 상식을 넘는 금액을 요구할 수 밖에 없다.
이를 해결하기 위해서는 해당 소프트웨어 공급자가 Public Cloud에 대응되는 사용량 – 또는 – 사용 시간 기반 라이선스를 지원해야 하며, 대다수의 경우 이를 지원하지 않을 것이므로 이러한 소프트웨어를 포함하는 서버를 On-Premise 환경에 배치하고, 이들 서버에 대한 종속성을 지니는 별도의 VM Role, Web Role, Worker Role 만을 Windows Azure에 게시한 후 Windows Azure Connect로 상호 연동을 가능하게 만드는 것이 최선이다.
기술적인 문제의 본질은 다음과 같다. 주로 데이터베이스에 대한 부분과 관련이 깊은데, Windows Azure가 SLA 이행을 위하여 VM을 복제하고, 복제된 VM들의 목록을 기준으로 Load Balancer를 구현하는 것은 매우 바람직한 일이다. 그러나 기존의 서버 모델은 개별 서버가 데이터베이스까지 서버 내에 같이 포함하고 있는 경우가 많은데 여기에 대한 적당한 조치를 취하지 않고 그대로 VM Role로 전환하는 경우 우스꽝스러운 문제가 발생한다. 접속할 때 마다 데이터베이스의 내용이 달라지는 일이 발생하는 것이다. 이를 해결하기 위해서는 사용 중인 데이터베이스의 종류를 파악하는 것이 중요한데, SQL Server로 이관이 가능한 범주 안에 있는 데이터베이스들은 우선 SQL Server로 이관한 후, 이를 SQL Azure로 다시 이관하는 작업이 필요하다. 그리고 기존 응용프로그램들도 SQL Azure를 데이터 소스로 사용할 수 있도록 일부 수정이 필요하다.
SQL Azure로 이관하는 것을 누구나 쉽게 검토해볼 수는 있다. 그러나 생각 외로 만만찮은 문제들이 쌓여있다. 기존에 사용하던 자료 형식 중 CHAR, VARCHAR, TEXT와 같이 유니코드와 호환되지 않는 문자열 자료 형식들은 이관 후 CJK 문자 세트로 구성된 데이터가 소실되므로 NCHAR, NVARCHAR, NTEXT로 업그레이드해야 한다는 부분이 있다. 날짜와 시간의 경우 이관 이전과 이관 이후의 시간대 설정 차이가 있으므로 데이터 일관성에 문제가 있을 수 있다는 점이다. 드문 경우이지만, .NET 어셈블리는 SQL Azure에 설치할 수 없으므로 이와 관련된 기능을 사용하는 경우 SQL Azure로 이관하기 전 적당한 Wrapper나 Agent를 따로 개발해야 한다. 또, 기존의 응용프로그램이 데이터베이스 연결을 헤프게 사용하는 경향이 있다면 SQL Azure 입장에서는 예고 없이 연결을 차단시킬 수 있다는 점도 숙지해야 한다. SQL Azure 서비스 자체는 공유 환경에서 실행되므로 SQL Server 인프라와는 비교할 수 없이 엄격한 정책 준수를 요구하는데, 사실 이 때문에 낭패를 보는 경우가 많다. 이런 모든 문제들을 극복하기 위해서, 데이터베이스 역시 특별한 이슈가 없다면 Windows Azure Connect를 사용하여 기존 On-Premise 환경과 구분선 없이 밀착시키는 것이 좋을 수 있다.
사실 지금 언급한 내용들만 이야기해도 Cloud로 이관하는 것보다는 이관하지 않는 것이 더 좋은 것처럼 들린다. 그래서, IT 관리자 입장에서는 무리해서 기존의 인프라를 Cloud로 이관하기 보다, 기존의 인프라나 IT 자산으로는 충당할 수 없는 새로운 영역을 Cloud를 통해 개발하고 확보하는 방법을 새로 익히는 것이 좋다. 그런 맥락에서, IT 관리자들은 Cloud 환경에 최적화된 VM-Role을 개발하는 방법을 익히고, VM-Role이 Windows Azure Connect를 통하여 기존의 Active Directory Domain Controller에 참가하도록 시스템을 구성하거나, 웹 상에서의 클레임 기반 인증을 구현할 목적으로 Active Directory Federation Services (AD FS)와 Windows Azure AppFabric Access Control을 같이 활용하는 방안을 모색하는 것이 바람직하다.
응용프로그램 개발자 관점에서 보는 Windows Azure
원래부터 그러했지만 Windows Azure는 개발자들을 위한 Cloud 플랫폼이었다. 여러 서비스들이 있지만 각각의 역할을 하나씩 소개하려 한다.
Windows Azure Compute: Windows Azure 데이터센터에서 여러분의 응용프로그램을 Hosting할 수 있도록 해주며, IIS를 활용하여 웹 응용프로그램을 실행할 수 있도록 해주는 Web Role, WCF, Socket, C, C++, Python 등 Win32 기반 시스템에서 사용 가능한 모든 종류의 응용프로그램을 실행할 수 있도록 해주는 Worker Role, 그리고 VHD 기반 이미지를 이용하여 Windows Server 2008 R2 OS를 실행할 수 있도록 해주는 VM Role을 하나의 서비스 안에서 다양한 방법으로 조합하여 실행할 수 있는 서비스이다. Windows Azure SDK에서는 VM Role을 제외한 Web Role과 Worker Role 에뮬레이터가 기본 제공된다.
Windows Azure Storage: 대용량의 데이터를 고속으로 처리할 수 있도록 해주는 특별한 저장소로, HTTP 및 HTTPS 프로토콜을 기반으로 상호 작용할 수 있기 때문에 플랫폼이나 위치에 제약이 없다. 저장소의 유형으로는, 단순 파일 저장 및 대용량 파일의 Paging 연산을 지원하는 BLOB 저장소, 행과 열의 대규모 집합 및 고속 인덱싱을 지원하는 테이블 저장소, 고속 메시지 입력 및 출력을 지원하는 큐 저장소로 구분된다. 저장소의 범주에 속하지는 않으나, Windows Azure Compute 상의 Role들이 Win32 API를 사용하여 파일 입력과 출력 연산을 수행할 수 있도록 해주는 Cloud Drive API가 Windows Azure Storage Emulator와 함께 제공된다.
Windows Azure CDN: 대한민국 및 아시아 권역에서 빠른 속도를 자랑하는 새로운 CDN 서비스 역시 Windows Azure Platform 안에 있다. 기본적으로는 Windows Azure Blob Storage에서 공개 권한으로 설정한 Block BLOB에 대해 CDN 서비스를 사용할 경우 자동으로 Mirroring이 된다. 최근 업데이트에서는 Windows Azure Storage가 아닌, 동적으로 API를 사용하여 특정 Contents를 CDN 서비스를 통해 Mirroring할 수 있게 업데이트되었고, 더불어 HTTPS도 지원하기 시작하였다.
Windows Azure AppFabric: 대규모 서비스 운영에 필요한 주요 서비스 컴포넌트 5가지를 제공하는 온라인 서비스로, Windows Server AppFabric의 기술을 바탕으로 하지만 외부에 드러나는 모습은 많이 다르다.
Windows Azure 초창기부터 지속적으로 제공되어왔던 Service Bus는 Point-to-Point 연결을 구현하는 Tunneling Mechanism을 제공한다. WCF 기술을 기반으로 하며, 서버 역할을 수행하는 WCF 호스트가 Service Bus와 연결을 맺은 뒤, WCF 클라이언트는 직접 WCF 호스트에 접근하지 않는 대신, 암호화된 연결을 사용하는 Service Bus로 방향을 바꾸어 접속을 시도하는 방식이다. 이러한 방식이 유용한 이유는, 방화벽의 존재 여부와 관계없이 네트워크 계층에 일관성이 없는 서로 다른 환경 사이를 완벽하게 연결시켜주기 때문이다.
Access Control 서비스는 또 한 번 업데이트를 준비 중에 있다. 처음 발표된 Access Control은 특정 도메인이나 기관이 운영하는 Active Directory 인프라를 기반으로 인터넷 상에서 클레임 기반 인증을 구현하기 위한 목적으로 처음 소개되었다. 인터넷 서비스를 상대로 클레임 기반 인증을 수행하는 것이기 때문에, 인트라넷 환경과는 달리 수시로 Traffic이 발생하며, 뿐만 아니라 신뢰성도 매우 중요하기 때문에 Azure AppFabric Access Control이 유용하다. 그리고 조만간 대대적인 업데이트를 통하여 Windows Live ID, Yahoo, Google, Facebook 등의 Social Networking Platform을 인증 수단으로 사용할 수 있게 되어 한층 더 폭넓은 활용 가능성을 제공한다.
Cache 서비스는 Server 버전의 AppFabric Cache를 Cloud 버전으로 제공하는 것으로, Cache를 위한 인프라를 직접 구축하지 않으면서, 같은 API, 같은 기술을 사용할 수 있는 것이 장점이다. Windows Azure Storage와 SQL Azure를 AppFabric Cache 원본으로 지정하여 사용할 경우 시간과 비용을 획기적으로 절약할 수 있다. 그리고 올해 연중으로 BizTalk Server와의 연계를 고려한 AppFabric Integration 서비스와 함께 Cloud Computing 전반을 통솔하고 제어할 수 있는 AppFabric Composite App 역시 출시될 예정에 있다.
물론 아직 부족한 서비스들도 있다. 그렇지만 이 정도 수준의 서비스라고 한다면 누구나 원하는 서비스를 제약 없이 구현해 볼 수 있지 않을까? 프로그래밍 언어나 개발 도구에 관계없이, 그리고 여러분이 실행하는 프로그램의 위치와 무관하게 말이다. 다시 강조하지만, Microsoft의 Public Cloud는 다른 Cloud Platform들처럼 강제 이주를 논하지 않는다. 모든 것은 여러분의 결정에 따라 움직이며, 매번 적절한 솔루션은 Microsoft에 의해서이든 오픈 소스 커뮤니티에 의해서이든 쓰여지고 업그레이드되어 나가고 있다. Microsoft가 말하는 Cloud Power의 진가를 확인하고 싶다면 지금 곧 Windows Azure Platform으로 떠나보자.
지난 글에서는 Windows Live, Live@edu, Office 365를 통하여 사람들이 가정에서, 학교에서, 그리고 직장에서 Cloud Computing과 어떻게 친하게 지낼 수 있는지를 살펴보았다. 오늘은 기업 내에서 충실하게 제 몫을 다하고 있는 전산 자원들을 Cloud Computing 환경에 맞도록 업그레이드시키기 위한 방법인 가상화에 대하여 살펴보려고 한다. 가상화는 Cloud Computing의 한 축을 이루는 중요한 기술이다.
일각에서는 Cloud Computing의 도래를 두고, Microsoft나 유명 IT 기업들만의 잔치판이 될 것이므로 기업 내에서 일하는 모든 IT 전문가와 개발자들이 스스로 사표를 내도록 종용 당하게 만들 것이라고 좌절하는 목소리가 심심치 않게 들려온다. 그러나 필자의 생각은 다르다. 오히려 이전보다 더 뛰어나고 완벽한 IT 기술을 필요로 하게 될 것이며, 한 층 더 자동화되고 지능적인 시스템과 같이 일할 수 있도록 해야 하며, 사실 지금이 바로 열심히 여러분의 이력서의 새 버전을 작성해야 할 때인 것이다.
가상화에 대한 이해
이 글을 읽는 독자 대다수는 집에서 여러분의 배우자나 어머님께서 설거지하시는 모습을 잘 기억하고 있을 것이다. 그릇을 닦기 위하여 수세미를 사용하고, 그릇에 묻어있는 기름기를 걷어내기 위하여 매직 블록을 조각 내어 주방 세제에 묻혀 사용하는 그런 모습 말이다. 필자는 서버 가상화를 설명하는데 이보다 더 좋은 소재는 없다고 생각한다.
방금 이야기한대로 서버 가상화는 멀티 코어로 확장되는 엄청난 성능의 서버 컴퓨터를 효율적으로 사용할 수 있도록 도와주는 매우 똑똑한 전략이다. 매직 블록을 통으로 다 쓰는 것보다는, 잘게 조각 내어 여러 차례 필요한 만큼 사용하는 것이 더 오래 쓰고 좋은 세척 능력을 보여준다. 이전과는 다르게 서버 컴퓨터도 이러한 방법으로 나누어 쓰는 것이 대세인 시대가 되었다. 그렇지만 이를 어떻게 나누고 관리할 것인가?
응용프로그램 개발자들에게 있어서 이 질문에 대한 답은 병렬 프로그래밍 기법이다. 병렬 프로그래밍 그 자체는 이전부터 계속 사용이 가능했던 기법이었지만 최근에 중요한 변화를 맞이하게 되었다. 병렬 프로그래밍은 엄밀히 말하면 사람이 인지하기 어려울 정도로 빠른 속도로 사용자가 컴퓨터에게 지시하여 형성한 문맥들을 회전하면서 작업을 처리하는 것으로, CPU의 발전 과정과 연계를 지어보면 쉽게 이해할 수 있다. 초창기의 CPU들은 회전의 빠르기를 뜻하는 주파수가 높지 않았기 때문에 많은 작업을 할 수 없었지만, 어느 순간에 이르러서는 단일 CPU가 GHz 단위까지 주파수를 높여서 만족스러운 성능을 보여주기도 하였다. 그러나 속도가 아무리 빠르다 한들 결국 문맥들 사이를 전환할 수 있는 성능 상의 임계는 변치 않기 때문에 이를 원점에서 극복할 수 있도록 다중 CPU의 시장 진출이 활성화된 것이다. 이에 따라 여러 개의 CPU를 기본적으로 운영 체제의 재량에 따라 활용할 수 있는 기회가 생겼고, 응용프로그램 개발자들에게도 같은 기회가 주어진 셈이다.
서버 가상화는 여기에서 출발한다. 운영 체제가 사용자에게 제공할 수 있는 병렬 연산은 두 가지로 볼 수 있는데, 비교적 실행 시간이 짧거나 유한한 범위 내에서 작업이 완료될 수 있는 알고리즘의 병렬화를 커버하기 위한 Multithread 연산은 개발자들을 위한 영역이다. 그러나 유한한 시간 내에 종결되는 작업이 아닌, 독립적인 세션을 만들어서 운영하는 방법도 필요했는데 그것이 가상화 기술이다. 초창기의 가상화 기술은 Emulation에 가까웠던 것으로 다른 시스템의 동작을 모방하여 특정 프로그램이나 동작을 재현하는 경우가 많았다. 그러나 시간이 흐를수록 좀 더 실용적으로 가상화 기술을 개발하기 시작하여 실제로 사용할 수 있는 형태로 만들기 시작하여 현재의 가상화 기술에 이르게 되었다. 이러한 가상화 기술을 Hypervisor라고 하며, 우리가 흔히 이해하는 것은 Type 2의 개념이고, 요즈음 주목을 받는 것은 Type 1의 개념이다.
Type 1과 Type 2 사이의 차이점은 한 마디로, 가상화 기술을 사용자에게 서비스하는 관점의 차이이다. Type 2의 경우 사용자는 가상화 기술을 하나의 하위 응용프로그램으로 보는 구조이고, Type 1은 가상화 기술로 생성된 다수의 독립적인 서브 시스템 앞에 사용자가 한 명 이상 접근하는 구조이다.
사실 Type 1의 Hypervisor 자체는 1960년대부터 지속적으로 개발해온 시스템이지만, 일부 고가의 하드웨어에 한정되는 사양이었기 때문에 많은 관심을 받지 못하였다. 뿐만 아니라 일반 PC에서 이를 구현하기에는 성능도 부족하였고, 또한 일반 PC에서 실행되는 운영 체제의 전부를 Type 1의 가상화를 구현하는 데에 모두 바치는 것 또한 굉장한 낭비였기 때문이다. 그러나 PC 및 Workstation Computer의 사양이 드디어 이런 기능을 구현하기에 충분한 수준까지 이르게 되면서 다시금 주목 받게 된 것이다.
가상화를 구현하는 방법에 있어서는 전 가상화와 반 가상화로 나눌 수 있는데 전 가상화는 동일한 아키텍처의 시스템을 하나의 격리된 영역에서 다시 구축하는 것을 말하는데, CPU, BIOS 등 가장 하단에 위치하는 하드웨어까지 Emulation을 하는 것을 말한다. 가상화를 통하여 모든 운영 체제를 완전히 독립적으로 실행할 수 있는 것은 이런 사양을 전제로 하기 때문이다. 그러나 전 가상화 이외에도 호스트 시스템과의 상호작용, 연동 제어 등의 요구 사항이 실제로는 더 필요했기 때문에 가상과 실제 사이의 경계를 가로지를 수 있는 인터페이스가 필요한데 이를 반 가상화를 통하여 구현하고, 반 가상화 기술을 통하여 가상 환경 상의 성능 저하를 개선하는 경우도 있다. 즉, 현실과 타협한 것이 반 가상화에 의한 구현인 셈이다.
반 가상화를 구현하는 방법은 가상화 기술 제조 업체마다 차이가 많지만, 호스트 운영 체제를 처음부터 가상화 기술을 잘 수용할 수 있도록 개조하는 방법이 있고, 기본 목적을 유지하면서 확장된 아키텍처를 수용할 수 있도록 확장하는 방법이 있는데, Microsoft의 Hyper-V는 후자에 속하는 방법을 제공한다. 뿐만 아니라 Windows Server Core 환경 위에도 Hyper-V Hosting 기능을 제공하여 호스트 컴퓨터가 외부 네트워크에 노출되는 표면적을 최소화하고 안정성을 보장하는 기법을 구상하는 것 역시 다른 오픈 소스 플랫폼들과 마찬가지로 가능하다. 기존에 구매한 Windows Server 인프라를 버리고 중복 투자할 필요 없이, 약간의 방법 터득 만으로도 충분히 만족스러운 Private Cloud를 구현할 준비가 이미 되어있는 것이다. 그러므로 부디 멀리 떠나지 말자.
IT 전문가들은 가상화로 무엇을 어떻게 할 것인가?
가상화 기술로 시스템을 분할하고 나면 그 다음에는 무엇을 할 것인가? 이 질문에 대해 IT 전문가들이 찾을 수 있는 방안은 시스템 구성 복잡도의 감소, 빠른 테스트 환경 구축, 가상 데스크톱 인프라 구축으로 분류할 수 있다.
서버를 한 대 이상, 여러 대를 배치할 수 있는 전산 환경에서는 한 서버에 1개 이상의 역할을 맡기지 않지만 현실적인 이유와 비용 상의 문제 때문에 이런 규칙은 쉽게 깨진다. 가상화를 이용하여 시스템을 나눈다면 이 규칙을 다시금 당연하게 받아들일 수 있게 될 것이다. 여기에, 게스트로 사용하려는 서버 운영 체제가 Windows Server 2008에 해당하는 경우 테스트 환경까지 자동화할 수 있는 혜택도 덤으로 얻는다. Windows AIK를 사용하여 자동 응답 파일을 만들 수 있고, 이렇게 만들어진 자동 응답 파일을 WIM2VHD와 같은 도구에 매개 변수로 지정하여 Windows 설치 디스크 이미지를 곧바로 부팅 가능한 가상 하드 디스크로 Provisioning하는 것뿐만 아니라 기초 설정까지 단번에 Customizing하는 것이 가능하다.
이렇게 만들어진 원본 가상 하드 디스크를 기점으로 차이점 보관 디스크 등을 사용하여 가상 하드 디스크들을 버전 관리할 수 있으므로 각종 업데이트와 Hotfix 설치에 민감하게 반응하는 시스템을 가상화해야 하는 경우 이는 매우 이상적인 환경이 아닐 수 없다. 이러한 작업들을 Private Cloud Computing 환경에 알맞게 솔루션 차원에서 도와주는 것이 바로 System Center Virtual Machine Manager이며, 관리자가 수작업으로 이러한 과정을 수행하지 않고 Active Directory 인프라를 이용하여 인증부터 시스템 Provisioning까지 웹 상에서 처리할 수 있도록 돕는 것이 SCVMM Self Service Portal이다.
가상 데스크톱 인프라는 앞서 설명한 기술들로 갖추어진 인프라를 이용하여 종전에 널리 사용되었던 터미널 서비스가 결합되어 완성된다. 종전의 터미널 서비스에서 보여지던 것은 동일하게 구성된 서버들 사이를 라운드 로빈 등의 알고리즘을 이용하여 연결을 분산시키고, 사용자가 응용프로그램을 빌려 쓰는 방식이었다. 반면 VDI는 응용프로그램 대여가 아닌 가상 PC 전체를 완전히 특정 사용자에게 임대하는 방식이기 때문에 VDI로 만족할만한 성과를 얻을 수 있으려면 얼마나 빠르게 VDI용 가상 PC를 Provisioning할 수 있는지도 관건이 된다. 뿐만 아니라, 이런 식으로 만들어진 가상 PC들에 대한 최신 업데이트와 보안 점검을 수행하기 위해서는 종전에 잘 알려진 WSUS나 Forefront를 쉽게 제어할 수 있는 System Center 솔루션 전반이 역시나 필요하다.
지금 언급한 사항들만 대충 살펴보더라도 관리자가 가상화나 Private Cloud 기술 때문에 직업을 잃어버리기는커녕 한층 더 복잡하고 높은 수준의 기술에 대한 이해가 필요함을 알 수 있다. Microsoft VDI에 대한 전반적인 Overview 및 Licensing 정보를 살펴보려면 아래의 동영상을 살펴보기 바란다.
그리고 여기에 여러분들은 한 가지 더 이점을 얻을 수 있다. Windows 7 SP1과 Windows Server 2008 R2 SP1의 출시와 더불어서 가상 컴퓨터 상의 게스트 운영 체제들의 성능을 미리 계산된 불연속적인 값에 의한 설정이 아닌, 연속적이고 유동적으로 변경 가능한 설정으로 재 구성이 가능한 Dynamic Memory 기능과 더불어, 다소 비싼 하드웨어를 필요로 하지만 Remote Session을 경유하더라도 3D 그래픽과 렌더링을 경험할 수 있는 RemoteFX 기술 지원까지 가능하게되어 한 층 더 높은 활용도를 제공한다. Windows 7 SP1과 Windows Server 2008 R2 SP1은 지금 Windows Update를 통하여 업데이트가 가능하며, 기술적인 상세 정보는 http://blogs.technet.com/b/koalra/archive/2011/02/10/windows-7-windows-server-2008-r2-1-rtm.aspx 의 내용을 확인하기 바란다.
개발자들은 가상화로 무엇을 할 것인가?
개발자들에게도 가상화는 작업하는 방법에 많은 변화를 가져다 준다. 그 중에서도 테스트 과정에 지대한 영향을 가져다 준다. 가상화를 통해서 가장 먼저 수혜를 누리는 것은 바로 Mobile 및 Embedded 장치 개발이다. 원칙적으로, Mobile과 Embedded 장치를 대상으로 응용프로그램을 개발하기 위해서는 개발자 당 1대 이상의 실제 장치가 필요한 것이 당연하다. 하지만, 앞에서 언급한 전 가상화 기술을 통해서 Intel CPU가 아닌 Mobile 장치의 CPU를 Emulation하여 약간의 제한 사항이 있지만 기본적인 테스트에는 문제가 없도록 해주는 테스트 및 디버깅 환경을 완성시켜준다. 이는 Windows Mobile 6.x, Windows Phone 7, Windows Embedded Compact 7을 통해서 쉽게 경험할 수 있었던 부분들이다.
그러나 한 발 더 나아가서, 테스트와 디버깅을 실제 Windows 운영 체제에서도 실행할 수 있어야 하고, 테스트 주도 개발 (TDD) 방법론에 입각하여 테스트를 수행하고, 확실한 QA를 수행하여 개발자와 직접 상호 작용할 수 있는 개발 방법론을 구현할 수 있도록 하려면 그 다음은 무엇이 필요할까? 답은 Visual Studio 2010 Ultimate부터 제공되는 Test Lab Management이다.
Test Lab Management는 내부적으로 SCVMM와 Hyper-V를 사용하여 테스트 환경을 구축하게 되며, Team Foundation Services (TFS) 영역 내에서 관리되는 프로젝트와 통합되어 자동 및 수동 테스트 케이스에 따라 테스트를 진행하고 Screenshot과 같은 일차원적인 정보 수집 말고도 시스템 상태, 문제가 발생했던 시점의 Stack Trace 기록은 물론 변수 상태까지 기록하여 데이터베이스로 저장하는 IntelliTrace 로그 수집까지 처리한다. 필요한 모든 주변 정황들이 소프트웨어 통제 환경 아래에 놓이게 되므로 재현 불가능한 버그가 나타나지 않도록 도와준다. 아래의 동영상은 Test Lab Management로 실제로 QA를 진행하는 과정을 보여주는 Overview 동영상이며 한 번 재미 삼아 보기를 권한다.
기본적으로 가상화를 통하여 일상적인 시스템 관리 작업 및 테스트 작업들을 소프트웨어가 서 있는 땅 아래로 가져다 놓고 모든 것을 Top-Down으로 관리하는 것이 이루려고 하는 목표이다. 이전에 언급하였던 대로, 개념적으로는 간단할 수 있지만, 이러한 작업들을 성공적으로 수행할 수 있으려면 적어도 규모에 관계없이 여러분이 완전히 제어하고 통솔할 수 있는 데이터 센터의 소유와 IT 전문가, 그리고 개발자들을 필요로 한다. 그리고 이런 환경을 가지고 있든, 가지고 있지 않든 진정으로 뛰어난 성능을 필요로 하고, 비즈니스의 핵심 가치에 집중하기를 원한다면, 다음 시간에 언급할 Windows Azure Platform으로의 이동을 바로 지금 준비할 때이다.
처음 Windows Azure Platform이 발표된 이후부터 지금 이 순간까지 많은 변화가 있었고, 지난 PDC'10에서 발표된 업데이트에는 IT 전문가들이 Private Cloud 뿐만 아니라 Public Cloud에서도 역량을 펼칠 수 있도록 도와주는 Windows Azure Connect 및 Virtual Machine Role이 발표되었다. 앞으로 2회 연재에 걸쳐서 Windows Azure Platform이 IT 전문가들과 개발자들에게 어떤 변화를 가져다 줄 수 있는지 더 살펴보려고 한다.
당연한 이야기이지만 여러분이 어디에 있든 관계없는 세상은, 이제는 전세계 어디서나 적용된다. 물론 세세하게 따지고 들어가면 예외 사항이 많지만 필자가 이 글에서 논하고 싶은 것은 "가능성"에 대한 사실이다. 여러분이 자주 다니고 이용할 수 있는 공항, 커피 전문점, 식당, 심지어는 호텔 안에서도 즉시 노트북이나 스마트폰을 켜고 3G 인터넷이나 WIFI 인터넷을 쓸 수 있다. 회사 컴퓨터 앞에 앉아서 하던 것처럼 메일 서비스에 접속하여 여러분 앞으로 메일을 확인하거나, 가까운 사람과 이야기를 나누기 위하여 메신저에 접속하여 수다를 떠는 것이 너무 당연하다.
클라우드 시대 이전에도 이런 일은 가능했다. 물론 여기에도 클라우드에 대한 이야기가 일부 – 또는 – 전체가 포함이 되어있을 것이다. 그러나 클라우드의 도래를 말하는 지금, 여기서 무엇을 더 기대할 수 있을까? 이번 글에서 이야기하려는 Office 365는 앞에서 이야기하였던 "여러분이 어디에 있든 관계없는 세상"에 덧붙여 – 여러분이 어디에 있든 자유롭게 일할 수 있는 세상이 이제 현실이라는 말을 만들어준다.
가정과 회사를 넘나들며 사용할 수 있는 최고의 소프트웨어+서비스 – Windows Live
Windows Live는 Microsoft가 일반 사용자들에게 제안하는 온라인 서비스이자, 동시에 서비스에 연동되는 소프트웨어 전반을 제공하는 패키지로, 대표적인 소프트웨어+서비스 전략 기반의 상품이다. 2005년 11월 1일 처음 발표된 이후로 지속적으로 새로운 제품 라인을 구축하고, 사용자들의 요구 사항을 반영하며, 더 새로운 서비스와 소프트웨어로 개선해 나가고 있는 중인 "진행형" 서비스이다.
Windows Live에서 가장 유명한 것은 여러분이 MSN 시절부터 줄곧 사용해왔을 Windows Live Messenger이다. 멀리 떨어져있는 사람들과 마치 옆에 있는 것처럼 화상 카메라와 마이크로 폰 등을 이용하여 실시간으로 영상 채팅을 하기도 하고, 텍스트와 이미지 등을 잘 사용하여 간단한 메시지를 주고 받기도 해왔다. 그리고 더 길고, 더 많은 메시지를 전달하기 위하여 Windows Live Messenger와 함께 Hotmail 전자 메일 서비스도 같이 활용하는 사람들이 많았다. 결론적으로, 이 두 가지의, MSN 포털 서비스의 일부로 출발한 소프트웨어와 서비스를 필두로 수 많은 확장 소프트웨어와 서비스들이 지금의 Windows Live를 이루고 있는 것이고 더 나아가서는 Windows 운영 체제의 강력한 확장 패키지로 자리잡게 된 것이다.
그 중에서도 이 글을 쓰는 현 시점에서는 단연 Windows 7과 Windows Live의 조합이 여러분을 위치로부터 자유롭게 해줄 프리미엄 패키지가 되어줄 것이다. 2010년 말에 새롭게 선보인 Windows Live Essential 2011과 더불어, 몇 가지 주목할 만한 온라인 서비스를 살펴보자.
Windows Live Mail - Windows 98 이상, Windows XP 이하의 운영 체제들을 자주 사용해왔던 많은 사용자들의 기억에 남아있는 Outlook Express를 계승하는 차세대 경량 메일 클라이언트 소프트웨어이다. Outlook Express에서는 이전에 Hotmail 웹 API를 이용하여 메일을 보내거나 확인할 수 있는 기능을 제공했지만 현재는 Windows Live Mail로만 이 기능을 이용할 수 있다. Windows Live 소프트웨어의 일부이므로 Windows Live ID를 사용하여 사용자 인증을 수행하고, Windows Live Messenger와 함께 사용할 수도 있다. 이번 2011 버전에서 더 좋아진 점은 다른 인터넷 서비스들과 더 친화적으로 가까워져서 Google의 메일 서비스 등과도 더 잘 작동한다.
Windows Live Mesh - 이번 Windows Live Essential 2011에서 많은 사용자들의 인기를 얻고 있는 동기화 소프트웨어이다. 초고속 인터넷이 활성화되고, 사용자들이 컴퓨터를 켜놓고 이동하거나, 컴퓨터의 성능이 좋아짐에 따라 유휴 시간에 처리할 수 있는 작업량이 늘어났다는 점에 착안하여 지정한 폴더를 클라우드 서비스 저장소 상에 미리 동기화하는 방법으로 여러분이 언제 어디에 있든 자료를 빠르고 쉽게 접근할 수 있도록 도와주는 백그라운드에서 실행되는 소프트웨어이다.
Windows Live Family Safety - Windows Vista에서 제공된 자녀 보호 기능과 Windows Live OneCare에서 제공되던 동일 서비스를 좀 더 확대하고 강력하게 기능을 보강한 서비스이다. 일방적인 ID/암호를 사용하여 관리하는 타 소프트웨어처럼 Brute Force 방식으로 뚫릴 가능성이 있거나, Windows 운영 체제 기능의 일부가 아니라는 한계 때문에 쉽게 파괴되는 등의 취약점을 일절 허용하지 않는, Microsoft가 검증하는 자녀 보호 기능을 무료로 사용할 수 있다. 이러한 기능을 위하여 불완전한 추가 소프트웨어를 구입하는 일은 없어야 하겠다.
Windows Live Writer - 블로거들을 위한 소프트웨어로 처음 알려진 이후로 국내외 수많은 블로거들이 애용하는 소프트웨어이다. 주요 블로그 서비스들을 모두 지원하고, 다른 Windows Live 소프트웨어와 Microsoft Office 제품과 호환되는 WYSIWYG 편집 기능을 제공하므로 웹 브라우저로 작업하면서 느끼는 불편함을 겪지 않고 최상의 편집 환경을 유지할 수 있는 장점이 있다.
Windows Live Photo Gallery - 디지털 카메라를 이용하는 사람들의 수가 전세계적으로 매우 많다. 하지만 디지털 카메라를 이용하여 사진을 관리하는 작업은 결코 간단하지 않다는 것을 이미 우리는 여러 해 동안 잘 경험해왔다. 그리고 가끔은 사진을 잘못 찍어서 다른 사람에게 미안했던 경험도 있을 것이다. Windows Live Photo Gallery는 Windows Live SkyDrive와 연계하여 사진을 체계적으로 클라우드에 저장하고 공유할 수 있는 방안, 전자 메일로 손쉽게 전송할 수 있는 방안, 그리고 비슷한 여러 장의 사진을 이용하여 마음에 들지 않는 사진을 원하는 사진으로 전문적인 소프트웨어 없이 편집할 수 있는 기능까지 기존의 멀티미디어 관련 기능 위에 신 기능으로 중무장하였다.
Windows Live Messenger – Windows Live Essential 이전부터 지속적으로 발전을 거듭해왔고, 두 말할 필요 없는 최고의 메신저 서비스와 소프트웨어이다. 역사가 오래된 만큼 이제는 더 넣을 것이 없지 않겠는가 하는 생각이 들기도 했지만 이런 예상을 뒤엎고 더 많은 사람들에 다가갈 수 있는 기능이 더해져 더욱 매력적으로 업그레이드되었다. Social Network 서비스, 그 중에서도 Facebook과 같이 이전의 메신저나 전자 메일과는 조금 다른 형태의 커뮤니케이션 방식에 대해서도 완벽한 기능을 제공한다. 이에 맞추어, 기존의 메신저 대화 이름은 가장 최근에 남긴 상태 메시지로, 첫 화면은 대화 상대 목록을 보여주는 화면 말고도 넓은 패널에 여러 Social Network 서비스로부터 수집된 지인들의 동향까지 보여주며, 동영상과 사진도 브라우저를 열지 않고 그 자리에서 바로 볼 수 있게 해준다. 무엇보다도, Facebook의 채팅 기능과 Messenger 대화 상대 기능을 직접 연결할 수 있는 것은 참 좋은 기능이다.
Windows Live Hotmail – Hotmail이 더 새로워졌다. 이전의 느리고 답답한 화면은 잊어버려도 좋다. 사용자가 원하는 것이 무엇인지 스스로 찾아 알려주는 똑똑한 기능과 함께 이번 2011 업데이트에서는 별도의 소프트웨어를 설치하지 않아도 메일을 이용하여 슬라이드 쇼를 작성하거나 오피스 문서를 곧바로 작성하여 첨부할 수 있으며, 역으로 받아온 메일의 사진들을 슬라이드 쇼로 보거나 오피스 문서를 웹 상에서 보고 편집할 수 있는 기능도 제공한다. 또한, Live View의 기능은 지속적으로 발전하여 별 뜻 없이 메일 본문에 YouTube 동영상 링크를 붙여 넣었거나 FEDEX의 운송장 번호를 붙여 넣었다면 Live View 영역에 YouTube 동영상을 웹 브라우저를 열지 않고 바로 볼 수 있게 해주고, 물류 운송 상태를 FEDEX 홈페이지에 직접 가지 않고 곧바로 조회하여 보여주기까지 한다.
Windows Live SkyDrive – 많은 인기가 없을 것이라 생각한, 여느 웹 저장소와 다를 것이 없어 보였던 이 서비스가 바로 이번 Windows Live 2011 업데이트의 중추라고 한다면 아마 놀라게 될 것이다. 제품 로고에 있는 것처럼 하늘 위에 떠 있는 구름에 저장하는 것처럼 답답한 메일 첨부 파일이나 하드 디스크의 어느 한 구석이 아닌, 언제 어디서나 찾아 쓸 수 있는 여러분만의 대용량 저장 공간을 제공한다. 이를 이용하여 Hotmail과 Photo Gallery는 슬라이드 쇼를 남들에게 보여줄 수 있도록 도와주고, 또 Hotmail과 Office Web App이 웹 상으로 문서를 편집하는 기능도 제공하며, 앞서 살펴본 Live Mesh 또한 다름아닌 SkyDrive에 모든 데이터를 저장하기도 하고 로컬 드라이브에 다시 파일을 내려주기도 한다. 무엇보다도 Office Web App을 직접 사용하면 여러 사람이 동시에 편집에 참가하여 공동 작업을 할 수도 있으므로 못하는 것이 없다.
12년동안 학생 여러분들의 베프 (Best Friend)가 되어줄 Live@edu
초등학교 6년, 중학교 3년, 고등학교 3년 동안 학교 생활을 하는 수많은 어린이와 청소년들에게도 이제는 과거와 다르게 컴퓨터를 사용하는 것은 과제에서부터 학습에 이르기까지 꼭 필요한 일이 되었다. 이 단락을 시작하기 전에, 독자 여러분이 아직도 컴퓨터를 사용하는 것이 게임만 하기 위함이라고 생각하여 아직도 컴퓨터를 사주지 않은 부모에 해당된다면 당장 생각을 바꾸기를 권한다. 컴퓨터 게임을 오래 하는 것이 걱정된다면 Windows Live Family Safety를 설치하여 이를 예방할 수 있기 때문이다. :-)
본론으로 돌아와서, Live@edu는 학교 IT 관리자가 추가 비용 없이, Microsoft의 클라우드 데이터 센터를 활용하여 학교 내의 전자 메일 및 저장소 시스템을 구축할 수 있도록 도와주는 서비스이다. 앞에서 살펴본 Windows Live 서비스가 개인을 위한 서비스라면, Live@edu는 Microsoft Exchange Online을 기반으로 제공되지만 공동 편집, 웹 오피스 등의 기능을 추가로 제공하여 학생이나 선생님이 컴퓨터를 사용하는 위치가 문제가 되지 않게 하여 실시간으로 과제를 수행하고 평가할 수 있도록 도와준다. 교사들의 경우, 문서 작성 후 공유에 드는 시간과 비용을 최소화하여 더 본질적인 업무를 수행할 수 있도록 도와준다.
더 나아가서, Microsoft가 고등 교육 기관의 학생들을 위하여 제공하는 무료 소프트웨어 제공 프로그램인 DreamSpark를 Live@edu를 이용하여 손쉽게 신청할 수도 있다. 국내의 경우, DreamSpark를 이용하여 학생들이 참가할 수 있는 각종 IT 관련 경진대회에 필요한 소프트웨어를 스스로 다운로드 받을 수 있도록 해준다. Live@edu 서비스는 뒤에서 소개할 Office 365 for Education으로 업그레이드될 예정에 있다.
사무실에 천근만근인 몸을 운반하지 않도록 도와줄 구세주 – Office 365
Office 365는 이전에 Microsoft Business Productivity Online Suite (BPOS)로 소개되었던 세 가지 온라인 서비스인 Exchange Online, SharePoint Online, Lync Online을 필두로 기존에 출시된 Microsoft Office 2010을 소프트웨어로 채택하여 소프트웨어+서비스를 구현하는 기업용 오피스 클라우드 솔루션이다. 클라우드 솔루션이므로, 전체 서비스를 구현하기 위하여 기존과 같이 모든 것을 구입하고 관리하고 유지 보수할 필요가 "전혀" 없이 Microsoft에게 맡기면 되는 것이다.
Exchange Online은 Exchange Server 2010을 기반으로 구현된 클라우드 서비스로, 전문적인 Exchange Server 엔지니어 없이도 엔터프라이즈 서비스를 가능하게 한다. 메일 뿐만이 아니라 일정 관리, 연락처 동기화, Windows Mobile 6.5 및 Windows Phone 7, iPhone, Android, BlackBerry 등 다양한 스마트 폰 장치와의 동기화를 지원하므로 언제 어디서나 업무에 관한 커뮤니케이션이 중단되지 않도록 도와준다. 무엇보다도 클라우드 기반의 서비스이므로 비싼 서버 장비와 서버 소프트웨어 라이선스를 필요로 하지 않는다는 것은 많은 기업들에게 직접 사용할 수 있는 플랫폼이든 기존의 전산 자원을 보호하기 위한 추가 계층이든 그 의미에 관계 없이 매력적으로 다가올 것이다.
SharePoint Online은 기업이 Enterprise Social Communication을 구현할 수 있도록 도와준다. 단순한 문서 공유 및 팀 협업의 차원을 뛰어넘어, 최근 SharePoint를 통하여 구현하는 다양한 비즈니스 응용프로그램과의 호환성이 보장되므로 기업 내부에서는 저렴한 비용으로 다차원의 데이터를 관리할 수 있으며, 기업 외부를 위해서는 SharePoint Online을 통하여 만들 수 있는 공개 웹 사이트를 이용하여 주문 요청, 사용자 피드백 수렴 등 다양한 마케팅 및 영업 활동을 가능하게 해준다. 기술적으로 보면, 당연히 OData 프로토콜을 사용할 수 있으므로 SharePoint Online 그 자체는 훌륭한 Contents Management System이자 Database인 셈이다.
Lync Online은 기존의 Office Communications Server의 차기 제품인 Lync Server의 클라우드 버전으로 기업 내 인스턴트 메시징을 역시 클라우드 기반에서 해결할 수 있도록 도와준다. 그리고 Lync Client는 이전 버전의 클라이언트처럼 단순한 메신저 – 또는 – Outlook에 제한적으로 통합되는 형태를 넘어서서 Office 응용프로그램 곳곳에서 쉽게 활용할 수 있도록 추가 기능으로 제공되었다. Lync Client를 사용하는 방법을 이용하여 위치에 관계없이 클라우드를 이용하여 다른 사람에게 즉시 인스턴트 메시징을 보낼 수 있다는 것은 매력적인 일이다.
Office Web App은 Windows Live에서와 마찬가지로 Exchange Online과 SharePoint Online의 웹 확장 기능에서 그 진가를 발휘한다. 그리고 여러분의 컴퓨터에 지금 당장 Office Professional Plus 2010이 설치되어있다면 소프트웨어의 장점과 서비스의 편리함을 모두 누릴 준비가 되어있는 것이다.
다음 시간에는
다음 시간에는 IT 관리자와 개발자 여러분들이 지금껏 열정과 혼을 다하여 능력을 발휘해왔던 Windows Server 플랫폼이 클라우드 시대에서는 어떻게 변화하고, 더 나은 기능을 제공하는지에 대하여 살펴볼 것이다. 클라우드 시대에 알맞은 관리 방법과 개발 방법론을 익히는 것은 IT 관리자와 개발자에게도 일반 사용자들처럼 동일한 변화를 요구로 하는 것이다.
지난 글에 이어서 오늘은 Everything as a Service, 줄여서 흔히들 XaaS라고 부르는 개념에 대한 이야기를 나누어보려고 한다. 지난 시간에는 Cloud Computing에 대한 기술적인 정의를 살펴보기 위하여 “Dynamic Set of Connected Computers”라는 문장을 이야기했었는데 그렇다면 이 문장에 부합하는 시스템을 가지고 도대체 무엇을 어떻게 할 것인가라는 이야기를 해야 할 필요가 있을 것이다.
사실 Cloud Computing은 우리도 모르는 사이에 이미 우리 생활 속 깊숙이 자리잡고 있었다. 다만 이것이 Cloud Computing이라고 이야기할 수 있을 만큼 성숙했는가 그렇지 않았는가의 차이일 뿐이다. 실질적으로 Cloud Computing은 언제부터 우리 생활 속에 자리 잡았을까?
현 시점에서 Windows 운영 체제의 사용에 익숙한 대다수의 컴퓨터 사용자들은 과거에 발표된 적이 있는 Windows 98이라는 운영체제를 잘 알고 있다. 1997년 말에 처음 발표되었고, 사전적인 정의로만 놓고 본다면 시장에서 획기적인 사용자 인터페이스로 사람들의 이목을 잡아 끌었던 Windows 95라는 운영체제의 성공적인 후속 버전으로 잘 알려져 있다. 약간 기술적으로 접근해보면 Internet Explorer 4.0을 포함하고 있고, 이 때문에 반독점 시비에 휘말렸던, Microsoft의 입장에서는 다소 쓰라린 추억을 품게 했던 그런 운영 체제였다. 우리가 아는 모습은 여기까지였다.
하지만 Windows 98에서 우리는 Cloud Computing의 시작을 이미 경험하였다. 놀랍게도, Microsoft는 인터넷이라는 수단을 이용해서 Windows 운영 체제를 출시 이후에도 신속하게 수정하고 사용자들의 요구 사항을 전세계 어디에서든 직접 반영할 수 있도록 하는 기술인 Windows Update를 처음 선보였다. 우리는 이것이 당연한 일이라고 생각한다. 하지만 이러한 서비스를 제공해야 하는 Microsoft의 입장에서는 어떠했을까? 대충 계산해보아도 Windows 98을 각 가정에서 하나씩 사용한다고 가정하더라도 전 세계적으로 보면 정말 엄청난 수의 클라이언트를 보유한 셈이다. 이러한 클라이언트들에게 “서비스” 차원에서 소소한 업데이트들을 제공하기 위하여 데이터센터를 구축하고 운영해왔던 것이다.
Cloud Computing은 이와 같이 정확한 규모를 파악하기 어려운 서비스에 대하여 꼭 필요한 접근 방식이다. 우리가 흔히 이야기하는 클라이언트-서버 컴퓨터 환경을 기반으로 하지만, 접속을 하는 클라이언트의 수가 사실 천문학적으로 많을 수도, 혹은 처음 잡았던 운영 규모에 비해 접속하는 클라이언트의 수가 얼마 되지 않아 비용이 낭비되는 상황이 될 수도 있는 “서비스”의 운영에 대해 확실한 방안을 제시한다. 우리가 평소에 물을 사용하기 위하여 사용한 물의 양을 재거나 양동이를 가지고 물을 받아서 쓰는 일을 하지 않는 것과 마찬가지로, Cloud Computing을 사용하면 Web Hosting이나 Server Hosting을 할 때와는 다르게 서비스를 사용한 만큼만 비용을 지불하면 된다. 즉, 서비스의 본질에만 초점을 맞추기만 하면 나머지는 Cloud Computing 서비스 제공자의 역할로 모든 것이 돌아간다는 것이다.
무엇으로 서비스를 만드는가?
Cloud Computing 서비스 제공 업체 입장에서는 무엇으로 서비스를 만들어 제공하는가가 중요한 관점이 될 수 있다. 대부분의 경우 세 가지 범주 안에 모든 것이 설명되는데, 인프라를 기반으로 서비스를 제공하는 Infrastructure as a Service (이하 IaaS), 플랫폼을 기반으로 서비스를 제공하는 Platform as a Service (이하 PaaS), 그리고 소프트웨어나 이에 관련된 기반 기술을 활용하여 서비스를 제공하는 Software as a Service (이하 SaaS) 세 가지로 나눌 수 있다.
IaaS의 경우 Cloud Computing의 도래 이전부터 하드웨어, 네트워크 통신망과 같이 근간이 되는 인프라와 자원에 대한 전문적인 서비스를 제공해오던 사업자들의 관점에서 강점으로 내세우는 Cloud Computing 방식이다. 인터넷 연결을 이용하여 장소와 시간의 제약을 없애고, 약간의 제어용 소프트웨어를 덧붙여 하드웨어, 네트워크 통신망을 자유롭게 제어하고 필요한 만큼 추가하거나 삭제할 수 있는 방안을 제시한다. 여기에는 대표적으로 Amazon, Rackspace 등의 기업이 잘 알려져 있다.
PaaS의 경우 Cloud Computing 이전부터 기반 기술을 보유하고 발전시켜왔던 사업자들의 관점에서 강점으로 내세우는 Cloud Computing 방식이다. IaaS 사업자 – 또는 – 독자적 IaaS 플랫폼을 구축한 이후에 각자 자신들의 철학과 이념을 잘 반영한 Cloud Computing 기반 플랫폼을 IaaS와 마찬가지로 인터넷 연결을 이용하여 사용하고 제어할 수 있도록 제공한다는 취지이다. 여기에는 대표적으로 Microsoft, Salesforce 등의 기업이 잘 알려져 있다.
마지막으로 SaaS의 경우 IaaS와 PaaS를 통하여 최종 사용자에게 실질적인 서비스를 제공하기 위한 취지로 해석되는 경우가 많다. 대표적으로 Google Docs와 Microsoft Office Web Apps가 이러한 범주에 속하는데, 데스크 탑에서 구현할 수 있는 소프트웨어를 웹에서 동시에 사용할 수 있도록 하는 것이 특징이다. 특별히, Microsoft의 경우 SaaS가 보통 의도하는 인터넷 전용의 서비스를 넘어서 기존의 데스크 탑에 설치되는 소프트웨어와 SaaS 기반의 서비스가 서로 균형을 맞추어 사용자에게 적절한 선택을 할 수 있도록 Software + Service 전략을 제시하곤 한다.
지금 열거한 IaaS, PaaS, SaaS는 하드웨어, 소프트웨어, 그리고 전략적 플랫폼이라는 IT 업계의 3대 주요 구성 요소들을 빠짐없이 모두 열거한 것이다. 이 세 가지 범주를 벗어나는 Cloud Computing 서비스는 없으며, 정확히 한 가지에 국한되는 Cloud Computing 서비스도 없다. 즉, 이 세 가지 범주를 이용하여 과거, 지금, 그리고 앞으로 등장할 Cloud Computing 서비스에 대한 이야기를 할 수 있을 것이다. 다만 한 가지 주의해야 할 점이 있다면, Cloud Computing이 반드시 인터넷과 전형적인 컴퓨터 장치만 사용해서 이뤄지는 것은 아니라는 점이다.
서비스로 무엇을 제공하는가?
이러한 특성을 기반으로 무엇을 서비스화하고 Cloud Computing에 올린다면 좋을까? 여기에 대한 답은 의외로 쉽게 찾을 수 있다. 서비스의 규모에 관계없이 사람들이 원하고 바라는 것이면 무엇이 되어도 좋다. 지금부터는 XaaS의 광범위함을 이야기해볼까 한다.
Case #1 – TTS (텍스트를 음성으로 변환) 기술
펜티엄 컴퓨터의 판매가 활발하던 시절, 모 대기업의 컴퓨터 제품을 구입하면 번들로 따라오던 소프트웨어를 모두들 기억할 것이다. 텍스트를 입력하면 여기에 해당되는 사람의 음성 출력을 컴퓨터가, 어눌하지만 꽤나 자연스럽게 표현하는 것이다. 그래서 별로 새로울 것이 없어 보인다. 하지만 이러한 TTS 기술이 Cloud Computing 환경을 만나서 서비스로 탈바꿈하면 어떨까?
iSpeech.org (http://www.ispeech.org)를 방문하면 여기에 대한 현실적인 구현 사례를 만나볼 수 있다. 텍스트 음성 변환을 구현하는 곳은 많았지만 그 지속성이 오래가지 못하는 경우가 대다수인데, 이것을 하나의 완성된 Cloud Computing 서비스로 만들어서 매우 주목을 받고 있다. 여기서 중요한 것은 기존의 경우 텍스트 음성 변환을 이용하기 위하여 음성 데이터 파일과 이를 구현하는 소프트웨어 엔진을 특정 컴퓨터에 설치해야 했으며 심지어는 이 소프트웨어의 파일 크기도 매우 크고, 가격도 매우 비싸기까지 했다. 그러나 이제는 이러한 서비스를 특정 컴퓨터에 설치하는 일 없이, 필요해서 생각이 나면 곧바로 여러분의 웹 브라우저는 물론, 여러분이 개발할 응용프로그램의 기능 상 일부분으로 통합하는 것까지 정당한 비용 지불만 있다면 24시간 365일 가능한 것이다. 이해를 돕기 위하여, iSpeech.org 에서 만든 샘플 오디오를 첨부하였다.
문장: Barack Obama said: I think when you spread the wealth around it's good for everybody. 오디오:
이 서비스를 이용하여 회원 가입 없이는 10초, 무료 회원은 1분 이내의 음성 변환을 시험해볼 수 있으며, API를 사용하거나 전문적인 활용이 필요한 경우 계정을 업그레이드하고 비용을 지불하는 방법으로 더 나은 서비스를 받을 수 있다. 한 마디로, TTS as a Service (TaaS)라고 정의할 수 있는 것이다.
Case #2 – Windows Live
Windows Live의 역사는 장대하다. 그리고 다양한 실험을 거쳐서 지금의 형태를 띠게 된 것이라 할 수 있다. Windows 95 시절 처음 소개되었던 The Microsoft Network를 통하여 인터넷 서비스를 어떻게 제공하면 좋을지 Microsoft는 지속적으로 고민의 고민을 거듭해왔고, 본격적으로 TCP/IP 기반의 인터넷이 활성화되기 시작할 무렵 출시된 Windows 98부터는 동적 웹 페이지 기능 – 혹은 – DHTML, AJAX (COM 기반 HTTP Request), 웹 서체와 같은 더 확장된 인터넷 기능을 제공하는 Internet Explorer 4.0과 더불어 인터넷의 본질에 접근하기 시작하였다. 물론 이 무렵에도 지속적으로 MSN은 전형적인 Internet Contents 제공 사업자로서의 모습을 갖추고 있었다.
그러나 MSN 이상으로, 사용자가 인터넷을 좀 더 친숙하고 편리하게 사용할 수 있는 방안이 없을지에 대한 지속적인 고민이 더해져, 2005년 늦가을에 Microsoft는 Windows Live의 첫 버전을 발매하였다. Windows 운영 체제를 사용하는 사용자들의 경험을 배반하지 않으면서도 인터넷 서비스가 갖추어야 할 강력함을 동시에 유지하는 어려운 실험을 시작하였고, 시간이 갈수록 이 실험에 대한 성과가 나타나기 시작하였다.
현재의 Windows Live는 개인 사용자들이 Microsoft의 다양한 인터넷 자원에 접근하기 위한 핵심 운영 체제와 동일한 맥락을 갖는다. Microsoft가 Windows 95 시절 이후부터 유지하고 발전시켜왔던 MSN 웹 사이트는 물론, 전자 메일 서비스를 제공하는 Hotmail, 인스턴트 메신저 서비스를 제공하는 Windows Live Messenger 등 일반 사용자를 위한 서비스가 핵심이 되고, Windows Azure Platform의 등장과 더불어서 Cloud Computing 환경에서의 Claim 기반 인증 수단으로 Windows Live ID는 그 핵심을 차지하고 있다.
그리고 Windows Live는 지속적으로 다른 웹 응용프로그램들의 장점을 수용하고 발전시켜나가면서 우리가 잘 아는 Google의 AJAX 기반 Web Application과 다르지 않은, 그러면서도 기존 Office나 Windows 사용자들의 경험을 배반하지 않는 Web Application을 성공적으로 Windows Live에서 제공하기 시작하였다. 한 마디로, Windows Live는 Microsoft의 핵심 인터넷 서비스이자 Microsoft가 출시하는 각종 소프트웨어는 물론 여러분이 고객에게 제공하게 될 서비스에 Microsoft의 인터넷 서비스를 자연스럽고 강력하게 통합시킬 수 있는 확장 기능 집합이라 할 수 있다.
Case #3 – TROPO
TROPO에 대해서는 생소한 사람들이 많을 것이다. 이 서비스를 한 마디로 요약하면, 전화 통신 시스템을 가상화한 것이라고 말할 수 있다. 어떻게 그게 가능했을까? 답은 VOXEO Corporation의 기술력에 있다.
VOXEO Corporation은 전통적으로 전화 통신 기반으로 지속적으로 연구 개발을 해왔던 기업으로 기간 망을 운용하는 사업자들처럼 사업의 규모에 집중한 것이 아니라, 전화를 이용한 부가 가치 창출에서 꼭 필요한 자동화 시스템을 구현하는 일에 많은 자원을 투자한 것으로 유명한 회사이다. 덕분에 이 분야에 뛰어든 다른 여러 회사들 가운데에서도 VOXEO Corporation의 행보는 남다르다고 할 수 있다.
필자 역시 이 회사의 존재도, 이 회사가 Cloud Computing 서비스라고 소개하는 TROPO에 대해서도 사실은 전혀 알지 못하였다. 그러나 인터넷 검색을 통하여 처음 접하였고, 이 회사에서 제공하는 TROPO 서비스를 알게 되었으며, 덕분에 Imagine Cup 2010 대회에 참가하기 위하여 제출한 아이디어에서 이 서비스의 능력을 Windows Azure Platform과 연계하여 적극 활용하여 원하는 IT 솔루션을 실제로 그려낼 수 있었다.
종전에는 자동 응답 시스템, 혹은 대화형 음성 응답 시스템을 구현하기 위해서는 여러 개의 전 이중 회선을 전화국으로부터 할당 받아 전화 수신이 폭주하는 경우에도 최대한 전화를 받을 수 있도록 해야 했고, 이러한 기능을 수행할 수 있는 매우 비싼 장비를 구축해야 하고, 이러한 장비를 제어하고 유지보수하기 위한 소프트웨어를 개발하는 등 생각할 수 있는 모든 역량을 집중해야 한다. 그러나 여기서 장치, 전 이중 회선, 유지 보수 등 생각할 수 있는 모든 복잡한 요소를 제거하고 순수하게 어떤 시나리오를 재현하는 음성 응답 시스템을 만들 수 있는 스크립트만을 작성하여 게시하면, 미리 지정된 전화 번호로 전화를 걸었을 때 작성한 스크립트대로 동작하는 것을 들을 수 있다. 더 중요한 것은, 기능을 테스트하고 개발하는 동안에는 무료로 사용하고 실제로 서비스를 수행할 때 비용을 지불할 수 있다는 것이다.
빠른 이해를 돕기 위하여, DEMO 응용프로그램을 Skype를 통하여 직접 테스트해볼 수 있다. DEMO 응용프로그램은 아래와 같은 스크립트로 구성되어있다.
answer();
say("Yes, Tropo is this easy!");
hangup();
전화, Skype, SIP 등을 이용하여 음성 출력을 사용하는 통신 수단으로 이 응용프로그램에 접근한다면 TTS 엔진을 통하여 변환된 음성을 들을 수 있을 것이다. 반면 텍스트 기반 통신 수단으로 이 응용프로그램에 접근한다면 문자 메시지나 대화에 대한 응답으로 텍스트를 받을 수 있을 것이다. 즉, TROPO는 음성과 텍스트에 대한 완벽한 가상화를 지원하고 있는 것이다.
다음 시간부터는 순차적으로 Microsoft의 3대 Cloud Computing 전략에 대하여 살펴보기로 할 예정이다. 그 중 가장 첫 번째로, Office 365에 대한 이야기를 풀어보고자 한다. Office 365는 이전에 언론 등을 통하여 Business Productivity Online Standard (BPOS) Suite로 소개되었으며 이것이 Microsoft Office 2010 또는 그 이후 버전과 함께 군을 이루어 2010년중에 정식 버전으로 소개될, 현재 Windows Live가 제공하는 개인 및 SOHO를 위한 Office 확장과는 별개인 더 전문적인 Mobile Office용 Cloud Computing 서비스이다. 그 후, Windows Server Family에서 사용할 수 있는 Cloud Computing과 상호 운용 기술을, 마지막으로는 Windows Azure Platform에 대하여 개발자 관점과 IT Professional 관점으로 나누어 상세하게 다루어볼 예정이다.
2010년말부터 Cloud Computing에 대한 이야기는 IT 업계 이곳 저곳을 폭풍처럼 휩쓸고 다니고 있다. 하지만 생각 외로 Cloud Computing이 왜 중요한지, Cloud Computing이 당장 어떤 방식으로 지금의 업무를 변화시키게 될 것인지를 정확히 이해하거나 파악하고 있는 사람들도 드물다. 대부분의 경우, Cloud Computing은 단순히 “저장소”의 개념으로 이해되거나 혹은 자신이 아닌 다른 대기업의 전산 자원을 빌려서 사용한다는 사실에만 집중한 나머지 “믿을 수 없다”는 선입견에 깊이 빠지는 오류를 범하는 일이 상당히 많은 것 같다.
필자 역시 Cloud Computing에 입문한지 몇 년이 채 안된, 현역으로 열심히 뛰고 있는 개발자이다. 그러나 입문한지 몇 년이 채 안된 바로 그 사이, 심지어는 이 글이 쓰여지고 여러분들에게 보여지고 있을 지금 이 순간에도 Cloud Computing은 빠른 속도로 진화하고 있다.
사실 Cloud Computing은 우리나라를 제외한 대다수의 나라에서 이미 광범위하게, 그리고 매우 성숙하게 시스템이 완성되어가고 있는 추세이다. 이 글에서는 이러한 Cloud Computing의 추세와 분류, 동향을 부족하지만 간단히 정리하고 살펴보고자 한다.
Cloud Computing은 외계 문명 따위가 아니다.
제목 그대로, Cloud Computing은 외계 문명 따위가 아니라, 우리가 이제껏 이룩해왔던 수많은 기술들과 경험들이 집약된 종합 예술 작품과 같은 것이다. 그렇다면 어떤 기술들과 경험들이 Cloud Computing을 지탱하고 있는 것일까?
한국 Microsoft에서 Cloud Computing을 열혈 전도하고 계시는 김재우 부장님의 정의 (지난 Tech-Days 2010 Fall 행사의 Keynote 세션 “Cloud를 말하다”에서 언급된 내용 중 일부를 발췌)에 따르면 Cloud Computing은 기술적으로 “Dynamic Set of Connected Computers”라는 문장 하나로 표현이 가능하다. 실질적인 구현 방법에 있어서 차이는 있을 수 있지만 대부분 이 문장에서 설명하는 구도 안에 포함이 된다. 이 문장에서 추출할 수 있는 키워드만을 놓고 보더라도 그러한데, Dynamic, Set, Connected Computers라는 키워드의 각각의 사전적인 정의만 알고 있다 하더라도 이미 여러분은 Cloud Computing의 절반 이상은 이해한 셈이다.
Dynamic
Cloud Computing은 동적인 것이다. 업계 부문마다 Dynamic의 성질을 표현하는 이음동의어가 존재하는데 기술적으로는 Runtime이라고 이야기하고, 비즈니스 적인 차원에서는 On-Demand라고 이야기하며, 학계에서는 Really-Runtime (실시간)이라고 이야기한다. Cloud Computing의 도래 이전까지 이는 각자 추구하는 목표가 서로 상이한, 엄밀히 말하면 이음동의어가 아닌 완전히 다른 말로 알려져 있었다. 그러나 Cloud Computing은 이러한 단어들이 이음동의어가 될 수 있도록 해주는 큰 플랫폼이다. 이 중에서도 Cloud Computing은 On-Demand의 뜻을 가장 잘 실현할 수 있도록 도움을 준다. 즉, 필요할 때 즉시 확장하고 필요치 않을 때는 접을 수 있는 탄력성을 제공한다.
또 다른 측면으로는 우리가 어렸을 적에 함수의 개념을 익히기 위하여 배웠던 상자 (Black Box) 개념과 같이, 어떤 결과를 도출하기 위하여 최소한 수행해야 할 입력만 존재한다면 나머지는 블랙 박스 안에서 온갖 처리를 하게 되고 나중에 그 결과를 받을 수 있다. 즉, Cloud Computing이 이 블랙 박스 노릇을 하는 것이다. 개념적으로 이 블랙 박스는 이제껏 논리 연산 – 또는 – 소프트웨어의 범주 안에서 설명되어왔지만, Cloud Computing은 이 부분이 가상화, 자동화, 그리고 병렬 컴퓨팅으로 설명된다.
여기서 잠시 짚어야 할 부분은, 어떤 IT 업계 종사자들의 이야기를 들어보면 마치 가상화가 Cloud Computing의 전체를 이루고 있는 구성 요소라고 설명하는 일이 종종 있다는 점이다. 유감스럽게도 이는 정확한 정의가 아니고, 비율로 따지면 약 20%만 일치하는 정의이다. 왜냐하면, 가상화를 수단으로 동적인 시스템을 구축하는 것이 Cloud Computing을 구현하는 것에 있어서 첫 걸음에 불과한 작업이기 때문이다.
2000년대 초반까지 가상화 기술은 지금의 VMware Workstation과 같이 일부 개발자와 IT 전문가들에게 유용한 테스트 프레임워크 – 또는 – DOSBOX (http://www.dosbox.com)와 같이 옛날 DOS 게임의 향수를 잊지 못하여 발걸음을 돌리게 만드는 추억의 DOS 에뮬레이터 정도로 알려진 것이 고작이었다. 그러나 CPU 기술의 비약적인 발전에 힘입어 단순히 Clock 회전 수를 높이는 것보다 Core의 수를 늘이는 것이 더 큰 발전을 가져다 줄 것이라는 유행과 맞물려 가상화 기술은 르네상스 시대를 맞이하게 되었다. 이제는 우리가 설거지를 하기 위하여 사용하는 흡수율이 좋은 스펀지를 조각 내어 사용하는 것과 마찬가지로 시스템 전체를 곧바로 사용하는 것 보다는, 계획적으로 시스템을 분할하고 동시에 나누어서 사용하는 것이 더 효율적인 시대가 되었다.
시스템을 나누어 사용하는 방법은 IT 업계의 세부 분야마다 선호하는 기법이 제각기 다르지만 보통은 가상화와 병렬 컴퓨팅 중 하나를 택하게 되어있다. 가상화는 이미 실행 중인 기본 운영 체제의 자원을 기반으로 (이 때 실제 물리 하드웨어 – 또는 – 다른 가상 컴퓨터의 실행을 지원할 컴퓨터를 호스트라고 한다) 여러 대의 가상 컴퓨터 (게스트)를 생성하고 실행하는 기법을 말한다. 요즈음은 이러한 가상화 기법을 Hypervisor라고 불리는 구성 요소에 의하여 처리되도록 하고 있으며 대표적으로 Windows는 Hyper-V, Linux 호환 운영 체제에서는 XEN Kernel 등을 사용하는 것이 보편적이다. 반면 병렬 컴퓨팅은 단일 운영 체제가 관리할 수 있는 범위 내에서 최고의 성능을 낼 수 있도록 하는 방식으로 일반적인 CPU 기반의 Multi-threaded 연산에서부터 최근 각광받고 있는 GPU 기반 병렬 컴퓨팅에 이르기까지 그 방법이 다양하다. 양쪽 모두 폭발적인 성능을 이끌어낼 수 있고 덩치 큰 시스템을 효율적으로 분할하여 사용할 수 있는 최고의 방법이다.
이제 이렇게 분할된 각각의 자원들을 어떻게 관리하고 운용할 것인가가 과제로 남게 되는데 이 부분을 설명할 수 있는 것이 바로 자동화이다. 자동화에 대한 이야기를 하려면 다음 키워드인 Set과 같이 설명하는 것이 좋겠다.
Set
앞서 설명한 것처럼 가상화를 이용한 것이든, 병렬 컴퓨팅의 구현을 위하여 자원을 나눈 것이든 모든 것은 하나 이상의 객체로 구성된 집합 (논리적이든 물리적이든 개념적인 것이든 관계없다)으로 묶일 필요가 있다. 그리고 집합으로 되어있는 자원에 대한 컴퓨팅 업계의 일반적인 접근 방법은 일반적으로 일괄 처리 방식과 같은, 즉 자동화와 관련이 있다.
Cloud Computing에서의 자동화는 단순히 관리를 자동화하는 것 말고도 하나의 분명한 목표가 있다. 유틸리티 컴퓨팅을 구현하기 위한 탄력성을 유지하는 것이 그 목표이다. 여기서 유틸리티 컴퓨팅이란 사용한 만큼 비용을 요구하거나 비용을 내는 것으로 양쪽 모두 해당 사항이 있다. 소비자의 입장에서는 Cloud Computing을 이용하여 필요한 만큼 자원을 빌려서 사용하고 그 값을 치르는 것을 선호한다. 반대로 공급자 입장에서는 필요한 만큼 Cloud Computing 자원을 생성하여 제공하고 필요하지 않을 때는 에너지 자원 소비량을 최소화 – 또는 – 다른 Cloud Computing 소비자에게 더 많은 자원을 공급하기 위한 목적으로 낭비되는 자원을 제거하기 위한 자동화 프로세스가 필요하다. 물론 필요하다면 더 많은 자원을 확보할 수 있는 프로세스도 병행되어야 한다. 막연히 자원을 나누거나 나누어진 자원을 유지/관리하기 위한 자동화가 아니라 경제적인 이점을 가져다 줄 수 있는 자동화를 생각해야 하는 것이다.
여기서 알아둘 것이 하나 더 있는데, 단순히 시스템을 나누는 것 말고도 Cloud Computing에서 중요하게 생각하는 가치가 있다. 서로 성격이 다르고, 구성하는 방식이 다른 컴퓨터나 서비스 사이에서도 유기적으로 연결되어 전체적인 시스템이 완성될 수 있도록 돕는 상호운용성과 분산 기술에 대한 것을 빠뜨려서는 안되겠다. 내부적으로는 역할로 정의되는 서로 다른 스케일의 인스턴스 집합들이 상호작용하는 방법을 디자인하는 일이 출발점이 될 수 있고, 외부적으로는 Cloud Computing 서비스 간 – 또는 – Cloud Computing 서비스가 온 프레미스 서비스에 의존하는 형태와 같은 상호 작용과 아키텍처를 설계하는 일까지 포함할 수 있다. 이것이 Set이라는 키워드와 연결된 Cloud Computing의 모습이다.
Connected Computers
Cloud Computing은 언제나 연결된 상태여야 한다. 바깥이든 안이든 관계없이, 요즈음 우리는 인터넷, 즉 TCP/IP를 기반으로 하는 연결의 사용에 매우 익숙하다. 그리고 인터넷을 이용하는 것이므로 당연히 인터넷 체계를 이해하고 활용할 수 있는 수많은 전자 장치들과 상호작용할 수 있으므로 상호 운용성에 있어서도 문제될 것이 전혀 없다.
Cloud Computing을 기반으로 시스템을 구축하는 과정에서 생각해야 할 것은 이와 같이 연결되어있는 시스템들 사이의 성능에 관한 것이다. 인터넷을 기반으로 모든 것이 구동된다는 점을 고려해볼 때 그 어느 때보다도 네트워크 응답 속도가 중요한 요소로 자리잡게 되는 것이다. 이에 따라 주요 Cloud Computing 업체들은 자원의 배분 말고도 네트워크 응답 속도를 향상 시키기 위한 다양한 전략을 구사하고 있다.
더욱 재미있는 사실은, 최적의 네트워크 응답 속도의 확보를 위하여 의외로 1차원적인 관점에서 노력을 기울이고 있다는 점인데, 그 부분은 바로 데이터센터 부지의 확보와 데이터센터의 유지 보수 편의성 증대에 관한 것이다. 최상의 응답 속도 확보를 위하여 주요 경제 거점과 가장 가까우면서도 하드웨어에 대한 장애가 발생할 확률이 상대적으로 적은 기후 환경을 택하는 것이다. 그리고 각 개별 객체가 의도하지 않은 재해로 인하여 중단되는 시간을 최소화할 수 있도록 데이터 센터 내의 하드웨어 교체 시간을 최소화할 수 있는 혁신적인 데이터센터 설계 공법이 여기에 더해진다.
결국 우리가 모두 가지고 있는 기술 아닌가?
이 질문에 대한 대답은 YES이다. 앞에서 Cloud Computing을 사용한다는 것이 남의 자원을 빌려다 쓰는 것이고 그래서 그저 믿지 못하겠다고 선입견에 빠지는 것이 오류라고 하였는데 이는 사실이다. 만약 여러분의 IT 부서 – 또는 – 기업이 능력만 된다면 전사적인 차원에서 Cloud Computing으로의 이행을 기획할 수도 있고, 더 나아가서 일반 소비자들에게도 서비스가 가능한 Cloud Computing을 구현할 수도 있다. Microsoft, Amazon, IBM, VMware 등 이름만 들어도 알만한 회사들의 기술력을 바탕으로 말이다.
그렇지만 이를 실천하는 것은 매우 어렵고 비용이 비싼 일이라는 것을 몇 걸음 떼보면 금방 체감할 수 있을 것이다. 그리고 앞서 언급한 기업들이 일반 소비자들과 기업들을 대상으로 제공하는 서비스들은 당연히 여러분의 Cloud Computing 서비스보다 완성도가 높다. 그것도 99% 이상의 서비스 가동률을 보장하는 계약과 더불어서 말이다. 여러분의 능력과 재량에 따른 것이긴 하겠지만 한 가지 확실한 것은, 여러분이 생각하는 것만큼 Cloud Computing 서비스는 불안하지 않다는 것이다.
그럼에도 불구하고 Cloud Computing의 이점을 완벽하게 얻기 위해서는 이러한 기업들이 제공하는 가동률이 매우 뛰어나고 우수한 서비스 말고도 여러분 고유의 서비스를 구현해야 할 필요성이 있다. 외부에 노출하여 운영하는 서비스가 아닌, 여러분이 A-to-Z를 모두 관리하고 통제해야 할 필요가 있는 사항들을 완벽히 관리할 수 있기 위해서는 Cloud Computing 환경을 여러분의 입맛에 맞게 다듬어야 할 필요가 있다. 더 나아가서는, 전산 직원이 없을지라도 웹 사이트에서 마치 음식을 주문하듯 필요한 서비스나 자원을 사용자가 요청하면 즉시 서비스가 준비될 수 있는 자판기 같은 서비스를 만족시키기 위해서는 Cloud Computing 기술이 필수적이다. 이를 두고 흔히 Self-Service Portal이라고 한다.
Self Service Portal 하나면 만사 OK인가?
Self Service Portal은 앞서 이야기한 공용 Cloud Computing 서비스에서는 물론 사설 Cloud Computing 서비스에서도 반드시 제공되어야 하는 기본 구성 요소이다. 이러한 구성 요소를 통하면 사용자는 관리자나 개발자에게 불필요한 업무를 지시해야 할 이유가 없어지고 각자의 역할에 알맞은 업무에 더 많은 시간을 투자할 수 있어 훨씬 경제적이다.
이를 두고 일각에서는 IT 인력의 Job Security를 깨먹는 일이 아닌가 하는 우려를 하기도 한다. 그러나 필자는 이 부분에 대하여 동의하지 않는다. Job Security를 잃어버릴 만큼 얇은 지식과 노하우를 가지고는 결코 지금의 자리에 오를 수 없었을 것이다. Cloud Computing 환경이 상당부분의 작업을 자동화하고 프로그래밍 시간을 줄이는 것은 사실이지만, Cloud Computing은 사람을 대체하는 인공 지능이나 Turing Machine 따위가 아니다. 더불어서 관리자나 개발자들은 예전의 엔터프라이즈 시스템에서와 같이 시스템 하나에 집중하는 것이 아닌, 아키텍처를 관리하고 개발하기 위한 역량을 개발하는 일에 시간과 비용을 투자해야만 한다. 따라서 더 많은 부가 가치를 창출하기 위한 작업에서 이전보다 더 큰 재능과 역량을 필요로 하게 될 것이다.
다음 시간에는
다음 시간에는 Cloud Computing을 설명하는 또 다른 문장인 Everything as a Service, 즉 서비스화의 관점에서 바라보는 Cloud Computing을 집중적으로 살펴보고자 한다. 오늘 살펴본 Cloud Computing의 정의가 기술적인 것에 관한 내용이었다면, 이제 이러한 기술적 바탕으로 무엇을 서비스화할 수 있고 어떻게 가치를 창출해낼 수 있을 것인지를 깊이 있게 살펴보아야 할 때이다.