Your SlideShare is downloading. ×
병렬처리
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

병렬처리

1,070
views

Published on


0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,070
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
6
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 병렬 처리 개인 보고서<br />Cloud Computing의 기술 동향과 Cloud Computing(Azure) 프로젝트2011. 04. 13<br />제 1 장. 기술 개발 및 작품 개요<br />제 1 절. 기술 동향<br />클라우드 컴퓨팅(Cloud computing)은 인터넷 기반(cloud)의 컴퓨팅(computing)기술을 의미한다. 인터넷 상의 유틸리티 데이터 서버에 프로그램을 두고 그때 그때 컴퓨터나 휴대폰 등에 불러와서 사용하는 웹에 기반한 소프트웨어 서비스이다.<br />먼저 클라우드 컴퓨팅을 이해하려면 SaaS의 용어의 정의와 기술내용을 알아야 한다. SaaS(Software as a Service)란 기존의 ASP를 확장한 개념으로 차세대 ASP로 볼 수 있다. SaaS와 ASP는 아래와 같은 차이점이 있다.<br />SaaS는 불특정 다수를 대상으로 전산서비스에 제공에 중점을 두어 확장성과 고객요구사항 커스터마이즈에 중점을 둔다. 소프트웨어의 핵심 특징은 다음과 같다. 네트워크 기반으로 접근하고 관리하는 상업적으로 사용 가능한 소프트웨어, 각 고객 사이트가 아닌 중앙의 위치에서 활동을 관리, 고객이 웹을 통해 어플리케이션에 접근하도록 함, 어플리케이션 전달은 일반적으로 일대일 모델보다는 일대다에 가까우며, 여기에는 아키텍처, 가격, 파트너링, 관리 특성이 포함된다. 중앙화된 기능 업데이트로 패치와 업그레이드 다운로드 필요를 없앰. 이러한 특징을 가진 SaaS는 앞으로 설명할 클라우드 컴퓨팅 시스템과 매우 유사한 점을 가진다.<br />클라우드 컴퓨팅은 IT 관련된 기능들이 서비스 형태로 제공되는 컴퓨팅 스타일이다. 사용자들은 지원하는 기술 인프라스트럭처에 대한 전문지식이 없어도 또는 제어할 줄 몰라도 인터넷으로부터 서비스를 이용할 수 있다.<br />IEEE에서는 “정보가 인터넷 상의 서버에 영구적으로 저장되고 데스크탑이나 테이블 컴퓨터, 노트북, 벽걸이 컴퓨터, 휴대용 기기 등과 같은 클라이언트에는 일시적으로 보관되는 패러다임이다.”라고 말한다.<br />클라우드 컴퓨팅은 웹 2.0,SaaS와 같은 최근 잘 알려진 기술 경향들과 연관성을 가지는 일반화된 개념이다. 이들 개념들의 공통점은 사용자들의 컴퓨팅 요구를 만족시키기 위해 인터넷을 이용한다는 사실이다. 예로서 구글앱스가 있다.<br />컴퓨터 네트윅 구성도에서 인터넷을 구름으로 표현한다. 이때 구름은 복잡한 인트라 구조를 의미한다. 사용자는 이러한 복잡한 인프라 구조를 알지 못해도 클라우드 컴퓨팅을 이용 할수 있다.<br />클라우드 컴퓨팅의 개념은 1960년대 미국의 컴퓨터 학자인 존 매카시가 “컴퓨팅 환경은 공공 시설을 쓰는 것과도 같을 것” 이라는 개념을 제시한데에 있다. 1990년대에 이미 클라우드라는 용어가 거대한 ATM을 지칭하는데 쓰였다. General Magic사는 1995년에 AT&T와 다른 여러 통신사들과 제휴를 맺고 클라우드 컴퓨팅을 서비스 시작했다. 하지만 이 시기는 소비자 중심의 웹 기반이 형성되기 전의 일이었기 때문에 사업은 실패했다. 21세기에 들어서야 클라우드 컴퓨팅이라는 단어가 널리 퍼지기 시작했다. 하지만 당시의 클라우드 컴퓨팅은 대부분의 내용이 SaaS에 집중되어 있었다. 1999년 Marc Benioff, Parker Harris와 그들의 그룹이 중심이 되어 설립된 Salesforce.com은 구글같은 회사에서 개발된 많은 기술들을 접목시키고, 야후에서 개발된 업무용 애플리케이션을 접목시킨 클라우드 컴퓨팅환경을 제공했다. 이들은 “On Demand"나 Saas와 같은 새로운 개념을 적용했고, 많은 업무용 사용자들은 호환성과 속도에서 열렬한 반을을 보였다. 2000년도 초반, 마이크로소프트는 웹 서비스에 따라 SaaS의 개념을 확장하고, IBM은 이러한 개념들을 2001년에 발표한 자율적 컴퓨팅 성명성에 규정함 규정함으로써 확립시켰다. 아마존은 클라우드 컴퓨팅의 발전에 중요한 역할을 했다. 닷컴 버블 사태 이우에 아마존은 갑자기 증가하는 트래픽에 대비하기 위해 남겨두었던 그들의 데이터 센터의 유휴자원을 활용했다. 기존에 아마존이 쓰고 있던 ”two-pizza team"원칙 덕분에 아마존은 새로운 기능을 빠르게 내놓을 수 있었다. 이러한 기반 속에서 아마존은 2005년에 자사의 웹 서비스를 통해 유틸리티 컴퓨팅을 기반으로 하는 클라우드 컴퓨팅 서비스를 시작했다. 2007년에, 구글과 IBM 그리고 몇몇 대학들은 큰 규모의 클라우드 컴퓨팅 연구를 시작했다.<br />제 2 절. 작품 개요<br />본 프로젝트는 클라우드 컴퓨팅기술을 접목하여 Microsoft의 Windows Azure라는 마이크로소프트에서 제공하는 SDK를 이용하여 직접 프로그램을 제작하고 클라우드 컴퓨팅화 시키는 것이 목적이다. 먼저 Window Azure라는 것은 Microsoft의 Window Azure는 클라이드 컴퓨팅 기술에 대한 Microsoft의 구현이다. Azure는 지난 PDC2008행사에서 처음 선보였고 현재는 지속적으로 CTP의 형태로 관련 개발 도구를 제공하고 있다.<br />Windows Azure는 클라우드 컴퓨팅 환경 위에서 구동되는 클라우드형 운영 체제 이다. 위에서 학술적으로 기술하고 이해하였던 운영 체제의 개념은 실제 물리적인 컴퓨터 하드웨어 한 대와 실제 사용자 한 명 사이의 창구 개념이지만, Window Azure에서 소개하는 클라우드형 운영체제는 조금 다른 개념이다. 기존 운영 체제의 역할과는 달리, 서비스와 사용자 사이를 중계하는 데에 사용하는 것이 클라우드형 운영 체제의 의미이다.<br />위의 그림은 Windows Azure Fabric의 구조를 보여주고 있다. Fabric은 사전적인 의미로 천조각을 뜻한다. 여기서의 의미는 사용하고자 하는 컴퓨터의 인스턴스 개체 수를 뜻한다. 그렇게 보았을 때, Windows Azure 개발자는 Fabric을 필요한 수만큼 할당받아, Fabric Agent와 통신하면서 실제 실제 응용 프로그램을 작성 할 것입니다.<br />먼저 Azure의 올린 프로그램을 작성해야 하는데, 보통 Azure는 .net환경에서 제공하는 프로그램이 가능한데, 먼저 저번 프로젝트 때 개발하였던 편미분방정식 계산에서의 문제 분할을 응용한 GUI프로그램이다. 이 프로그램은 C#으로 개발되어 Azure로 문제 없이 올릴수 있다. 간략하게 어떠한 프로그램인지 소개 하자면, 편미분 방정식을 이용하여 평면상에서 경계조건이 0으로 주어졌을 때 평면상의 각 점의 값들이 시간에 따라 변하는 과정과 steady state 값을 찾아내는 식을 GUI로 작성하여 점들의 색변화를 볼수 있는 프로그램이다. <br />[그림 2-1] 프로그램의 기본 틀<br />이 프로그램의 기본틀은 위와 같다. 최초 빨간색의 점들이 유한차이법 계산식을 이용하여 각각의 RGB값을 변화시키면서 색의 변화를 볼 수 있다.<br />제 2 장. 관련 기술<br />본 장에서는 클라우드 컴퓨팅의 조금 더 자세한 관련 기술과, 현재 인식 되어 있는 클라우드 컴퓨팅의 시각과 중요성을 연구하고, 프로젝트 프로그램의 클래스 구조를 확인한다. 또한 프로그램의 사용법, 개발환경, 언어와 Tool에 대해 자세히 기술한다.<br />제 1 절. 클라우드 컴퓨팅의 관련기술<br />클라우드 컴퓨팅의 발상지인 미국은 현재 많은 기업에서 클라우드 컴퓨팅에 대한 제품을 출시하고 있으며 다음 단계의 서비스 마련을 위하여 연구 개발에 박차를 가하고 있다. <br />아마존의 경우는 IaaS로 제공되는 EC2와 S3, 구글은 PaaS로 제공되는 AppEngine과 이를 기반으로 작성되는 앱스가 주요 비즈니스 모델이며, 최근들어 모바일 단말을 겨냥한 Android까지 확장하고 있다. 마이크로소프트는 Azure 플랫폼과 라이브 서비스, 모바일 단말 솔루션으로서의 Win Mo를 역점항목으로 추진중이다. 세일즈포스닷컴은 Salesforce라는 이름으로 SaaS 서비스에 역점을 두고 있다. 이밖에 Sun, IBM, HP는 하드웨어 자체를 핵심 비즈니스로 하지만 각 회사들은 각각의 클라우드 컴퓨팅솔루션을 마련하고 있다. 다음은 각 업체별로 중점 적인 비즈니스 영역을 소개한다.<br />[그림 2-2] 미국의 선두업체별로 비즈니스 주력 항목<br />1. 아마존<br />클라우드 컴퓨팅의 IaaS 서비스를 가장 먼저 사용하였다. 아마존은 중소기업과 개발자를 겨냥한 스토리지 서비스인 S3(Simple StorageService), 웹 호스팅 및 컴퓨팅 자원을 서비스하는 EC2, Queue 서비스를 위한 SQS, 데이터베이스 서비스를 위한 SimpleDB 등 다양한 서비스를 제공하고 있다. 이는 모두 초기 서비스인 AWS를 기반으로 운영되고 있다. S3는 데이터 저장 및 검색 기능을 가지고 웹서비스로 제공되어 인터넷이 가능하면 어디에서든 접근가능하다. S3는 기가바이트 당 한 달 사용료로 15센트를 지불하면 된다. EC2는 가상 시스템을 수 분 내에 요청하고 사용용량에 따라서 손쉽게 확장 또는 축소할 수 있는 웹서비스 형태로 제공된다. 아마존에서는 현재 싱글코어 x86서버에서 8-코어 x86_64 서버까지 다섯가지 형태의 서버를 제공하고 있다. 장애에 대비하기 위한 멀티 인스턴스를 여러 지역 또는 다른 영역에 배치할 수 있다. EC2는 CPU 개수, 메모리 크기, 디스크 크기에 따라 시간 당 10~80센트의 사용료를 받는다 SQS는 아마존 내에서 사용되고 있는 인프라에 신뢰성 있는 접근 방법을 제공한다. 간단한 REST 기반의 HTTP 요청을 사용하여 어디에서나 메시지를 보내고 검색할 수 있다. 만들 수 있는 큐의 개수와 보낼수 있는 메시지의 수에 제한이 없으며 아마존 내의 여러 서버와 데이터 센터에 메시지를 저장하므로 메시징 시스템에 필요한 중복성과 신뢰성을 갖출 수 있다.<br />SimpleDB 서비스는 구조화된 데이터를 저장, 처리하는 웹 서비스이다. SimpleDB는 사용하기 쉽게 구현되었으며, 관계형 데이터베이스의 기능을 대부분 제공한다.<br />아마존 서비스는 2006년 3월에 시작된 이후 2007년부터는 유럽에까지 확대 제공하고 있다. 이용자도 급격히 늘어나 2007년 10월 100억 건이었던 사용 수가 2009년 1월에는 140억 건으로 크게 확대되었다. 웹 호스팅을 비롯해 이미지 호스팅, 백업 시스템 등으로 활용되면서 그 쓰임새가 더욱 커지고 있고, 다양한 고객의 업무 환경에 맞춰 이용될 수 있도록 다양한 형태로 제공하고 있다.<br />2. 구글<br />구글은 앱엔진(AppEngine)이라고 하는 PaaS 서비스로 클라우드 컴퓨팅 서비스의 대표주자가 되었다. 앱엔진은 웹 응용을 구축하고 호스팅할수 있도록 해주는 플랫폼(http://appengine.google.com)을 제공하고 여기서 만들어진 서비스를 비즈니스로 운영하면서 구글의 인프라를 서비스 용량에 따라 신축적으로 제공해 준다. 앱엔진에는 세 가지 주요 제공 인터페이스가 있다. 첫째는 데이터베이스로서 의 BigTable 사용 인터페이스이고, 둘째는 Python 이나 자바와 같은 언어 인터페이스, 그리고 마지막 셋째는 사용자 인증, 이미지 처리, 메일, 문서, 캘린더 등과 같이 미리 마련되어 있는 구글의 다양한 서비스를 사용할 수 있도록 제공하는 인터페이스이다. 구글의 앱엔진을 기반으로 작성된 많은 응용 프로그램에 대하여 구글 앱스(Apps)라고 하는 SaaS 서비스도 같이 제공하고 있다. 구글 앱스에서는 구글 캘린더, 구글 Docs 등이 대표 서비스로 사 용되고 있으며, 사용자는 구글 앱스 제공 서비스를 사용하고 그 결과 데이터를 구글 플랫폼에 저장한 후, 언제 어디서든 접근 가능하다는 장점을 갖는다<br />3. 세일즈포스닷컴<br />세일즈포스닷컴은 클라우드 컴퓨팅이 탄생하기 이전부터 SaaS 방식으로 고객관리(CRM)를 제공하면서 관련 시장의 65%를 차지할 정도로 관련업계의 큰 비중을 차지하고 있다. 그러면서도 영업 자동화(SFA), 파트너 관계 관리(PRM), 마케팅 자동화, 고객서비스 및 자원 자동화 등을 지원하는 등 지속적으로 새로운 서비스를 출시하고 영역을 확대해 나가고 있다.<br />세일즈포스닷컴의 2008년 매출이 10억 달러를 돌파하고 순익도 크게 증가하면서 세계 IT 시장의주목을 받았다. 2008년 말 기준으로 전 세계의 5만 5,400여 개의 고객사를 확보하고 있으며 총 150만 가입자를 보유하고 있다.<br />4. 마이크로소프트<br />마이크로소프트는 애저 서비스 플랫폼(Azure Service Platform)을 내세워 클라우드컴퓨팅 시장을 공략하고 있다(www.azure.com).애저 서비스 플랫폼은 애저로 제공하는 무한한 클라우드 컴퓨팅 파워를 활용하여 누구나 손쉽게 서비스를 개발할 수 있도록 하는 플랫폼이다. 애저 서비스 플랫폼을 중점으로 마이크로소프트는 IaaS, PaaS, SaaS 서비스를 모두 제공하고 있으며, 개방성과 상호 운용성에 초점을 두어 설계하였다. 개방성과 상호 운용성을 위하여 SOAP이나 REST 같은 표준 프로토콜을 사용하였으며, 자바, 루비, PHP(Hypertext Preprocessor) 등과 같은 공개 언어 및 이클립스와 같은 프로그래밍 환경 등을 제공 하여 접근하기 쉽도록 하였다. 애저 서비스 플랫폼은 라이브 서비스, SQL 서비스, .NET 서비스 등과 같은 기반 응용 모듈과 협업 관련 서비스나 CRM 관련 서비스 등의 전용 응용 모듈로 분류된다. 마이크로 소프트웨어는 또한 윈도 라이브 서비스 (Windows Live Service)로 윈도 라이브 메일, 라이브 메신저, 라이브 포토 갤러리 등 다양한 서비스를 제공하고 있으며, 이를 바탕으로 ‘Software Plus Service’라는 명칭 하에 기존 마이크로소프트의 오피스 등과 같은 오프라인 제품군을 온라인을 통해 제공하는 컨셉으로 SaaS 시장에서 경쟁하고 있다.<br />제 2 절. 유한차이법을 이용한 GUI버전 프로그램<br />Azure로 애플리케이션을 만들고 배포하는 개념으로 위에서 설명한 유한차이법 프로그램을 Azure를 이용하여 웹상에 게시하고 배포를 하면 된다.<br />이 프로젝트는 클라우딩 컴퓨터를 이해하고 Azure를 쓰기위한 방법으로 처음부터 Azure설치와 설정 및 개발 방법에 중점을 두고 설명하고자 한다.<br />먼저 Windows Azure 기반 응용프로그램 개발을 위한 필요 사양 요약하자면 필요한 운영 체제: Windows Vista, Windows 7, Windows Server 2008, Windows Server 2008 R2를 지원 한다. Windows 2000, Windows XP에서는 개발할 수가 없다.<br />필요한 구성 요소: IIS 7.x (ASP.NET, WCF HTTP 활성화, 정적 컨텐츠, CGI)<br />필요한 개발 도구: Visual Studio 2008 SP1, Visual Web Developer 2008 Express SP1, Visual Studio 2010, Visual Web Developer 2010 Express 중 하나 선택, 이 프로젝트는 Visual Web Developer Express 2010을 택하여 설명 한다.<br />필요한 데이터베이스: SQL Server 2005 Express 이상의 데이터베이스가 필요하다.<br />Windows Vista / 7에서 기본 환경 설정하기<br />1. 시작 메뉴를 클릭하고 프로그램 및 파일 검색란에 아래와 같이 appwiz.cpl을 입력한 후 Enter 키를 누릅니다. Windows Vista를 사용 중이시고, 고전 메뉴를 사용 중이신 경우 키보드의 Windows 키와 R 키를 동시에 눌러 나타나는 실행 대화 상자에서 같은 방법으로 실행할 수 있습니다.<br />2. 아래의 화면에서, Windows 기능 사용/사용 안함 항목을 클릭합니다. 사용자 계정 컨트롤 설정에 따라 최소 한 번 이상 관리자 권한이 필요함을 승인해야 하는 대화 상자가 나타날 수 있습니다.<br />3. Windows 기능 대화 상자에서, Microsoft .NET Framework 3.5.1 항목 아래의 Windows Communication Foundation HTTP Activation 항목을 체크합니다. 그리고, 아래의 이어지는 그림에서와 같이, 인터넷 정보 서비스 항목 아래의 응용프로그램 개발 기능 아래의 "ASP.NET"과 "CGI", 일반적인 HTTP 기능의 "정적 콘텐츠" 항목을 체크한 후, 확인 버튼을 클릭하여 설정을 적용합니다.<br />Azure 프로젝트 만들기<br />Azure Tools 를 다운로드 받아 설치하면 비주얼 스튜디오의 템플릿에 Cloud 라는 항목이 추가 된 것을 확인 할 수가 있다. Cloud 항목 아래에는 Windows Azure Cloud Service 라는 하나의 템플릿만 존재하고 있다. <br />프로젝트와 솔루션의 이름을 지정하고 확인을 누르면 아래와 같은 창을 만날 수 있다. Azure 는 Role 이라는 이름으로 프로젝트를 구분을 짓고 있다.. Role 이라는 것은 Azure 클라우드 플랫폼에서 구동되는 하나의 어플리케이션이라고 보면 된다. Web 형태의 서비스인지(Web Role) 아니면 데몬과 같은 백그라운드 어플리케이션인지(Worker Role) 등에 따라 Role 이 나뉘게 된다.<br />이렇게 프로젝트를 완성하게 되면 Microsoft Visual Studio에 이러한 프로젝트가 생성하게 된다.<br />00<br />기본적인 값으로 프로젝트를 실행시켰을 때 기본으로 구성된 웹페이지가 생성된다.<br />00<br />이제 유한차이법 GUI프로그램을 Azure로 올리게 되면 웹페이지에서 따로 다운 받지 않고 실행이 된다.<br />올리는 방법은 먼저 C#으로 구성되었던 GUI프로그램을 Azure프로젝트에 추가시키면 된다.<br />완성된 프로젝트를 실행시키게 되면 서버로 사용되는<br />http://127.0.0.1:81/WebForm1.aspx 이라는 explorer창이 띄게 된다.<br />이제 저 버튼을 실행시키게 되면 <br />이 실행이 되면서 프로그램을 실행할 수 있다.<br />제 3 절. Discussion<br />간단하게라도 클라우딩 프로젝트를 해보았다. 백문불여일견 [百聞不如一見]처럼<br />직접 프로젝트를 하면서 확실하게나마 클라우딩컴퓨터 시스템의 구조와 뜻을 알수 있었다. 물론 Azure가 클라우딩 컴퓨터 시스템이다라고는 딱 말할 수 없다. Azure는 사용자들이 간편하고 쉽게 클라우딩 서비스를 도와주는 SDK이므로 클라우딩 컴퓨터라고 정의 할 수는 없지만, 웹에서 다운받지 않고 인터넷만 가능하다면 언제든지 어디서든지 프로그래머가 올린 프로그램을 사용자들이 사용할 수 있으므로 실로 엄청난 SDK임에는 틀림이 없다.<br />일본에서는 작년과 올해 2년 연속 주목해야할 IT트렌드로 클라우딩 컴퓨터 시스템이<br />1위로 선정되었다. 다른 나라에서는 서서히 기업의 서비스들이 클라우딩 컴퓨터 서비스로 전환되어 가고 있지만, 아직까진 우리나라는 많이 더딘 감이 없지 않다. 정부나 기업에서 그런 서비스를 받고자 하기 보다는 자기가 직접 관심을 갖고 여러 프로그램들을 개발하는 문화가 되면 아마도 정부나 기업에서 서비스를 빠르고 효율성 있게 제공하고 더 빠른 성장속도를 가지지 않을까 라는 생각을 한다.<br />

×