Câu chuyện Cloud ☁
-
Bùi Lê Tuấn Anh
- 01 Tháng 09 2023

Kính chào quý độc giả, đây là bài thứ ba của Tech Blog xuất hiện trở lại trên website này. Ngày hôm nay, rất nhiều nội dung thú vị sẽ được chia sẻ tại chiếc Tech Blog này. Với tựa đề Câu chuyện Cloud ☁, đây sẽ là những câu chuyện được tổng hợp lại dưới góc nhìn hài hước và dễ hiểu nhất về những vấn đề khác nhau. Mời quý vị chuyển sang các thẻ khác nhau ứng với từng phần của bài viết.
- P1
- P2
- P3
Tản mạn về Mail sinh viên
Trước khi đến với câu chuyện về Điện toán đám mây và DevOps, chúc mừng các bạn đã hoàn thành mục tiêu đậu vào trường Đại học mà mình mong muốn. Nhìn mấy bạn chạy đôn chạy đáo đi nộp hồ sơ nhập học, tôi lại bồi hồi nhớ về hình ảnh của chính bản thân cách đây bốn năm trước, khi tôi cũng trúng tuyển vào ngành Công nghệ thông tin của Khoa học Tự nhiên - ĐHQG TPHCM. Giờ đây tôi đã chuẩn bị tốt nghiệp, và đang truyền lại những gì đặc biệt nhất cho các bạn tân sinh viên.
Chắc hẳn các bạn đã nghe qua về cụm từ Mail sinh viên rồi. Ừ, thì nó là một chiếc thư điện tử, được các trường cấp cho mỗi bạn để liên lạc với các phòng ban cũng như người khác. Tất nhiên, nếu các bạn chỉ đọc tới đây mà cảm thấy chán nản bỏ đi thì các bạn đã sai lầm. Bởi có nhiều thứ mà có thể bạn sẽ chưa biết về công năng của chiếc mail sinh viên quyền lực này. Are you ready? Let’s check it out!
GitHub
Với các bạn sinh viên học Công nghệ thông tin, rất nhiều bạn sẽ cần biết đến GitHub - một trong những nơi lưu trữ mã nguồn có thể gọi là lớn nhất thế giới do Microsoft vận hành. Chính vì thế, với việc sử dụng email sinh viên, không chỉ các bạn được nâng cấp miễn phí lên gói Pro với nhiều tính năng nâng cao, mà với chương trình Gói hỗ trợ cho Sinh viên, các bạn có thể sử dụng miễn phí hàng chục dịch vụ khác nhau với những công năng khác nhau.
Microsoft và Google
Thường thì mail sinh viên sẽ gắn với một trong hai ông lớn công nghệ này. Với Microsoft, các bạn có thể sử dụng miễn phí Microsoft 365 - một bộ ứng dụng văn phòng với nhiều tính năng hữu ích, đặc biệt có thể kích họat được Office cùng OneDrive với dung lượng đến 1TB mỗi người (1 Terabyte = 1024 Gigabytes). Còn với Google, các bạn có thể sử dụng miễn phí Google Workspace for Education - một bộ ứng dụng tương tự như Microsoft 365, với Google Drive dung lượng 100TB được chia lại cho tất cả mọi người. Nghe đâu Microsoft cũng đang muốn bắt chước Google làm điều tương tự (là dùng 100TB chia đều cho mọi người) thì phải.
Thông tin về việc giới hạn dung lượng của Microsoft đối với các giấy phép dành cho Giáo dục đã chính thức được công bố tại đây
Canva
Canva là một công cụ thiết kế đồ họa trực tuyến, với nhiều mẫu thiết kế sẵn có, giúp các bạn có thể tạo ra những thiết kế đẹp mắt một cách nhanh chóng. Các bạn có thể sử dụng miễn phí gói Canva Pro (bản Edu) với nhiều tính năng hữu ích trong vòng 1 năm chỉ bằng việc sử dụng mail sinh viên. À mà cái này nên để dành cho năm cuối Đại học, khi muốn làm các học phần Tốt nghiêp rồi hẳn dùng cũng chưa muộn màng đâu.
Thông tin về việc hủy gói Canva Pro dành cho sinh viên đang được cập nhật và sẽ được chuyển đến tại đây trong thời gian sớm nhất.
Autodesk
Nếu ai có duyên với những ngành như thiết kế kỹ thuật và lập trình này nọ, AutoCAD sẽ là một người bạn thân quen. Nếu sử dụng mail sinh viên, thì dịch vụ AutoCAD cùng hàng loạt dịch vụ khác của Autodesk cũng sẽ được cung cấp cho các bạn sinh viên miễn phí… (à mà cái này thì mình cũng chả dùng bao giờ, nên nhờ các bạn kiểm chứng xem nó ưu đãi tại đâu nhé :>)
Bitbucket
Một kho lưu trữ mã nguồn thứ hai (tương tự với GitHub và một anh bạn khác không được kể ở đây là Gitlab) sẽ được cung cấp cho sinh viên miễn phí, với những tính năng như không giới hạn số lượng kho lưu trữ riêng tư, không giới hạn số thành viên trong hệ thống, v.v…
Apple (qua UniDays) và Spotify
Qua UniDays, các bạn sinh viên có thể đăng ký Apple Music với mức chi phí thấp hơn rất nhiều so với khi sử dụng gói dịch vụ bình thường. Ngoài ra, khi mua iPad hay Macbook, các bạn cũng sẽ được giảm giá một khoản nhất định. Còn với Spotify, các bạn có thể đăng ký gói Premium với mức giá hấp dẫn. Tất cả chỉ cần một mail sinh viên là đủ.
Các dịch vụ khác
- Adobe Creative Cloud cung cấp giá cước thấp hơn cho sinh viên, giảm đến 60%. Hệ sinh thái Adobe cung cấp các giải pháp về thiết kế đồ họa, đặc biệt là Photoshop/Lightroom hay Premiere Pro.
- YouTube cũng cung cấp gói Premium dành cho sinh viên với mức giá rẻ hơn (chỉ từ 49.000 VND/tháng) dành cho sinh viên.
- Amazon Prime cung cấp 6 tháng dùng thử miễn phí và mức cước rẻ hơn sau 6 tháng khi sử dụng mail sinh viên để đăng ký dịch vụ này. Đây là dịch vụ giải trí do Amazon cung cấp, tương tự như Netflix. Dịch vụ này hiện đã dừng hoạt động tại Việt Nam.
- Tableau cung cấp các khóa học chuyên biệt cho những ai có đam mê về ngành Khoa học dữ liệu. Đối với sinh viên, một mail sinh viên là đủ cho tất cả sự miễn phí.
- Coursera cũng cung cấp mỗi năm 1 khóa học miễn phí cho các bạn sinh viên khi sử dụng mail sinh viên để đăng ký. Coursera là một nền tảng học trực tuyến, với nhiều khóa học chất lượng dành cho mọi lứa tuổi.
Tạm kết
Có thể vẫn còn đó rất nhiều những dịch vụ miễn phí khác, hoặc những thay đổi về chính sách dùng miễn phí dành cho các bạn sinh viên. Tuy vậy, với quyền năng khủng khiếp của mình, mail sinh viên chắc chắn sẽ là người bạn đồng hành không thể thiếu của các bạn sinh viên trên chuyến hành trình thanh xuân của mình…
À khoan, còn chưa hết đâu! Cơ mà, nếu mà mọi người có để ý ở GitHub thì bên trong Gói hỗ trợ dành cho sinh viên cũng có 1 đầu mục chuyên biệt về chủ đề DevOps - chủ đề sẽ được nhắc tới trong phần 2 của bài viết này. “DevOps là gì?” - Câu trả lời sẽ có ở tab tiếp theo nhé!!!
Chuyện nhà DevOps
Như vậy là rất lâu sau phần 1 thì phần 2 của Câu chuyện Cloud cũng đã được ra mắt. Trong phần 1, chúng ta đã cùng nhau tìm hiểu về những ưu đãi mà mail sinh viên có thể mang lại cho chúng ta. Tuy vậy, chúng ta vẫn chưa đi vào chủ đề DevOps - chủ đề chính của bài viết này. Vậy DevOps là gì? Cùng tìm hiểu nhé!
Cuộc tranh cãi không hồi kết…
Trong một công ty về Công nghệ thông tin (CNTT), luôn luôn sẽ có ít nhất hai thành phần nhân sự quan trọng cho một dự án hàng triệu đô la được một khách hàng đẹp trai giao khoán. Một là những lập trình viên (Developer) 👨💻 , hay còn được biết đến với cái tên dân dã hơn là Coder, những người viết mã nguồn cho những chương trình quan trọng. Hai là những quản trị viên (Operator) 🖥 , những người quản lý hệ thống, cài đặt, bảo trì, và đảm bảo chương trình luôn hoạt động ổn định. Hai nhóm này luôn luôn có những mâu thuẫn với nhau, và tất cả đều bắt đầu từ một từ khóa là NGỘ NHẬN (Assumption).
Nguồn: Dzone
Những tay Dev thì luôn cho rằng, mã nguồn của mình chạy được ở máy mình, nhất định sẽ chạy được ở tất cả máy khác (codebase giống nhau, hạ tầng như nhau thì chạy như nhau). Những tay Ops thì lại cho rằng, những ứng dụng nào chạy được trên hệ thống của mình sẽ tương đương vỡi những ứng dụng khác, đồng nghĩa là chạy được trên mọi hệ thống mà mình quản lý. Thế là, Dev đổ lỗi Ops, Ops lại xoay sang xỉa mắng Dev. Kết cục của những trận cãi nhau không hồi kết đó là:
Vào một ngày đẹp trời, ông khách hàng đẹp trai hôm trước thì hôm nay mặt đã đỏ bừng lên, đùng đùng đi ra khỏi phòng họp, tuyên bố mạnh miệng:
Tôi không cần biết lỗi là của ai, tôi chỉ cần biết là tôi không thể sử dụng được ứng dụng của các ông nữa. Ngưng hợp tác, trả tiền hoặc tôi sẽ kiện ra tòa! 💵
Và rồi, những Dev và Ops lại tiếp tục cãi nhau mà không biết rằng, công ty đứng trước nguy cơ phá sản với chiếc hợp đồng bị hủy trị giá hàng triệu đô la, đồng nghĩa là nhiều người sẽ lại thất nghiệp để đi chạy Grab hay Be…
Nhịp cầu nối những bờ vui…
Để tránh những nguy cơ có thể xảy ra, sếp tổng đã vào cuộc. Sếp nhấc máy gọi ngay phòng Nhân sự, thuê gấp 1 người có danh xưng là Kỹ sư DevOps về để giải quyết vấn đề. Ông DevOps sau 3 vòng phỏng vấn hại não kéo dài gần 3 tiếng hơn 🧠 cũng được vào làm. Ngay ngày đầu tiên bắt đầu công việc, những Dev và Ops cũ nhìn người mới này với ánh mắt vô cùng trầm trồ và không ngừng thắc mắc:
Bằng cách quái dị nào mà người này vừa lập trình giỏi vừa vận hành tốt thế?
Thắc mắc này cũng được hỏi ngay trong bữa ăn trưa đầu tiên của mọi người. Ông nhân viên mới ngồi lại cùng với những Dev và Ops, rồi bắt đầu giải thích:
Tất cả mọi chuyện đều là tự ngộ nhận mà ra thì có… Dev chắc viết mã nguồn cho một mình dùng thôi à? Còn Ops, hệ thống có tính đến việc ứng dụng mới ra mắt sẽ vận hành được trên đó chứ?
Mọi người lặng thinh, không một lời bình luận nào. Ông DevOps tiếp tục:
Thứ tôi đang làm sẽ giúp mọi người bớt ngộ nhận lại. DevOps là viết tắt của hai từ: Development và Operations. DevOps là một phương pháp quản lý, vận hành, và phát triển ứng dụng, nhằm tạo ra một quy trình làm việc liên tục, linh hoạt, và hiệu quả giữa mọi người với nhau. DevOps không phải là một công nghệ, mà là một triết lý làm việc.
Nguồn: Linkedin
♾ Ông DevOps cầm một chiếc bút, vẽ một dấu vô cực trên tờ giấy mà ông lấy ra từ chiếc ba lô mang theo khi đi ăn (nghe vô tri dữ), rồi mô tả với sự hăng say:
Quy trình này có nhiều bước, cũng như bình thường mọi người hay làm thôi: Plan, Code, Build, Test, Release, Deploy, Operate, Monitor. Trong đó, thường là mấy ông Dev sẽ quan tâm nhánh trái của dấu vô cực này, tức là tới Release là cùng thôi. Ops sẽ quan tâm những phần còn lại. Bây giờ tôi sẽ kết nối hai nhánh này lại với nhau, để mọi người có thể làm việc cùng nhau.
Ông DevOps vẽ thêm một khung hình chữ nhật, rồi chốt lại:
Nói thật, tôi còn có thể giúp mọi người làm được nhiều hơn là kết nối hai bên lại với nhau. Bởi còn có một thuật ngữ khác còn lớn hơn cả DevOps là DevSecOps - tức là bảo vệ (Security) an toàn cho ứng dụng triển khai qua DevOps. 🔒
Mọi người ngớ ra, có vẻ vẫn chưa hiểu mình đang nghe được cái gì nữa. Sau khi ăn xong, mọi người vừa trò chuyện rôm rả vừa trở về tiếp tục công việc mà không còn những trận cãi nhau.
Còn về vị khách hàng kia, sau khi được sếp tổng giải thích kỹ lưỡng về tình hình cũng đã nguôi ngoai mà không kiện công ty ra tòa và hẹn lại dịp khác. Người này chừng một tháng sau quay lại nhận sản phẩm cũng đã không còn cảm thấy khó chịu nữa mà thay vào đó, người này quyết định rủ thêm các đối tác khác của mình đến tham quan và hợp tác với công ty để phát triển sản phẩm. Công ty cũng đã không còn phải lo lắng về việc phá sản nữa mà thay vào đó, đã có thêm nhiều dự án mới để phát triển.
Những điều cần biết về DevOps và CI/CD
Quay trở lại với chiếc dấu vô cực phía trên, xương sống của DevOps là CI/CD (Tích hợp và Phát triển liên tục) và Tự động hóa. Bởi khi quá trình dựng và triển khai ứng dụng đều được tự động hóa và diễn ra liên tục, sẽ có nhiều lợi ích đem lại.
Nguồn: Katalon
Dựng tự động
✅ Dựng ứng dụng tự động sẽ mang đến năm lợi ích chính:
- Nhanh chóng. Việc dựng tự động sẽ đạt tốc độ cao hơn so với việc gõ lệnh dựng bằng tay.
- Ổn định. Quá trình dựng diễn ra thống nhất theo các bước đã được lập trình sẵn, không bị nhầm lẫn.
- Lặp lại. Quá trình dựng được lặp lại nhiều lần, không bị thay đổi. Điều này giúp mã nguồn có thể dựng được nhiều phiên bản khác nhau nhưng vẫn cho kết quả như nhau.
- Gọn gàng. Quá trình dựng được thực hiện giống nhau trên mọi máy tính, không cần phải cài đặt thêm các phần mềm khác.
- Tin cậy. Quá trình dựng được thực hiện theo một quy trình ít lỗi nhất có thể.
Tích hợp liên tục (CI)
Nguồn: Android Developers
Đây là dạng thực hành cho phép nhập các thay đổi mã nguồn từ các lập trình viên vào một kho mã nguồn chung. Quá trình này sẽ được thực hiện liên tục, thường là mỗi khi có thay đổi mã nguồn mới. Quá trình này sẽ giúp cho các lập trình viên có thể kiểm tra mã nguồn của mình có bị lỗi hay không, và có thể sửa chữa ngay lập tức. Các hệ thống kiểm thử tự động sẽ được kích hoạt để kiểm tra mã nguồn mới này, và thông báo kết quả cho lập trình viên.
✅ Năm lợi ích chính cũng được chỉ ra:
- Phát hiện lỗi sớm. Các lỗi sẽ được phát hiện sớm, giúp cho việc sửa chữa dễ dàng hơn.
- Giảm gánh nặng nhập mã nguồn. Các lập trình viên không cần phải nhập mã nguồn thủ công với lượng lớn, thay vào đó sẽ nhập dần dần vào kho chung.
- Tăng tốc độ phát triển. Các lập trình viên có thể nhập mã nguồn nhanh hơn, đồng nghĩa với việc ứng dụng luôn ở trạng thái sẵn sàng ra mắt phiên bản mới với người dùng.
- Cho phép kiểm thử liên tục. Các hệ thống kiểm thử tự động sẽ được kích hoạt liên tục, cùng với các kỹ sư kiểm thử luôn trong trạng thái sẵn sàng, sẽ cho phép việc kiểm thử diễn ra ngay tại thời điểm ứng dụng chuẩn bị ra mắt phiên bản mới.
- Khuyến khích lập trình thông minh. Các lập trình viên sẽ được khuyến khích lập trình thông minh hơn, tối ưu mã nguồn sao cho đơn giản và dễ dàng theo dõi, điều chỉnh khi cần.
Phát triển liên tục (CD)
Nguồn: Katalon
Phát triển liên tục là một thuật ngữ tiếng Việt để gọi chung cho hai thuật ngữ tiếng Anh tuy giống nhau nhưng lại khác nhau: Continuous Delivery và Continuous Deployment. Hai thuật ngữ này có một điểm chung là đều có chữ “liên tục” (Continuous) trong đó, nhưng lại có một điểm khác biệt là “Delivery” và “Deployment”.
Liên tục, nghĩa là mã nguồn phải trải qua một quá trình kiểm thử diễn ra liên tục và tự động với các bài kiểm tra khác nhau nhằm đảm bảo ứng dụng có thể vận hành ổn định dưới mọi điều kiện. Sự khác biệt giữa hai từ khoá còn lại nằm ở chỗ: Delivery cũng giống như người giao hàng 📦 , vẫn phải làm trung gian để sản phẩm có thể được vận chuyển tận tay đến người dùng. Ngược lại, Deployment loại bỏ hoàn toàn sự có mặt của người giao hàng mà thay bằng những chú robot được lập trình sẵn 🤖 , chỉ cần bỏ hàng vào sau lưng robot, robot sẽ tự động xác định được địa chỉ và giao trực tiếp hàng hóa đến tay người dùng.
Tạm kết
So that’s it. Rõ ràng là khi mọi thứ trở nên tự động hóa thì xem ra còn tốt hơn là phải ngồi lì hàng tiếng đồng hồ chỉ để đi giải quyết bằng tay những vấn đề vô bổ. Các lập trình viên và quản trị viên bây giờ cũng chỉ còn là những danh xưng, bởi lẽ bây giờ hầu như đã phải nhường chỗ cho những thế hệ mới: Thế hệ kỹ sư DevOps thống trị ngành CNTT. Nếu ai đó đam mê Trí tuệ nhân tạo và Học máy thì phiên bản phái sinh là MLOps cũng là một trong những thế hệ sẽ làm chủ trong thời gian tới. Cơ mà khoan đã… Nếu ai đó đang thắc mắc tại sao tên bài là Câu chuyện Cloud mà chưa nhắc gì tới Cloud là sao thì xin hãy đợi phần 3 của bài viết này trong những ngày tới để biết câu trả lời, còn bây giờ thì tôi đi chuẩn bị họp với mấy anh em DevOps trên công ty đây, bye bye! 👋
Chuyện Khóa luận 📚
Phù, cuối cùng cũng viết được đến phần cuối cùng của Tech Blog này, hy vọng mọi người đọc xong sẽ không thấy chán. 😂
Ngày hôm nay tôi sẽ kể mọi người nghe về những gì mà Khóa luận tốt nghiệp Đại học đã thực hiện, cũng như bàn sâu hơn về kiến trúc điển hình của một ứng dụng chạy trên Cloud là như thế nào. Nhưng trước hết, giải đáp câu hỏi: Điện toán đám mây là gì?
Mở đầu
Chắc nhiều người sẽ nghe đến những thuật ngữ máy tính như CPU, RAM, Ổ cứng, … Thế thì câu hỏi đầu tiên là: Dùng cách nào là tối ưu nhất cho máy tính của mình? Câu trả lời sẽ làm độc giả ngả ngửa: Dùng hết!!! 😂
Giống như một đĩa thức ăn, bạn ăn không hết thì tức là bạn đang lãng phí thức ăn. Máy tính chả khác gì đĩa thức ăn đó cả. Để tối ưu hóa việc sử dụng tài nguyên, người ta đã nghĩ ra một cách làm đó là Chia sẻ tài nguyên. Từ đây, định nghĩa về việc tạo ra những máy tính ảo (Virtual Machine) đã ra đời. 💻
Máy tính ảo (máy ảo) là một máy tính được tạo ra bằng phần mềm, nó có thể chạy như một máy tính thật với các hệ điều hành khác nhau. Máy ảo được tạo ra bằng cách phân lập và chia sẻ tài nguyên của một máy tính thật. Điều này cũng có nghĩa là một máy tính thật có thể chạy nhiều máy ảo khác nhau, mỗi máy ảo sẽ có cấu hình khác nhau, phù hợp với nhu cầu sử dụng của người dùng. Đây là cách tối ưu tốt nhất dành cho việc phát triển và thử nghiệm ứng dụng chạy trên nhiều nền tảng khác nhau.
Nguồn: MongoDB
Nhìn chung, ảo hóa có nhiều loại khác nhau, nhưng chúng ta sẽ không đi sâu vào câu chuyện này. Các bạn có thể tìm hiểu thêm tại đây để nắm được nhiều hơn về ảo hóa.
Tất nhiên là gì, nếu mà các bạn có thể làm được việc tạo máy ảo trên máy tính của mình thì nhiều ông lớn công nghệ cũng làm được điều tương tự. Câu hỏi thứ hai xuất hiện: Làm sao để kiếm tiền từ việc này? Câu trả lời đơn giản là: Bán tài nguyên. Họ làm việc này bằng cách: Phát triển hẳn một hệ thống phân lập và chia sẻ tài nguyên cho người dùng trên khắp thế giới, và thu tiền từ việc cho thuê tài nguyên đó. Đây là nơi người ta lợi dụng thứ mà trong Triết học hay gọi là Giá trị thặng dư sinh ra từ việc tối ưu hóa hệ thống để làm giàu cho chính mình. Mô hình cho thuê này, được gọi là Điện toán đám mây (Cloud Computing).
Nguồn: Atlassian
Điện toán đám mây, theo định nghĩa quốc tế, là một mô hình cho phép cấp quyền truy cập đến kho chung chứa các tài nguyên máy tính có thể cấu hình được như máy chủ, bộ nhớ lưu trữ, mạng, ứng dụng, dịch vụ theo yêu cầu một cách tiện lợi, nhanh chóng, an toàn, mọi lúc mọi nơi.
Lợi ích của điện toán đám mây là vô cùng lớn, bên cạnh vấn đề về phụ thuộc nguồn cung, chi phí vận hành và bảo vệ dữ liệu cá nhân, cụ thể là:
- Việc triển khai diễn ra nhanh chóng, giúp giảm sự phức tạp tại người dùng trong thiết lập tài nguyên cũng như đơn giản hóa việc quản trị thiết bị.
- Triển khai dịch vụ trên nền điện toán đám mây có thể giảm chi phí quản trị thiết bị, cũng như giúp người dùng linh hoạt trong truy cập cũng như điều chỉnh quy mô ứng dụng.
- Điện toán đám mây cung cấp môi trường phát triển và kiểm thử phần mềm với tính khả dụng và ổn định cao, giúp tăng tính cộng tác trong chia sẻ tài nguyên.
Một số mô hình thường gặp
Có rất nhiều mô hình cho thuê tài nguyên trên nền tảng điện toán đám mây, nhưng chúng ta sẽ chỉ nói về ba kiểu mô hình phổ biến nhất: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) và Software as a Service (SaaS).
Sự khác nhau của ba mô hình có thể được phân tích như hình dưới đây.
Nguồn: 2ndWatch
- Cơ sở hạ tầng dưới dạng dịch vụ (IaaS) sẽ bao gồm các dịch vụ được nhà cung cấp dịch vụ cung cấp cho người dùng như: Hạ tầng mạng, bộ nhớ cũng như các hệ thống tài nguyên máy tính khác. Người dùng tự do quản lý các phần còn lại bao gồm: Hệ điều hành, bộ khuôn lập trình, cơ sở dữ liệu cũng như ứng dụng và một số hạ tầng mạng như tường lửa.
- Đối với Nền tảng dưới dạng dịch vụ (PaaS), ngoại trừ phần ứng dụng và cấu hình môi trường được người dùng quản lý, toàn bộ các phần còn lại đều được nhà cung cấp dịch vụ quản lý như: bộ nhớ, cơ sở dữ liệu, hạ tầng mạng, hệ thống tài nguyên máy tính và bộ khuôn lập trình…
- Phiên bản nâng cấp nhất chính là Phần mềm dưới dạng dịch vụ (SaaS), nơi mà ở đó người dùng sẽ không cần quản lý bất kỳ nguồn tài nguyên gì, bởi hầu hết tất cả đều được nhà cung cấp dịch vụ mang đến. Đây là một mô hình có thể nói là toàn diện nhất mà điện toán đám mây có thể đem lại.
Một số hướng triển khai ứng dụng
Để nói về hướng triển khai 1 ứng dụng, từ trước đến nay người ta sẽ thường nói đến một thứ kiến trúc tạm gọi là Kiến trúc đơn nhất (Monolithic). Kiến trúc này có một đặc trưng là triển khai dễ dàng, tất cả trong một và dễ dàng kiểm thử hơn. Nhưng cái gì cũng có bất lợi của nó - kiến trúc này có điểm nghẽn về nâng cấp và ổn định hạ tầng, nghĩa là việc nâng cấp và khắc phục sự cố luôn luôn là phải thực hiện trên toàn bộ hệ thống, dù có thể chỉ một vài bộ phận trong hệ thống thực sự có vấn đề. Điều này dẫn đến việc tốn kém về chi phí và thời gian thực hiện.
Dể khắc phục những sai lầm chết người này, người ta bắt đầu tiến đến việc chia tách các thành phần của ứng dụng. Kiến trúc hướng dịch vụ (SOA) và kiến trúc dịch vụ con (Microservices) cũng từ đây mà ra đời. Dẫu có chi phí và thời gian triển khai ở giai đoạn đầu lớn hơn nhưng bù lại là sự dễ dàng trong việc nâng cấp và khắc phục sự cố phát sinh.
Tấm hình sau cho mọi người thấy được những sự khác nhau cơ bản của cả ba mô hình.
Nguồn: Dzone
Các nhà cung cấp dịch vụ
Có một số dạng mô hình đám mây được sử dụng trong thực tế. Có thể phân loại như sau:
- Đám mây công cộng (Public Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua Internet. Các ví dụ điển hình như: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), …
- Đám mây riêng (Private Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua một mạng riêng ảo (VPN). Các ví dụ điển hình như: VMware, OpenStack, …
- Đám mây hỗn hợp (Hybrid Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua cả Internet và mạng riêng ảo (VPN). Ví dụ điển hình là IBM Cloud, …
Đối với chiếc ứng dụng mà tôi thực hiện trong Khóa luận tốt nghiệp, việc sử dụng một mô hình điện toán đám mây công cộng là Amazon Web Services (AWS) đã được ưu tiên với rất nhiều dịch vụ hỗ trợ. Đây là một trong những nhà cung cấp dịch vụ điện toán đám mây lớn nhất thế giới hiện nay. Mô hình ứng dụng đã được chuẩn hóa như hình dưới đây.
Giải thích cho mô hình này đòi hỏi nhiều thời gian và công sức, nên mời mọi người sẽ theo dõi chi tiết trong Khóa luận tốt nghiệp của tôi thông qua video này. 😂
Còn đối với website chính thức này, gần như tôi chỉ cần một máy chủ cơ sở dữ liệu cho một số dịch vụ của mình, còn lại không chạy bất kỳ máy chủ nào từ giao diện (Frontend) đến xử lý (Backend) nhờ vào cơ chế tương tự như trong Khóa luận được gọi là hàm thực thi phi máy chủ (đã từng được đề cập trong Tech Blog số 1 - Cập nhật về Youtube Downloader, phần Hậu sự kiện).
Thử nghiệm không mất phí
AWS là một nhà cung cấp lớn đến từ Mỹ, mà mọi người biết rồi đó, nhắc tới Mỹ là nhắc tới tiền. Vốn thì tôi sử dụng gói cước miễn phí một năm của AWS mang đến Khóa luận lần đó, nhưng liệu nhiều năm sau nó còn miễn phí hoàn toàn hay không? Khả năng cao là không!!! 🤣
Nếu ai đó đang nghĩ đến giải pháp tương tác ít tốn kém (hoặc không luôn thì càng tốt) thì LocalStack là lựa chọn hàng đầu.
- Nguồn: LocalStack
Với LocalStack, hàng loạt các dịch vụ hàng đầu được AWS cung cấp sẽ được mô phỏng lại trên máy tính của mình, thông qua một chiếc container Docker. Các dịch vụ này có thể sử dụng được trên môi trường phát triển, hoặc thậm chí là đẩy thẳng lên AWS để trở thành môi trường vận hành chính thức. Đây là một giải pháp tuyệt vời cho những ai muốn tìm hiểu về AWS mà không muốn đắn đo về việc phải mất bao nhiêu tiền cho việc thử nghiệm, rồi chọn dịch vụ nào để thử…
Trước đó tôi cũng từng thử thằng này, nhưng ở giai đoạn đầu LocalStack vẫn chưa tích hợp nhiều tính năng và dịch vụ như kỳ vọng, nên chỉ dừng lại ở việc xem thử một số dịch vụ khả dụng. Giờ đây, LocalStack còn có thêm cả trình duyệt dịch vụ tích hợp, đáp ứng tốt hơn nhu cầu theo dõi của đa số người dùng.
Tất cả mọi thứ đều được mô phỏng lại trên máy tính của mình, nên việc sử dụng LocalStack cũng không khác gì việc sử dụng AWS là mấy. Mọi người có thể tham khảo thêm tại đây để biết thêm chi tiết.
Kết thúc
So that’s it. Người ta nói rằng: Điện toán đám mây là một cuộc cách mạng, một cuộc cách mạng thật sự về tối ưu máy tính cho tất cả mọi người dùng trên khắp thế giới, và trở thành người tiên phong trong công cuộc chuyển đổi số của nhiều quốc gia, trong đó có Việt Nam. Việc ứng dụng Điện toán đám mây vào đời sống sẽ là một xu hướng không thể ngăn cản được, và tôi tin rằng nó sẽ là một trong những xu hướng phát triển mạnh mẽ nhất trong tương lai, là trụ đỡ vững chắc nhất cho những mảng công nghệ đang được “thần thánh hóa” hiện nay như Trí tuệ nhân tạo, Dữ liệu lớn và Máy học…
Bên cạnh nắm chắc những kiến thức cơ bản của các chuyên ngành, Ảo hóa và Điện toán đám mây sẽ là một phần không thể thiếu trong những kiến thức mà bất kỳ ai có ý muốn theo đuổi Công nghệ thông tin cần phải nắm rõ và sử dụng thuần thục. Hy vọng rằng, những chia sẻ này sẽ giúp ích cho mọi người trong việc nắm bắt những kiến thức cơ bản về Điện toán đám mây, cũng như giúp mọi người có thêm động lực để tìm hiểu sâu hơn về chủ đề này.
Tản mạn về Mail sinh viên
Trước khi đến với câu chuyện về Điện toán đám mây và DevOps, chúc mừng các bạn đã hoàn thành mục tiêu đậu vào trường Đại học mà mình mong muốn. Nhìn mấy bạn chạy đôn chạy đáo đi nộp hồ sơ nhập học, tôi lại bồi hồi nhớ về hình ảnh của chính bản thân cách đây bốn năm trước, khi tôi cũng trúng tuyển vào ngành Công nghệ thông tin của Khoa học Tự nhiên - ĐHQG TPHCM. Giờ đây tôi đã chuẩn bị tốt nghiệp, và đang truyền lại những gì đặc biệt nhất cho các bạn tân sinh viên.
Chắc hẳn các bạn đã nghe qua về cụm từ Mail sinh viên rồi. Ừ, thì nó là một chiếc thư điện tử, được các trường cấp cho mỗi bạn để liên lạc với các phòng ban cũng như người khác. Tất nhiên, nếu các bạn chỉ đọc tới đây mà cảm thấy chán nản bỏ đi thì các bạn đã sai lầm. Bởi có nhiều thứ mà có thể bạn sẽ chưa biết về công năng của chiếc mail sinh viên quyền lực này. Are you ready? Let’s check it out!
GitHub
Với các bạn sinh viên học Công nghệ thông tin, rất nhiều bạn sẽ cần biết đến GitHub - một trong những nơi lưu trữ mã nguồn có thể gọi là lớn nhất thế giới do Microsoft vận hành. Chính vì thế, với việc sử dụng email sinh viên, không chỉ các bạn được nâng cấp miễn phí lên gói Pro với nhiều tính năng nâng cao, mà với chương trình Gói hỗ trợ cho Sinh viên, các bạn có thể sử dụng miễn phí hàng chục dịch vụ khác nhau với những công năng khác nhau.
Microsoft và Google
Thường thì mail sinh viên sẽ gắn với một trong hai ông lớn công nghệ này. Với Microsoft, các bạn có thể sử dụng miễn phí Microsoft 365 - một bộ ứng dụng văn phòng với nhiều tính năng hữu ích, đặc biệt có thể kích họat được Office cùng OneDrive với dung lượng đến 1TB mỗi người (1 Terabyte = 1024 Gigabytes). Còn với Google, các bạn có thể sử dụng miễn phí Google Workspace for Education - một bộ ứng dụng tương tự như Microsoft 365, với Google Drive dung lượng 100TB được chia lại cho tất cả mọi người. Nghe đâu Microsoft cũng đang muốn bắt chước Google làm điều tương tự (là dùng 100TB chia đều cho mọi người) thì phải.
Thông tin về việc giới hạn dung lượng của Microsoft đối với các giấy phép dành cho Giáo dục đã chính thức được công bố tại đây
Canva
Canva là một công cụ thiết kế đồ họa trực tuyến, với nhiều mẫu thiết kế sẵn có, giúp các bạn có thể tạo ra những thiết kế đẹp mắt một cách nhanh chóng. Các bạn có thể sử dụng miễn phí gói Canva Pro (bản Edu) với nhiều tính năng hữu ích trong vòng 1 năm chỉ bằng việc sử dụng mail sinh viên. À mà cái này nên để dành cho năm cuối Đại học, khi muốn làm các học phần Tốt nghiêp rồi hẳn dùng cũng chưa muộn màng đâu.
Thông tin về việc hủy gói Canva Pro dành cho sinh viên đang được cập nhật và sẽ được chuyển đến tại đây trong thời gian sớm nhất.
Autodesk
Nếu ai có duyên với những ngành như thiết kế kỹ thuật và lập trình này nọ, AutoCAD sẽ là một người bạn thân quen. Nếu sử dụng mail sinh viên, thì dịch vụ AutoCAD cùng hàng loạt dịch vụ khác của Autodesk cũng sẽ được cung cấp cho các bạn sinh viên miễn phí… (à mà cái này thì mình cũng chả dùng bao giờ, nên nhờ các bạn kiểm chứng xem nó ưu đãi tại đâu nhé :>)
Bitbucket
Một kho lưu trữ mã nguồn thứ hai (tương tự với GitHub và một anh bạn khác không được kể ở đây là Gitlab) sẽ được cung cấp cho sinh viên miễn phí, với những tính năng như không giới hạn số lượng kho lưu trữ riêng tư, không giới hạn số thành viên trong hệ thống, v.v…
Apple (qua UniDays) và Spotify
Qua UniDays, các bạn sinh viên có thể đăng ký Apple Music với mức chi phí thấp hơn rất nhiều so với khi sử dụng gói dịch vụ bình thường. Ngoài ra, khi mua iPad hay Macbook, các bạn cũng sẽ được giảm giá một khoản nhất định. Còn với Spotify, các bạn có thể đăng ký gói Premium với mức giá hấp dẫn. Tất cả chỉ cần một mail sinh viên là đủ.
Các dịch vụ khác
- Adobe Creative Cloud cung cấp giá cước thấp hơn cho sinh viên, giảm đến 60%. Hệ sinh thái Adobe cung cấp các giải pháp về thiết kế đồ họa, đặc biệt là Photoshop/Lightroom hay Premiere Pro.
- YouTube cũng cung cấp gói Premium dành cho sinh viên với mức giá rẻ hơn (chỉ từ 49.000 VND/tháng) dành cho sinh viên.
- Amazon Prime cung cấp 6 tháng dùng thử miễn phí và mức cước rẻ hơn sau 6 tháng khi sử dụng mail sinh viên để đăng ký dịch vụ này. Đây là dịch vụ giải trí do Amazon cung cấp, tương tự như Netflix. Dịch vụ này hiện đã dừng hoạt động tại Việt Nam.
- Tableau cung cấp các khóa học chuyên biệt cho những ai có đam mê về ngành Khoa học dữ liệu. Đối với sinh viên, một mail sinh viên là đủ cho tất cả sự miễn phí.
- Coursera cũng cung cấp mỗi năm 1 khóa học miễn phí cho các bạn sinh viên khi sử dụng mail sinh viên để đăng ký. Coursera là một nền tảng học trực tuyến, với nhiều khóa học chất lượng dành cho mọi lứa tuổi.
Tạm kết
Có thể vẫn còn đó rất nhiều những dịch vụ miễn phí khác, hoặc những thay đổi về chính sách dùng miễn phí dành cho các bạn sinh viên. Tuy vậy, với quyền năng khủng khiếp của mình, mail sinh viên chắc chắn sẽ là người bạn đồng hành không thể thiếu của các bạn sinh viên trên chuyến hành trình thanh xuân của mình…
À khoan, còn chưa hết đâu! Cơ mà, nếu mà mọi người có để ý ở GitHub thì bên trong Gói hỗ trợ dành cho sinh viên cũng có 1 đầu mục chuyên biệt về chủ đề DevOps - chủ đề sẽ được nhắc tới trong phần 2 của bài viết này. “DevOps là gì?” - Câu trả lời sẽ có ở tab tiếp theo nhé!!!
Chuyện nhà DevOps
Như vậy là rất lâu sau phần 1 thì phần 2 của Câu chuyện Cloud cũng đã được ra mắt. Trong phần 1, chúng ta đã cùng nhau tìm hiểu về những ưu đãi mà mail sinh viên có thể mang lại cho chúng ta. Tuy vậy, chúng ta vẫn chưa đi vào chủ đề DevOps - chủ đề chính của bài viết này. Vậy DevOps là gì? Cùng tìm hiểu nhé!
Cuộc tranh cãi không hồi kết…
Trong một công ty về Công nghệ thông tin (CNTT), luôn luôn sẽ có ít nhất hai thành phần nhân sự quan trọng cho một dự án hàng triệu đô la được một khách hàng đẹp trai giao khoán. Một là những lập trình viên (Developer) 👨💻 , hay còn được biết đến với cái tên dân dã hơn là Coder, những người viết mã nguồn cho những chương trình quan trọng. Hai là những quản trị viên (Operator) 🖥 , những người quản lý hệ thống, cài đặt, bảo trì, và đảm bảo chương trình luôn hoạt động ổn định. Hai nhóm này luôn luôn có những mâu thuẫn với nhau, và tất cả đều bắt đầu từ một từ khóa là NGỘ NHẬN (Assumption).
Nguồn: Dzone
Những tay Dev thì luôn cho rằng, mã nguồn của mình chạy được ở máy mình, nhất định sẽ chạy được ở tất cả máy khác (codebase giống nhau, hạ tầng như nhau thì chạy như nhau). Những tay Ops thì lại cho rằng, những ứng dụng nào chạy được trên hệ thống của mình sẽ tương đương vỡi những ứng dụng khác, đồng nghĩa là chạy được trên mọi hệ thống mà mình quản lý. Thế là, Dev đổ lỗi Ops, Ops lại xoay sang xỉa mắng Dev. Kết cục của những trận cãi nhau không hồi kết đó là:
Vào một ngày đẹp trời, ông khách hàng đẹp trai hôm trước thì hôm nay mặt đã đỏ bừng lên, đùng đùng đi ra khỏi phòng họp, tuyên bố mạnh miệng:
Tôi không cần biết lỗi là của ai, tôi chỉ cần biết là tôi không thể sử dụng được ứng dụng của các ông nữa. Ngưng hợp tác, trả tiền hoặc tôi sẽ kiện ra tòa! 💵
Và rồi, những Dev và Ops lại tiếp tục cãi nhau mà không biết rằng, công ty đứng trước nguy cơ phá sản với chiếc hợp đồng bị hủy trị giá hàng triệu đô la, đồng nghĩa là nhiều người sẽ lại thất nghiệp để đi chạy Grab hay Be…
Nhịp cầu nối những bờ vui…
Để tránh những nguy cơ có thể xảy ra, sếp tổng đã vào cuộc. Sếp nhấc máy gọi ngay phòng Nhân sự, thuê gấp 1 người có danh xưng là Kỹ sư DevOps về để giải quyết vấn đề. Ông DevOps sau 3 vòng phỏng vấn hại não kéo dài gần 3 tiếng hơn 🧠 cũng được vào làm. Ngay ngày đầu tiên bắt đầu công việc, những Dev và Ops cũ nhìn người mới này với ánh mắt vô cùng trầm trồ và không ngừng thắc mắc:
Bằng cách quái dị nào mà người này vừa lập trình giỏi vừa vận hành tốt thế?
Thắc mắc này cũng được hỏi ngay trong bữa ăn trưa đầu tiên của mọi người. Ông nhân viên mới ngồi lại cùng với những Dev và Ops, rồi bắt đầu giải thích:
Tất cả mọi chuyện đều là tự ngộ nhận mà ra thì có… Dev chắc viết mã nguồn cho một mình dùng thôi à? Còn Ops, hệ thống có tính đến việc ứng dụng mới ra mắt sẽ vận hành được trên đó chứ?
Mọi người lặng thinh, không một lời bình luận nào. Ông DevOps tiếp tục:
Thứ tôi đang làm sẽ giúp mọi người bớt ngộ nhận lại. DevOps là viết tắt của hai từ: Development và Operations. DevOps là một phương pháp quản lý, vận hành, và phát triển ứng dụng, nhằm tạo ra một quy trình làm việc liên tục, linh hoạt, và hiệu quả giữa mọi người với nhau. DevOps không phải là một công nghệ, mà là một triết lý làm việc.
Nguồn: Linkedin
♾ Ông DevOps cầm một chiếc bút, vẽ một dấu vô cực trên tờ giấy mà ông lấy ra từ chiếc ba lô mang theo khi đi ăn (nghe vô tri dữ), rồi mô tả với sự hăng say:
Quy trình này có nhiều bước, cũng như bình thường mọi người hay làm thôi: Plan, Code, Build, Test, Release, Deploy, Operate, Monitor. Trong đó, thường là mấy ông Dev sẽ quan tâm nhánh trái của dấu vô cực này, tức là tới Release là cùng thôi. Ops sẽ quan tâm những phần còn lại. Bây giờ tôi sẽ kết nối hai nhánh này lại với nhau, để mọi người có thể làm việc cùng nhau.
Ông DevOps vẽ thêm một khung hình chữ nhật, rồi chốt lại:
Nói thật, tôi còn có thể giúp mọi người làm được nhiều hơn là kết nối hai bên lại với nhau. Bởi còn có một thuật ngữ khác còn lớn hơn cả DevOps là DevSecOps - tức là bảo vệ (Security) an toàn cho ứng dụng triển khai qua DevOps. 🔒
Mọi người ngớ ra, có vẻ vẫn chưa hiểu mình đang nghe được cái gì nữa. Sau khi ăn xong, mọi người vừa trò chuyện rôm rả vừa trở về tiếp tục công việc mà không còn những trận cãi nhau.
Còn về vị khách hàng kia, sau khi được sếp tổng giải thích kỹ lưỡng về tình hình cũng đã nguôi ngoai mà không kiện công ty ra tòa và hẹn lại dịp khác. Người này chừng một tháng sau quay lại nhận sản phẩm cũng đã không còn cảm thấy khó chịu nữa mà thay vào đó, người này quyết định rủ thêm các đối tác khác của mình đến tham quan và hợp tác với công ty để phát triển sản phẩm. Công ty cũng đã không còn phải lo lắng về việc phá sản nữa mà thay vào đó, đã có thêm nhiều dự án mới để phát triển.
Những điều cần biết về DevOps và CI/CD
Quay trở lại với chiếc dấu vô cực phía trên, xương sống của DevOps là CI/CD (Tích hợp và Phát triển liên tục) và Tự động hóa. Bởi khi quá trình dựng và triển khai ứng dụng đều được tự động hóa và diễn ra liên tục, sẽ có nhiều lợi ích đem lại.
Nguồn: Katalon
Dựng tự động
✅ Dựng ứng dụng tự động sẽ mang đến năm lợi ích chính:
- Nhanh chóng. Việc dựng tự động sẽ đạt tốc độ cao hơn so với việc gõ lệnh dựng bằng tay.
- Ổn định. Quá trình dựng diễn ra thống nhất theo các bước đã được lập trình sẵn, không bị nhầm lẫn.
- Lặp lại. Quá trình dựng được lặp lại nhiều lần, không bị thay đổi. Điều này giúp mã nguồn có thể dựng được nhiều phiên bản khác nhau nhưng vẫn cho kết quả như nhau.
- Gọn gàng. Quá trình dựng được thực hiện giống nhau trên mọi máy tính, không cần phải cài đặt thêm các phần mềm khác.
- Tin cậy. Quá trình dựng được thực hiện theo một quy trình ít lỗi nhất có thể.
Tích hợp liên tục (CI)
Nguồn: Android Developers
Đây là dạng thực hành cho phép nhập các thay đổi mã nguồn từ các lập trình viên vào một kho mã nguồn chung. Quá trình này sẽ được thực hiện liên tục, thường là mỗi khi có thay đổi mã nguồn mới. Quá trình này sẽ giúp cho các lập trình viên có thể kiểm tra mã nguồn của mình có bị lỗi hay không, và có thể sửa chữa ngay lập tức. Các hệ thống kiểm thử tự động sẽ được kích hoạt để kiểm tra mã nguồn mới này, và thông báo kết quả cho lập trình viên.
✅ Năm lợi ích chính cũng được chỉ ra:
- Phát hiện lỗi sớm. Các lỗi sẽ được phát hiện sớm, giúp cho việc sửa chữa dễ dàng hơn.
- Giảm gánh nặng nhập mã nguồn. Các lập trình viên không cần phải nhập mã nguồn thủ công với lượng lớn, thay vào đó sẽ nhập dần dần vào kho chung.
- Tăng tốc độ phát triển. Các lập trình viên có thể nhập mã nguồn nhanh hơn, đồng nghĩa với việc ứng dụng luôn ở trạng thái sẵn sàng ra mắt phiên bản mới với người dùng.
- Cho phép kiểm thử liên tục. Các hệ thống kiểm thử tự động sẽ được kích hoạt liên tục, cùng với các kỹ sư kiểm thử luôn trong trạng thái sẵn sàng, sẽ cho phép việc kiểm thử diễn ra ngay tại thời điểm ứng dụng chuẩn bị ra mắt phiên bản mới.
- Khuyến khích lập trình thông minh. Các lập trình viên sẽ được khuyến khích lập trình thông minh hơn, tối ưu mã nguồn sao cho đơn giản và dễ dàng theo dõi, điều chỉnh khi cần.
Phát triển liên tục (CD)
Nguồn: Katalon
Phát triển liên tục là một thuật ngữ tiếng Việt để gọi chung cho hai thuật ngữ tiếng Anh tuy giống nhau nhưng lại khác nhau: Continuous Delivery và Continuous Deployment. Hai thuật ngữ này có một điểm chung là đều có chữ “liên tục” (Continuous) trong đó, nhưng lại có một điểm khác biệt là “Delivery” và “Deployment”.
Liên tục, nghĩa là mã nguồn phải trải qua một quá trình kiểm thử diễn ra liên tục và tự động với các bài kiểm tra khác nhau nhằm đảm bảo ứng dụng có thể vận hành ổn định dưới mọi điều kiện. Sự khác biệt giữa hai từ khoá còn lại nằm ở chỗ: Delivery cũng giống như người giao hàng 📦 , vẫn phải làm trung gian để sản phẩm có thể được vận chuyển tận tay đến người dùng. Ngược lại, Deployment loại bỏ hoàn toàn sự có mặt của người giao hàng mà thay bằng những chú robot được lập trình sẵn 🤖 , chỉ cần bỏ hàng vào sau lưng robot, robot sẽ tự động xác định được địa chỉ và giao trực tiếp hàng hóa đến tay người dùng.
Tạm kết
So that’s it. Rõ ràng là khi mọi thứ trở nên tự động hóa thì xem ra còn tốt hơn là phải ngồi lì hàng tiếng đồng hồ chỉ để đi giải quyết bằng tay những vấn đề vô bổ. Các lập trình viên và quản trị viên bây giờ cũng chỉ còn là những danh xưng, bởi lẽ bây giờ hầu như đã phải nhường chỗ cho những thế hệ mới: Thế hệ kỹ sư DevOps thống trị ngành CNTT. Nếu ai đó đam mê Trí tuệ nhân tạo và Học máy thì phiên bản phái sinh là MLOps cũng là một trong những thế hệ sẽ làm chủ trong thời gian tới. Cơ mà khoan đã… Nếu ai đó đang thắc mắc tại sao tên bài là Câu chuyện Cloud mà chưa nhắc gì tới Cloud là sao thì xin hãy đợi phần 3 của bài viết này trong những ngày tới để biết câu trả lời, còn bây giờ thì tôi đi chuẩn bị họp với mấy anh em DevOps trên công ty đây, bye bye! 👋
Chuyện Khóa luận 📚
Phù, cuối cùng cũng viết được đến phần cuối cùng của Tech Blog này, hy vọng mọi người đọc xong sẽ không thấy chán. 😂
Ngày hôm nay tôi sẽ kể mọi người nghe về những gì mà Khóa luận tốt nghiệp Đại học đã thực hiện, cũng như bàn sâu hơn về kiến trúc điển hình của một ứng dụng chạy trên Cloud là như thế nào. Nhưng trước hết, giải đáp câu hỏi: Điện toán đám mây là gì?
Mở đầu
Chắc nhiều người sẽ nghe đến những thuật ngữ máy tính như CPU, RAM, Ổ cứng, … Thế thì câu hỏi đầu tiên là: Dùng cách nào là tối ưu nhất cho máy tính của mình? Câu trả lời sẽ làm độc giả ngả ngửa: Dùng hết!!! 😂
Giống như một đĩa thức ăn, bạn ăn không hết thì tức là bạn đang lãng phí thức ăn. Máy tính chả khác gì đĩa thức ăn đó cả. Để tối ưu hóa việc sử dụng tài nguyên, người ta đã nghĩ ra một cách làm đó là Chia sẻ tài nguyên. Từ đây, định nghĩa về việc tạo ra những máy tính ảo (Virtual Machine) đã ra đời. 💻
Máy tính ảo (máy ảo) là một máy tính được tạo ra bằng phần mềm, nó có thể chạy như một máy tính thật với các hệ điều hành khác nhau. Máy ảo được tạo ra bằng cách phân lập và chia sẻ tài nguyên của một máy tính thật. Điều này cũng có nghĩa là một máy tính thật có thể chạy nhiều máy ảo khác nhau, mỗi máy ảo sẽ có cấu hình khác nhau, phù hợp với nhu cầu sử dụng của người dùng. Đây là cách tối ưu tốt nhất dành cho việc phát triển và thử nghiệm ứng dụng chạy trên nhiều nền tảng khác nhau.
Nguồn: MongoDB
Nhìn chung, ảo hóa có nhiều loại khác nhau, nhưng chúng ta sẽ không đi sâu vào câu chuyện này. Các bạn có thể tìm hiểu thêm tại đây để nắm được nhiều hơn về ảo hóa.
Tất nhiên là gì, nếu mà các bạn có thể làm được việc tạo máy ảo trên máy tính của mình thì nhiều ông lớn công nghệ cũng làm được điều tương tự. Câu hỏi thứ hai xuất hiện: Làm sao để kiếm tiền từ việc này? Câu trả lời đơn giản là: Bán tài nguyên. Họ làm việc này bằng cách: Phát triển hẳn một hệ thống phân lập và chia sẻ tài nguyên cho người dùng trên khắp thế giới, và thu tiền từ việc cho thuê tài nguyên đó. Đây là nơi người ta lợi dụng thứ mà trong Triết học hay gọi là Giá trị thặng dư sinh ra từ việc tối ưu hóa hệ thống để làm giàu cho chính mình. Mô hình cho thuê này, được gọi là Điện toán đám mây (Cloud Computing).
Nguồn: Atlassian
Điện toán đám mây, theo định nghĩa quốc tế, là một mô hình cho phép cấp quyền truy cập đến kho chung chứa các tài nguyên máy tính có thể cấu hình được như máy chủ, bộ nhớ lưu trữ, mạng, ứng dụng, dịch vụ theo yêu cầu một cách tiện lợi, nhanh chóng, an toàn, mọi lúc mọi nơi.
Lợi ích của điện toán đám mây là vô cùng lớn, bên cạnh vấn đề về phụ thuộc nguồn cung, chi phí vận hành và bảo vệ dữ liệu cá nhân, cụ thể là:
- Việc triển khai diễn ra nhanh chóng, giúp giảm sự phức tạp tại người dùng trong thiết lập tài nguyên cũng như đơn giản hóa việc quản trị thiết bị.
- Triển khai dịch vụ trên nền điện toán đám mây có thể giảm chi phí quản trị thiết bị, cũng như giúp người dùng linh hoạt trong truy cập cũng như điều chỉnh quy mô ứng dụng.
- Điện toán đám mây cung cấp môi trường phát triển và kiểm thử phần mềm với tính khả dụng và ổn định cao, giúp tăng tính cộng tác trong chia sẻ tài nguyên.
Một số mô hình thường gặp
Có rất nhiều mô hình cho thuê tài nguyên trên nền tảng điện toán đám mây, nhưng chúng ta sẽ chỉ nói về ba kiểu mô hình phổ biến nhất: Infrastructure as a Service (IaaS), Platform as a Service (PaaS) và Software as a Service (SaaS).
Sự khác nhau của ba mô hình có thể được phân tích như hình dưới đây.
Nguồn: 2ndWatch
- Cơ sở hạ tầng dưới dạng dịch vụ (IaaS) sẽ bao gồm các dịch vụ được nhà cung cấp dịch vụ cung cấp cho người dùng như: Hạ tầng mạng, bộ nhớ cũng như các hệ thống tài nguyên máy tính khác. Người dùng tự do quản lý các phần còn lại bao gồm: Hệ điều hành, bộ khuôn lập trình, cơ sở dữ liệu cũng như ứng dụng và một số hạ tầng mạng như tường lửa.
- Đối với Nền tảng dưới dạng dịch vụ (PaaS), ngoại trừ phần ứng dụng và cấu hình môi trường được người dùng quản lý, toàn bộ các phần còn lại đều được nhà cung cấp dịch vụ quản lý như: bộ nhớ, cơ sở dữ liệu, hạ tầng mạng, hệ thống tài nguyên máy tính và bộ khuôn lập trình…
- Phiên bản nâng cấp nhất chính là Phần mềm dưới dạng dịch vụ (SaaS), nơi mà ở đó người dùng sẽ không cần quản lý bất kỳ nguồn tài nguyên gì, bởi hầu hết tất cả đều được nhà cung cấp dịch vụ mang đến. Đây là một mô hình có thể nói là toàn diện nhất mà điện toán đám mây có thể đem lại.
Một số hướng triển khai ứng dụng
Để nói về hướng triển khai 1 ứng dụng, từ trước đến nay người ta sẽ thường nói đến một thứ kiến trúc tạm gọi là Kiến trúc đơn nhất (Monolithic). Kiến trúc này có một đặc trưng là triển khai dễ dàng, tất cả trong một và dễ dàng kiểm thử hơn. Nhưng cái gì cũng có bất lợi của nó - kiến trúc này có điểm nghẽn về nâng cấp và ổn định hạ tầng, nghĩa là việc nâng cấp và khắc phục sự cố luôn luôn là phải thực hiện trên toàn bộ hệ thống, dù có thể chỉ một vài bộ phận trong hệ thống thực sự có vấn đề. Điều này dẫn đến việc tốn kém về chi phí và thời gian thực hiện.
Dể khắc phục những sai lầm chết người này, người ta bắt đầu tiến đến việc chia tách các thành phần của ứng dụng. Kiến trúc hướng dịch vụ (SOA) và kiến trúc dịch vụ con (Microservices) cũng từ đây mà ra đời. Dẫu có chi phí và thời gian triển khai ở giai đoạn đầu lớn hơn nhưng bù lại là sự dễ dàng trong việc nâng cấp và khắc phục sự cố phát sinh.
Tấm hình sau cho mọi người thấy được những sự khác nhau cơ bản của cả ba mô hình.
Nguồn: Dzone
Các nhà cung cấp dịch vụ
Có một số dạng mô hình đám mây được sử dụng trong thực tế. Có thể phân loại như sau:
- Đám mây công cộng (Public Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua Internet. Các ví dụ điển hình như: Amazon Web Services (AWS), Microsoft Azure, Google Cloud Platform (GCP), …
- Đám mây riêng (Private Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua một mạng riêng ảo (VPN). Các ví dụ điển hình như: VMware, OpenStack, …
- Đám mây hỗn hợp (Hybrid Cloud): Đây là một mô hình điện toán đám mây mà người cung cấp dịch vụ sẽ cung cấp tài nguyên cho người dùng thông qua cả Internet và mạng riêng ảo (VPN). Ví dụ điển hình là IBM Cloud, …
Đối với chiếc ứng dụng mà tôi thực hiện trong Khóa luận tốt nghiệp, việc sử dụng một mô hình điện toán đám mây công cộng là Amazon Web Services (AWS) đã được ưu tiên với rất nhiều dịch vụ hỗ trợ. Đây là một trong những nhà cung cấp dịch vụ điện toán đám mây lớn nhất thế giới hiện nay. Mô hình ứng dụng đã được chuẩn hóa như hình dưới đây.
Giải thích cho mô hình này đòi hỏi nhiều thời gian và công sức, nên mời mọi người sẽ theo dõi chi tiết trong Khóa luận tốt nghiệp của tôi thông qua video này. 😂
Còn đối với website chính thức này, gần như tôi chỉ cần một máy chủ cơ sở dữ liệu cho một số dịch vụ của mình, còn lại không chạy bất kỳ máy chủ nào từ giao diện (Frontend) đến xử lý (Backend) nhờ vào cơ chế tương tự như trong Khóa luận được gọi là hàm thực thi phi máy chủ (đã từng được đề cập trong Tech Blog số 1 - Cập nhật về Youtube Downloader, phần Hậu sự kiện).
Thử nghiệm không mất phí
AWS là một nhà cung cấp lớn đến từ Mỹ, mà mọi người biết rồi đó, nhắc tới Mỹ là nhắc tới tiền. Vốn thì tôi sử dụng gói cước miễn phí một năm của AWS mang đến Khóa luận lần đó, nhưng liệu nhiều năm sau nó còn miễn phí hoàn toàn hay không? Khả năng cao là không!!! 🤣
Nếu ai đó đang nghĩ đến giải pháp tương tác ít tốn kém (hoặc không luôn thì càng tốt) thì LocalStack là lựa chọn hàng đầu.
- Nguồn: LocalStack
Với LocalStack, hàng loạt các dịch vụ hàng đầu được AWS cung cấp sẽ được mô phỏng lại trên máy tính của mình, thông qua một chiếc container Docker. Các dịch vụ này có thể sử dụng được trên môi trường phát triển, hoặc thậm chí là đẩy thẳng lên AWS để trở thành môi trường vận hành chính thức. Đây là một giải pháp tuyệt vời cho những ai muốn tìm hiểu về AWS mà không muốn đắn đo về việc phải mất bao nhiêu tiền cho việc thử nghiệm, rồi chọn dịch vụ nào để thử…
Trước đó tôi cũng từng thử thằng này, nhưng ở giai đoạn đầu LocalStack vẫn chưa tích hợp nhiều tính năng và dịch vụ như kỳ vọng, nên chỉ dừng lại ở việc xem thử một số dịch vụ khả dụng. Giờ đây, LocalStack còn có thêm cả trình duyệt dịch vụ tích hợp, đáp ứng tốt hơn nhu cầu theo dõi của đa số người dùng.
Tất cả mọi thứ đều được mô phỏng lại trên máy tính của mình, nên việc sử dụng LocalStack cũng không khác gì việc sử dụng AWS là mấy. Mọi người có thể tham khảo thêm tại đây để biết thêm chi tiết.
Kết thúc
So that’s it. Người ta nói rằng: Điện toán đám mây là một cuộc cách mạng, một cuộc cách mạng thật sự về tối ưu máy tính cho tất cả mọi người dùng trên khắp thế giới, và trở thành người tiên phong trong công cuộc chuyển đổi số của nhiều quốc gia, trong đó có Việt Nam. Việc ứng dụng Điện toán đám mây vào đời sống sẽ là một xu hướng không thể ngăn cản được, và tôi tin rằng nó sẽ là một trong những xu hướng phát triển mạnh mẽ nhất trong tương lai, là trụ đỡ vững chắc nhất cho những mảng công nghệ đang được “thần thánh hóa” hiện nay như Trí tuệ nhân tạo, Dữ liệu lớn và Máy học…
Bên cạnh nắm chắc những kiến thức cơ bản của các chuyên ngành, Ảo hóa và Điện toán đám mây sẽ là một phần không thể thiếu trong những kiến thức mà bất kỳ ai có ý muốn theo đuổi Công nghệ thông tin cần phải nắm rõ và sử dụng thuần thục. Hy vọng rằng, những chia sẻ này sẽ giúp ích cho mọi người trong việc nắm bắt những kiến thức cơ bản về Điện toán đám mây, cũng như giúp mọi người có thêm động lực để tìm hiểu sâu hơn về chủ đề này.
Tổng kết bài viết
Vừa rồi là toàn bộ bài đăng số 3 của series Tech Blog. Mời quý độc giả theo dõi các bài đăng tiếp theo và đóng góp ý kiến cũng trên website này. Trân trọng cảm ơn và kính chào 👋.