1. Trang chủ
  2. » Luận Văn - Báo Cáo

Khóa luận tốt nghiệp Mạng máy tính và truyền thông: Nghiên cứu triển khai và đánh giá các nền tảng Serverless mã nguồn mở dựa trên Kubernetes cho hệ thống máy chủ cận biên

97 3 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên cứu triển khai và đánh giá các nền tảng Serverless mã nguồn mở dựa trên Kubernetes cho hệ thống máy chủ cận biên
Tác giả Bùi Văn Trí
Người hướng dẫn ThS. Nguyễn Thanh Hòa
Trường học Trường Đại học Công nghệ Thông tin - Đại học Quốc gia Thành phố Hồ Chí Minh
Chuyên ngành Mạng máy tính và Truyền thông
Thể loại Khóa luận tốt nghiệp
Năm xuất bản 2021
Thành phố Thành phố Hồ Chí Minh
Định dạng
Số trang 97
Dung lượng 42,45 MB

Nội dung

HO CHÍ MINHTRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG BÙI VAN TRÍ KHÓA LUẬN TÓT NGHIỆP NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ CÁC NỀN TẢNG SERVERLESS MÃ NGUỒN MỞ DỰ

Trang 1

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG

BÙI VAN TRÍ

KHÓA LUẬN TÓT NGHIỆP

NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ CÁC NỀN TẢNG

SERVERLESS MÃ NGUỒN MỞ DỰA TRÊN KUBERNETES

CHO HỆ THỐNG MÁY CHỦ CẬN BIÊN

An empirical study on deployment and evaluation of open source

Serverless frameworks based on Kubernetes for Edge servers

KY SƯ NGANH TRUYEN THONG VÀ MẠNG MAY TÍNH

TP HO CHÍ MINH, 2021

Trang 2

ĐẠI HỌC QUOC GIA TP HO CHÍ MINH

TRUONG DAI HOC CONG NGHE THONG TIN

KHOA MANG MAY TINH VA TRUYEN THONG

BÙI VĂN TRÍ - 16521284

KHÓA LUẬN TÓT NGHIỆP

NGHIÊN CỨU TRIỂN KHAI VÀ ĐÁNH GIÁ CÁC NỀN TẢNGSERVERLESS MÃ NGUỒN MỞ DỰA TRÊN KUBERNETES

CHO HỆ THỐNG MÁY CHỦ CẬN BIÊN

An empirical study on deployment and evaluation of open source

Serverless frameworks based on Kubernetes for Edge servers

KY SU NGANH TRUYEN THONG VA MẠNG MAY TÍNH

GIANG VIEN HUONG DAN THS NGUYEN THANH HOA

TP HO CHÍ MINH, 2021

Trang 3

THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP

Hội đồng cham khóa luận tốt nghiệp, thành lập theo Quyết định số

Ti8ầy của Hiệu trưởng Trường Đại học Công nghệ Thông tin.

Trang 4

nghiên cứu.

Đặc biệt tôi xin gửi lời cảm ơn sâu sắc đến ThS Nguyễn Thanh Hòa, người

Thay đã tận tình giúp đỡ, hướng dẫn tôi trong suốt quá trình thực hiện khóa luận tốt nghiệp.

Cuối cùng, tôi xin phép gửi lời tri ân đến những người âm thầm theo dõi ủng hộ, tạo điều kiện tốt nhất để tôi tập trung thời gian học tập và nghiên cứu dé tài.

Xin chân thành cảm ơn!

Sinh viên thực hiện

Trang 5

Mục lục

Mục lục ii

Danh sách hình vẽ vi

Danh sách bang viii

Danh mục từ viết tắt ix

1 Giới thiệu tổng quan 2

11 Tổng quan tình hình nghiêncứu - 2

1.2 Mục tiêu, đối tượng và phạm vi nghiêncứu 4

1.2.1 Mục tiêu của đềtài 4

1.2.2 Đối tượng nghiên cứu của đềtài 4

12.3 Phạm vi nghiên cứu của đềtài 5

1.3 Tính mới và tinh ứng dụng thực tế của đề tài 5

14 Đóng góp của đề tài eee 5 1.5 Cấu trúc củakhóaluận 6

2 Cơ sở lý thuyết 7 21 AohOal 2 ee 7 2.1.1 Kiến trúc ảo hóa dựa trên Hypervisor - 8

2.1.2 Kiến trúc ảo hóa container - 10

ii

Trang 6

MỤC LỤC

2.2 Docker Ặ Q Q Q Q Q Q Q Q n H Ủ 11

2.3 Kubernetes HH ee 13 2.4 Microservices 2 ee 15

2.5 Mô hình Serverless Computing 16

25.1 Cácnềntảngphổbiến - 17

2.5.2 Các trường hợp sử dụng Serverles 18

Các nền tảng Serverless mã nguồn mở 19 3.1 Tiêu chí lựa chọn 19 3.1.1 _ Tiêu chí lựa chọn các nền tảng Serverless mã ngồnmở 19

3.1.2 Tiêuchíđấánhgi 20

3.2 Các nền tảng Serverless mã nguồnmở - 20

3.21 Apache OpenWhisk 20

3.2.2 Kubgless gap pe em - | ⁄/ 23

3.2.3 OpenFaaS 2 ee ee 25 3.3 Kétchuong © 2 ee 27 Trién khai các nền tang Serverless mã nguồn mở 29 4.1 Cài đặt môi trường thựcnghệm 29

4.11 Môhìnhtriểnkhai 29

4.1.2 Cài đặt Docker va Kubernetes 30

4.1.3 Cai dat ApacheOpenWhisk 32

4.1.4 Cài đặt Kubeles 32

4.15 Cài đặt OpenFaaS co 33 4.2 Triển khai thử nghiệm ứng dụng AI trên nền tảng Serverless 34

4.2.1 Môtảkichbản 34

4.2.2 Cài đặttriểnkhai ee ee 35 5 aốaaT ee 35

Trang 7

5.1.1 Thực nghiệm | - Đánh giá thời gian phảnhồi 40

5.1.2 Thực nghiệm 2 - Đánh giá sự ảnh hưởng của ngôn ngữ lập trình

phổ biến đến thời gian phản hồi của các function 45

5.1.3 Thực nghiệm 3 - Đánh giá sự ảnh hưởng của giới hạn bộ nhớ

và giải thuật cho funcfion 47 5.1.4 Thực nghiệm 4 - Đánh giá sự ảnh hưởng trong khả năng tính

toán đũa@PU @ -.Ẳœ | / 49

52 Đánhgiáchung ẶẶ ee en 50

6 Kết luận và hướng phát triển 52

1 ga ä& 52 6.2 Hướng pháttriển Ặ.ẶẶ ẶẶẶ ee 53

Tai liệu tham khảo 54

4 Cài dat Apache OpenWhisk 59

5 Doan mã mẫu "Hello, world!'" 60

iv

Trang 8

MỤC LỤC

Kubeless

61

6 Cài đặt Kubeless 2.2 ee ee 61

7 Doan mã mau "Hello, world!" 61

8 Đoạn mã mau Fibonacci đệquy - 63

9 Đoạn mã mẫu Fibonacci giải thuậtO(@n) 64

10 Đoạn mã mẫu Fibonacci giải thuat O(logn) 64

OpenFaaS 67 11 CaidatOpenFaaS 2 ee, 67 12 Đoạn mã mau "Hello,world!" - 68

13 Doan mã mẫu Fibonacci đệ quy - 71

14 Đoạn mã mau Fibonacci giải thuatO(n) - 73

15_ Doan mã mau Fibonacci giải thuat O(logn) 74

Ung dung AI va tinh số fibonacci trên nền tảng Serverless 77 16 Một số lệnh khởi tao function pigo-openfaas 77

17 Mã nguồn website tính số fibonacci trên nền tang Serverless 78

Trang 9

Danh sách hình vẽ

21

2.2

2.3

24

2.5

3.1

3.2

3.3

3.4

3.5

4.1

4.2

443

4.4

4.5

4.6

47

4.8

4.9

Phân loại kiến trúc ảo hóa dựa trên Hypervisor [l] 9

Kiến trúc ảo hóa sử dụng container [l] 10

Kiến trúc Docker» ee 12 Kiến trúc của Kubernetes cẶằ 14 Kiến trúc Monolithic và Microservices 16

Mô hình lập trình của Apache OpenWhisk[l] 21

Kiến trúc hệ thống của Apache OpenWhisk [I] 23

Kiến trúc của Kubeless[l] - 24

Kiến trúc hệ thống của OpenFaaS [I] - 26

Các thành phần của OpenFaaS[l] - 26

Mô hình triển khai các nền tảng Serverless minguonmé 30

Kiểm tra phiên bản Docker 31

Kiểm tra phiên bản Kubernetes - 32

Số lượng node trong clusfer co 32 Số lượng Pod đang chạy của Apache OpenWhisk 33

Kiểm tra cài đặt thành công của Kubeles 34

Giao diện Web của OpenFaaS sau khi cài đặt thành công 34

Thực nghiệm xây dựng ứng dung AI trên nền tảng Serverless 35

Kết quả sao khi xây dựng ứng dụng AI 36

vi

Trang 10

DANH SÁCH HÌNH VẼ

4.10 Triển khai ứng dung AI trên nền tang Serverles 36

4.11 Giao diện trên Web dùng để tương tác với function 37

4.12 Hình ảnh đầu vào cho ứng dụng 37

4.13 Hình ảnh sau khi được xửlý 38

4.14 Giao diện ứng dụng tính số Fibonaci - 39

4.15 Kết quả tính số Fibonacci trên nền tảng Serverless 39

5.1 Biểu đồ thể hiện thời gian phản hồi trung bình của các nền tảng 42

5.2 Biểu đồ thể hiện thời gian phản hồi trung bình của Kubeless và OpenFaaS 44 5.3 Biểu đồ thể hiện thời gian phản hồi trung bình của ngôn ngữ lập trình trên Kubeless và OpenFaaS 46

5.4 Biểu đồ thể hiện sự ảnh hưởng của giới hạn bộ nhớ và giải thuật đến thời gian phản hồi trên Kubeless 48

5.5 Biểu đồ thể hiện sự ảnh hưởng của giới hạn bộ nhớ và giải thuật đến thời gian phản hồi trên OpenFaaS 48

5.6 Biểu đồ thể hiện sự ảnh hưởng đến khả năng tính toán CPU 50

Vii

Trang 11

Thông tin cấu hình triển khai - 30

Bảng tổng hợp thời gian phản hồi của 3 nền tảng Serverless là Apache

OpenWhisk, Kubeless và OpenFaaS 42

Bảng tổng hợp thời gian phản hồi của 3 nền tảng Serverless khi sử dụngứng dụng tính số Eibonacci 43

Bảng tổng hợp thời gian phản hồi của Kubeless và OpenFaaS 43

Viil

Trang 12

IoI Internet of Things

Qos Quality of Services (Chat lượng dich vụ)

RAM Random-access memory

VM Virtual Machine (Máy ảo)

VMM Virtual Machine Monitor

1X

Trang 13

TÓM TẮT

Trong những năm gần đây, kiến trúc điện toán cận biên (Edge computing)

đang dần phổ biến và thay thế cho điện toán đám mây (Cloud computing)

trong việc xử lý tính toán và xử lý dữ liệu Các dữ liệu sẽ được xử lý dưới

nút edge trước khi đi đến cloud Tuy nhiên, các hệ thống máy chủ cận

biên có tài nguyên hạn chế dẫn đến các ứng dụng phải tận dụng hiệu quả

tài nguyên Mô hình Serverless computing (điện toán "không" máy chủ)

là một giải pháp tiềm năng khi kết hợp với công nghệ ảo hóa containergiúp tối ưu hóa lượng tài nguyên sử dụng, hứa hẹn nâng cao chất lượng

dịch vụ (Quality of Services) Bên cạnh đó, mô hình Serverless hiện đang

được cung cấp bởi một số nhà cung cấp đám mây công cộng như AmazonLambda, Google Function, Azure Function, Tuy nhiên, các nhà cung cấpdịch vụ Serverless chủ yếu cung cấp giải pháp trên nền điện toán đám mây

Để triển khai, tùy biến mô hình này trên các nền tảng máy chủ cận biên,các nền tảng Serverless mã nguồn mở là một giải pháp cũng nhận đượcnhiều sự quan tâm của cộng đồng nghiên cứu Trong khóa luận này, tácgiả tập trung nghiên cứu, thiết kế mô hình, triển khai và đánh giá các nềntảng Serverless mã nguồn mở, cụ thể là Apache OpenWhisk, Kubeless vàOpenFaaS Mỗi nền tảng được triển khai trên một cum Kubernetes và sửdụng công cu JMeter để đánh giá thời gian phản hdi của các function Tác

giả đánh giá Kubeless hiện tại là nền tảng có nhiều ưu điểm vượt trội hơn

so với OpenFaaS và OpenWhisk trên tất cả các tiêu chí thực nghiệm

Trang 14

Chương 1

Giới thiệu tổng quan

Chương này tập trung trình bày tổng quan về tình hình nghiên cứu liên quan đếnchủ để tạo cơ sở nền tảng ban đầu, từ đó nêu ra phương pháp thực hiện một cách kháiquát làm tiền đề cho quá trình nghiên cứu

1.1 Tổng quan tình hình nghiên cứu

Hiện nay, sự phổ biến và gia tăng không ngừng về số lượng của các thiết bị IoT(Internet of Things) yêu cầu xử lý dữ liệu và thời gian phản hồi nhanh Tuy nhiên, việc

sử dụng điện toán đám mây (Cloud Computing) sẽ làm chậm quá trình truyền nhận và

xử lý do các máy chủ ở cách xa nguồn dữ liệu Trong những năm gần đây, kiến trúcđiện toán cận biên (Edge Computing) xuất hiện và có thể giải quyết được vấn đề giảm

độ trễ khi truyền nhận dữ liệu, tăng khả năng xử lý với hiệu suất tốt hơn [2]

Tương tự như điện toán đám mây, điện toán cận biên cũng có thể triển khai các ứng

dụng và các dịch vu trong môi trường độc lập bằng công nghệ ảo hóa (Virutalization),

cụ thể hơn là các máy ảo (Virtual Machine) [3] Tuy nhiên, kiến trúc ảo hóa truyền

Trang 15

thống Hypervisor chưa tận dụng hết tài nguyên hệ thống Ví dụ, một máy ảo khi khởiđộng sẽ chiếm hết tài nguyên và tách biệt hoàn toàn với hệ thống máy chủ Bên cạnh

đó, công nghệ ảo hóa container (Containerization) cho phép các phần mềm được đónggói thực thi trên nhiều kiến trúc phần cứng và xây dựng nhanh, gọn, nhẹ phù hợp với

việc khởi tạo ứng dụng tại cạnh biên [4].

Với nguồn tài nguyên tương đối hạn chế tại các hệ thống máy chủ cận biên, việc tối

ưu và sử dụng hiệu quả tài nguyên đóng vai trò quan trọng Trong những năm gần đây,

mô hình Serverless Computing (điện toán "không" máy chu) đã ra đời và nhận được sự

quan tâm lớn của cộng đồng [5] Mô hình Serverless Computing có thể kết hợp cùngcông nghệ ảo hóa container để giải quyết vấn đề tối ưu hóa lượng tài nguyên sử dụng,

hứa hẹn sẽ nâng cao chất lượng dịch vụ (Quality of Services) bằng cách loại bỏ gánh

nặng về cơ sở hạ tang hay việc cấu hình, cài đặt hệ thống và chỉ trả chi phí khi ngườidùng cần sử dụng [6]

Bên cạnh đó, mô hình Serverless hiện đang được cung cấp bởi một số nhà cung

cấp đám mây công cộng (public cloud) như Amazon Lambda, Google Function, AzureFunction, Tuy nhiên, các nhà cung cấp dich vụ Serverless chủ yếu cung cấp giảipháp trên nền điện toán đám mây Để triển khai, tùy biến mô hình này trên các nềntảng máy chủ cận biên, các nền tảng Serverless mã nguồn mở là một giải pháp cũng

nhận được nhiều sự quan tâm của cộng đồng nghiên cứu [1] Chang hạn, việc triển

khai mô hình điều phối và quản trị container Kubernetes trên một nền tảng thử nghiệmcận biên sử dụng mô hình Serverless mã nguồn mở là OpenFaaS [7] Nhóm nghiêncứu khác sử dung JMeter đánh giá thời gian phản hôi, thông lượng và tỉ lệ phản hồithành công của các function (chức năng) trên bốn nền tảng Serverless mã nguồn mở là

OpenFaaS, Kubeless, Apache OpenWhisk, Knative được triển khai trên một nút master

của Kubernetes [6] Ở nghiên cứu khoa học [8] nhóm tác giả đã đề xuất và triển khai

Serverless dựa trên WebAssembly mà không dùng công nghệ ảo hóa container trên hệ

thống máy chủ cận biên

Trang 16

Trong khóa luận này, tác giả quyết định thực hiện dé tài "Nghiên cứu triển khai

và đánh giá các nền tảng Serverless mã nguồn mở dựa trên Kubernetes cho hệ thống

máy chủ cận biên" như Apache OpenWhisk, Kubeless, OpenFaaS để có cái nhìn khách

quan và đánh giá tính khả thi của việc áp dụng mô hình Serverless cho kiến trúc Edge

Computing.

1.2 Mục tiêu, đối tượng và phạm vi nghiên cứu

1.2.1 Mục tiêu của đề tài

* Nghiên cứu, thiết kế mô hình và lựa chọn các nền tảng Serverless tiém năng sử

dụng công nghệ ảo hóa container cho hệ thống máy chủ trong kiến trúc điện toán

cận biên.

« Triển khai và đánh giá các nên tảng Serverless mã nguồn mở dựa trên Kubernetes

có thể áp dụng kiến trúc điện toán cận biên

1.2.2 Đối tượng nghiên cứu của đề tài

» Thiết bi phần cứng: máy ảo VMware

* Công nghệ ảo hóa container: Docker

* Công nghệ quản trị, điều phối container: Kubernetes

* Các nền tảng Serverless mã nguồn mở: Apache OpenWhisk, Kubeless, OpenFaaS

Trang 17

1.2.3 Phạm vi nghiên cứu của đề tài

Các nền tảng Serverless mã nguồn mở phổ biến, có cộng đồng hỗ trợ lớn và triểnkhai trên nền ảo hóa container với Docker và Kubernetes

1.3 Tính mới và tinh ứng dụng thực tế của dé tài

Trong những năm gần đây, các kiến trúc điện toán cận biên, ảo hóa với container,

mô hình Serverless là những chủ dé mới rat được quan tâm của cộng đồng nghiên cứu

và các doanh nghiệp Sự phát triển của các ứng dụng thời gian thực (real-time) và các

thiết bị IoT yêu cầu thời gian xử lý nhanh, độ trễ thấp va bảo mật Điện toán cận biên

là một giải pháp cho vấn dé trên khi mà hệ thống máy chủ cận biên sẽ xử lý dữ liệu

ngay tại các nút biên trước khi đến đến các đám mây [5] Tuy nhiên, các hệ thống máychủ cận biên có tài nguyên hạn chế dẫn đến các ứng dụng phải tận dụng hiệu quả tàinguyên Để giải quyết van đề trên, việc triển khai mô hình Serverless cho hệ thống máychủ cận biên sử dụng công nghệ ảo hóa container là một giải pháp tiềm năng [6] Bêncạnh đó, hệ thống máy chủ cận biên không đồng nhất về kiến trúc và phân tán về cơ

sở hạ tầng dẫn đến việc sử dụng mô hình Serverless cho hệ thống máy chủ cận biên để

dễ dàng triển khai, quản lý và mở rộng [7] Đề tài này sẽ tập trung đánh giá và so sánhcác nền tảng Serverless mã nguồn mở mới nhất với cộng đồng phát triển lớn và nhiềutiềm năng ứng dung để triển khai cho kiến trúc điện toán cận biên trong tương lai

1.4 Đóng góp của đề tài

Trong để tài này, tác giả tập trung vào những phần sau

» Đánh giá tính khả thi của việc triển khai các nền tảng Serverless mã nguồn mở

Trang 18

trên kiến trúc điện toán cận biên (Edge Computing).

* Triển khai các nền tảng Serverless mã nguồn mở trên kiến trúc máy chủ cận biên

(Edge server), cụ thể là Apache OpenWhisk, Kubeless, OpenFaaS.

* Đánh giá hiệu suất qua thông qua thời gian phản hồi dưới khối lượng công việc

khác nhau.

1.5 Cấu trúc của khóa luận

Cấu trúc khóa luận được phân bổ như sau Chương 2 trình bày cơ sở lý thuyết về ảohóa, ảo hóa container Docker, quản trị điều phối container Kubernetes, microservices

va mô hình Serverless Computing Chương 3 trình bày về cai đặt và triển khai cácnền tang Serverless mã nguồn mở Chương 4 đưa ra các tiêu chí để lựa chọn đánh giácác nền tảng Serverless mã nguồn mở Chương 5 đánh giá các nền tảng Serverless

mã nguồn mở dựa trên Kubernetes sử dụng Apache OpenWhisk, Kubeless, OpenFaaS.Cuối cùng, Chương 6 kết luận và hướng phát triển trong tương lai

Trang 19

Chương 2

Cơ sở lý thuyết

Chương 2 trình bày về cơ sở lý thuyết và kiến thức nền tảng về các công nghệ đã

sử dụng trong khóa luận Phần 2.1 giới thiệu khái niệm ảo hóa và trình bày kiến trúc

ảo hóa phổ biến Phần 2.2 giới thiệu công nghệ ảo hóa container Docker Phần 2.3 giớithiệu công nghệ quản trị và điều phối container Kubernetes Phần 2.4 giới thiệu tổng

quan về kiến trúc Microservices, một nền tang ban đầu của Serverless Cuối cùng, phan

2.5 giới thiệu khái niệm về mô hình Serverless, ưu và nhược điểm của nó và trình bàymột số trường hợp sử dụng mô hình Serverless Computing

2.1 7 Áohóa

Sự phát triển nhanh chóng của công nghệ thông tin dẫn đến nhu cầu sử dụng máy

tính, phần mềm và lưu trữ ngày càng tăng cao Các thiết bị phần cứng máy tính không

đủ để đáp ứng nhu cầu đó, cho nên việc tận dụng tối đa tài nguyên được sử dụng ở cácmáy chủ là một nhu cầu cấp thiết đối với các hệ thống có quy mô sử dụng và cơ sở hạtầng lớn Để giải quyết van đề trên, công nghệ ảo hóa ra đời giúp tận dụng tốt hơn tài

nguyên và giảm chi phí [9].

Trang 20

Mặc dù ảo hóa trở nên phổ biến trong những năm gan đây, nhưng nguồn gốc của

nó có thể bắt nguồn từ năm 1960 khi IBM giới thiệu ý tưởng hệ thông M44/44X [10].

Ảo hóa là công nghệ giúp phân tách phần cứng vật lý thành các thành phần ảo tách biệt

với nhau, cung cấp khả năng mở rộng và tận dụng tài nguyên hợp lý theo nhu cầu sửdụng Hiện nay, có hai công nghệ ảo hóa phổ biến nhất là ảo hóa dựa trên Hypervisor

và ảo hóa sử dụng container (cũng được gọi là ảo hóa hệ điều hành) Phần tiếp theo,

chúng ta sẽ đi sâu hơn về các kiên trúc ảo hóa.

2.1.1 Kiến trúc ảo hóa dựa trên Hypervisor

Trong thập kỷ qua, kiến trúc ảo hóa dựa trên Hypervisor đã là một phương pháp

phổ biến để triển khai các máy ảo Cách tiếp cận này dựa vào một phần mềm gọi là hypervisor hay giám sát màn hình máy ảo (Virtual Machine Monitor) nằm giữa phần

cứng và máy ảo.

VMM có ba đặc điểm sau: cung cấp môi trường tương tự như máy thật, đảm bảohiệu suất cho các chương trình chạy trong máy ảo và VMM có toàn quyền kiểm soát tàinguyên trên hệ thống máy chủ đã cai [1] Cụ thể hơn, nó được sử dung để tạo và quản

lý các máy ảo trên cùng một hệ thống máy chủ chứa các hệ điều hành khác nhau hoặcnhiều phiên bản của một hệ điều hành, do đó có thể chia sẻ tài nguyên phần cứng giữacác nền tảng ảo Ví dụ, người dùng có thể chạy hệ điều hành Windows trên máy chủLinux và ngược lại Hơn nữa, nó cung cấp một môi trường độc lập riêng biệt Trong

đó, các ứng dụng có thể chạy mà không can thiệp gì đến các ứng dụng khác, bằng cách

này người dùng có thể sử dụng môi trường máy tính để quản lý và giám sát nhiều tài

nguyên một các tập trung [9].

Hypervisor được chia thành hai loại ! như trong hình 2.1

‘https://docs.oracle.com/cd/E200659 1 /doc.30/e€18549 /intro.htm

Trang 21

Type 1 Type2

Hình 2.1: Phân loại kiến trúc ảo hóa dựa trên Hypervisor [1]

Loại 1: Hypervisor ở loại này chạy trực tiếp trên phần cứng của máy vật lý và khôngthông qua bat kỳ hệ điều hành nào Ví dụ cho kiến trúc này là Oracle VM, Microsoft

Hyper-V, VMWare ESX, và Xen.

Loại 2: Hypervisor ở loại này sẽ chạy trên một hệ điều hành Không giống loại 1,loại 2 trên hệ điều hành sẽ chứa trình điều khiển hypervisor giúp quản lý và tạo các máy

ảo trên đó Ví dụ cho kiến trúc này là Oracle VM, VirtualBox, VMWare Workstation, Microsoft Virtual PC, KVM, QEMU, and Parallels 1

Mặc dù có rất nhiều lợi ích, ảo hóa dựa trên Hypervisor cũng có giới hạn riêng.Đầu tiên là sự suy giảm hiệu suất trong máy ảo so với máy thật Hơn nữa, máy ảo cóthể chậm hơn vì vẫn khởi động như một hệ điều hành bình thường, dẫn đến thời gian

khởi động lâu.

'https://www.parallels.com/eu/

Trang 22

2.1.2 Kiên trúc ảo hóa container

Ảo hóa container hay còn được gọi là ảo hóa cấp hệ điều hành là một giải pháp

thay thế cho kiến trúc ảo hóa truyền thống Hypervisor Các container tạo ra trong mộtkhông gian riêng biệt trên cùng kernel (nhân) hệ điều hành Do đó, các container cungcấp sự trừu tượng trên nhân hệ điều hành cho phép nhiều tiến trình chạy trong một

container cách ly với các container khác [1] Trong hình 2.2, mỗi container hoạt động

như một hệ điều hành độc lập mà không cần lớp trung gian như kiến trúc Hypervisor

Container Engine VN

“may

Container

Container không giống như máy ảo, container chia sẻ cùng hạt nhân với máy thật

Do đó, container không phải là hệ điều hành giống máy ảo, điều này làm cho containerrất nhẹ, khởi động nhanh và dé dàng mở rộng hơn so với máy ảo [11]

10

Trang 23

2.2 Docker

Docker ! là một nền tang mã nguồn mở để xây dựng, vận chuyển va triển khai các container Nó sử dụng các tính năng cô lập tài nguyên do nhân Linux cung cấp, cụ thể

là cgroup va namespace Các ứng dụng dựa trên Docker có thể được triển khai nhanh

hơn so với các ứng dụng truyền thống không chứa container Hơn nữa, Docker chophép các nhà phát triển cấu hình nhiều thành phan cơ bản cơ sở hạ tầng như bộ nhó,CPU và mạng thông qua Dockerfile (được trình bày ở phần tiếp theo) hoặc các dònglệnh Điều này, cho phép các nhà phát triển quản lý cơ sợ hạ tầng tương tự như các họquản lý các ứng dụng Docker cung cấp nền tảng để chạy ứng dụng một cách an toàn vàbiệt lập trong một container Tính bảo mật và cô lập này cho phép Docker chạy nhiềucontainer đồng thời trên cùng một máy chủ duy nhất Docker cũng cung cấp tất cả cáccông cụ cần thiết để quản lý các container [12]

Kiên trúc và thành phân của Docker

Docker [13] bao gồm Docker Engine ˆ chịu trách nhiệm tao và chạy các container

Docker dựa trên kiến trúc client-server Người dùng muốn tương tác được với Dockerphải sử dụng Docker client Hình 2.3 minh họa cho kiến trúc Docker Các thành phầncủa Docker được trình bày ở phần sau

* Docker client là một công cụ giúp người dùng giao tiếp với Docker host

* Docker daemon lắng nghe các yêu cầu từ Docker client để quan lý các đối tượng

như Container, Image, Network (mạng) va Volumes thông qua REST API Các

Docker daemon cũng giao tiếp với nhau để quản lý các Docker service

'https://www.docker.com/

*https://docs.docker.com/get-started/overview/

11

Trang 24

Hình 2.3: Kiến trúc Docker

* Docker images là một khuôn mẫu để tạo một container Thông thường image

sẽ dựa trên một image có san để xây dựng thêm Ví dụ, người dùng muốn xây

dựng một image dựa trên image CentOS mau có sẵn để chạy Nginx và những tùy

chỉnh, cấu hình để ứng dung web có thể chạy được Một image sẽ được xây dựng

dựa trên những chỉ dẫn của Dockerfile.

* Dockerfile là một tập tin bao gồm các chỉ dẫn để xây dựng một image

* Docker registry được sử dụng để lưu trữ các image Ñgười dùng có thể sử dụng

công khai hoặc riêng tư Các nhà phát triển có thể xây dựng image của mình và

lưu trữ chúng trên Docker registry để giúp việc phân phối image trở nên dễ dànghơn Sau đó, người muốn sử dụng sẽ truy cập và tải xuống image để sử dụng

Một trong những Docker registry công khai và phổ biến nhất là Docker Hub !.

* Docker container hoạt động giống như một thư mục (directory), chứa tất cảnhững thứ cần thiết để một ứng dụng có thể chạy được Mỗi một docker container

'https://hub.docker.com/

12

Trang 25

được tao ra từ một Docker image Cac thao tác với một container như chạy, bật,dừng, di chuyển, và xóa.

2.3 Kubernetes

Trong phần 2.2 đã trình bày về container, cụ thể là Docker giúp dễ dàng đóng gói,vận chuyển và triển khai các ứng dụng Các tính năng này cho phép các hệ thống phântán mở rộng quy mô và cơ sở hạ tầng thấp Hơn nữa, trong một kiến trúc phân tán, điềuquan trọng là nhiều container có thể được tương tác với nhau Khi số lượng containertăng lên, việc tự động hóa toàn bộ quy trình quản lý container trở nên rất quan trọng

Sự tự động hóa này như là một công cụ quản lý và điều phối container Công việc chínhcủa việc điều phối là cung cấp nơi lưu trữ, khởi động container, dừng container, cungcấp khả năng phục hồi , liên kết container, chia tỉ lệ container, cập nhật container, đưacontainer ra bên ngoài, Trong các công cụ đó, nổi bật nhất là Kubernetes

Kubernetes [14] là một nền tang mã nguồn mở tự động hóa việc quan lý, mở rộng

và triển khai ứng dụng dưới dạng container Tên gọi Kubernetes có nguồn gốc từ tiếng

Hy Lạp, có ý nghĩa là người lái tàu hoặc hoa tiêu Google mở mã nguồn Kubernetes

từ năm 2014 Kubernetes xây dựng dựa trên một thập kỷ kinh nghiệm mà Google có

được với việc vận hành một khối lượng lớn công việc trong thực tế, kết hợp với các ýtưởng và thực tiễn tốt nhất từ cộng đồng [12]

Kiên trúc Kubernetes

Kuberntes bao gồm các thành phần [9]

* Pod là khái niệm cơ bản và quan trọng nhất trên Kubernetes Bản than Pod có

thể chứa 1 hoặc nhiều hơn 1 container Pod là các tiến trình nằm trên các Worker

13

Trang 26

` — Mastercomponents “

Hình 2.4: Kiến trúc của Kubernetes

nođe và có tài nguyên riêng được cấp như tệp hệ thống, CPU, bộ nhớ, volumes,

địa chỉ mạng.

» Master node là máy chủ điều khiển các máy Worker node chạy ứng dung Masternode bao gồm 4 thành phần chính

— Kubernetes API Server là thành phần giúp các thành phần khác kết nối với

nhau Lập trình viên khi triển khai sẽ gọi API Server này để sử dụng cho

ứng dụng.

—_.Scheduler là thành phần này lập lịch triển khai cho các ứng dụng, ứng dụng

được đặt vào Worker node nào để chạy

14

Trang 27

— Controler Manager là thành phần đảm nhiệm phan quản lý các Worker

node, kiểm tra các Worker node sống hay chết, đảm nhận việc nhân ban

ứng dụng.

— Etcd là cơ sở dit liệu của Kubernetes, tất cả các thông tin của Kubernetes

được lưu trữ cố định vào đây

* Worker node là máy chủ chạy ứng dụng trên đó Worker node bao gồm 3 thành

phần chính

= Container runtime là thành phần giúp chạy các ứng dụng dưới dang Container

Thông thường ta sử dụng Docker.

— Kubelet là thành phan giao tiếp với Kubernetes API Server, và cũng quan

lý các container.

— Kubernetes Service Proxy là thành phan này đảm nhận việc phân tải giữa

các ứng dụng.

* Replicas Controller là thành phần quản trị bản sao của Pod, giúp nhân bản hoặc

giảm số lượng Pod

* Service là phần mang (network) của Kubernetes giúp cho các Pod gọi nhau ổn

định hơn, hoặc để cân bằng tải (Load Balancing) giữa nhiều bản sao của Pod và

có thể dùng để dẫn traffic từ người dùng vào ứng dụng (Pod), giúp người dùng

có thể sử dụng được ứng dụng

2.4 Microservices

Một ứng dụng với kiến trúc Monolithic sẽ chứa tất cả các thành phần cần thiết của

một ứng dụng hay phần mềm Tuy nhiên, với kiến trúc Monolithic rất khó mở rộng hệ

15

Trang 28

thống hay phát triển thêm một tính năng mới Ví dụ, chúng ta có một ứng dụng bán

hàng và có tính năng thanh toán Nếu ứng dụng đang có một lượng lớn yêu cầu thanh

toán đến tính năng thanh toán, nhưng yêu cầu chỉ cần mở rộng tính năng thanh toán đểđáp ứng một lượng lớn yêu cầu đó Mặt khác, với kiến trúc Microservices các tinh năng

sẽ tách riêng, bao gồm nhiều dịch vụ nhỏ và độc lập rất dễ dàng mở rộng, phát triểnthêm tính năng rất dễ dàng Các dịch vụ này thông thường giao tiếp giao thức HTTPAPI Hình 2.5 mô tả hai kiến trúc Monolithic và Microservices

Monolithic Architecture Microservice Architecture

Hinh 2.5: Kién tric Monolithic va Microservices

2.5 Mô hình Serverless Computing

Thông thường, ngoài viết mã các nhà phát triển phần mềm phải quản lý các hoạt

động triển khai ứng dụng như cài đặt máy chủ, theo dõi tài nguyén, Khi các ứng dụng

được triển khai lên các máy ảo sử dụng kiến trúc ảo hóa Hypervisor, các nhà phát triển

vẫn phải quản lý các máy chủ, mạng, bộ nhớ, cân bằng tải trường hợp quá nhiều yêu

cầu cần xử lý, cài hệ điều hành, cài đặt môi trường cho ứng dụng Trong trường hợp này,

16

Trang 29

nhà phát triển ứng dụng sẽ tốt rất nhiều thời gian để đưa sản phẩm tới người dùng Sựphát triển của ảo hóa container đã loại bỏ nhiều mối quan tâm cho các nhà phát triển.Các ứng dụng dựa trên container có thể giải quyết hầu hết các van đề trên chỉ trong vàigiây Cùng với sự phát triển của kiến trúc Microservices, các ứng dụng lớn sẽ chia nhỏ

thành các dịch vụ (services) và thành các chức năng (functions) độc lập Đây chính

là nền tảng cơ sở của mô hình Serverless Với mô hình Serverless, các nhà phát triểnchỉ cần tập trung vào phát triển ứng dụng theo kiến trúc Microservices, chia nhỏ các

chức năng của ứng dụng và chạy chúng trên Serverless Vì vậy, thuật ngữ Serverless

Computing là một thuật ngữ lớn bao hàm các dịch vụ nhỏ chứa trong nó, đơn vị nhỏ

nhất là function (chức nang) và Serverless đôi lúc cũng được gọi là chức năng như một

dịch vu (Function as a Services) [1].

2.5.1 Cac nền tang phổ biến

Hiện nay, tất cả các nhà cung cấp đám mây lớn đều có dich vụ cho Serverless

Computing Chẳng hạn, Amazon Web Services (AWS) có AWS Lambda cho phép

các nhà phát triển chạy các (function) mà không cần phải tạo một máy ảo nào AWS

cũng cung cấp AWS GreenGrass ! để chạy các function trên các thiết bị biên Microsoft

Azure cung cap Azure Function” cho phép triển khai ứng dụng theo mô hình Serverless

trên nền tang Azure IBM cũng có một nền tảng Serverless Computing được gọi là IBM

Cloud Function? được xây dựng trên Apache OpenWhisk* (một trong những nền tang

được giới thiệu ở các chương tiếp theo) Google cho phép các nhà phát triển chạy các

function theo mô hình Serverless trên Cloud Function’.

Tuy nhiên, tất cả các nền tảng Serverless của các nhà cung cấp trên phải được triển

Trang 30

khai trên nền tang do họ cung cấp, dẫn đến nhiều vấn dé liên quan đến bảo mật, chínhsách và dữ liệu người dùng Vì vậy, một số nền tảng Serverless mã nguồn mở cho phépcác nhà phát triển tự xây dựng mô hình riêng phục vụ nhu cầu của mình và những cái

tên phổ biến như là Apache OpenWhisk!, Kubeless” và OpenFaaSỶ Các nền tảng này

sẽ được triển khai và đánh giá với khối lượng công việc khác nhau ở những chương

sau.

2.5.2 Các trường hợp sử dung Serverless

Mô hình Serverless mang lại nhiều lợi ích cho các nhà phát triển ứng dụng, tuy

nhiên với những ứng dụng và khối lượng ngắn, không đồng bộ theo tải và công việc theo sự kiện, đồng thời Các trường hợp sử dụng sau đặc biệt phù hợp với triết lý

Serverless

* Database trigger Serverless có thể được sử dụng để đáp ứng những thay đối

trong cơ sở dữ liệu Chẳng hạn như thêm, xóa, sửa cơ sở dữ liệu.

* Serverless computing hỗ trợ ở biên Điện toán cạnh biên được mô tả như động

lực chính cho xu hướng Serverless Computing Các thiết bị IoT tạo ra một lượnglớn dữ liệu cần được xử lý trong thời gian thực Các function 6 cạnh biên sẽ xử

lý dữ liệu mà không cần phải gửi dữ liệu lên đám mây

« Xử lý đa phương tiện (media processing) Trong xử lý phương tiện truyềnthông, một tập tin đầu vào đi qua các giai đoạn xử lý trước khi đưa kết quả đếnngười dùng cuối

'http://openwhisk.apache.org/

*https://kubeless.io/

3https://www.openfaas.com/

18

Trang 31

Chương 3

Các nền tang Serverless mã nguồn mở

3.1 Tiêu chí lựa chọn

3.1.1 Tiêu chí lựa chọn các nền tang Serverless mã ngồn mở

Giây phép mã nguồn mở giúp cho các nhà phát triển tự do truy cập và chỉnh sửa

mã nguồn

Cộng đồng hỗ trợ lớn dựa trên số sao trên Github, số lượng người cùng đóng góp

để phát triển và các kênh chat hỗ trợ người dùng sử dụng

Nền tảng phải hỗ trợ nhiều ngôn ngữ lập trình khác nhau

Nền tảng hỗ trợ nhiều công cụ điều phối container như Kubernetes, DockerSwarm để cung cấp tính linh hoạt cho các nhà phát triển và vận hành

Nền tảng phải có công cụ giám sát tổng hợp giúp cho các nhà vận hành theo dõi

các hiệu suất của một chức năng được triển khai, chẳng hạn như số lần gọi hoặc

thời gian thực của một chức năng.

19

Trang 32

* Function triggers: các nền tảng phải hỗ trợ chức năng đồng bộ (dựa trên HTTP)

và chức năng không đồng bộ (event-based)

» Hỗ trợ CLI: nền tảng phải hỗ trợ giao diện Command Line để dé dàng thao tác

và sử dụng.

3.1.2 Tiêu chí đánh giá

Mô hình Serverless được mong đợi để phục vụ nhu cầu không thường xuyên, rờirac, khả năng mở rộng hiệu quả dựa trên cơ sở hạ tầng các máy chủ có san [6]

» Thời gian phản hồi: thời gian giải quyết một yêu cầu (request)

* Số lượng người dùng đồng thời

* Dễ dàng triển khai: thời gian từ khi bắt đầu khởi tạo nền tảng cho đến khi triển

khai một chức năng.

3.2 Các nên tang Serverless mã nguồn mở

Dựa trên các tiêu chí lựa chọn các nền tang Serverless mã nguồn mở ở mục 3.1.1,tác giả lựa chọn ba nền tang đó là Apache OpenWhisk, Kubeless, OpenFaaS Mỗi nềntảng đều có cồng động hỗ trợ lớn, cụ thể số sao trên Github đều trên 5000 sao

3.2.1 Apache OpenWhisk

Apache OpenWhisk [15] là một nền tảng Serverless mã nguồn mở ban đầu được

phát triển bởi IBM nhưng sau đó được chuyển qua cho Apache Incubator Nó có sẵn

giấy phép Apache 2.0 Apache OpenWhisk cũng là công nghệ nằm sau chức năng như

20

Trang 33

một dịch vụ (Functions as a Service) trên đám mây công cộng (Public Cloud) của IBM,

Bluemix ! Hình 3.1 mô tả kiến trúc cấp cao của OpenWhisk.

Hình 3.1: Mô hình lập trình cua Apache OpenWhisk [1]

Mô hình lập trình OpenWhisk dựa trên ba thành phan: action, trigger va rule

¢ Hanh động (action) là các chức năng không trang thái.

s Trình kích hoạt (trigger) là một lớp các sự kiện có thể bắt nguồn từ các nguồn

khác nhau

* Rule (quy tắc) giúp liên kết một trình kích hoạt (trigger) với một hành động

(action)

Hình 3.2 mô tả kiến trúc hệ thống của OpenWhisk OpenWhisk bao gồm các thành

phần: Nginx, Controller, CouchDB 2, Kafka, Invoker and Consul Š.

'https://www.ibm.com/cloud

?https://couchdb.apache.org/

3https://www.consul.io/

21

Trang 34

* Nginx hoạt động như một proxy, giúp chuyển tiếp các yêu cầu đến bộ điều khiển.

* Bộ điều khiển là một REST API cho tất cả hành động mà người dùng thực hiện,bao gồm hành động CRUD trên các thực thể Apache OpenWhisk

* CouchDB được sử dụng để xác thực Sau khi người dùng được yêu cầu xác thực

dữ liệu sé được lưu xuống CouchDB và chuyển nó đến người thực thi (invoker)

* Kafka giúp bộ điều khiển và người thực thi giao tiếp được với nhau Invoker sé

sinh ra một Docker container mới và chuyển đoạn mã cần thực thi vào function

đó Phản hồi được chuyển sang cho người dùng và dữ liệu cũng được lưu trong

CouchDB.

* Consul là nơi lưu trữ phân tán key-value, được sử dụng để quản lý trạng thái của

OpenWhisk Invoker quyết định có nên tái sử dụng một container hiện có (hot),

để bắt đầu một container tạm dừng (warm) hoặc để khởi động một container mới

(cold) dựa trên tình trang của container trong Consul.

Apache OpenWhisk hỗ trợ các ngôn ngữ lập trình như JavaScript, Swift, Python,

PHP, Java và mã nhị phân thực thi Ngoài ra, nó cho phép chạy bat kỳ mã tùy chỉnhnào được đóng gói trong Docker container OpenWhisk hỗ trợ các chức năng đồng

bộ, bất động bộ và lập lịch Mỗi thành phần trong kiến trúc được chạy dưới dạngDocker container và có thể thu nhỏ theo thời gian thực OpenWhisk có thể được thiết

lập để chạy bằng cách sử dụng bất kỳ công cụ điều phối container nào, chẳng hạn

như Kubernetes hoặc Docker Swarm Tuy nhiên, khả năng mở rộng (auto scaling)

của các chức năng được quản lý trực tiếp bởi bộ điều khiển (Controller) của Apache

OpenWhisk và nó không dựa vào hỗ trợ của Kubernetes Giám sát các chức năng có

thể thực hiện bang cách tích hợp statsd ! Apache OpenWhisk cung cấp CLI, REST

API endpoint và iOS SDK để tương tác với cụm OpenWhisk Về phía cộng đồng hỗ

'https://github.com/statsd/statsd

22

Trang 35

E1 ~ Controllar

bid

katka

Hình 3.2: Kiến trúc hệ thống của Apache OpenWhisk [1]

trợ, Apache OpenWhisk có một cộng đồng tích cực trên Github [16], Slack !, Twitter

(@openwhisk) và email ?

3.2.2 Kubeless

Kubeless * là một nền tảng Serverless mã nguồn mở được thiết kế để chạy trên

Kubernetes, nền tảng này cho phép người dùng viết những đoạn mã nhỏ thành các

function mà không cần phải lo lắng về hạ tầng bên dưới Nó được triển khai trên một

cụm Kubernetes và tận dụng những lợi thể tốt nhất của Kubernetes Kubeless là dự án

!https://openwhisk-team.slack.com/

*https://openwhisk.apache.org/slack.html

3https://kubeless.io/

23

Trang 36

mã nguồn mở của Bitnami ! và được cấp phép theo giấy phép của Apache 2.0.

Hình 3.3: Kiến trúc của Kubeless [1]

Trong hình 3.3, Kubeless sử dụng Custom Resource Definitions (CRD) * để mở rộng Kubernetes API và tạo các chức năng được tùy chỉnh bằng Kubernetes API Điều

này cho phép các nhà phát triển sử dụng các Kubernetes API gốc để tương tác với cácchức năng đã tạo như thể chúng là chức năng của Kubernetes Các thành phần của

Kubeless gồm

» Chức năng (function) chứa các đoạn mã để thực thi và siêu dif liệu (metadata) để

mô tả chức nang đó như runtime va sự phụ thuộc (dependencies).

!https://bitnami.com/

?https://kubernetes.io/docs/concepts/extend-kubernetes/api-extension/custom-resources/

24

Trang 37

* Trigger được dùng để cấu hình tài nguyên cho các chức năng và một trigger có

thể chứa nhiều chức năng khác nhau Chẳng hạn, HTTP (event-based và không

đồng bộ - asynchronous) và lập lịch

* Runtime ! như môi trường hỗ trợ ngôn ngữ lập trình trong Kubeless Hiện tai,

Kubeless hỗ trợ ngôn ngữ lập trình Python, Node.js, Ruby, PHP, Golang, NET

và Ballerina.

Các chức năng được thực thi (invoke) thông qua việc sử dung Apache Kafka và

Zookeeper Kubeless sử dụng Prometheus để giám sát các chức năng Tính năng tự

động mở rộng (auto scaling) dựa trên Kubernetes Horizontal Pod Autoscaler, có thể

thay đổi quy mô các chức năng dựa trên việc sử dụng CPU hoặc một số thông số khácđược cấu hình trong ConfigMap Kubeless cung cấp cả giao diện UI và CLI để dé dànghơn cho người dùng sử dụng Người dùng rất dễ dàng triển khai được chức năng của

mình chỉ trong vài phút [17] Kubeless có cộng đồng hỗ trợ tích cực, hiện tại đang có

trên Github 2, Slack 3 và Twitter (@kubeless sh).

3.2.3 OpenFaaS

OpenFaaS là một nền tảng Serverless mã nguồn mở có sẵn giấy phép của MIT.

Nền tảng này tập trung vào hướng dễ dàng triển khai, đơn giản để sử dụng và quantrọng là mã nguồn mở Hình 3.4 mô tả kiến trúc của OpenFaaS OpenFaaS đượcchia thành hai thành phần chính là API Gateway và cơ quan theo dõi chức năng

(function watchdog) Prometheus được sử dung để theo dõi các function (chức năng)

trên OpenFaaS Người dùng có thể chạy OpenFaaS trên nhiều công cụ quản trị điều

phối container như Kubernetes, Docker Swarm và Nomad [18]

Trang 38

Function WatchdogAPI Gateway

(Ô se) & Kubernetes

docker

Hình 3.4: Kiến trúc hệ thống của OpenFaaS [1]

¿ REST | qm am Gateway Ƒ Invoke

function —

~rseeees -jU đU@-~ ÁN

ˆ javatn2.0

L_u OpenFaas | CRUDI_, taas-netes its service:iatest

Collect R.E.D, ~ Seale up! 'Ẳ

Metrics on `

Ẩn: NATS Docker

Streaming | | Registry

ce) Prometheus x ©) pertvianager

Hình 3.5: Các thành phan của OpenFaaS [1]

OpenFaaS [18] có phép các nhà phát triển viết các function thông qua mẫu (template)

có sẵn của họ Hiện tại, OpenFaaS có các mẫu cho các ngôn ngữ lập trình như C, Go,NodeJS, Python và Ruby Tuy nhiên, các nhà phát triển có thể tự viết riêng va đóng góp

vào các mẫu cho OpenFaaS Nền tảng này hỗ trợ kích hoạt các function như HTTP và

dựa trên sự kiện (event-based) Về cộng đồng hỗ trợ, OpenFaaS có một cồng đồng hỗ

trợ lớn và tích cực, hiện tại OpenFaaS có trên Github! với hơn 19 nghìn sao, Slack * và

Twitter (@openfaas).

!https://github.com/openfaas

*https://openwhisk-team.slack.com/

26

Trang 39

3.3 Kết chương

Trong phần này, tác giả tóm tắt thảo luận về các nền tảng Serverless mã nguồn mở

dựa trên các tiêu chí đã lựa chọn ở phần 3.1.1 Bảng 3.1 tổng hợp các tiêu chí đã lựachọn Cả ba nền tảng đều là mã nguồn mở theo giấy phép của Apache 2.0 hoặc MIT.Với số lượng sao trên Github, OpenFaaS có cộng đồng nhà phát triển lớn nhất Hai nềntảng còn lại cũng có số sao trên 5 nghìn Các nền tảng đều hỗ trợ các ngôn ngữ lậptrình phổ biến ở hiện tại Tuy nhiên, kiến trúc của OpenFaaS không được thiết kế đểchạy runtime, tức là phải thông qua một khuôn mẫu có sẵn của OpenFaaS cung cấp

Các mẫu chứa các function để tạo các function, các mẫu này có sẵn Dockerfile được

sử dụng để xây dựng va đóng gói thành các Docker images Cách tiếp cận này giúpcác nhà phát triển dễ dàng thiết kế các mẫu riêng của họ với bất kỳ ngôn ngữ lập trình

nào Đối với tính năng mở rộng, OpenFaaS mở rộng dựa trên việc sử dụng CPU, trong

khi OpenWhisk hỗ trợ mở rộng dựa trên số lượng yêu cầu được gửi đến function (chức

nang) Mặc khác, Kubeless và OpenFaaS cho phép mở rộng quy mô dựa trên các chỉ

số tùy chỉnh Về công cụ hỗ trợ điều phối container, OpenWhisk không phụ thuộc vàobất kì công cụ nào, OpenFaaS hỗ trợ nhiều công cụ điều phối container khác nhau

(Kubernetes, DOcker Swarm và Nomad) và sử dụng các chức năng của công cụ điều

phối đó, còn Kubeless phụ thuộc hoàn toàn vào Kuberless để chạy Tat cả các nền tang

đều cung cấp công cu CLI để tương tác với các fucntion.

Kết luận, Kubeless có kiến trúc đơn giản nhất và sử dụng hoàn toàn Kubernetes

nên dễ dàng tận dụng tối đa hiệu suất của Kubernetes OpenFaaS hỗ trợ nhiều công cụ

điều phối khác nhau, dễ dàng viết mã với các mẫu đã cung cấp, do đó rất dễ dàng để

triển khai.

27

Trang 40

2 3

OpenWhisk! Kubeless OpenFaaS

Giay phép Apache License 2.0 | Apache License 2.0 MIT

Ballerina, Go, Java,

¬ NodeJS, PHP, | Ballerina, Go, Java, | Go Java, NodeJS,

Ngôn ngữ lập NodeJS, PHP,

trình hỗ tro Python, RubyRuby, Python Ruby, NET PHP, Python, Ruby,

, ĩ Swift, NET Core, C y eae ae C, Docker file

: Core

, Docker actions

Công cu điều Kubernetes, Docker

he 6w l Kubernetes Kubernetes Swarm, Apache

phôi container

Mesos

Function HTTP và các nguôn | HTTP và các nguôn | HTTP và các nguôn

Triggers cung dữ liệu khác cung dif liệu khác cung dif liệu khác

Ngày đăng: 02/10/2024, 04:11

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN

w