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 3THONG 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 4nghiê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 5Mụ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 6MỤ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 75.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 8MỤ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 9Danh 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 10DANH 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 11Thô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 12IoI 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 13TÓ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 14Chươ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 15thố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 16Trong 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 171.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 18trê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 19Chươ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 20Mặ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 21Type 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 222.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 232.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 24Hì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 28thố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 29nhà 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 30khai 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 31Chươ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 33mộ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 35E1 ~ 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 36mã 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 38Function 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 393.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 402 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