Tính chuẩn hoá (standarization)

Một phần của tài liệu Xây dựng các dịch vụ tin sinh học trên nền tảng điện toán đám mây (Trang 37)

Hiện nay, các giải pháp hỗ trợ triển khai ĐTĐM nội bộ nhƣ OpenStack, loudStack đều tự đƣa ra các giao diện giao tiếp riêng của mình. OpenStack công bố tài liệu API về nova, glance, swift... trong khi CloudStack công bố tài liệu API về ACS. Các nhà cung cấp dịch vụ ĐTĐM công cộng nhƣ mazon, Microsoft và Google cũng đƣa ra các chuẩn API riêng của mình nhƣ WS-API, S3-API, Azure SDK... Khi tham gia môi trƣờng điện toán đa đám mây, việc sử dụng hàng lo t API khác nhau giữa các nhà cung cấp dịch vụ ĐTĐM sẽ dẫn đến tình tr ng phân mảnh, khó quản l và không đảm bảo đƣợc các tính chất về khả chuyển, khả mở nhƣ trên. Ví dụ, một môi trƣờng đa đám mây chỉ hỗ trợ nova-api và AWS-API, nếu một nhà cung cấp dịch vụ nhƣ Microsoft muốn tham gia thì việc tích hợp Azure SDK/API vào là việc phải làm và sẽ dẫn đến việc tiêu tốn thời gian, công sức.

hính bởi nguyên nhân nhƣ vậy, môi trƣờng điện toán đa đám mây có một ràng buộc về chuẩn hoá giao tiếp giữa các nhà cung cấp dịch vụ ĐTĐM khi tham gia. Tính đến thời điểm hiện t i, ĐTĐM trên thế giới chƣa có một chuẩn giao tiếp nào đƣợc công nhận chính thức và hoàn toàn thích nghi với các nhà cung cấp dịch vụ ĐTĐM công cộng hay các giải pháp triển khai ĐTĐM nội bộ. Tuy nhiên, có thể liệt kê một số chuẩn giao tiếp khả thi nhƣ sau:

 OCCI – Open Cloud Computing Interface: là một giao diện quản trị đƣợc định ngh a bởi tổ chức OGF (Open Grid Forum) nhằm chuẩn hoá các tác vụ quản trị h tầng tính toán phân tán trong môi trƣờng ĐTĐM. Những phiên bản đầu tiên, O I chỉ đơn thuần là một PI quản trị tài nguyên qua giao thức RESTful cho mô hình IaaS giúp phát triển các ứng dụng tầng trên. Những n m gần đây, O I đã thay đổi dần theo hƣớng tập trung hơn vào việc phát triển khả n ng mở rộng để có thể hỗ trợ nhiều nền tảng PaaS hay SaaS. Hình dƣới mô tả vai trò và vị trí của O I trong một kiến trúc tổng quan.

 CDMI – Cloud Data Management Interface: DMI là một chuẩn giao diện đƣợc tổ chức SNI (Storage Networking Industry ssociation) đề xuất với mục tiêu quản l đồng nhất các h tầng lƣu trữ phân tán. ác ứng dụng, dịch vụ sử dụng DMI để truy xuất, khởi t o, chỉnh sửa và xoá các đối tƣợng dữ liệu đƣợc lƣu trữ trên ĐTĐM. Ngoài ra, DMI cung cấp các cơ chế quản l h tầng, phân ho ch tài nguyên sử dụng siêu dữ liệu (metadata). Hình dƣới mô tả vai trò của DMI trong một hệ thống lƣu trữ phân tán trên môi trƣờng ĐTĐM.

Hình 8. Va trò CDMI tro g mô ì ƣu trữ p â tá

 OVF (Open Virtualization Format): là chuẩn mở về quy trình đóng gói và phân phối các máy ảo (virtual machine). OVF đƣợc các công ty VMWare, Dell, HP, IBM, Microsoft và XenSource đệ trình với DMTF (Distributed

Management Task Force) vào n m 2007 và đƣợc chính thức công bố vào n m 2008 với phiên bản 1.0.0. OVF bao gồm một tệp mô tả (.ovf) định d ng XML bao gồm tên, cấu hình phần cứng yêu cầu và danh sách tham chiếu các tệp đi cùng. OVF đƣợc công nhận và sử dụng bởi rất nhiều giải pháp ảo hoá nhƣ VirtualBox, VMWare, XenServer, KVM, IBM SmartCloud, SUSE Studio.. Hình dƣới là mô tả về định d ng OVF.

Hình 9. Đị dạ g OVF

Ngoài ra, có thể liệt kê thêm một số chuẩn khác nhƣ GLUE2, PEL.. tuy nhiên về mức độ phổ biến và tƣơng thích vẫn chƣa bằng đƣợc các chuẩn vừa liệt kê nên luận v n sẽ không đề cập chi tiết.

Ngoài các chuẩn giao tiếp trong môi trƣờng điện toán đa đám mây, một vấn đề khác cần lƣu khi chuyển dịch các ứng dụng, dịch vụ phân tán nhƣ bài toán tin sinh lên

môi trƣờng đa đám mây là tính chuẩn hoá của các ứng dụng, dịch vụ này. Đối với bài toán tin sinh, đặc thù bài toán là luồng xử l nghiệp vụ tin sinh dựa trên rất nhiều thƣ viện, bộ công cụ tin sinh nhƣ BL ST, lustal.. Khi xây dựng và chuyển dịch bài toán tin sinh lên môi trƣờng đa đám mây, cần phải chuẩn hoá giữa luồng nghiệp vụ truyền thống (taverna, galaxy..) với luồng nghiệp vụ sẽ chuyển dịch trên đa đám mây.

Trong quá trình khảo sát và đánh giá, luận v n nhận thấy trong các định d ng mô tả luồng nghiệp vụ của tin sinh thì S UFL2 của myGrid có thể đƣợc coi là chuẩn về mô tả luồng nghiệp vụ giữa các công cụ truyền thống nhƣ taverna hay galaxy. S UFL2 đƣợc pache hỗ trợ và đƣợc phát triển với mục tiêu thay thế các định d ng luồng nghiệp vụ cũ, có khả n ng mở rộng và tích hợp với nhiều công cụ nghiên cứu tin sinh khác nhau nhƣ galaxy, taverna. S UFL2 đƣợc mô tả sử dụng ngôn ngữ OWL ontology, bởi vậy không phức t p khi đƣa lên môi trƣờng ĐTĐM. Bảng dƣới mô tả một ví dụ về S UFL2.

<?xml version="1.0"?> <rdf:RDF xmlns=http://ns.taverna.org.uk/2010/scufl2# xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs=http://www.w3.org/2000/01/rdf-schema# xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://ns.taverna.org.uk/2010/scufl2# http://ns.taverna.org.uk/2010/scufl2/scufl2.xsd http://www.w3.org/1999/02/22-rdf-syntax-ns# http://ns.taverna.org.uk/2010/scufl2/rdf.xsd" xsi:type="WorkflowBundleDocument" xml:base="./"> <WorkflowBundle rdf:about="">

<name>HelloWorld</name>

<sameBaseAs rdf:resource="http://ns.taverna.org.uk/2010/workflowBundle/28f7c554-4f35-401f-b34b- 516e9a0ef731/" /> <mainWorkflow rdf:resource="workflow/HelloWorld/" /> <workflow> <Workflow rdf:about="workflow/HelloWorld/"> <rdfs:seeAlso rdf:resource="workflow/HelloWorld.rdf" /> </Workflow> </workflow> <!-- <workflow> <Workflow rdf:about="workflow/SomeNestedWorkflow/"> <rdfs:seeAlso rdf:resource="workflow/SomeNestedWorkflow.rdf" /> </Workflow> </workflow> -->

<mainProfile rdf:resource="profile/tavernaWorkbench/" /> <profile> <Profile rdf:about="profile/tavernaServer/"> <rdfs:seeAlso rdf:resource="profile/tavernaServer.rdf"/> </Profile> </profile> <profile> <Profile rdf:about="profile/tavernaWorkbench/"> <rdfs:seeAlso rdf:resource="profile/tavernaWorkbench.rdf" /> </Profile> </profile> <rdfs:seeAlso rdf:resource="annotation/workflowBundle.rdf" /> </WorkflowBundle> </rdf:RDF> Bả g 1. Đị dạ g SCUFL2 2.3. Hƣớ g t ếp cậ .

Hƣớng tiếp cận của luận v n là chuyển dịch luồng nghiệp vụ tin sinh lên trên nền tảng đa đám mây. Luận v n này dựa trên nghiên cứu về ĐTĐM ngữ ngh a (Semantic loud) và lớp trừu đƣờng ĐTĐM ( loud bstract Layer – L) của TS. Nguyễn Bình Minh [1] [3]. L là một nền tảng trừu tƣợng hỗ trợ các dịch vụ và ứng dụng trên nền tảng đa đám mây. L tuân theo tƣ tƣởng OOP (hƣớng đối tƣợng) để mô tả tài nguyên và dịch vụ từ ĐTĐM dƣới d ng đối tƣợng. L hỗ trợ cơ chế để phát triển thêm các module giao tiếp với các dịch vụ ĐTĐM khác, trong luận v n nhắm tới sử dụng L là tầng trung gian để giao tiếp với 3 chuẩn giao diện tầng dƣới gồm O I, OpenStack PI và WS-API.

Luồng nghiệp vụ tin sinh chuyển dịch lên nền ĐTĐM đƣợc định hƣớng sẽ sử dụng định d ng S UFL2 để có tính tƣơng thích với các nền tảng tin sinh truyền thống. H tầng điện toán đám mây thử nghiệm sử dụng OpenStack với ba kiểu PI hỗ trợ là OCCI, OpenStack API và AWS-API.

CHƢƠNG 3. MÔ HÌNH ĐỀ XUẤT CHUYỂN DỊCH ỨNG DỤNG TIN SINH TRÊN MÔI TRƢỜNG ĐA ĐÁM MÂY

hƣơng này tác giả luận v n sẽ mô tả mô hình đề xuất để chuyển dịch một ứng dụng tin sinh lên nền tảng đa đám mây bao gồm các kiến trúc, mô hình, tính n ng và thử nghiệm.

3.1. K ế trúc tổ g qua .

Nhƣ hƣớng tiếp cận đã đề cập ở chƣơng 2, luận v n này dựa trên công trình nghiên cứu về CAL – loud bstract Layer để đơn giản hoá quá trình giao tiếp với môi trƣờng đa đám mây bên dƣới. L đƣợc thiết kế theo tƣ tƣởng hƣớng đối tƣợng OOP bằng cách tổng quát hoá toàn bộ tài nguyên, đơn vị đầu ra của dịch vụ ĐTĐM thành các đối tƣợng. Cách tiếp cận này mang l i một số lợi ích nhƣ sau:

 Đơn giản hoá quá trình giao tiếp với h tầng phức t p của môi trƣờng đa đám mây bên dƣới.

 Dễ dàng triển khai các hệ thống lớn và phức t p.

 Không phụ thuộc vào một nền tảng ĐTĐM hoặc một nhà cung cấp dịch vụ ĐTĐM nào, ngƣợc l i có tính tƣơng thích qua l i tốt.

 Tự động hoá quá trình tối ƣu.

Ví dụ về trừu tƣợng hoá đối tƣợng máy ảo nhƣ sau: t = Instance() // create a default instance

t.start() // start the instance

t.upload(“myapp.exe, input.dat”, “”) t.execute(“app.exe input.dat output.dat”) t.download(“output.dat”)

t.shutdown() t.delete()

Bả g 2. Trừu tƣợ g oá đố tƣợ g máy ảo (adsbygoogle = window.adsbygoogle || []).push({});

Một ví dụ khác về trừu tƣợng hoá đối tƣợng cụm (cluster) máy ảo: c = Cluster(worker=8) // create a cluster with 8 nodes

c.start() // start the cluster

c.execute(“mpirun ...”) c.shutdown()

c.delete()

Bả g 3. Trừu tƣợ g oá đố tƣợ g cụm máy ảo

Luận v n sử dụng L nhƣ phần lõi cho thiết kế mô hình thành phần ứng dụng tin sinh đƣợc chuyển dịch.

3.1.1. Mô hình thành phần.

Khi chuyển dịch một ứng dụng, dịch vụ lên nền tảng điện toán đa đám mây, việc sử dụng CAL sẽ chỉ hỗ trợ nhà phát triển dễ dàng thao tác với các dịch vụ và h tầng phía dƣới của đa đám mây [2]. Tuy nhiên, mỗi một ứng dụng và dịch vụ chuyển dịch sẽ có một nghiệp vụ xử l đặc trƣng riêng và trở ng i khó kh n nhất gặp phải là cần phải đƣa đƣợc luồng nghiệp vụ đấy phù hợp với môi trƣờng điện toán đa đám mây.

Đối với bài toán tin sinh, luồng nghiệp vụ với hàng lo t công cụ hỗ trợ tính toán khác nhau nhƣ BL ST, lustalw... là đặc trƣng riêng biệt của bài toán. Các công cụ hỗ trợ tính toán này đều có các đặc điểm sau:

 Đều là các công cụ CLI – giao diện dòng lệnh.

 Đều là các công cụ ch y trong môi trƣờng nội bộ, không thông qua dịch vụ web hay socket.

 Đầu ra của công cụ này là đầu vào của công cụ khác, tuy nhiên không có một chuẩn nào định ngh a về việc kiểm chứng dữ liệu vào ra giữa tất cả các công cụ.

Dựa vào các đặc điểm đó, có thể dễ dàng nhận thấy để có thể đƣa ứng dụng tin sinh lên môi trƣờng đa đám mây, cần thiết phải có một bộ giao diện hỗ trợ cung cấp các công cụ tin sinh dƣới d ng dịch vụ liên kết với nhau. Hình dƣới mô tả mô hình thành phần mức cao khi chuyển dịch ứng dụng tin sinh, trong đó luận v n định ngh a khái niệm BIMI – Bio Informatic Management Interface, giao diện quản trị tập trung ứng dụng tin sinh học thông qua giao thức RESTful.

Hình 10. Mô ì t à p ầ ứ g dụ g t s

Trong đó, BIMI đóng vai trò cốt lõi, lọc tách luồng nghiệp vụ liên quan đến xử lý logic và thực thi với dữ liệu của tin sinh học, sau đó thông qua L đẩy xuống h tầng đa đám mây bên dƣới. Các dịch vụ cung cấp từ các công cụ tin sinh đều thông qua một cơ chế xác thực tập trung nhƣ đã trình bày ở chƣơng 2. Các công cụ tin sinh đƣợc thực thi qua BIMI theo cơ chế bất đồng bộ (Asynchronous) qua các tác vụ - Job. Cụ thể, BIMI cung cấp các dịch vụ thông qua RESTful nhƣ sau:

Tên API Kiểu Tham số đầu vào Kết quả trả về

/runtask/

Thực thi

công cụ tin sinh bất kỳ

POST - user (String, bắt buộc): tên tài khoản - key (String, bắt buộc): token của tài khoản

- tenant (String, bắt buộc): tên project

Thành công:

{"status": true, "job_id": "2"}

- authurl (String, bắt buộc): đƣờng dẫn URL đến dịch vụ xác thực tập trung.

- cm (String, bắt buộc): công cụ tin sinh. Ví dụ:

blastn -db {input_file[0]} -query {input_file[1]} -out {output_file}

- input_file (String, bắt buộc): đƣờng dẫn tới dữ liệu đầu vào lƣu trên ĐTĐM container_name/inputfilename0|inputfilename1| - output_file (String, bắt buộc): file đầu ra. Nếu gặp vấn đề {"status": false, "error_message": "Exception: System error !"} /job/ Kiểm tra tr ng thái của tác vụ

GET - job_id (String, bắt buộc): ID của tác vụ cần kiểm tra. Thành công: {"job_done": true, "status": true, "process_out": "\n\n\n CLUSTAL 2.1 Multiple Sequence Alignments\n\n\nSequen ce type explicitly set to Protein\nSequence format is Pearson\nSequence 1: WD0001 1380 aa\ \n\nCLUSTAL-Alignment file created [1/result.out]\n\n", "job_error": false, "job_id": "1"} Nếu gặp vấn đề {"status": false, "error_message": "Exception: System error !"} /canceljob/ Dừng một tác vụ đang thực hiện

POST - job_id (String, bắt buộc): ID của tác vụ cần kiểm tra. Thành công: {"job_id": "2", "prevstatus": true, "status": true} hoặc {"job_id": "2", "prevstatus": false, "status": true} Nếu gặp vấn đề {"status": false, "error_message": "Exception: System error !"} /listjobs/ Liệt kê danh sách các tác vụ đang ch y

GET Không có Thành công: (adsbygoogle = window.adsbygoogle || []).push({});

{"status": true, "empty": false, "jobs": ["2", "3"]} Nếu gặp vấn đề {"status": false, "error_message": "Exception: System error !"}

3.1.2. Luồng nghiệp vụ.

Hình 11. Luồ g g ệp vụ ứ g dụ g t s

Luồng nghiệp vụ của ứng dụng tin sinh trên nền tảng điện toán đa đám mây đƣợc mô tả nhƣ sau:

1. Ngƣời dùng sử dụng giao diện Web kéo thả để khởi t o các luồng nghiệp vụ tin sinh mong muốn. Trong luận v n sử dụng bộ công cụ gojs tích hợp thêm trên nền web horizon của mã nguồn mở OpenStack.

2. Cấu hình cho từng node trong luồng nghiệp vụ để chỉ định đầu vào, đầu ra.. 3. Khi khởi ch y, một workflow engine (sử dụng Mistral) sẽ bóc tách và đẩy dữ

liệu xuống CAL bằng một bản mô tả luồng nghiệp vụ theo định d ng JSON, sau đó L đọc các cấu hình của ngƣời dùng và định tuyến yêu cầu nghiệp vụ:

a. Nếu là nghiệp vụ về các công cụ tin sinh, CAL sẽ kiểm tra và khởi t o các tài nguyên (Máy ảo – VM hoặc container ảo hoá), trên mỗi máy ảo đều có bộ công cụ BIMI gọi tên là Bio Wrapper để dịch vụ hoá các

công cụ. Luận v n thử nghiệm trên nền AWS-API, nova api và docker.

b. Nếu là nghiệp vụ truy xuất dữ liệu, CAL sẽ định tuyến xuống h tầng lƣu trữ đa đám mây. Luận v n thử nghiệm thông qua S3 API và Swift API.

4. Kết quả thực thi của luồng nghiệp vụ sẽ đƣợc gửi tới giao diện ngƣời dùng trên giao diện web.

3.2. Bà toá tố ƣu tà guy sử dụ g.

3.2.1. Mô tả bài toán.

Nhƣ đã mô tả trong chƣơng 2 của luận v n, một trong những vấn đề mà môi trƣờng điện toán đa đám mây có thể giải quyết so với mô hình ĐTĐM truyền thống đó chính là t ng khả n ng mở rộng, co giãn tài nguyên tính toán. Tuy nhiên, ở khía c nh chuyển dịch ứng dụng, việc sử dụng hợp lý tài nguyên tính toán cho các ứng dụng, dịch vụ trên nền tảng điện toán đa đám mây để đáp ứng tính khả mở vẫn còn chƣa đƣợc giải quyết triệt để và rõ ràng [25]. Ví dụ cụ thể, nếu một dịch vụ web ch y trên 01 máy ảo cung cấp bởi dịch vụ ĐTĐM, đến một thời điểm nhất định do số lƣợng truy cập web quá lớn khiến cho tài nguyên máy ảo t ng đột biến và ch m ngƣỡng tối đa cho phép, thƣờng các nhà quản trị ĐTĐM có các chiến lƣợc sau để giải quyết vấn đề:

 Chiến lƣợc định kỳ: ngƣời quản trị sẽ sử dụng các cơ chế đặt lịch để có thể t ng giảm tài nguyên máy ảo ch y ứng dụng định kỳ. Tuy nhiên, chiến lƣợc này không mang tính tổng quát cao và thƣờng không xử l đƣợc các sự cố bất ngờ. [14] [15]

 Đặt ngƣỡng sử dụng tài nguyên: ngƣời quản trị sử dụng các công cụ giám sát tài nguyên hệ thống và đặt ngƣỡng giới h n để quyết định việc thay đổi tài nguyên máy ảo. Đã có nhiều cách tiếp cận theo hƣớng này, tuy nhiên vì

tài nguyên máy ảo giao động và thay đổi liên tục nên đối với trƣờng hợp nhƣ vậy, chiến lƣợc này là không phù hợp.

 Dự đoán mức độ sử dụng tài nguyên: dựa vào các dữ liệu về tài nguyên sử dụng trong quá khứ, chiến lƣợc này áp dụng các hệ thống dự đoán về tài nguyên sẽ sử dụng t i một thời điểm trong tƣơng lai. Từ đó làm cơ sở để ra quyết định t ng giảm tài nguyên. Tuy nhiên, cách tiếp cận này thƣờng có độ chính xác chƣa cao. [4] [7]

Luận v n đƣa ra một hƣớng tiếp cận giải quyết bài toán trên dựa theo chiến lƣợc

Một phần của tài liệu Xây dựng các dịch vụ tin sinh học trên nền tảng điện toán đám mây (Trang 37)