1. 분산컴퓨팅의 발전 역사분산컴퓨팅의 분야에서 최근 20년간 발전되어 왔다. 이렇게 발전하는 동안 분산처리, 분산 협동 처리, 분산 데이터 처리, 클라이언트-서버 컴퓨팅, 네트워크 컴퓨팅 및 슈퍼 네트워크 컴퓨팅과 같은 많은 용어들을 축적해 왔다. 인터넷 기반 분산컴퓨팅은 인터넷에 연결된 여러 컴퓨터들의 처리능력을 이용하여 거대한 계산문제를 해결하려는 분산처리 모델로, P2P기술의 일부분이다.1970년대에는 PC의 프로세싱 자원을 활용하려는 생각을 하였다. 1970년대 초 인터넷의 효시로도 불리는 ‘ARPAnet’ 이 처음 등장하여 Creeper와 Reaper 같은 몇몇 프로그램들이 출현했다. 또한 분산 컴퓨팅은 광역 네트워크(WAN)를 통해 상호 연결된 메인프레임과 미니컴퓨터에 의해 특징 지워 졌다. 이들 네트워크는 느려서 보통 초당 2400에서 9600 비트였고, 컴퓨터는 )터미널에뮬레이션과 파일 전송을 통해 정보를 교환하였다. 일반적으로, 미니컴퓨터는 터미널로 에뮬레이트 되었으므로, 터미널 에뮬레이션을 통해 메인프레임 데이터에 접근할 수 있었다. 많은 파일 전송 및 터미널 에뮬레이션 패키지가 이 기간에 개발되었다.분산 데이터베이스 분야의 다량의 연구가 이 기간에 이루어졌어도, 이때의 기술은 제품이나 실무수준에는 미치지 못하였다. 당시에는 분산처리(여러 컴퓨터에서의 애플리케이션 처리를 일컬을 때)와 분산 데이터 처리(애플리케이션 프로세스 뿐 아니라 데이터까지 여러 컴퓨터로 분산되었을 때)가 흥했는데 당시의 기본이 되는 정보 교환기술은 파일전송과 터미널 에뮬레이션이었다.1980년대에, 세 가지 주요한 변화가 생겨났다. 첫째는 데스크탑 컴퓨터의 증가, 둘째는 LAN의 가용성, 세 번째로는 더 높은 데이터 통신 속도의 공통 사용(LAN의 경우 400만에서 1600만 bps, WAN의 경우 56000에서 154만 bps)이다. 이 기간 동안 전형적인 분산 컴퓨팅은 메인프레임, 미니컴퓨터, 그리고 LAN과 WAN을 통해서 상호 연결된 데스크탑 컴퓨터로 이루어 졌다, 네트워크 컴퓨팅이란 용어가 일반화되어 네트워크의 역할을 컴퓨터의 부가가치 기능으로 강조하였다. 일부 분산 데이터베이스와 클라이언트-서버 패키지가 제품수준에서 쓰이게 되었어도, 이 단계에서 정보를 위한 주요 실무수준의 기술은 여전히 터미널 에뮬레이션과 파일 전송이었다. 그러므로 원격 데이터는 여전히 원격 컴퓨터에 원격적으로 로그온하거나, 파일 전송 패키지를 통해 파일을 전송함으로써 접근하였다.1990년대에는 많은 주요한 변화가 일어났다. 원격 프로세스사이에서 투명한 정보 교환을 위해 분산 데이터베이스와 클라이언트-서버 패키지를 사용할 수 있게 되었고, 강력하고 저렴한 데스크탑 컴퓨터와 랩탑 컴퓨터가 증가하였다. 특히 90년대 후반에는 인터넷의 대중화로 1997년에 RSA Data Security사가 Distributed.net 프로젝트를 시작하여 약 30만명의 이용자가 참여하였으며 DES 64 Bit 암호를 해독하였다. 또한 복수 판매업체 제품이 소개되어지기도 하였다. 그 외에도 개방 표준에 역점을 두었으며, 상업적인 고속 네트워크(LAN,WAN과 MAN의 경우 1억 bps 이상)를 사용할 수 있게 되었다. 이 기간의 전형적인 분산컴퓨팅 시스템은 다른 판매업체로부터 상이한 기능을 가진 많은 컴퓨터로 이루어져, 다른 공급자가 제공한 고속 네트워크를 통해 광대한 지역에 걸쳐 연결되었다. 그 이전의 용어에 덧 붙여, 분산 협동 처리라는 용어가 이들 시스템의 주요 기능을 강조하기 때문에 관심을 끌고 있다. 이들은 서로 다른 컴퓨터의 프로세스들이 대화식으로 정보를 교환하는 것을 가능케 한다. 클라이언트-서버 컴퓨팅이 분산 협동 처리의 가장 일반적인 형태이다. 이로써, 클라이언트 어플리케이션(예, 스프레드시트, 조회 프로세서, 사용자 인터페이스)이 네트워크를 거쳐 투명하게 서버(예, 데이터베이스 서버, 파일 서버, 인쇄 서버)에 접근할 수 있었다. 클라이언트-서버 컴퓨팅은 분산 컴퓨팅을 기초로 이전의 터미널 에뮬레이션과 파일 전송으로부터 진보된 주요 단계이다.2000년대형 컴퓨터 제조업체의 고성능의 컴퓨터인 슈퍼컴퓨터를 탄생시켰고, 이러한 슈퍼컴퓨터 중심의 새로운 컴퓨팅 모델이 탄생되었다. 슈퍼컴퓨터 중심의 서비스는 기존의 클라이언트-서버 중심의 컴퓨팅 보다 고성능을 요구하는 업무에 대한 처리를 지원하기 위한 모델이었다. 슈퍼컴퓨터의 구성하는 장비는 상당히 고가였고, 일반인이 사용하기에는 부담이 되는 비용이 많이 들었다.(예, Cray) 비용의 감소 측면에서 단일 슈퍼컴퓨터보다 중형급의 다수를 결합하여 슈퍼 컴퓨팅을 지원하는 그리드 컴퓨팅이 탄생하였고, 이러한 모델을 기반으로 컴퓨팅 자원을 제공하는 유틸리티 컴퓨팅 모델이 함께 탄생되었다. 후반에 들어서는 NIC(Network Interface Card)가 내장된 휴대용 단말기가 탄생되었다. 이에 따른 이동성을 포함한 유비쿼터스/모바일 컴퓨팅이라는 새로운 개념이 탄생되었다. 스마트 단말기를 통하여 언제 어디서든지 인터넷과 연결하여 필요한 컴퓨팅을 실현하는 모델이 나타난 것이다. 2000년대 후반에 탄생한 클라우드와 클라우드 컴퓨팅은 새로운 분산 컴퓨팅 모델로 계속 확대되고 있다.1.1 해외및 우리나라의 분산컴퓨팅 프로젝트 동향해외의 분산컴퓨팅 프로젝트를 통한 발전의 모습을 살펴보면 미국을 중심으로 영국, 독일 등 유럽에서도 많은 관심을 가지고 바이오 분야, 기상, 인공지능, 수학, 암호학 등 다양한 응용분야에서 프로젝트가 수행되고 있다. 이중 가장 대중적으로 성공을 거두고 있는 것은 유명한 프로젝트인 SETI@Home(Search for Extraterrestrial Intelligence, 외계 지적생명체 탐사) 프로젝트이다. SETI@Home은 1999년 본격적으로 프로젝트를 시작해 2003년 현재 약 300만명 이상의 이용자가 참여하고 있다. 이외에도 스탠포드대학과 영국의 옥스퍼드대학 등이 중심이 되어 @Home 프로젝트의 중추적인 역할을 수행하고 있으며, 관련 업체로써는 Entropia, United Devices, Parabon 등이 대표적으로 바이오 분야의 프로젝에서는 정보통신부가 2002년부터 'Korea@Home 프로젝트'를 추진 하고 있다. 이 사업은 인터넷 기반 분산컴퓨팅 기법을 활용해 수십∼수백만 대의 유휴 PC 를 모아 가상의 대용량 슈퍼컴퓨팅을 구현하는 것이 기본목표다. PlayStation 3 진영의 합류에 힘을 얻으며 처리 성능을 1 PETA-FLOP 이상으로 끌어올린 미 스탠포드 대학이 운영 하고 있는 분산 컴퓨팅 프로젝트 Folding@Home이 세계 최대의 분산 컴퓨팅 프로젝트 기네스북에 등재되었다.비슷한 형태의 분산 컴퓨팅 프로젝트인 우리나라의 Korea@Home 서비스의 성능은Korea@Home 웹사이트에 표기되어 있는 현 시점의 성능으로 Folding@Home에 비해서는 상대적으로 저조한 편이다. 하지만 우리나라의 과학 발전을 위해 기꺼이 자신의 PC 자원을 공유하는 이들 덕분에 현재도 유전체 서열 비교, 신약 후보 물질 탐색 등의 다양한 연구가 수행되고 있다.2. 분산 컴퓨팅의 특징분산컴퓨팅의 특징을 발전방향의 진행된 과정을 살펴봄으로서 정의를 내려보았다.2.1, 새로운 애플리케이션의 지원과거의 애플리케이션은 시스템 사이의 통신을 데이터의 일괄 전송을 수단으로 지원할 수 있었다. 보다 새로운 미래의 애플리케이션은 다양한 원격지의 사용자들이 서로 좀 더 대화식으로 정보를 교환할 것을 필요로 한다. 그러한 애플리케이션의 예를 살펴보면 첫째로는 워크스테이션에 상주하는 정교한 그래픽 사용자 인터페이스로서, 많은 위치에서 원격지의 정보에 접근한다. 두 번째로는 동일한 워크스테이션에서 데이터, 음성 및 동화상을 결합하는 멀티미디어 애플리케이션(대부분의 경우 텍스트, 그림 및 동화상/음성이 동일한 워크스테이션의 다른 윈도우에 나타난다.)이 있다. 세 번째로는 의료 산업의 x-ray, 출판 산업의 교정과 광고, 항공 우주 산업에서 이미지 처리하는 애플리케이션 등이 있다. 이들 애플리케이션은 네트워크를 통해 대화식으로 전송되어야 하는 많은 양의 데이터로 특징지워 질 수 있다. 예를 들어, 몇몇 애플리케이션 시간등을 보여 준다. 많은 애플리케이션이 초당 1억 비트의 자료 전송률과 여러 시간의 회기 지속을 필요로 하는 것처럼 보일 수 있다. 이러한 특성은 네트워크, 컴퓨팅 하드웨어, 애플리케이션 소프트웨어의 기능 강화를 요구한다.2.2 투명성분산 컴퓨터 시스템은 가능한 많은 투명성을 제공해야 한다. 최종 사용자 투명성, 개발자 투명성, 설계자 투명성, 관리자 투명성의 단계에서 투명성을 정의 할 수 있다. 최종 사용자 투명성은 사용자의 조작이 네트워크, 운영체제, 컴퓨터 시스템 및 데이터베이스/트랜잭션 관리자로부터 어떻게 투명할 수 있는가를 보여 준다. 이상적으로는, 100%의 사용자 투명 시스템이 단일 시스템으로(사용자가 시스템의 어느 위치에서 어떤 활동이 이루어지는지 모르게)작동해야 한다. 일반 사용자 투명성은 네트워크 하드웨어/서비스 투명성, 사용자 위치 투명성, 데이터 위치 투명성, 트랙잭션 실행 투명성, 프로세서 투명성, I/O장치 투명성, 결함 투명성 등으로 정의될 수 있다. 네트워크 소프트웨어, 분산 애플리케이션 지원 서비스 및 애플리케이션은 이러한 투명성을 제공하면서 협동한다. 현재, 네트워크 하드웨어와 네트워크 서비스 투명성이 제품수준에 있고, 기타 다른 투명성은 실무수준으로 발전하고 있다.최고 사용자 투명성과 더불어, 애플리케이션을 개발하는 동안 애플리케이션 개발자는 다른 시스템의 세부사항으로부터 격리 될 수 있다. 다시 말해서, 애플리케이션 시스템이 다른 네트워크를 통해 상호 연결된 다른 컴퓨터와 호환 가능해져야 한다. 개발자 투명성은 사용자 인터페이스 투명성, 프로그램 코드 투명성, 데이터 투명성 세 단계로 논의 할 수 있다.많은 표준이 개발되어 개발 투명성을 지원하고 있다. 표준의 예로, 사용자 인터페이스의 경우 X Window, 프로그래밍의 경우C, 데이터베이스 접근방식의 경우 SQL이 있다.관리 투명성은 분산 컴퓨팅의 관리가 중앙 집중 시스템의 관리만큼 단순해지는 것을 의미한다. 예를 들어, 보안과 회계는 네트워크 내에서 자동화 되어야 다