11 개방형 플랫폼 - 블루믹스(클라우드 서비스)
블루믹스(BlueMix 클라우드 서비스)
1. 소개
블루믹스(BlueMix)
블루믹스는 애플리케이션 개발에 필요한 운영체제 등 모든 환경을 제공해주는 클라우드 애플리케이션 개발 플랫폼으로 개발자는 인프라에 신경 쓰지 않고 편리하게 프로그램을 개발할 수 있습니다. 다시 말해, 개발자들은 별도의 플랫폼이나 개발요소를 따로 구축할 필요 없이 웹을 통해 서비스로 접근하여 모바일용, 기업용 등 다양한 형태의 앱을 쉽고 빠르게 만들 수 있습니다.
IBM사의 PaaS로 오픈소스 클라우드 파운드리(Cloud Foundry)를 기반으로 하며, 모바일, 웹, 애플리케이션의 개발 및 운영, 구축이 가능한 클라우드 기반 플랫폼 서비스입니다. 이때 플랫폼은 어떤 애플리케이션이나 서비스를 구동 시키기 위해 필요한 하드웨어와 소프트웨어 등 모두 포함합니다
블루믹스의 특징을 살펴보겠습니다. 먼저, 가상화나 미들웨어 설치가 없습니다.
아마존과 같은 서비스가 가상머신을 제공하는 IaaS라면,
블루믹스는 Node.js, 자바와 같은 런타임을 미리 깔아놓고, 거기에 소스코드를 넣어서 돌리는 구조입니다. IaaS의 경우 리눅스나윈도우 서버와 같은 OS를 가상 머신 기반으로 제공하기 때문에 직접 미들웨어를 설치해서 사용해야 하지만, PaaS의 경우 이미 설치된 미들웨어 위에 코드만 돌리면 되기 때문에 관리가 편리합니다. 다음으로 빠른 프로비전 런타임과 자동/수동 스케일링이 특징입니다. 스케일링이란, 컴퓨팅 자원에 대한 사용량을 조절하는 것을 말합니다.
그리고 자바, 자바스크립트, 루비 등 다중언어를 지원하며 공동체에서 더 많은 언어를 지원하고 있습니다. 또한 개방형 표준에 기반을 두고 있으며, 클라우드에서 서비스형 모델을 통해 자바, 모바일 백엔드 개발, 애플리케이션 모니터링 같은 IBM에서 제공하는 소프트웨어 그룹을 활용할 수 있습니다. 오픈소스와 서드파티(Third Party) 소프트웨어와 더불어 IBM이 보유하고 있는 빅데이터, 분석, 왓슨 인지 컴퓨팅, 사물인터넷 서비스 지원 등 기존 서비스가 통합되어 풍부한 콘텐츠를 제공하는 것이 특징이라고 할 수 있습니다.
IBM 블루믹스 개방형 사물인터넷은 개발자가 직접 다양한 형태의 단말에서 서비스할 수 있는 개방 플랫폼을 제공합니다. 새로운 스마트 디바이스를 사물인터넷의 사물로 생각합니다. 그래서 블루믹스를 개방형 사물인터넷 플랫폼으로도 사용할 수 있습니다.
IBM 블루믹스 개방형 사물인터넷은 여러 회사들이 생태계 형태의 플랫폼을 구축하고 공동 관리하는 형태를 취합니다.
블루믹스의 장점으로는 개발과 배포를 빠르게 할 수 있으며, 개발과 운영이 분리되어 작업 효율성이 좋습니다. 또한, 사업의 요구에 유연하게 대응할 수 있으며, 예측이 가능하여 비용과 리스크(Risk)를 절감할 수 있습니다. 확장성이 있으며, 성능과 안정성이 좋습니다.
2. PaaS
PaaS에 대해 알아보도록 하겠습니다. 블루믹스는 소프트레이어라는 IaaS를 기반으로 하는 PaaS 서비스입니다.
IaaS는 서버나 스토리지 같은 하드웨어 자원 혹은 하드웨어의 컴퓨팅 능력만을 임대 및 제공하는 클라우드 서비스를 말하며,
PaaS는 소프트웨어나 서비스를 개발하기 위해 필요한 플랫폼을 임대, 제공하는 클라우드 서비스를 말합니다.
예전부터 지금까지 인터넷을 통한 특정 서비스들을 제공하기 위해서는 기본적으로 서버와 데이터 저장을 위한 스토리지, 이를 연결해주는 네트워크 환경까지 구축해야 했습니다.
하지만 IaaS는 이런 물리적인 장치를 굳이 따로 구축하지 않아도 간단히
서비스를 구축할 수 있는 클라우드 환경을 말합니다. 여기에 서비스 실행을 위한 가상화 시스템, 운영체제, 데이터베이스, 미들웨어, 자바 등의 개발 언어를 구동하기 위한 환경을 제공하는 것이 PaaS 기반의 클라우드 서비스입니다.
얼마 전까지만 해도,개발 트렌드의 중심은 기업체에서 개발하는 B2C서비스였습니다. 페이스북이나 네이버와 같은 서비스들이 대표적인데, B2C 서비스들은 대용량의 사용자를 커버해야 하고, 세세한 튜닝이나 설정 변경이 필요하고 다소 복잡한 아키텍처 구조를 가지기 때문에, 직접 인프라를 세팅하고 미들웨어를 설치하는 것이 오히려 유리했습니다.
그래서 IaaS를 많이 사용했는데, 근래에 들어서 개발의 중심이 모바일 앱이 되고 스타트업이 중심이 되면서,?적은 인원으로 빠르게 개발하고 관리할 수 있는 플랫폼이 필요하게 되었고, 그로 인해서, 구글 앱 엔진이나, Heroku와 같은 PaaS 서비스가 각광받게 되었습니다.
PaaS의 서비스는 네트워크에서 런타임까지 서비스 제공자가 책임지고 응용과 데이터만 고민하면 되는 유형입니다. 가상화나 미들웨어 설치가 필요 없으므로 빠른 프로비전 런타임(Provision Runtime), 즉 빠른 배치가 가능합니다. 응용과 데이터는 블루믹스 사용자 영역이며, 런타임, 미들웨어, 운영체계, 가상화, 서버, 저장소, 네트워크는 블루믹스가 제공하는 PaaS 기능입니다. 이 중 가상화, 서버, 저장소, 네트워크는 소프트레이어가 제공하는 IaaS 기능으로 오픈 스택입니다.
3. 클라우드 파운드리(Cloud Foundry)
PaaS를 구축하기 위해 사용되는 클라우드 파운드리(Cloud Foundry)에 대해 살펴보도록 하겠습니다. 클라우드 파운드리(Cloud Foundry)는 애플리케이션의 배포, 운영을 간소화하기 위해 설계한 플랫폼으로 개발자들에게 폭넓은 런타임, 프레임워크, 백엔드 서비스를 선택할 수 있는 자유를 제공합니다. 클라우드 파운드리(Cloud Foundry)는 오픈 소스 PaaS 프레임워크로 특정 IaaS에 의존하지 않고 여러 프로그래밍 언어 및 프레임 워크에 대응하고 있습니다. 또한, 퍼블릭 클라우드 및 프라이빗 클라우드 모두에게 배포할 수 있고 주로 응용 프로그램 개발자들을 대상으로 하고 있습니다. 런타임 환경으로 Node, 루비, 자바를 지원하고 프레임워크는 Spring, rails3, node, grails, play 등을 지원하며, 서비스는 MongoDB, MySQL, PostgreSQL, RabbitMQ, Redis 등을 지원하고 있습니다.
IBM은 클라우드 파운드리 재단의 창립 멤버로 프로젝트에 참여하였습니다. 그래서 기술문서, 샘플, 도구들은 클라우드 파운드리 프로젝트와 호환되며, 오픈소스의 여러 개념들인 빌드팩(Buildpack), 서비스, CLI, 스케일링(Scaling) 등을 그대로 사용합니다.
빌드팩(Buildpack)에 대해 알아보겠습니다. 빌드팩(Buildpack)은 컨테이너, 라이브러리, 런타임으로 구성됩니다. 특히 런타임에는 자바, 글루비, 루비, Node.js, 젠드 프레임워크, PHP 아파치, 엔진, 비고 등 다양한 종류의 언어를 사용할 수 있습니다. CLI는 Command-Line Interface의 약자로 관리자들이 주로 사용합니다. 사용하는 컴퓨팅 자원에 대한 사용량을 조절하는 기능을 스케일링(Scaling)이라고 합니다. 응용이 사용하는 인스턴스를 증가/감소함으로써 로드를 조정할 수 있습니다.
스케일링(Scaling)은 PaaS의 요금 정산과 관련된 서비스로 자원 메모리, CPU, 스토리지, 네트워크 등에 사용됩니다.
4. 사용하기
블루믹스 사용에 대해 알아보도록 하겠습니다. 블루믹스 서비스에 접속하여 간단한 가입 절차를 마치면 30일간 무료로 사용할 수 있도록 사용권을 부여받을 수 있습니다.
간단하게 블루믹스 UI로 애플리케이션을 보일러플레이트를 이용하여 개발할 수 있습니다. 카탈로그를 클릭하면, 선택할 수 있는 보일러플레이트를 한눈에 살펴볼 수 있습니다. 보일러플레이트는 애플리케이션 컨테이너의 일종으로 빠른 개발과 배치가 용이하도록 블루믹스에서 제공하는 개념입니다.
블루믹스에서는 자바, 자바스크립트, 루비 등의 언어를 지원하는 런타임을 제공하고 있습니다. 런타임은 해당 환경의 코드를 말합니다. 웹 애플리케이션의 경우, Node.js, 자바, 자바 DB 웹스타터 등 다양한 기반을 제공하고, Node.js, 루비 등 다양한 런타임 언어를 제공하며, 인스턴스 및 메모리 등 시스템에 대한 설정까지 가능합니다.
블루믹스는 애플리케이션의 배치를 제어할 수 있는 대시보드를 제공합니다. 사용자는 개발된 소스코드를 다운로드 받아서 로컬에서 개발할 수도 있고, 직접 소스코드를 변경할 수도 있습니다. 대시보드를 이용하여 애플리케이션의 모니터링 또는 제어를 할 수 있을 뿐 아니라, 애플리케이션에 대한 자세한 정보를 얻을 수 있습니다.
이 대시보드에서는 미리 만들어 놓은 애플리케이션 하나가 정상적으로 실행되고 있는 것을 확인할 수 있습니다.
애플리케이션 부분을 살펴보면, 이 애플리케이션의 이름은 ‘iot1000’이고, 서비스가 실행 중임을 알 수 있습니다.
세 가지 서비스가 이용됨을 알 수 있는데, Node.js, NoSQL 데이터 베이스, 모니터링 등의 서비스가 이용되고 있다는 뜻입니다.
제어버튼을 이용하여 서비스를 중단하거나 재실행, 삭제할 수 있습니다. 하단의 버튼은 이 애플리케이션이 서비스되는 URL로 브라우저 창을 열어줍니다. 버튼을 클릭해 보세요.
새 창이 열리며 ‘iot1000’ 애플리케이션 서비스가 실행되는 것을 확인할 수 있습니다.
5. 실습하기
블루믹스를 사용하여 Node-RED 애플리케이션을 생성해보겠습니다.
먼저 CATALOG를 클릭한 뒤, 목록에서 사물인터넷 보일러플레이트를 선택합니다. 그다음 서비스와 호스트 이름을 입력합니다.
Iot2000을 입력하면 iot2000.mybluemix.net으로 서비스를 하게 됩니다. CREATE 버튼을 클릭하여 생성해보세요.
Iot2000 서비스가
생성되어 배치되는 중입니다.
배치가 완료되면 다음과 같은 화면이 나옵니다.
서비스를 클릭해보세요.
링크에서 서비스가 시작된 것을 확인할 수 있습니다.
버튼을 클릭하면 Node-RED를 작업할 수 있습니다.
Node-RED 편집 화면이 제시되는 것을 확인할 수 있습니다.
서비스에 아이디와 암호를 부여하기 위해 환경변수를 설정해 보겠습니다.
Environment Variables를 클릭해보세요.
USER-DEFINED를 클릭하여 사용자 정의 환경변수를 설정하고, ADD를 눌러 환경변수 두 개를 추가합니다. 입력 칸이 생기면 두 개의 환경변수를 입력한 뒤, SAVE를 클릭하여 저장합니다.
대시보드에 새로운 서비스가 동작하고 있는 것을 확인할 수 있습니다.
보다 자세한 정보를 보기 위하여 클릭합니다.
다음과 같은 화면이 나오는 것을 볼 수 있습니다.
상단 부분은 메모리 사용량 등 서비스의 정보를 확인할 수 있습니다. 우측에는 서비스 중단, 재시작 등의 제어가 가능하게 되어있고, 그 아래에 서비스가 생성하는 로그가 기록됩니다.
블루믹스를 이용하여 ProjectK 웹앱 생성
CREATE AN APP 클릭하기
WEB 클릭하기
Liberty for Java 클릭하기
[APP NAME]에 ProjectK 입력하기
FINISH 클릭하기
애플리케이션 생성 확인
클라우드 컴퓨팅은 인터넷과 웹 서비스의 급속한 발전과 함께 IT 서비스 환경의 대규모 확장에 대한 필요성이 증가하면서 주요 이슈로 주목을 받고 있습니다.
대표적인 예로 아마존의 클라우드 서비스 AWS(Amazon Web Service)는 저장공간과 데이터베이스, 서버 리소스를 낮은 가격에 빌려줍니다. 서비스 품질이 규정된 간단한 저장 서비스인 S3(Simple Storage Service), 간단한 검색 명령을 실행할 수 있는 데이터베이스 서비스인 Simple DB, 그리고 서버의 리소스를 유용하게 할당할 수 있는 EC2(Elastic Computing Cloud)가 대표적인 서비스입니다.
S3는 데이터 저장 및 검색 기능을 가지고 웹 서비스로 제공되므로, 인터넷이 가능하면 어디에서든 접근이
가능하며, 사용료 또한 저렴합니다. Simple DB 서비스는 구조화된 데이터를 저장하고 처리하는 웹 서비스로 관계형 데이터베이스의 기능을 대부분 제공하고 있습니다. EC2는 웹 서비스 형태로 제공되어 필요한 가상 시스템을 간단한 방법으로 요청하고 사용량에 따라서 쉽게 확장 또는 축소할 수 있습니다. 아마존 AWS는 사용 편의성이 높은 간단한 웹 서비스로 개발 환경이 구성되어 자유도가 높은 개발 환경을 제공하고 있습니다.
'사물인터넷' 카테고리의 다른 글
13 CoAP (1) | 2016.02.07 |
---|---|
12 MQTT (9) | 2016.02.07 |
11 개방형 플랫폼 -클라우드 서비스 (0) | 2016.02.01 |
10 개방형 플랫폼 - Node-RED 트위터 감정기반 분석 프로젝트 (0) | 2016.02.01 |
10 개방형 플랫폼 - Node-RED 실습 (0) | 2016.02.01 |