클라우드 컴퓨팅과 인공지능의 만남

날짜2017.07.31
조회수30849
글자크기
    • Artificial Intelligence meets Cloud Computing
    • 클라우드 컴퓨팅(Cloud Computing)은 데이터에 대한 처리를 네트워크로 연결된 다수의 컴퓨팅 자원을 이용하여 저장 및 처리하는 기술이다. 다양한 컴퓨팅 디바이스(Device)들을 서로 유동적으로 연결하여 이 기기들 간의 업무 분산을 통하여 다양한 형태의 서비스를 제공할 수 있다. 클라우드는 직역하면‘ 구름’이다. 구름과 같이 수증기가 응집되어 하나의 커다란 집합체를 이루는 것처럼, 컴퓨터 과학에서 세세한 개별 장치들의 연결된 모임을 추상화한 개념이다. 이를 도식화할 때도 주로 아래 [그림1]과 같은 구름 모양의 이미지가 등장한다.
    • [그림 1] 클라우드 컴퓨팅의 도식화 예시
    • 클라우드 또는 클라우드 컴퓨팅의 처음 목적은 서버 자원의 효율적인 사용이었다. 서비스 사업자들이 보 유한 서버가 지역, 시간 등 의 특 성에 따라 특 정 서버에 부 하가 몰리거나, 상대적으로 다른 서버는 유휴(Idle)한 상태에 있는 문제를 해결하기 위한 분산컴퓨팅(Distributed computing)환경의 구축에서 클라우드는 시작되었다. 이는 서로 다른 서버들을 네트워크로 연결하고, 서버의 용량을 초과하는 방대한 양의 데이터를 나눠서 저장하거나, 많은 계산을 필요로 하는 작업들을 분산시켜서 병렬적으로 보다 빠르게 정보를 처리하도록 하는 것이 목적이다. 즉, 컴퓨팅 파워와 저장능력을 여러 다른 컴퓨터들과의 연결을 통해 향상시킨 개념이고, 다소 쉽고 직관적인 비유를 들자면, 컴퓨터 세상의 크라우드 소싱(Crowd sourcing)1 이라 할 수 있다.
    • 클라우드 컴퓨팅 서비스를 가능하게 하기 위해서는 먼저 가상화(Virtualization) 기술이 요구된다. 가상화 기술은 여러 하드웨어를 하나의 하드웨어처럼 동작하게 한다든가, 반대로 하나의 하드웨어를 여러 개의 하드웨어인 것처럼 동작하게 할 수 있는 기술이다. 클라우드 컴퓨팅에서 가상화 기술은 분산되어 있는 서로 다른 컴퓨팅 디바이스들을 사용자 입장에서는 마치 하나의 기기처럼 동작하는 것처럼 보이게끔 하는기술이며, 기기들 간의 통신 및 로드밸런싱(Load balancing)도 갖추어야 한다.
    • 사용자는 일반적으로 사용자가 보고, 듣고, 조작할 수 있는 친숙한 UI(User Interface)외에 그기반에서 일어나고 있는 복잡한 매커니즘에 대해서는 알 필요가 없다. 복잡한 기반 매커니즘을 숨기고 사용자에게는 꼭 필요한 UI만을 제공하는 것을 컴퓨터 과학에서는 추상화(Abstraction)라고하는데, 클라우드 컴퓨팅에도 각각의 하드웨어를 추상화시키는 작업이 필요하며 이를 구현하기위해서는 가상화 기술이 수반되어야 한다.
    • 가상화를 통한 클라우드 환경은 근래에 들어 하드웨어의 발달과 대중화로 인해 규모의 확장성 측면에서 괄목할 만한 성과를 보이고 있다. 클라우드 컴퓨팅은 수많은 CPU와 GPU를 병렬로 연결하여 슈퍼컴퓨터를 만들거나, 거대한 글로벌 엔터프라이즈 규모로 확장되는 양상을 보인다. 최근에는 고성능 인공지능의 등장과 빅데이터의 활성화에 따라 클라우드 컴퓨팅은 이 기술들을 보다 발전시킬 수 있는 인프라적인 요소로 각광을 받고 있다. 인공지능과 빅데이터는 클라우드 컴퓨팅을 발전시키기 위한 핵심기술이자 요인이다. 클라우드 컴퓨팅은 성능과 확장성이라는 측면에서도 많은 장점을 갖지만, 비용의 절감 측면에서도 장점이 있다. 이를테면, 수백 대로 이루어진 클라우드 컴퓨팅 환경을 구축했을 경우, 필요할 때는 슈퍼컴퓨터와 동일한 수준의 계산 성능을 보이면서, 자원의 일부는 서비스 제공에, 또 다른 일부는 내부 연구를 위한 실험환경으로, 남는 자원은 다른 사용자에게 유료로 빌려주는 등 컴퓨팅 자원을 효과적으로 사용할 수 있다. 이러한 유연함은 주로 특정 용도로만 사용되는 값비싼 슈퍼컴퓨터보다 더 경제적이다.
    • 클라우드 컴퓨팅의 서비스는 크게 세 가지로 분류 되는데, IaaS(Infrastructure as a Service), PaaS(Platform as a Service), SaaS(Software as a Service)가 있다. 이 분류는 미국 국립표준 기술연구소(NIST)에서 지정한 표준이다. 이들의 관계도는 [그림2]와 같이 계층화된 모델로
    • 종종 표현되곤 한다.
    • [그림 2] 클라우드 컴퓨팅 서비스의 종류
    • IaaS는 인프라에 관한 서비스이다. 인프라는 기본적으로 클라우드 서비스를 가능하게 하기 위해서 필요한 기반을 의미한다. 앞서 설명한 가상화 기술과 네트워크 기술을 통해 각각의 물리적인 컴퓨팅 자원을 분할, 통합, 관리하는 가상머신(Virtual Machine)환경 서비스를 제공한다. 사용자는 이 인프라 위에서 다양한 클라우드 서비스를 구현 및 테스트 하거나 활용할 수 있다. 클라우드 인프라를 구축하기 위해서는 우선 구현하고자 하는 클라우드 내에 네트워크로 연결된 장비(디바이스)들 간의 가상화가 필요하다.
    • 장비를 가상화한다는 것은 해당 장비가 하나의 물리적인 하드웨어를 가지고 있지만, 마치 두 개를 가진 것처럼 동작하게끔 한다는 것을 의미한다. 클라우드 서비스에서는 그 반대의 동작도 필요하다. 즉, 여러 대의 장비가 마치 하나의 장비인 것처럼 서로 유기적으로 묶여 있어야 하고, 이들 간의 업무 분산 및 데이터의 저장과 이동이 지원되어야 한다. 이를 위해서는 계산이나 저장소 역할을 하는 디바이스(대표적으로는 서버)가 각 개체단위로 가상머신이 되어야 하기도 한다.
    • 가상화의 개념에 대해서 조금 더 깊이 들어가 보자면, 장비에 장착되어 있는 하드웨어를 가상화하기 위해서는 하드웨어들을 관장할 가상머신모니터(VMM: Virtual Machine Monitor)와 같은 중간관리자가 필요한데, 이를 하이퍼바이저(Hyperviser)라고 한다. 가상화는 [그림3]과 같은 시스템 개념도상 하이퍼바이저의 위치 및 역할 차이에 따라 Type1과 Type2로 나뉜다.
    • [그림 3] 가상화의 종류
    • Type1은 일반적으로 하이퍼바이저(Hyperviser)형 가상화라고 한다. 이는 하드웨어상에 가상머신을 관리하기 위한 VMM을 직접 동작시키는 방식으로 하드웨어를 관장하기 위한 호스트 운영체제(OS)가 필요 없는 형태이다. 이 방식은 하이퍼바이저가 하드웨어의 어느 부분까지 관장하며 관리할 것인가에 따라 다시 전가상화(Full Virtualization)와 반가상화(Para로 나뉜다. Type2는 일반적으로 호스트(Host)형 가상화라고 하는데, 하드웨어상에 호스트 운영체제가 설치되어 있고, 이 호스트 운영체제상에 설치되어 하이퍼바이저 역할을 수행하는 VMM이 가상머신을 동작시키는 방식이다.
    • 쉽게 말하면, 하이퍼바이저 방식은 하드웨어 위에서 직접 가상머신을 구동하고, 호스트방식은 MS Windows와 같이 잘 알려진 운영체제 위에서 Linux를 에뮬레이션(Emulation) 하는 것과 같다. 하이퍼바이저 방식의 대표적인 예는 오픈 소스 기반인 Xen이나 KVM이 있고, 그밖에도 ESX, VM Server, Hyper-V 등이 있다. 호스트 방식의 대표적인 예로는 VM ware 시리즈나 Virtual Box, Virtual PC 등이 있다.
    • 다시 클라우드 서비스 주제로 돌아와서, IaaS로 제공할 수 있는 서비스는 파일 및 오브젝트 스토리지, 가상 IP주소를 비롯한 SDN(Software Define Network)과 같은 가상네트워크, 방화벽, 컴퓨터 부하 조절을 위한 로드밸런서(Load balancer) 등이 있다. IaaS 서비스의 과금 정책은 컴퓨팅이나 저장에 소모되는 자원의 사용량을 기반으로 책정한다.
    • PaaS는 플랫폼 제공 형태의 서비스이다. 제공할 수 있는 서비스로는 가상운영체제, 프로그래밍 언어 실행환경, 데이터베이스, 웹 서버와 같은 계산 자원이 있다. 또한, 개발자들에게 개발을 위한 도구로써 표준, 개발 응용프로그램의 배포를 위한 채널 등을 제공할 수 있다. 구글의 APP엔진이 대표적인 예이다.
    • 모바일 서비스에 특화된 BaaS(Backend as a Service)도 최근 PaaS로 각광받고 있다. BaaS는 모바일 디바이스를 통한클라우드 접속이 보편화되면서 등장하게 되었다. 모바일 앱 개발 시 자주 사용하는 공통적인 Backend 기능에는 계정등록 및 관리, 위치서비스, 데이터 저장 및 분석, 구매확인, 사용자 관리 푸시알림 등이 있는데, 이를 API형태로 제공받으면서 개발자들이 Backend 플랫폼을 서비스형태로 빌려 쓰는 개념이다. 예로 마이크로소프트(MS)는 이미 자사의 클라우드 컴퓨팅 플랫폼인 Azure에 BaaS기능을 포함시키고 있다.
    • SaaS는 사용자들에게 클라우드 인프라 및 플랫폼상에서 구동하는 온디맨드(On-Demand)형태의 응용 소프트웨어와데이터베이스 등을 제공한다. 이 서비스는 사용자들로 하여금 자신의 컴퓨터 또는 디바이스에 응용프로그램을 설치하고 실행할 필요가 없게끔 한다. 따라서 프로그램의 유지보수 및 관리 등과 같은 관련비용이 필요하지 않다. 대표적인
    • 서비스로는 구글 Docs, 네이버 클라우드, Dropbox 등이 있다.
    • 클라우드 컴퓨팅은 이처럼 자원의 효율적인 활용 측면에서 장점을 가지며, 사용자 입장에서는 반드시 좋은 컴퓨팅 사양을 갖추거나 특정 서비스를 제공받기 위한 프로그램을 자신의 단말에 설치하지 않아도 다양한 서비스를 받아 볼 수 있다는 장점이 있다. 이는 사용자 단말의 경량화를 가능하게 하며, 나아가 복잡한 컴퓨팅을 위한 추가적인 전력소모도 신경쓰지 않아도 됨을 의미한다.
    • 인공지능의 측면에서 클라우드 컴퓨팅은 어떠할까? 글로벌 IT업계들은 이미 경쟁적으로 인공지능의 성능향상을 위해 클라우드 컴퓨팅을 적극 활용하고 있다. 구글, IBM, MS, 아마존 등은 지금까지 축적해온 클라우드 기술을 바탕으로 인공지능 클라우드 솔루션과 서비스를 구축하고 있다. 구글이 선보인 강력한 바둑머신 알파고 또한 클라우드 컴퓨팅의 산물이다. 클라우드 컴퓨팅은 상대적으로 저렴한 비용으로 인공지능의 연산능력을 향상시킬 수 있고, 또한 컴퓨팅 자원의 추가나 가변이 용이하다. [표]는 글로벌 IT업계들의 인공지능을 위한 클라우드 컴퓨팅 환경 구축의 현황을 나타낸다.
    • [표] 글로벌 IT업계의 클라우드 및 인공지능 개발 현황
    • 이전 호에서도 언급했지만, 인공지능 딥러닝의 성능향상을 위해서는 수많은 데이터에 대한 학습이 필요하고, 이를 계산하기 위해서는 막강한 연산성능이 요구된다. 학습을 위한 빅데이터의 저장과 지속적인 공급 측면과, 높은 연산성능을 이끌어 내기 위한 컴퓨팅 측면에서 클라우드 컴퓨팅은 슈퍼컴퓨터에 비하여 뛰어난 유연성과 가성비를 제공한다.
    • 글로벌 IT업계들이 클라우드 방식으로 인공지능 서비스를 제공하거나 사용하고자 하는 데에는 성능과 유동적 관리 측면 외에도 또 다른 이유가 있다. 인공지능 서비스를 클라우드 형태로 제공하면 각 기업들은 반드시 모든 인공지능 기술을 확보할 필요가 없다. 다른 사업자가 제공하는 클라우드 인공지능 플랫폼을 활용하여 자신의 비즈니스 모델에 맞는
    • 인공지능 서비스를 개발하거나 이용할 수 있다. 기업들은 자사의 머신러닝 툴을 오픈소스 형태로 공개하면서 인공지능 플랫폼 시장을 차지하기 위한 경쟁을 벌이고 있다.
    • 사실 인공지능 머신러닝이 많은 성과를 낼 수 있긴 하지만, 일부 전문성과 컴퓨팅 자원을 갖춘 기업들이 아니고서야 많은 기업들에게는 여전히 장벽으로 존재한다. 특히 딥러닝 알고리즘은 입력되거나 계산되어야 하는 변수가 매우 다양하고 많아서 모델을 학습시키는 데 상당한 컴퓨팅 자원이 필요하다. 때문에 값비싼 전용 하드웨어가 필요하기도 하고, 출력 값의 정확도를 향상시키기 위해 반복적인 학습이 필요한데 하드웨어가 느리면 학습자체의 시간도 오래 걸린다. 그렇다고 하드웨어를 위한 적극적인 투자 또한 비용과 리스크를 함께 떠안는 셈이 된다.
    • 클라우드 컴퓨팅을 활용하면 이런 부분을 해결 할 수 있다. 컴퓨팅을 위한 하드웨어 자원(IaaS)이나 학습을 위한 플랫폼(PaaS)을 빌려 쓰는 것이 가능하다. 과금 체계에 따라서는 클라우드 컴퓨팅 자원에서 인프라 및 플랫폼뿐만 아니라 데이터까지도 이용하는 것이 가능할 수도 있다. 구글의 경우에는 클라우드 머신 러닝플랫폼을 서비스 하고 있다. 구글이 제공하는 클라우드는 머신러닝 훈련을 보다 빠르게 해주는 컴퓨팅 자원(GPU, TPU 등)뿐만 아니라, 몇몇 인공지능 기술들이 구현된 형태의 플랫폼 또한 제공한다.
    • 마이크로소프트의 경우에는 지난 30년간 Windows OS와 같은 시스템 소프트웨어, MS Office와 같은 대중적인 응용프로그램으로 글로벌 시장에서 최고의 매출을 유지해 왔다. 최근 마이크로소프트의 전략과 비전은 모바일을 중시하는‘ 클라우드 퍼스트’로 바뀌었다. 마이크로소프트는 판매하는 모든 제품과 서비스를 자사의 클라우드 서비스인 Azure를
    • 통해 더욱 정교하고 소비자 친화적으로 서비스하는 것을 목표로 하고 있다. 이를테면, 사물인터넷 서비스는 Azur IoT, DB는 SQL 서버, 업무환경은 자동번역이 지원되는 Office 같은 형식을 통합으로 지원하는 클라우드 서비스이다. 여기에 인공지능을 더하여‘ 인텔리전트 클라우드’ 서비스를 추진하고 있다. 지난 수십 년간의 기본 정책이었던‘ 윈도우 독점적인 소프트웨어’에서 리눅스나 iOS까지 지원하는 클라우드 플랫폼 서비스로 전환하고 있는 것이다.
    • 마이크로소프트의 사례처럼 다양한 시스템을 지원하는 클라우드 플랫폼 서비스는, 앞서 예시로 든 기업들이 구글의 클라우드 자원을 빌려 쓰듯이, 소비자들도 컴퓨터를 이용하기 위해서 반드시 자신의 PC가 필요하지는 않다는 변화를 가져올 수 있다. 때문에 많은 글로벌 IT 기업과 기관이 값비싼 슈퍼컴퓨터를 구비하는 대신 클라우드 컴퓨팅 시스템 구축에 투자하고 있다.
    • 입자가속이나 충돌과 같은 실험을 진행하고 있는 유럽입자물리연구소(CERN)2의 경우에는 하루에 500테라바이트(TB) 이상의 데이터가 생성되고 있는데, 향후 2023년까지 현재의 60배에 달하는 컴퓨팅 자원이 필요할 것으로 예상되어진다. 때문에 CERN은 오픈스택 (OpenStack)3을 활용한 클라우드 환경을 구축하고 컴퓨팅 파워를 충당하고 있다. 현재 CERN의 컴퓨팅 자원의 90% 이상을 가상화하였고, 클라우드에 참여하는 컴퓨팅 코어는 19만 개 이상(’16년 10월 기준)이며 10만 개의 코어를 추가 중에 있다. 이로써 컴퓨팅 파워에 필요한 예산과 인력 문제를 보다 효율적으로 처리하고 있다.
    • 클라우드 컴퓨팅의 영역은 IoT, 빅데이터, 인공지능과 같은 제4차 산업혁명 시대의 핵심기술과 맞물려서 넓어지고 있는데, 가상화를 통한‘ 이종기기간의 지원’ 또한 큰 특징이자 장점이라 할 수 있다. 현재 IT 및 SW개발 기업들이 지향하는 서비스는 결국 고객의 다양한 니즈를 만족시키는 것이고, 이것은 특정기기에 종속된 네이티브 앱(Native App)보다는 크로스 플랫폼(Cross Platform)이 가능한 기술임이 자명하다. 때문에, 사용하는 운영체제나 기기에 상관없이 지속적이고 한결같은 서비스를 연동할 수 있는 클라우드 서비스 분야에 기업들은 집중하고 있다. 앞서 살펴본 MS의 사례에서처럼 말이다.
    • 지난 호에서 가상비서에 대해 소개했었는데, 이러한 가상비서들에게 소비자가 요구한 사항 중 제법 계산이 필요한‘ 지능적’서비스를 제공하기 위해서는 사용자의 디바이스가 아닌 다른 곳에서 컴퓨팅 자원을 끌어다 쓸 수 있다. 이 계산을 위한 다른 곳은 클라우드 서비스를 제공하는 서비스업자가 제공할 수도 있다. 사용자가 집에서 휴식을 취하거나, 출근준비를 하거나, 운전을 하거나 어떤 일을 하더라도 인공지능이 결합된 서비스를 위한 컴퓨팅은 멈추지 않고 계속되는 것이다. 클라우드와 인공지능이 결합된 서비스는 결국 이렇게 완성되어 갈 것이다.
    • 정리하면, 제4차 산업혁명 시대의 실현에는 지금까지 살펴보았던 IoT, 빅데이터, 인공지능과 클라우드 서비스의 상호 필요에 의한 융·복합이 있을 수밖에 없으며, 각 기술 요소가 서로를 발전시킬 것이다.
    • 1 대중(Crowd)과 아웃소싱(Outsourcing)의 합성어로, 대중들의 참여를 통해 솔루션을 얻는 방법.
    • 2 원 래 명칭은‘ 유럽 원자핵 공동 연구소'
    • 3 오픈소스 클라우드 기술로 IaaS에 초점이 맞추어져 있고, 2012년 비영리단체인 (OSF)Open Stack Foundation 에서 유지, 보수, 아파치 라이선스로 배포하는 등의 관리를 하고 있다.