티스토리 뷰
반응형
많은 분들이 GenomeCloud가 내부적으로 어떻게 클라우드 자원을 관리하고 유전체 데이터를 분석하는지에 대해서 궁금해 하셔서 간단하게 기술적인 설명을 해볼까한다. 일반 생물학 연구자들도 한번쯤 읽어두면 자신의 데이터가 어떻게 분석되는지 연구에 활용하려면 GenomeCloud를 어떤식으로 해야 할지에 대한 폭 넓은 안목을 가지게 될 수 있으니 강추!!! (-.-;;)
1. ucloud biz (클라우드 자원)
CPU/메모리/디스크/OS/네트워크 등의 개별 자원을 제공하는 서비스로 GenomeCloud는 분석할 대상에 따라 개별 자원들을 조립하여 사용합니다. 분석에 대한 요청이 들어오면 개별자원을 조립하고 분석을 수행한 후 다시 개별 자원을 반납하게 됩니다.
ucloud는 하나의 가상서버(Virtual Machine)에 대해서 다양한 CPU/메모리/디스크/OS 등을 조합하여 자신이 원하는 사양을 직접 조립할 수 있도록 하고 있는데 유전체 분석의 각 단계별로 최적의 하드웨어 조합을 찾아내어 사용합니다.
2. ucloud biz API (클라우드 자원 핸들링)
앞서 필요한 각각의 자원이 어떠한 것들이 있는지? 개별 자원을 생성하고 서로 연결하는 작업은 ucloud API라는 것을 통해 프로그래밍적으로 활용할 수 있습니다. 이는 직접 웹페이지에서 클릭을 통해서 자원을 생성하고 연결하는 작업을 할 수 있지만 요청이 들어올때마다 사람이 직접 클릭해서 자원을 만들거나 삭제하는건 불가능하기에 공개된 API를 통해 자동으로 모든 작업이 수행됩니다.
python으로 클라우드 자원을 핸들링하고자 한다면 ucloud biz API를 손쉽게 쓰게하는 python binding이 존재합니다. 간단히 ucloud 홈페이지에서 자신의 ucloud내 api key와 secret key를 가지고 다음과 같이 프로그래밍을 하면 현재 만들어진 서버의 목록이 나타납니다.
3. Deploy (클라우드 자원 셋팅)
ucloud API로 필요한 하드웨어 (깡통)를 만들게 되면 그 안에는 OS만 덜렁 설치되어 아무것도 할 수 없습니다. 따라서 유전체 분석에 필요한 소프트웨어나 레퍼런스 데이터 등을 실제 분석이 이루어지기 전에 설치/설정 해야하는데요. 바로 이러한 작업을 디플로이라고 합니다. 이러한 작업을 해주는 소프트웨어가 별도로 존재하는데요. 미리 컴퓨터에 해야할 작업을 정의해 두면 컴퓨터는 혼자서 그 작업들을 수행합니다.
4. Job 분배
이제 바로 분석할 준비가 된 서버들이 생겨났으면, 각 서버는 자신이 해야할일(mapping이라던지 variant calling 등)을 할당 받습니다. 사용자가 분석을 의뢰하면 해당 요청에 대해서 자세하게 정의된 내용이 데이터베이스에 저장되고 분석할 서버들은 해당 요청을 데이터베이스로 부터 할당 받아서 실제 분석을 수행하게 됩니다. 이때 분석을 수행해야 하는 서버들은 해당 요청을 파싱하여 자신이 분석해야할 input data를 가져오고 어떤 프로그램을 어떠한 옵션으로 실행해서 어떠한 결과를 만들어내야 하는지를 파악하게 됩니다.
5. Job 실행
기본적으로 GenomeCloud는 현재 업계에서 검증되고 활발하게 사용되고 있는 소프트웨어를 사용합니다. 각각의 소프트웨어들은 참 다양하게 구현되어있습니다. 어떤놈은 perl로 또 어떤놈은 java로 이렇듯 다양한 소프트웨어들을 엮어 일련의 작업을 수행하도록 만드는 것이 바로 pipeline인데요. 이때 각각의 소프웨어를 컨틀롤하고 그들이 내뿜는 에러나 서로간의 인/아웃풋을 컨트롤 하고 최적화하여 수행하도록 합니다. 각각을 연결한 pipeline은 여러번의 테스트와 중간중간 customizing 통해 robust하게 돌아가도록 하고 있습니다.
6. Job 트래킹
각 서버는 해당 분석을 수행하면서 중간중간 어떠한 작업을 시작했고 어떠한 작업을 끝냈는지를 보고하게 됩니다. 이렇게 각 서버들이 보낸 정보를 취합하여 사용자에게는 웹페이지를 통해서 요청한 작업이 어떠한 상태인지 확인 할 수가 있게 됩니다.
7. Object storage 결과 저장
각 서버들은 분석이 완료되면 이전에 말했듯이 삭제(destory)가 됩니다. 기구한 운명이죠. 열심히 일하고 죽는... 따라서 삭제 되기전 자신의 분석 결과는 가격은 저렴하면서도 안정성이 높은 스토리지에 전송합니다. 흔히 object storage라고 불리는 서비스인데요. 컴퓨터는 없고 디스크만 있는 거라고 생각하시면 됩니다. 결과 파일을 저장하기 위해서 서버까지 계속 남겨두면 그만큼 비용이 지불되기 때문에 서버는 삭제하고 결과만 별도의 스토리지만 제공하는 서비스에 안전하게 보관하는 거죠.
클라우드를 만들고 직접 그 위에 서비스를 올리다
아무래도 클라우드 자원을 직접 만들고 관리하는 주체가 KT이다 보니 해당 부서와의 긴밀한 협조아래 유전체 분야의 데이터를 다루는데에 있어 클라우드가 잘 활용될 수 있도록 많은 시도를 하고 있습니다. 이는 기존의 아마존이나 타 클라우드 서비스를 기반으로 하고 있는 서비스들은 결코 따라올 수 없는 GenomeCloud만의 장점 중 하나라고 할 수 있습니다.
여담이지만, 이렇듯 유전체 데이터를 분석하는데에 있어서 최소한의 비용을 위해서 각각의 요소마다 어떻게 하면 비용도 줄이면서 효율성도 높일 수 있을지를 많이 고민해서 만들었고 그 결과 국내외 어디와 비교해도 꿀리지? 않을 저렴한 비용으로 연구자들에게 서비스가 가능하게 되었다는...
1. ucloud biz (클라우드 자원)
CPU/메모리/디스크/OS/네트워크 등의 개별 자원을 제공하는 서비스로 GenomeCloud는 분석할 대상에 따라 개별 자원들을 조립하여 사용합니다. 분석에 대한 요청이 들어오면 개별자원을 조립하고 분석을 수행한 후 다시 개별 자원을 반납하게 됩니다.
ucloud는 하나의 가상서버(Virtual Machine)에 대해서 다양한 CPU/메모리/디스크/OS 등을 조합하여 자신이 원하는 사양을 직접 조립할 수 있도록 하고 있는데 유전체 분석의 각 단계별로 최적의 하드웨어 조합을 찾아내어 사용합니다.
2. ucloud biz API (클라우드 자원 핸들링)
앞서 필요한 각각의 자원이 어떠한 것들이 있는지? 개별 자원을 생성하고 서로 연결하는 작업은 ucloud API라는 것을 통해 프로그래밍적으로 활용할 수 있습니다. 이는 직접 웹페이지에서 클릭을 통해서 자원을 생성하고 연결하는 작업을 할 수 있지만 요청이 들어올때마다 사람이 직접 클릭해서 자원을 만들거나 삭제하는건 불가능하기에 공개된 API를 통해 자동으로 모든 작업이 수행됩니다.
ucloud를 이용한 서비스를 만들고 싶다면 ucloud biz 개발자 센터로
python으로 클라우드 자원을 핸들링하고자 한다면 ucloud biz API를 손쉽게 쓰게하는 python binding이 존재합니다. 간단히 ucloud 홈페이지에서 자신의 ucloud내 api key와 secret key를 가지고 다음과 같이 프로그래밍을 하면 현재 만들어진 서버의 목록이 나타납니다.
3. Deploy (클라우드 자원 셋팅)
ucloud API로 필요한 하드웨어 (깡통)를 만들게 되면 그 안에는 OS만 덜렁 설치되어 아무것도 할 수 없습니다. 따라서 유전체 분석에 필요한 소프트웨어나 레퍼런스 데이터 등을 실제 분석이 이루어지기 전에 설치/설정 해야하는데요. 바로 이러한 작업을 디플로이라고 합니다. 이러한 작업을 해주는 소프트웨어가 별도로 존재하는데요. 미리 컴퓨터에 해야할 작업을 정의해 두면 컴퓨터는 혼자서 그 작업들을 수행합니다.
4. Job 분배
이제 바로 분석할 준비가 된 서버들이 생겨났으면, 각 서버는 자신이 해야할일(mapping이라던지 variant calling 등)을 할당 받습니다. 사용자가 분석을 의뢰하면 해당 요청에 대해서 자세하게 정의된 내용이 데이터베이스에 저장되고 분석할 서버들은 해당 요청을 데이터베이스로 부터 할당 받아서 실제 분석을 수행하게 됩니다. 이때 분석을 수행해야 하는 서버들은 해당 요청을 파싱하여 자신이 분석해야할 input data를 가져오고 어떤 프로그램을 어떠한 옵션으로 실행해서 어떠한 결과를 만들어내야 하는지를 파악하게 됩니다.
5. Job 실행
기본적으로 GenomeCloud는 현재 업계에서 검증되고 활발하게 사용되고 있는 소프트웨어를 사용합니다. 각각의 소프트웨어들은 참 다양하게 구현되어있습니다. 어떤놈은 perl로 또 어떤놈은 java로 이렇듯 다양한 소프트웨어들을 엮어 일련의 작업을 수행하도록 만드는 것이 바로 pipeline인데요. 이때 각각의 소프웨어를 컨틀롤하고 그들이 내뿜는 에러나 서로간의 인/아웃풋을 컨트롤 하고 최적화하여 수행하도록 합니다. 각각을 연결한 pipeline은 여러번의 테스트와 중간중간 customizing 통해 robust하게 돌아가도록 하고 있습니다.
6. Job 트래킹
각 서버는 해당 분석을 수행하면서 중간중간 어떠한 작업을 시작했고 어떠한 작업을 끝냈는지를 보고하게 됩니다. 이렇게 각 서버들이 보낸 정보를 취합하여 사용자에게는 웹페이지를 통해서 요청한 작업이 어떠한 상태인지 확인 할 수가 있게 됩니다.
7. Object storage 결과 저장
각 서버들은 분석이 완료되면 이전에 말했듯이 삭제(destory)가 됩니다. 기구한 운명이죠. 열심히 일하고 죽는... 따라서 삭제 되기전 자신의 분석 결과는 가격은 저렴하면서도 안정성이 높은 스토리지에 전송합니다. 흔히 object storage라고 불리는 서비스인데요. 컴퓨터는 없고 디스크만 있는 거라고 생각하시면 됩니다. 결과 파일을 저장하기 위해서 서버까지 계속 남겨두면 그만큼 비용이 지불되기 때문에 서버는 삭제하고 결과만 별도의 스토리지만 제공하는 서비스에 안전하게 보관하는 거죠.
클라우드를 만들고 직접 그 위에 서비스를 올리다
아무래도 클라우드 자원을 직접 만들고 관리하는 주체가 KT이다 보니 해당 부서와의 긴밀한 협조아래 유전체 분야의 데이터를 다루는데에 있어 클라우드가 잘 활용될 수 있도록 많은 시도를 하고 있습니다. 이는 기존의 아마존이나 타 클라우드 서비스를 기반으로 하고 있는 서비스들은 결코 따라올 수 없는 GenomeCloud만의 장점 중 하나라고 할 수 있습니다.
여담이지만, 이렇듯 유전체 데이터를 분석하는데에 있어서 최소한의 비용을 위해서 각각의 요소마다 어떻게 하면 비용도 줄이면서 효율성도 높일 수 있을지를 많이 고민해서 만들었고 그 결과 국내외 어디와 비교해도 꿀리지? 않을 저렴한 비용으로 연구자들에게 서비스가 가능하게 되었다는...
반응형
공지사항
최근에 올라온 글