Đồ án tốt nghiệp
Là một dịch vụ của Amazon Web Service hỗ trợ tính năng CDN với máy chủ được giải khắp toàn thế giới ( 180 máy chủ được đặt ở 73 thành phố và 33 quốc gia ). CloudFront được Amazon thiết kế dé tối ưu hóa hiệu suất truy xuất nội dung và có thé mở rộng kha năng phục vụ khi có lưu lượng
truy xuất đữ liệu lớn. Một trong những lo ngại khi sử dụng các dịch vụ ở
bên thứ ba là tính bảo mật thì cũng được AWS tích hợp sẵn và người dùng có thể có nhiều tùy chọn định cấu hình để có dịch vụ bảo mật tối ưu, phù hợp với bài toán cụ thê.
Rất đơn giản dé sử dụng, ít tốn kém hon vi chi tinh phí trên kích thước dữ
liệu được truyền.
Một số trường hợp sử dụng:
1.
3.
1.5.6.
Ung dung can phân phối nội dung tĩnh (ảnh, video, văn bản): CloudFront cải thiện độ trễ và giảm tải trên các máy chủ. Giúp lưu nội dung tĩnh của
ứng dụng vao bộ nhớ của các may chủ trung gian từ đó mang lại cho người xem trải nghiệm nhanh chóng và đáng tin cậy khi truy cập trang web.
Phát video trực tuyến: có thê sử dụng CloudFront đề lưu vào bộ nhớ máy chủ trung gian các đoạn video trực tuyến và giảm tải cho máy chủ phát
video.
Nâng cao bảo mật: tích hợp khả năng ngăn chặn tan công DDoS, mã hóa các dữ liệu nhạy cảm, phân quyền và khi đó thông tin chỉ có thể được xem bởi những người cụ thể.
Công nghệ giám sát và phân tích nhật ký hoạt động của hệ thống
Prometheus và Grafana
Prometheus và Grafana:
Prometheus: là một ứng dụng mã nguồn mở được sử dụng để giám sát dựa trên
số liệu thu thập từ hệ thống và tiễn hành cảnh báo khi các tình huống nguy hiểm xảy ra. Prometheus tiến hành thu thập số liệu thông qua việc gửi các yêu cầu HTTP đến. các ứng dụng hoạt động trên hệ thống, sau đó các ứng dụng đó sẽ tiễn hành trả về số liệu thực theo thời gian của ứng dụng hoạt động. Số liệu sau khi
được trả về Prometheus sẽ được lưu vào một cơ sở dữ liệu dạng chuỗi thời gian.
Dé người dùng truy xuất số liệu, Prometheus cung cấp cho người dùng một bộ
ngôn ngữ truy vân là PromQL. Ngôn ngữ truy vân PromQL sẽ hỗ trợ người dùng
phân tích các ứng dụng đang hoạt động và cơ sở hạ tang dé cung cấp những thông tin đúng về tình trạng của hệ thống.
Grafana là một ứng dụng mã nguồn mở được sử dụng dé phân tích dữ liệu từ
nhiêu nguôn khác nhau trong đó có thê đên từ Prometheus và hiên thị trên các biêu đô đẹp mat va dê dang phân tích.
NGUYEN THANH SÁNG - DI17CNPM0I
Đồ án tốt nghiệp
Hình 10: Biểu đô thé hiện dữ liệu của Grafana
1.5.7. Công nghệ tự động vận hành hệ thống Kubernetes
Cum may chủ Kubernetes
Kubernetes là tập hợp của một cum những may chủ (máy ảo hoặc máy vật ly)
được liên kết với nhau để hoạt động như một đơn vị duy 1 nhất. Theo cách truyền
thống, các ứng dụng sẽ được triển khai trên các máy ảo năm trên một hoặc nhiều
máy chủ vật lý và mọi thứ đều hoạt động tốt nhưng vấn đề xuất hiện khi ứng dụng được thị trường chấp nhận với số lượng người dùng tăng cao và đòi hỏi nang cap máy chủ, tăng khả năng phục vụ người dùng. Việc triển khai ứng dụng sang máy
ảo mạnh hơn sẽ mất nhiều thời gian và xuất hiện nhiều rủi ro. Kubernetes giải quyết vấn đề băng việc cung cấp một không gian làm việc với nhiều máy chủ liên kết lại và gọi là cụm máy chủ Kubernetes. Khi ứng dụng cần nâng cấp tài nguyên, máy chủ mới sẽ được cài đặt và được kết nối thêm vào cụm máy chủ Kubernetes
đã tồn tại. Bang cách làm này, việc nâng cấp sẽ không làm ảnh hưởng tới ứng
dụng đang chạy. Ứng dụng được triển khai lên cụm, Kubernetes sẽ vận hành toan bộ ứng dụng một cách tự động và tính toán dé dua ra những quyết định mở rộng hoặc giảm tài nguyên cấp cho ứng dụng theo số lượng yêu câu cần xử lý của
người dùng. Kubernetes là mã nguôn mở, được phát triển bởi Google nhằm hỗ trợ và triển khai các ứng dụng đưới dạng container.
Kiên trúc cum máy chủ Kubernetes
NGUYEN THANH SÁNG - DI17CNPM0I
Đồ án tốt nghiệp
1
cloud-controller
manager
kube-controller
manager
kubelet Ả
(kube-proxy) (kube-proxy
44
!4 4
= | B i 4
44 Kubernetes Nodes
Z
Hình 11: Kiến trúc Kubernetes
Cụm máy chủ gồm hai thành phần chính: Bộ phận điều khiển trung tâm
(Kubernetes Control Plan) và bộ phận máy chủ trực tiép chạy ứng dung (Kubernetes Nodes)
ôe Bộ điều khiển trung tõm: đúng vai trũ như bộ nóo con người, chịu trỏch nhiệm quản lý và đưa ra quyết định với toàn bộ cụm máy chủ. Ví dụ lập kế hoạch thời gian hoặc chọn máy chủ để triển khai ứng dụng sau đó phát hiện
va phản hồi những sự kiện tác động đến cụm làm giảm khả năng phục vụ của ứng dụng. Các thành phan trong bộ điều khiến trung tâm có thê chạy trên bất kỳ máy chủ nào trong cụm. Tuy nhiên, để đơn giản hóa việc quản
lý, các thành phần trong bộ điều khiển trung tâm sẽ được cài đặt chạy trên một máy ảo duy nhất gọi là Master. Giải thích khái niệm cơ bản của các
thành phan trong bộ điêu khiển trung tâm:
- Kube-api-server: hoạt động như một công xác thực các yêu cầu được
gửi đến cụm máy chủ của quản trị hệ thống. Các yêu cầu được gửi dưới dạng API, sau khi được xác thực ở kube-api-server thì quản trị
viên sẽ được cấp một phạm vị quyền dé thực hiện điều khién cụm
máy chủ.
Etcd: nơi lưu trữ dữ liệu tại các thời gian khác nhau của cụm. Dữ liệu
được lưu trữ có thé phục vụ cho việc cập nhật hệ thống quay lại trạng thái trước đó nếu gặp lỗi tại thời điểm hiện tại hoặc giám sát toàn bộ
cụm.
Kube-scheduler: Giám sát những ứng dụng đang chạy hoặc chọn máy chủ phù hợp dé triển khai ứng dụng lên máy chủ đó.
Kube - controller manager: là nơi lấy dữ liệu từ etc dé tính toán và đưa ra những quyết định điều khiển cụm một cách tự động như tự động cấp thêm tải nguyên cho ứng dụng.
NGUYEN THANH SÁNG - DI17CNPM0I
Đồ án tốt nghiệp
Cloud-controller manager: chạy các bộ điều khiển dùng dé tương tac
với môi trường Cloud như Google Cloud Platform.
e_ Máy chủ trực tiếp chạy ứng dụng (Kubernetes Nodes): là các máy ảo hay máy vật lý làm việc như những máy ảo truyền thông dé lưu trữ những ứng
dụng đang ở trạng thái chạy nhưng khác là đặt dưới sự quản lý của bộ điều
khiển trung tâm (Master). Máy chủ trực tiếp chạy ứng dụng gồm 3 thành phần chính là kubelet, kube-proxy và container runtime.
¢ Kubelet: là một thành phan chạy trên mỗi máy chủ trong cụm nhằm
chịu trách nhiệm liên tục kiểm tra trạng thái của các ứng dụng chạy trong máy chủ đó để đảm bảo các cấu hình ban đầu của ứng dụng được đáp ứng đúng và không bị thay đổi trong quá trình vận hành.
e Kube-proxy: duy trì những quy tắc giao tiếp nhất định trên toàn bộ cụm, giữa các thành phần bên trong một máy chủ tới máy chủ khác hoặc giao tiếp bên ngoài giữa các cụm máy chủ với nhau.
e Container runtime: là thành phan chịu trách nhiệm tải các bản thiết kế, định nghĩa ứng dụng (images) và khởi chạy ứng dụng dưới dạng
containers.
1.6. Tổng kết chương 1
Trong Chương 1, đồ án đã trình bày về các công nghệ được sử dung trong dự án và giới thiệu tông quan về cách tiếp cận kiến trúc Microservices dé xây dựng ứng
dụng. a
Các chương tiếp theo sẽ đi sâu vào quy trình phát triển phần mềm dé có thé hiểu rõ hơn về hệ thống website hỗ trợ hỏi đáp cho lập trình viên.
NGUYEN THANH SÁNG - DI17CNPM0I
Đồ án tốt nghiệp
Chương 2: Phân tích hệ thống
2.1. Mô tả chung hệ thống
Hệ thống hỗ trợ hỏi đáp cho lập trình viên cung cấp chức năng đăng ký, đăng nhập trong đó người dùng có thê đăng ký tài khoản thông qua email sau đó có thê đăng nhập vào hệ thống sử dụng tài khoản cá nhân hoặc bằng tài khoản các bên
thứ 3 như Google, Facebook, Github. Sử dụng tài khoản bên thứ 3 giúp lập trình viên nhanh chóng truy cập vào hệ thống mà không mat nhiều bước xác thực.
Ngoài ra hệ thống còn cung cấp các chức năng quên mật khâu giúp người dùng lây lại tài khoản cá nhân.
Hệ thống cho phép người dùng quản lý danh sách những bài viết hỏi đáp hoặc chia sẻ kinh nghiệm của mình. Người dùng có thể tạo ra một bài viết mới hoặc sửa đối một bài viết đã tồn tại với nội dung gồm: Dữ liệu dạng văn bản (hỗ trợ định dạng chèn mã nguồn với ngôn ngữ tương ứng), một ảnh hoặc một danh sách ảnh mã nguồn cần hỗ trợ chỉnh sửa. Bên cạnh đó trong bai viết mới người dùng có thé chèn thêm hyperlink, cập nhật trạng thái cảm xúc, sử dụng hashtag dé phân biệt chủ đề công nghệ của bài viết cần hỗ trợ. Quan trọng người dùng có thé tùy chọn sự riêng tư của bài viết, tùy chọn này cho phép người dùng đặt chế độ chỉ mình tôi, công khai với người dùng khác trong hệ thống. Ứng dụng còn giúp
người dùng theo dõi được những bình luận hỗ trợ giải đáp, lượt thích với những
bài viết. Ngoài ra, hệ thống cũng cho phép người dùng xóa những bài viết đã được đăng trước đó và không cho phép hồi phục khi đã bị xóa. Người dùng sau khi tham gia hệ thống có thé viết bình luận đề hỗ trợ các lập trình viên khác trong các bài viết công khai và sẽ có một thông báo được gửi tới lập trình viên đặt câu hỏi.
Sau khi bình luận được tạo, người dùng có thể chỉnh sửa hoặc xóa bình luận của
mình.
Hệ thong cho phép người dung quản lý thông tin co bản của một lập trình bao gồm những thông tin cơ bản sau đây: địa chỉ nơi ở, nơi làm việc/học tập, ngày sinh, số điện thoại, email, kỹ năng, các dự án các nhân. Những thông tin công khai này sẽ làm tăng sự uy tín của lập trình viên hỗ trợ trả lời và trong trang cá nhân, người dùng có thê quản lý các bài viết hỏi đáp và chia sẻ của mình.