Chương 1 cung cấp một cái nhìn toàn diện về lý thuyết phát triển, triển khai và vận hành phần mềm, đặc biệt tập trung vào các kỹ thuật và quy trình được áp dụng trong lĩnh vực này, đặc biệt nhấn mạnh vào hai công nghệ mới nhất hiện nay là ảo hóa và container hóa. Bên cạnh đó, chương này cũng nhấn mạnh đến sự quan trọng của việc vận hành và giám sát phần mềm. Giới thiệu về triển khai, vận hành và giám sát phần mềm Trong ngành kỹ thuật phần mềm việc triển khai, vận hành và giám sát là ba giai đoạn quan trọng trong vòng đời của phần mềm. Ba giai đoạn này đóng vai trò thiết yếu trong việc đảm bảo phần mềm hoạt động hiệu quả, đáp ứng nhu cầu của người dùng và mang lại lợi ích cho doanh nghiệp.1: Ba giai đoạn quan trọng trong vòng đời của phần mềm (Nguồn: Tác giả) Giai đoạn triển khai là giai đoạn đầu tiên trong vòng đời của phần mềm.
Nó đảm bảo rằng phần mềm được triển khai một cách hiệu quả và an toàn. Quá trình này bao gồm cài đặt phần mềm và cấu hình hệ thống phù hợp. Sự triển khai hiệu quả đảm bảo rằng phần mềm được chạy đúng cách, đáp ứng đúng nhu cầu của người dùng. Ngoài ra, việc đảm bảo an toàn trong quá trình triển khai giúp tránh các vấn đề bảo mật và mất dữ liệu.
Tiếp theo là giai đoạn vận hành nơi diễn ra sự quản lý liên tục. Trong giai đoạn này, hệ thống phần mềm được duy trì để đảm bảo hoạt động ổn định và đáng tin cậy. Việc theo dõi, kiểm tra định kỳ giúp phát hiện sự cố và lỗi, từ đó đưa ra biện pháp khắc phục kịp thời. Bằng cách duy trì hệ thống phần mềm một cách cẩn thận, các vấn đề tiềm ẩn có thể được giải quyết trước khi chúng gây ảnh hưởng xấu đến người dùng và doanh nghiệp.
Cuối cùng, giai đoạn giám sát là quá trình theo dõi và đánh giá hiệu suất của ứng dụng. Bằng cách thu thập và phân tích dữ liệu, ta có thể đánh giá hiệu suất của hệ thống và Lê Thị Hoài Phương - K23HTTTB 11 Khóa luận tôt nghiệp Nghiên cứu giải pháp Container hóa và Kubernetes, ứng dụng Khóa luận tốt nghiệp triển khai, vận hành và giám sát phần mềm tại CTCP ProtonTech xác định các điểm yếu. Giám sát cung cấp thông tin cần thiết để điều chỉnh nhằm tối ưu hóa hệ thống, từ việc tăng cường khả năng chịu tải đến cải thiện thời gian phản hồi. Ngoài ra, giám sát cũng giúp phát hiện sự cố sớm và đảm bảo rằng hệ thống hoạt động trong điều kiện tối ưu, từ đó đảm bảo sự hài lòng của người dùng và hiệu quả kinh doanh của doanh nghiệp.
Có thể thấy cả ba giai đoạn triển khai, vận hành và giám sát đóng vai trò quan trọng trong vòng đời của phần mềm. Chúng đảm bảo rằng phần mềm hoạt động hiệu quả, duy trì sự ổn định và được điều chỉnh để đáp ứng nhu cầu người dùng, lợi ích của doanh nghiệp. Việc chú trọng vào ba giai đoạn này đóng vai trò cấp thiết trong việc xây dựng và duy trì các hệ thống phần mềm hoạt động thành công. Phát triển phần mềm 1.
Khái niệm phát triển phần mềm Theo IBM (International Business Machines) – Tập đoàn công nghệ máy tính đa quốc gia của Mỹ định nghĩa: “Phát triển phần mềm là tập hợp các hoạt động khoa học máy tính dành riêng cho quá trình tạo ra, thiết kế, triển khai và hỗ trợ phần mềm”. Phần mềm là tập hợp các câu lệnh hướng dẫn, dữ liệu hoặc chương trình được sử dụng để vận hành máy tính và thực hiện các tác vụ cụ thể. Tất cả phần mềm đều cung cấp chỉ dẫn, dữ liệu mà máy tính cần để hoạt động và đáp ứng nhu cầu của người dùng. Trong phần mềm có hai loại khác nhau rõ rệt về cách thức hoạt động là phần mềm ứng dụng và phần mềm hệ thống: Phần mềm hệ thống quản lý và kiểm soát các thành phần phần cứng của máy tính như Windows, Linux, Unix, trình điều khiển (driver), phần sụn (firmware) và BIOS, bao gồm hệ điều hành và các công cụ quản lý tài nguyên, nhằm cung cấp nền tảng cho hoạt động của các ứng dụng.
Mục tiêu chính của phần mềm này là quản lý hiệu quả các tài nguyên của hệ thống. Phần mềm ứng dụng cho phép người dùng thực hiện nhiều loại tác vụ khác nhau, từ công việc văn phòng, quản lý dữ liệu, đến các ứng dụng trên web và điện thoại di động cho mục đích mua sắm, giao tiếp, và chia sẻ hình ảnh trên nhiều nền tảng. Các phần mềm này bao gồm cả những sản phẩm được tạo ra theo yêu cầu riêng biệt, phù hợp với nhu cầu cụ thể của cá nhân hoặc tổ chức. Ngoài ra, một số phần mềm được phát triển dựa trên nhu cầu chung của đông đảo người dùng, chẳng hạn như các ứng dụng soạn thảo văn bản (ví dụ: Microsoft Office, OpenOffice), các công cụ bảng tính, phần mềm thiết kế đồ họa (như AutoCad), hay các ứng dụng nghe nhạc và xem phim từ đĩa CD (như Jet Audio hay Mpeg Player).
Lê Thị Hoài Phương - K23HTTTB 12 Khóa luận tôt nghiệp Nghiên cứu giải pháp Container hóa và Kubernetes, ứng dụng Khóa luận tốt nghiệp triển khai, vận hành và giám sát phần mềm tại CTCP ProtonTech Hình 1.2: Cấu trúc hoàn chỉnh của một gói phần mềm đầy đủ (Nguồn: TechTarget) Ngoài các phần mềm ứng dụng, có nhiều loại phần mềm khác như phần mềm lập trình, cung cấp những công cụ thiết yếu cho các nhà phát triển phần mềm; phần mềm trung gian, đóng vai trò là cầu nối giữa phần mềm hệ thống và các ứng dụng; và phần mềm điều khiển, quản lý hoạt động của máy tính và các thiết bị ngoại vi. Quy trình phát triển phần mềm liên kết các loại phần mềm này với nhau, tạo thành một hệ thống liền mạch nhằm tối ưu hóa hoạt động và nâng cao năng suất trong quản lý dự án phần mềm. Quy trình phát triển Quy trình phát triển phần mềm (SDLC - Software Development Life Cycle) bao gồm một tập hợp các hoạt động hữu hạn được sử dụng để phát triển sản phẩm phần mềm. (2000), SDLC chứa một kế hoạch hoàn chỉnh để mô tả cách thiết kế, phát triển, bảo trì và tăng hiệu quả của sản phẩm.
Quá trình SDLC mô tả các Lê Thị Hoài Phương - K23HTTTB 13 Khóa luận tôt nghiệp Nghiên cứu giải pháp Container hóa và Kubernetes, ứng dụng Khóa luận tốt nghiệp triển khai, vận hành và giám sát phần mềm tại CTCP ProtonTech phương pháp cải thiện chất lượng phần mềm tổng thể và quy trình phát triển. Hình dưới đây cho thấy các giai đoạn khác nhau của vòng đời phát triển phần mềm điển hình.3: Sơ đồ quy trình phát triển phần mềm - SDLC (Nguồn: Shylesh S (2017). A Study of Software Development Life Cycle Process Models) Planning (Thu thập yêu cầu và phân tích): Xác định, hiểu rõ nhu cầu, yêu cầu của khách hàng và người dùng cuối. Defining (Thiết kế): Xây dựng bản thiết kế chi tiết dựa trên yêu cầu đã thu thập, bao gồm cả thiết kế hệ thống và thiết kế chi tiết của các phần mềm cụ thể.
Designing (Phát triển): Tiến hành viết mã và triển khai các tính năng và chức năng theo thiết kế đã được xác định. Testing (Kiểm thử): Thực hiện các bài kiểm tra để đảm bảo rằng phần mềm đáp ứng được yêu cầu và hoạt động một cách đúng đắn. Building (Triển khai và vận hành): Phát hành phần mềm cho người dùng cuối và duy trì hoạt động của nó trên môi trường sản xuất. Bảo trì và hỗ trợ: Tiếp tục cung cấp sửa chữa, nâng cấp và hỗ trợ cho phần mềm sau khi đã triển khai, đồng thời cải thiện tính ổn định và hiệu suất của nó.
Phương pháp phát triển phần mềm Phương pháp phát triển phần mềm cung cấp một khuôn khổ quy trình cho các kỹ sư phần mềm để họ có thể tạo ra các ứng dụng đáp ứng yêu cầu của người dùng và giảm nguy cơ thất bại trong dự án. Nó bao gồm một loạt các vai trò, quy tắc và phương thức làm việc đã được chấp nhận rộng rãi về cách phát triển và xây dựng ứng dụng. Bài luận này tập trung vào ba phương pháp phát triển phần mềm rất phổ biến: phương pháp Waterfall, mô hình xoắn ốc và phương pháp Agile. Lê Thị Hoài Phương - K23HTTTB 14 Khóa luận tôt nghiệp Nghiên cứu giải pháp Container hóa và Kubernetes, ứng dụng Khóa luận tốt nghiệp triển khai, vận hành và giám sát phần mềm tại CTCP ProtonTech Phương pháp Waterfall Waterfall còn được gọi là mô hình vòng tuần hoàn dạng vòng lặp.
Mô hình này là mô hình quy trình tuần tự, không chồng chéo, giai đoạn này chưa hoàn thành thì giai đoạn tiếp theo không thể bắt đầu.4: Mô hình thác nước Ưu điểm: ● Dễ hiểu và dễ quản lý: Mô hình thác nước rất dễ hiểu và dễ quản lý vì nó có cấu trúc rõ ràng và các giai đoạn được xác định rõ ràng. ● Dễ dàng theo dõi tiến độ: Việc theo dõi tiến độ dự án trong mô hình thác nước rất dễ dàng vì mỗi giai đoạn có một mốc thời gian cụ thể. ● Dễ dàng dự đoán chi phí: Việc dự đoán chi phí cho dự án sử dụng mô hình thác nước cũng dễ dàng hơn so với các mô hình khác vì các yêu cầu được xác định rõ ràng ngay từ đầu. ● Phù hợp với các dự án nhỏ và đơn giản: Mô hình thác nước phù hợp với các dự án nhỏ và đơn giản có yêu cầu được xác định rõ ràng.
Nhược điểm: ● Thiếu tính linh hoạt: Mô hình thác nước thiếu tính linh hoạt vì không thể quay lại các giai đoạn trước để sửa lỗi hoặc thay đổi yêu cầu. ● Khó khăn trong việc phát hiện lỗi sớm: Việc phát hiện lỗi trong mô hình thác nước có thể khó khăn vì các giai đoạn kiểm thử được thực hiện sau khi các giai đoạn phát triển hoàn thành. ● Rủi ro cao: Mô hình thác nước có rủi ro cao vì nếu có lỗi xảy ra trong giai đoạn đầu, nó có thể ảnh hưởng đến toàn bộ dự án. Lê Thị Hoài Phương - K23HTTTB 15 Khóa luận tôt nghiệp Nghiên cứu giải pháp Container hóa và Kubernetes, ứng dụng Khóa luận tốt nghiệp triển khai, vận hành và giám sát phần mềm tại CTCP ProtonTech ● Không phù hợp với các dự án lớn và phức tạp: Mô hình thác nước không phù hợp với các dự án lớn và phức tạp.
Áp dụng Dự án có quy mô trung bình hoặc nhỏ với các yêu cầu cụ thể và ổn định. Dự án đòi hỏi sự kiểm soát nghiêm ngặt và ngân sách có thể tiên đoán được.