빅데이터분석

Bioinformatics Stack, Bioinformatics PaaS

hongiiv 2012. 11. 28. 14:08
반응형
하나의 어플리케이션 (주로 웹)을 개발하는데에는 스택을 필요로 한다. 가장 잘 알고 있는 스택은 우리가 흔히 알고 있는 APM (Apache, PHP, MySQL)을 들 수 있겠다. 하지만 세상은 클라우드, 소셜, 빅데이터 등의 새로운 기술과 트렌드가 나오기 시작하면서 APM만으로는 해결이 불가능한 상황으로 다양한 어플리케이션 스택들이 나오고 이를 사용한다.

Java기반의 웹 어플케이션 프레임워크로는 JBoss, Spring, Tomcat
PHP의 경우 Zend Server, Codelnniter
Ruby의 경우 Ruby on Rails
Node.js
Python의 경우 Django, Flask, Bottle

Python을 사용하고 한다면 다음과 같은 스택이 현재 많이 사용되고 있다.
Linux + nginx, paste(wsgi) + python(Django, Flask, Bottle+jinja2, mako, cheetah) + Redis(RabbitMQ, SQS) + Celery (Kombu) + MySQL + AWS S3

나의 경우에는 다음과 같이 사용한다.

------------------
PostgreSQL
------------------
KT ucloud Storage
------------------
Celery
------------------
RabbitMQ
------------------
Flask + jinja2
(wsgi)
------------------
Linux + paste
------------------


하지만, 위의 내용은 웹 어플리케이션이고, 대량의 데이터를 분석하기 위해서는 기본적으로 Cluster Computing 환경이 들어가야 하기에

------------------
DRMAA (python binding)
------------------
SGE
------------------

PostgreSQL
------------------
KT ucloud Storage
------------------
Celery
------------------
RabbitMQ
------------------
Flask + jinja2
(wsgi)
------------------
Linux + paste
------------------
PostgreSQL
------------------
KT ucloud Storage
------------------
Celery
------------------
RabbitMQ
------------------
Flask + jinja2
(wsgi)
------------------
Linux + paste
------------------


다시 여기에 기본적으로 Bioinformatics 관련 툴 및 reference data를 넣으면,,, 이거 무지 복잡해진다. 따라서 이부분까지 스택으로 넣었는데...바로 galaxy! 그리고 하드웨어 부분은 KT 클라우드를 넣음

------------------
Custom Bioinformatics Pipelines
------------------
Galaxy (Bioinformatics S/W, 파일관리, 비주얼라이제이션 등등)
------------------

DRMAA (python binding)
------------------
SGE
------------------
PostgreSQL
------------------
KT ucloud Storage
------------------
Celery
------------------
RabbitMQ
------------------
Flask + jinja2
(wsgi)
------------------
Linux + paste
------------------
PostgreSQL
------------------
KT ucloud Storage
------------------
Celery
------------------
RabbitMQ
------------------
Flask + jinja2
(wsgi)
------------------
Linux + paste
------------------
ucloud API Python Binding
------------------ 
ucloud cs server
------------------

 
자, 이제 완성 뭔가 Bioinformatics 어플리케이션을 개발하고 싶다면 저 스택을 기반으로 만들면, 클라우드 환경에서 대규모의 워커 노드들을 활용하는 어플리케이션을 아주 손쉽게 개발이 가능하다. -.-;; 하지만, 문제는 저 스택을 셋팅하다가 죽을 수도 있다는것을 명심해야 한다. 하지만, 난 누군가! 엔터키 하나로 케이튀 클라우드에서 저 스택을 한번에 deploy하는 PaaS를 만들었다. 아무리 날고 뛰는 바이오 관련 어플리케이션이라 할지라도 손쉽게 가능합죠.

가령 엑솜 분석을 수행하는 어플리케이션을 개발한다면 KT 클라우드에서  AMQP와 DRMAA를 통해 워커노드들을 관리하고 분산 처리를 담당하게 하고 갤럭시의 어플리케이션을 활용하여 분석한 후 그 결과를 갤럭시에 넣어 비주얼라이제이션을 수행하도록 하는 어플리케이션을 간단?하게 맹글수가 있다.
 
난 또하나의 접착제를 만들다. 
반응형