1. Trang chủ
  2. » Cao đẳng - Đại học

DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG

51 14 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 51
Dung lượng 1,48 MB

Cấu trúc

  • CHƯƠNG 01. GIỚI THIỆU ĐỀ TÀI (11)
    • 01.01 Đề tài (11)
    • 01.02 Lý do chọn đề tài (11)
  • CHƯƠNG 02. TỔNG QUAN ĐỀ TÀI (12)
    • 02.01 Mục tiêu và phạm vi (12)
      • 02.01.01 Mục tiêu (12)
      • 02.01.02 Phạm vi đề tài (12)
      • 02.01.03 Đối tượng người dùng chính (13)
  • CHƯƠNG 03. CƠ SỞ LÝ THUYẾT (13)
    • 03.01 React JS (13)
      • 03.01.01 Khái niệm (13)
      • 03.01.02 Ưu điểm (14)
      • 03.01.03 Khuyết điểm (14)
    • 03.02 Node JS (15)
      • 03.02.01 Khái niệm (15)
      • 03.02.03 Ưu điểm (16)
      • 03.02.04 Khuyết điểm (17)
    • 03.03 MongoDB (17)
      • 03.03.01 Khái niệm (17)
      • 03.03.02 Đặc điểm (18)
      • 03.03.03 Ưu điểm (18)
      • 03.03.04 Khuyết điểm (19)
    • 03.04 Docker (19)
      • 03.04.01 Khái niệm (19)
      • 03.04.02 Đặc điểm (19)
      • 03.04.03 Ưu điểm (20)
      • 03.04.04 Khuyết điểm (20)
      • 03.04.05 Khái niệm liên quan (20)
    • 03.05 CI (Continuous Integration) (21)
      • 03.05.01 Khái niệm (21)
    • 03.06 CD (Continuous Deployment) (22)
      • 03.06.01 Khái niệm (22)
    • 03.07 Agile (23)
      • 03.07.01 Khái niệm (23)
      • 03.07.02 Giá trị (23)
      • 03.07.03 Nguyên tắc (26)
    • 03.08 Docker (28)
      • 03.08.01 Khái niệm (28)
      • 03.08.02 Đặc điểm (28)
      • 03.08.03 Ưu điểm (29)
      • 03.08.04 Khuyết điểm (29)
  • CHƯƠNG 04. khảo sát đề tài (30)
    • 04.01 Khảo sát thực trạng (30)
    • 04.02 Các sản phẩm tương tự trên thị trường (31)
      • 04.02.01 GitlabCI (31)
      • 04.02.02 Github action (32)
  • CHƯƠNG 05. PHÂN TÍCH BÀI TOÁN (33)
    • 05.01 Objective (33)
    • 05.02 Release (33)
    • 05.03 Phân tích thiết kế yêu cầu (35)
      • 05.03.01 Sơ đồ Use-Case (35)
      • 05.03.02 Sequence diagram (39)
      • 05.03.03 User flow (42)
      • 05.03.04 Class diagram (47)
      • 05.03.05 System architecture (48)
  • CHƯƠNG 06. CÀI ĐẶT VÀ KIỂM THỬ (49)
    • 06.01 Cài đặt (49)
      • 06.01.01 Cài đặt (49)
      • 06.01.02 Môi trường phát triển và triển khai phần mềm (49)
  • CHƯƠNG 07. KẾT LUẬN (50)
    • 07.01 Kết quả phần mềm (50)
      • 07.01.01 Các chức năng đã làm (50)
      • 07.01.02 Các chức năng chưa cài đặt (50)
      • 07.01.03 Điểm nổi bật (50)
      • 07.01.04 Hướng phát triển (51)

Nội dung

GIỚI THIỆU ĐỀ TÀI

Đề tài

Đề tài: “DỊCH VỤ ĐÁM MÂY HỖ TRỢ DEVELOPER XÂY DỰNG ỨNG DỤNG DI ĐỘNG ”

Lý do chọn đề tài

Hiện nay, các công ty phần mềm đang ngày càng linh hoạt trong việc áp dụng công nghệ, đặc biệt là DevOps, trở thành yếu tố thiết yếu trong các đội ngũ phát triển Tuy nhiên, quá trình build ứng dụng vẫn tốn nhiều thời gian, như việc cấu hình phức tạp để xây dựng ứng dụng Android bằng Java, khiến cho developer phải chờ đợi nếu máy tính không đủ cấu hình May mắn thay, nhờ vào Continuous Integration (CI), developer chỉ cần thực hiện vài thao tác đơn giản trên hệ thống để ứng dụng được build tự động Hơn nữa, nhiều quy trình tự động khác cũng diễn ra sau khi build, bao gồm gửi thông báo qua email, dọn dẹp thư mục build, công bố bản build và kích hoạt các build khác.

Tuy nhiên, để có một hệ thống CI không hề đơn giản, có 2 cách cơ bản sau :

- Bạn phải tự build một hệ thống CI từ đầu tốn nhiều thời gian và công sức Chưa kể chi phí bảo trì cho hệ thống CI đó

Nếu không, bạn sẽ cần phải đầu tư vào một hệ thống CI chuyên nghiệp, điều này có thể tốn kém Rõ ràng, đây không phải là giải pháp hợp lý cho các đội nhóm nhỏ hoặc các nhà phát triển cá nhân trong các dự án mã nguồn mở miễn phí.

Trước những khó khăn hiện tại, việc phát triển một hệ thống CI mã nguồn mở trở nên cần thiết Hệ thống này không chỉ cung cấp cho người dùng CI trên nền tảng có sẵn với cấu hình hợp lý, mà còn cho phép họ truy cập vào mã nguồn để tự triển khai trên hệ thống của mình.

Nhóm đã quyết định thực hiện đề tài “Xây dựng Dịch vụ đám mây hỗ trợ developer xây dựng ứng dụng di động” nhằm giúp các developer trong các đội phát triển phần mềm vừa và nhỏ có thể tạo ra ứng dụng một cách nhanh chóng và hiệu quả Dịch vụ này cho phép họ thực hiện chỉ với vài thao tác đơn giản, tiết kiệm thời gian, công sức và chi phí, điều này rất cần thiết để phát triển một sản phẩm thành công.

CƠ SỞ LÝ THUYẾT

React JS

React.js là một thư viện JavaScript nổi bật trong xu hướng Single Page Application, nổi bật với sự đơn giản và khả năng tích hợp dễ dàng với các thư viện JavaScript khác Khác với AngularJS, cho phép nhúng code JavaScript vào HTML qua các thuộc tính, React cho phép nhúng HTML vào JavaScript thông qua JSX, giúp việc lồng ghép các đoạn HTML vào JS trở nên dễ dàng hơn Được phát triển bởi Facebook, React hỗ trợ xây dựng các thành phần UI tương tác cao, có trạng thái và có thể tái sử dụng React không chỉ hoạt động trên phía client mà còn có khả năng render trên server, và được sử dụng trong sản xuất tại Facebook cũng như hoàn toàn xây dựng Instagram.

React cho phép kết nối giữa 14 trên server, giúp so sánh sự thay đổi giữa các giá trị của lần render hiện tại với lần render trước đó Nó chỉ cập nhật những thay đổi tối thiểu trên DOM, tăng cường hiệu suất và giảm thiểu tài nguyên sử dụng.

ReactJS cho phép kết hợp mã HTML và JavaScript một cách linh hoạt, cho phép thêm các đoạn HTML vào trong hàm render mà không cần phải nối chuỗi Đây là một đặc điểm thú vị của ReactJS, khi nó chuyển đổi các đoạn HTML thành các hàm khởi tạo đối tượng HTML thông qua bộ biến đổi JSX.

Khi bắt đầu với ReactJS, việc cài đặt ứng dụng mở rộng Chrome cho ReactJS là rất quan trọng Công cụ này hỗ trợ bạn trong việc debug mã nguồn một cách dễ dàng hơn Sau khi cài đặt, bạn sẽ có cái nhìn trực tiếp vào virtual DOM, tương tự như việc xem cây DOM thông thường.

React là một framework JavaScript thân thiện với SEO, khắc phục vấn đề mà nhiều framework khác gặp phải khi các công cụ tìm kiếm khó đọc các web app chứa nhiều JavaScript Với khả năng chạy trên server, React cho phép các virtual DOM của component được render và trả về trình duyệt dưới dạng web page mà không cần thư viện bên thứ ba hay thủ thuật phức tạp nào, đảm bảo tính thân thiện với SEO.

● Hiệu năng cao đối với các ứng dụng có dữ liệu thay đổi liên tục, dễ dàng cho bảo trì và sửa lỗi

Reactjs chỉ đảm nhận vai trò của tầng View, vì nó là một thư viện hiển thị (View Library) do Facebook phát triển, không phải là một framework MVC như những framework khác Do đó, React không bao gồm các thành phần Model và Controller.

15 phải kết hợp với các thư viện khác React cũng sẽ không có 2-way binding hay là Ajax

● Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu hình lại

React có kích thước tương đương với Angular, khoảng 35kb so với 39kb của Angular, tuy nhiên React được coi là nặng hơn so với các framework khác Mặc dù Angular là một framework hoàn chỉnh, nhưng sự khác biệt về kích thước vẫn là một yếu tố cần lưu ý khi lựa chọn giữa hai công nghệ này.

● Khó tiếp cận cho người mới học Web

Node JS

● Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng ở trên

Javascript Runtime của Chrome mà chúng ta có thể xây dựng được các ứng dụng mạng một cách nhanh chóng và dễ dàng mở rộng

● Nodejs được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại California, Hoa Kỳ

● Phần Core bên dưới của Nodejs được viết hầu hết bằng C++ nên cho tốc độ xử lý và hiệu năng khá cao

● Nodejs tạo ra được các ứng dụng có tốc độ xử lý nhanh, realtime thời gian thực

Node.js là lựa chọn lý tưởng cho các sản phẩm có lượng truy cập lớn, cần khả năng mở rộng nhanh chóng, đổi mới công nghệ, và đặc biệt là trong việc phát triển các dự án khởi nghiệp một cách nhanh nhất.

Node.js nổi bật với khả năng xử lý nhiều kết nối thông qua một single-thread, giúp tiết kiệm RAM và tăng tốc độ hệ thống mà không cần tạo thread mới cho mỗi truy vấn như PHP Bên cạnh đó, Node.js tận dụng ưu điểm non-blocking I/O của JavaScript, tối ưu hóa tài nguyên máy chủ mà không gây ra độ trễ như PHP.

JSON APIs, utilizing an event-driven architecture and non-blocking I/O, combined with JavaScript, are an excellent choice for web services built with JSON.

Ứng dụng trên một trang (Single Page Application) như Gmail là một lựa chọn lý tưởng để phát triển với NodeJS NodeJS cho phép xử lý nhiều yêu cầu đồng thời với thời gian phản hồi nhanh, giúp cải thiện trải nghiệm người dùng Nếu bạn muốn xây dựng một ứng dụng không tải lại trang và cần khả năng xử lý nhanh chóng từ nhiều yêu cầu của người dùng, NodeJS sẽ mang đến sự chuyên nghiệp và hiệu quả cho dự án của bạn.

NodeJS sẽ là sự lựa chọn của bạn

NodeJS tận dụng tối đa hệ điều hành Unix để hoạt động hiệu quả, cho phép xử lý hàng nghìn tiến trình đồng thời Điều này giúp tối ưu hóa hiệu suất, mang lại hiệu quả hoạt động cao nhất cho các ứng dụng.

 Streamming Data (Luồng dữ liệu) Các web thông thường gửi HTTP request và nhận phản hồi lại (Luồng dữ liệu) Giả xử sẽ cần xử lý 1 luồng giữ liệu

17 cực lớn, NodeJS sẽ xây dựng các Proxy phân vùng các luồng dữ liệu để đảm bảo tối đa hoạt động cho các luồng dữ liệu khác

Real-time web applications have become increasingly feasible with the advent of mobile applications and HTML5, making Node.js an effective choice for developing applications such as chat services and social networking platforms like Facebook and Twitter.

NodeJS không phải là lựa chọn tối ưu cho các ứng dụng tốn tài nguyên CPU như mã hóa video, chuyển đổi file hay giải mã mã hóa Nếu bạn cần xử lý những tác vụ nặng nề này, hãy cân nhắc sử dụng các công nghệ khác phù hợp hơn.

NodeJS được phát triển bằng C++ và JavaScript, do đó cần một trình biên dịch để xử lý, dẫn đến thời gian biên dịch lâu hơn một chút Để tối ưu hiệu suất, bạn có thể viết một Addon C++ tích hợp với NodeJS.

NodeJS, giống như các ngôn ngữ lập trình khác như PHP, Ruby, Python và NET, cuối cùng cũng được sử dụng để phát triển các ứng dụng web Mặc dù NodeJS còn mới mẻ so với các ngôn ngữ khác, nhưng điều quan trọng là không nên kỳ vọng rằng NodeJS sẽ không phát triển và cải tiến trong tương lai.

PHP,Ruby,Python… ở thời điểm này Nhưng với NodeJS bạn có thể có 1 ứng dụng như mong đợi, điều đó là chắc chắn !

MongoDB

● MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng

MongoDB là một cơ sở dữ liệu tài liệu, cho phép lưu trữ dữ liệu dưới dạng document kiểu JSON, khác với cấu trúc bảng trong các cơ sở dữ liệu quan hệ Nhờ vào cấu trúc này, việc truy vấn dữ liệu trong MongoDB diễn ra nhanh chóng và hiệu quả.

Trong cơ sở dữ liệu quan hệ như MySQL hay SQL Server, dữ liệu được tổ chức dưới dạng bảng Ngược lại, MongoDB sử dụng khái niệm collection để lưu trữ dữ liệu thay vì bảng.

● So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS

● Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định

● Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB

● Tính sẵn sàng cao – Nhân rộng

● Khả năng mở rộng cao – Sharding

● Năng động – Không có lược đồ cứng nhắc

● Linh hoạt – thêm / xóa trường có ít hoặc không ảnh hưởng đến ứng dụng

● Dữ liệu không đồng nhất

● Biểu diễn dữ liệu trong JSON hoặc BSON

● Hỗ trợ không gian địa lý (Geospatial)

● Tích hợp dễ dàng với BigData Hadoop

● Ngôn ngữ truy vấn dựa trên tài liệu mạnh mẽ như SQL

MongoDB được thiết kế đặc biệt cho môi trường điện toán đám mây, tương thích tốt với các dịch vụ phân phối như AWS, Microsoft, RedHat, dotCloud và SoftLayer Kiến trúc mở rộng quy mô tự nhiên của MongoDB, nhờ vào tính năng sharding, giúp tối ưu hóa khả năng mở rộng và tăng cường tính linh hoạt, phù hợp với yêu cầu của điện toán đám mây.

Một nhược điểm của NoSQL là nhiều giải pháp không đảm bảo tính chất ACID (Atomicity, Consistency, Isolation, Durability) mạnh mẽ như các hệ thống RDBMS truyền thống.

● Không có chức năng hoặc thủ tục lưu trữ tồn tại nơi bạn có thể liên kết logic

Docker

Docker là nền tảng giúp developers và sysadmin phát triển, triển khai và vận hành ứng dụng trong môi trường container độc lập Nó cho phép tạo ra các môi trường tách biệt, giúp khởi chạy và phát triển ứng dụng một cách dễ dàng Khi cần triển khai lên bất kỳ server nào, chỉ cần chạy container của Docker, ứng dụng của bạn sẽ được khởi động ngay lập tức.

● Images: hiểu đơn giản là file ảnh, file nền của hệ điều hành hoặc dùng trong một nền tảng

● Containers: có thể hiểu là một máy ảo, image tạo thành Containers

● Registry (Docker Hub): kho chứa image tương tự như github hay bitbucket

● Docker Daemon: thực thi yêu cầu từ Docker Client quản lý Container

● Dockerfile: tập tin hướng dẫn cách tạo một image

● Volumes: dữ liệu tạo ra khi container đang tạo

Tính đồng nhất là một trong những ưu điểm nổi bật của Docker, giúp hạn chế sự khác biệt giữa các thành viên khi nhiều người cùng phát triển một dự án trong cùng một môi trường.

Tính đóng gói cho phép người dùng ẩn ứng dụng vào trong các container, giúp quản lý dễ dàng hơn Người dùng có thể thường xuyên kiểm tra các container và việc loại bỏ hoặc giữ lại chúng trở nên đơn giản và thuận tiện.

● Tính nhất quán: Các bước thực hiện test container được dùng để phát triển bằng

CI Có thể deploy container đã được test bằng CI lên server Ngoài ra người dùng cũng có thể thực hiện scale container đã được deploy

● Không thể chạy trực tiếp trên Windows và MAC OS

● Docker Client: là cách mà bạn tương tác với docker thông qua command trong terminal Docker Client sẽ sử dụng API gửi lệnh tới Docker Daemon

● Docker Daemon: là server Docker cho yêu cầu từ Docker API Nó quản lý images, containers, networks và volume

● Docker Volumes: là cách tốt nhất để lưu trữ dữ liệu liên tục cho việc sử dụng và tạo apps

A Docker Registry is a private storage location for Docker Images, where images can be pushed and pulled by clients Users have the option to utilize their own registry or choose from provider registries such as AWS, Google Cloud, or Microsoft Azure.

● Docker Hub: là Registry lớn nhất của Docker Images ( mặc định) Có thể tìm thấy images và lưu trữ images của riêng bạn trên Docker Hub ( miễn phí)

● Docker Repository: là tập hợp các Docker Images cùng tên nhưng khác tags VD: golang:1.11-alpine

● Docker Networking: cho phép kết nối các container lại với nhau Kết nối này có thể trên 1 host hoặc nhiều host

Docker Compose là công cụ giúp chạy ứng dụng với nhiều Docker containers một cách dễ dàng hơn Nó cho phép cấu hình các lệnh trong file docker-compose.yml để sử dụng lại, và đã được cài sẵn khi bạn cài đặt Docker.

● Docker Swarm: để phối hợp triển khai container

Docker Services are containers deployed in production environments Each service runs a single image, but it encodes the method for running that image, including which ports to use and how many container replicas to run to ensure optimal performance and availability.

CI (Continuous Integration)

Tích hợp liên tục (CI) là phương pháp phát triển phần mềm yêu cầu các thành viên trong nhóm thường xuyên tích hợp công việc Mỗi ngày, họ cần theo dõi và phát triển công việc của mình ít nhất một lần, đảm bảo tính đồng nhất và hiệu quả trong quy trình phát triển.

Nhóm kiểm tra tự động sẽ thực hiện kiểm thử truy hồi nhằm phát hiện lỗi nhanh nhất có thể Phương pháp này không chỉ giúp giảm bớt vấn đề tích hợp mà còn cho phép phát triển phần mềm một cách gắn kết và nhanh chóng hơn.

Khi developer commit mã lên repository như GitHub, mọi thay đổi sẽ kích hoạt một vòng đời CI Các bước trong kịch bản CI sẽ được thực hiện tự động, đảm bảo rằng mã nguồn luôn trong trạng thái ổn định và sẵn sàng để triển khai.

● Đầu tiên, developer commit code lên repo

● CI server giám sát repo và kiểm tra xem liệu có thay đổi nào trên repo hay không (liên tục, chẳng hạn mỗi phút 1 lần)

Upon a commit, the CI server detects changes in the repository, retrieves the latest code, and subsequently builds the application while executing both unit and integration tests.

● CI server sẽ sinh ra các feedback và gửi đến các member của project CI server tiếp tục chờ thay đổi ở repo

CD (Continuous Deployment)

Continuous Deployment (CD): Là khái niệm có quan hệ rất mật thiết với Continuous

Tích hợp và Triển khai Liên tục cho phép việc triển khai ứng dụng diễn ra bất kỳ lúc nào, thậm chí tự động phát hành phiên bản mới trên môi trường thử nghiệm hoặc sản xuất nếu bản build vượt qua tất cả các kiểm tra trước đó Phương pháp này giúp nhà phát triển dễ dàng xác định và sửa lỗi khi xảy ra sự cố trong quá trình build, như khi cam kết mã không đạt yêu cầu kiểm định chất lượng (CQM) hoặc các trường hợp kiểm tra (UT, IT, ST).

Agile

Phương thức phát triển phần mềm Agile là một phương pháp lặp đi lặp lại và tăng dần, trong đó các yêu cầu và giải pháp được hình thành thông qua sự hợp tác giữa các nhóm tự quản và liên chức năng Agile giúp đưa sản phẩm đến tay người dùng nhanh chóng và sớm nhất có thể, được coi là sự cải tiến vượt bậc so với các mô hình truyền thống như mô hình “Thác nước” hay “CMMI”.

1 Kiểm thử giúp dự án nhanh chóng được bàn giao Ở dự án truyền thống, kiểm thử thường được xem là bước cuối kiểm tra chất lượng sản phẩm Và việc ngăn chặn lỗi của phầm mềm bị coi như trách nhiệm của QA/tester Bug được tìm thấy dù quan trọng hay không thì cũng sẽ làm chậm quá trình bàn giao sản phẩm

Trong dự án Agile, việc xây dựng sản phẩm chất lượng ngay từ giai đoạn đầu là rất quan trọng Chúng ta áp dụng kiểm thử liên tục để nhận phản hồi kịp thời trong quá trình phát triển, nhằm đảm bảo sản phẩm đáp ứng đúng yêu cầu của khách hàng.

Việc cải thiện mối liên hệ giữa tester và developer là rất quan trọng, mặc dù có vẻ như chỉ là một thay đổi nhỏ Sự cộng tác và hỗ trợ lẫn nhau giữa hai bên sẽ mang lại hiệu quả cao hơn trong quá trình phát triển sản phẩm.

2 Kiểm thử không chỉ là một giai đoạn của dự án

Kiểm thử không phải là một giai đoạn trong quá trình phát triển Agile mà cần được tham gia sâu vào quy trình phát triển từ sớm

Cách tiếp cận Agile giúp xác nhận các yếu tố quan trọng ngay từ đầu, giảm thiểu sự phụ thuộc vào kiểm thử viên (QA Tester) ở giai đoạn cuối của quy trình, từ đó đảm bảo tiến độ dự án được duy trì liên tục.

3 Cá nhân và sự tương hỗ quan trọng hơn quy trình

Trong dự án truyền thống, tester làm việc độc lập và đảm nhận toàn bộ trách nhiệm về quy trình kiểm thử Ngược lại, trong môi trường Agile, các hoạt động kiểm thử được thực hiện bởi toàn bộ đội ngũ dự án, yêu cầu sự hợp tác chặt chẽ Để hoàn tất quy trình kiểm thử, các hoạt động này cần được lặp lại qua nhiều sprint khác nhau.

Khi dự án trở nên lớn hoặc phức tạp, việc kiểm thử tất cả các testcase có thể trở nên khó khăn, dẫn đến việc không đạt được mục tiêu ban đầu Điều này có nghĩa là đội ngũ không thể hoàn thành công việc nhanh như dự kiến Nếu quá trình kiểm thử chưa hoàn tất, tính năng cũng sẽ không thể hoàn thành Do đó, để tăng tốc độ, toàn bộ đội cần phối hợp chặt chẽ và tập trung vào việc đẩy nhanh tiến độ của phần chậm nhất, thực hiện kiểm thử cùng nhau.

4 Rút ngắn vòng lặp phản hồi

Thời gian từ khi viết code và thực hiện code tới khi biết được code vận hành như thế nào được gọi là feedback loop (vòng phản hồi)

Nếu phần mềm không được kiểm tra cho đến khi hoàn thành và bàn giao, thời gian phản hồi có thể kéo dài tới cả tháng, điều này là quá lâu Phương pháp Agile giúp rút ngắn vòng phản hồi, vì phần mềm có thể được kiểm tra ngay từ giai đoạn đầu của dự án Đặc điểm nổi bật của Agile là đội ngũ dự án luôn sẵn sàng cho việc kiểm thử từ những ngày đầu.

26 rất nhiều cấp độ kiểm thử để có thể tấn công được nhiều loại dữ liệu khác nhau

Agile sử dụng nhiều bài kiểm tra tự động để nhận phản hồi nhanh chóng, trong khi kiểm tra hồi quy thủ công tốn thời gian và cần nhân lực, không thể thực hiện ngay lập tức Mặc dù vậy, kiểm tra thủ công vẫn giữ vai trò quan trọng trong quy trình phát triển phần mềm.

Đội Agile nhận thấy rằng phản hồi nhanh chóng từ hồi quy tự động là yếu tố quan trọng giúp phát hiện vấn đề kịp thời, từ đó giảm thiểu rủi ro và hạn chế việc phải làm lại.

Our top priority is to ensure customer satisfaction by delivering valuable software early and continuously.

Embrace changes in requirements, even if they arise late in the development process Agile methodologies leverage these changes to provide a competitive advantage for customers.

 Thường xuyên chuyển giao phần mềm chạy tốt tới khách hàng, từ vài tuần đến vài tháng, ưu tiên cho các khoảng thời gian ngắn hơn

Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale

Business professionals and software developers need to collaborate daily throughout the project to ensure its success.

Build projects centered on motivated individuals by providing them with the necessary environment and support Trust these individuals to complete their tasks effectively.

 Phương pháp hiệu quả nhất để truyền đạt thông tin tới nhóm phát triển và trong nội bộ nhóm phát triển là hội thoại trực tiếp The most

27 efficient and effective method of conveying information to and within a development team is face-to-face conversation

 Phần mềm chạy tốt là thước đo chính của sự tiến triển Working software is the primary measure of progress

Agile processes emphasize sustainable development, ensuring that sponsors, developers, and users can maintain a consistent pace indefinitely This focus on a steady rhythm is crucial for long-term success in software development.

 Liên tục quan tâm đến các kĩ thuật và thiết kế tốt để gia tăng sự linh hoạt Continuous attention to technical excellence and good design enhances agility

 Sự đơn giản – nghệ thuật tối đa hóa lượng công việc chưa xong – là căn bản Simplicity - the art of maximizing the amount of work not done - is essential

Docker

Docker là nền tảng hỗ trợ developers và sysadmin trong việc phát triển, triển khai và chạy ứng dụng thông qua công nghệ container Nó cho phép tạo ra các môi trường độc lập và tách biệt, gọi là container, để khởi động và phát triển ứng dụng Khi cần triển khai lên bất kỳ server nào, chỉ cần chạy container của Docker, ứng dụng sẽ được khởi chạy ngay lập tức.

● Images: hiểu đơn giản là file ảnh, file nền của hệ điều hành hoặc dùng trong một nền tảng

● Containers: có thể hiểu là một máy ảo, image tạo thành Containers

● Registry (Docker Hub): kho chứa image tương tự như github hay bitbucket

● Docker Daemon: thực thi yêu cầu từ Docker Client quản lý Container

● Dockerfile: tập tin hướng dẫn cách tạo một image

● Volumes: dữ liệu tạo ra khi container đang tạo

Tính đồng nhất là một trong những ưu điểm nổi bật của Docker trong phát triển phần mềm Khi nhiều người cùng làm việc trên một dự án, Docker giúp giảm thiểu sự khác biệt giữa các thành viên trong môi trường phát triển, từ đó nâng cao hiệu quả làm việc nhóm.

Tính đóng gói cho phép người dùng ẩn ứng dụng vào trong các container, giúp quản lý và kiểm tra chúng một cách thường xuyên Việc loại bỏ hoặc giữ lại container trở nên dễ dàng hơn, mang lại sự linh hoạt trong việc quản lý môi trường ứng dụng.

● Tính nhất quán: Các bước thực hiện test container được dùng để phát triển bằng

CI Có thể deploy container đã được test bằng CI lên server Ngoài ra người dùng cũng có thể thực hiện scale container đã được deploy

● Không thể chạy trực tiếp trên Windows và MAC OS

● Khi sử dụng Docker trên Windows hay MAC OS thì Docker sẽ phải run một máy ảo linux rồi mới có thể thực thi được

khảo sát đề tài

Khảo sát thực trạng

Sự phát triển của DevOps đã thúc đẩy sự phổ biến của Continuous Integration (CI) nhờ vào hiệu quả mà nó mang lại Tuy nhiên, nhiều tổ chức và cá nhân vẫn gặp phải không ít khó khăn khi triển khai hoặc sử dụng CI.

- Để triển khai cần có hệ thống server hoàn thiện ổn định, đòi hỏi chi phí thuê tương đối cao hoặc tự xây dựng

- Đòi hỏi kiến thức chuyên môn về DevOps ở người quản trị hệ thống để xử lý trong việc bảo trì & nâng cấp

- Để áp dụng CI đòi hỏi process làm việc linh hoạt, nguy cơ thay đổi process để có thể áp dụng CI với hiệu quả cao

Các sản phẩm tương tự trên thị trường

Miễn phí & trả phí (thấp)

GitLab CI / CD là một công cụ được tích hợp trong GitLab để phát triển phần mềm thông qua các phương pháp luận liên tục:

● Dễ dàng tiếp cận và tài liệu đầy đủ

● Có sẵn source version control dễ dàng tích hợp với các project hiện tại

● Hỗ trợ tùy chỉnh build script với nhiều action phong phú

● Miễn phí, không cần thiết lập server, không cần maintaince server và tối ưu chi phí thời gian, công sức

Nó giúp các thành viên trong nhóm dự án kết hợp công việc hàng ngày của họ, nhờ đó các lỗi tích hợp có thể được phát hiện nhanh chóng thông qua một bản dựng tự động.

● Tính năng hạn chế ở bản miễn phí

● Server chậm và không ổn định

● Thường xuyên xảy ra lỗi lúc build hay truy cập do sự cố kết nối hay quả tải

Miễn phí với public repos và trả phí rất thấp với private repo

Github Action là một tính năng được giới thiệu bởi Github vào năm 2018 tại hội nghị Universe, giúp tối ưu hóa quy trình phát triển phần mềm ngay trong các repositories Tương tự như CI/CD, nhưng với Github Action, người dùng không cần ủy quyền cho ứng dụng bên ngoài, mà có thể thực hiện mọi thao tác trực tiếp trong môi trường của mình.

● Mọi cài đặt và cấu hình được lưu trữ ở Githbu và dễ dàng thay đổi

● Dễ dàng tái sử dụng cấu hình cho nhiều project

● Tốc độ nhanh và hoạt động ổn đinh

● Có sẵn trên Github không cần cài đặt gì them

● Giới hạn số giờ chạy ở bản miễn phí

PHÂN TÍCH BÀI TOÁN

Objective

– Hệ thống CI ra đời dự định sẽ tạo ra một làn sóng mới trong làng

CI đi đầu về độ tiện dụng, chức năng và tối ưu chi phí

– Bức tranh tương lai : Sản phẩm sẽ vươn lên hàng đầu về các công cụ CI

– Giá trị : Thân thiện với người dung, chi phí thấp hoặc miễn phí Cung cấp khả năng tự tổ chức cho người dung

Goals – Sau 1 năm sẽ có hơn 1000 người dùng

– Xây dựng hệ thống CI với tính năng build ứng dụng

Tối ưu hóa hệ thống build ứng dụng là một yếu tố quan trọng để nâng cao hiệu suất và tính tiện dụng Việc xây dựng các chức năng nâng cao như thông báo, auto trigger và xử lý lỗi build thông minh sẽ giúp cải thiện quy trình phát triển, giảm thiểu thời gian chết và nâng cao trải nghiệm người dùng.

– Hỗ trợ đa ngôn ngữ Persona(s

– Team phát triển phần mềm vừa và nhỏ – Các developer cá nhân với các dự án mã nguồn mở miễn phí

Release

Release – Hệ thống CI hỗ trợ build ứng dụng Android

Initiative – Cho phép người dung build ứng dụng Android thông qua hệ thống CI

Milestones – Các chức năng hoạt động ổn định và được kiểm thử

– Đảm bảo release sản phẩm với chất lượng cao – UX/UI hấp dẫn với người dùng

– Build ứng dụng Android với template mặc định – Build ứng dụng Android với template tùy chỉnh – Thông báo qua mail sau khi build

– Publish build – Tự động trigger khi có code mới ở branch đã đăng ký Dependencie s – Chưa có

Key performance indicator Baseline Target Timeframe

Tổng số lượng người dùng 10 1000 12 tháng

Số lượng người dùng mới mỗi ngày 1 3 5 tháng

Số lượng người dùng hoạt động mỗi ngày 2 100 10 tháng

Số lượng người dùng quay trở lại 0 300 6 tháng

Tổng số build xử lý 100 10000 7 tháng

Tổng số người dùng đăng ký, xác thực tài khoản và sử dụng ứng dụng 2 700 8 tháng Tổng số khách hàng là doanh nghiệp 0 10 10 tháng

Phân tích thiết kế yêu cầu

05.03.01.1 Build ứng dụng bằng CI

ID and Name: UC-1 Build ứng dụng thông qua CI

Primary Actor: End user Secondary Actors:

Description: End user có nhu cầu build ứng dụng bằng cách chọn các thông tin

(repository, branch, build script, publisher info,…) Trigger:

Preconditions: PRE-1 Người dung phải đăng nhập vào hệ thống và có tối thiểu

1 repo Normal Flow: 1 Đăng nhập (nếu chưa đăng nhập)

3 Chọn dự án bạn muốn build

5 Thiết lập các thông tin cần thiết

Use: Ước tính khoảng 100 users, trung bình dùng 1 lần mỗi ngày

05.03.01.2 Re-Build ứng dụng bằng CI

ID and Name: UC-2 Re-Build ứng dụng thông qua CI

Primary Actor: End user Secondary Actors:

Description: End user có nhu cầu re-build ứng dụng hay tái sử dụng cấu hình của những bản build cũ Trigger:

Preconditions: PRE-2 Người dung phải đăng nhập vào hệ thống và đã chạy build đó 1 lần Normal Flow: 1.Đăng nhập (nếu chưa đăng nhập)

3.Chọn dự án bạn muốn re-build 4.Ấn icon “Info”

Use: Ước tính khoảng 50 users, trung bình dùng 1 lần mỗi ngày

ID and Name: UC-3 Login thông qua Github

Primary Actor: End user Secondary Actors:

Description: End user đăng nhập thông qua Github

Preconditions: PRE-3 Người dung phải có tài khoản Github

Normal Flow: 1.Vào màn hình chính

2.Ấn nút Login 3.Bấm nút confirm 4.Chuyển hướng về Ez-Dev

Use: Ước tính khoảng 150 users, trung bình dùng 1 lần mỗi ngày

05.03.01.4 Post-actions sau khi build

ID and Name: UC-4 Post-actions sau khi build

Primary Actor: End user Secondary Actors:

Description: Sau khi build thành công thì hệ thống sẽ thực hiện một số hành động: publish build, gửi email đến user, cập nhật thông tin build

Trigger: Queue build xong sẽ trigger chức năng này

Preconditions: PRE-4 Người dung phải đăng nhập

Normal Flow: 1.Vào màn hình chính

4.Cấu hình build như bình thường => Build xong

6 Publish build to FTP đã cấu hình

Use: Ước tính khoảng 50 users, trung bình dùng 1 lần mỗi ngày

ID and Name: UC-5 Register trigger build

Primary Actor: End user Secondary Actors:

Khi có nhu cầu kích hoạt quá trình build, người dùng sẽ thực hiện trigger build khi có mã code mới được hợp nhất vào nhánh đã được cấu hình sẵn Trigger này sẽ tự động kích hoạt khi có code mới được đưa vào nhánh đã chỉ định.

Preconditions: PRE-5 Người này phải

Normal Flow: 1 Đăng nhập (nếu chưa đăng nhập)

3.Chọn dự án bạn muốn build 4.Ấn nút “Setup”

5.Thiết lập các thông tin cần thiết

6 Tick vào “Trigger to build”

Use: Ước tính khoảng 50 users, trung bình dùng 1 lần mỗi ngày

05.03.02.1 Build ứng dụng bằng CI

05.03.02.2 Re-Build ứng dụng bằng CI

05.03.02.4 Post-actions sau khi build

05.03.03.1 Build ứng dụng bằng CI

05.03.03.2 Re-Build ứng dụng bằng CI

05.03.03.4 Post-actions sau khi build

CÀI ĐẶT VÀ KIỂM THỬ

Cài đặt

To successfully set up your development environment, it is essential to install the following components: MongoDB can be installed from the official link at [MongoDB Installer](https://fastdl.mongodb.org/windows/mongodb-windows-x86_64-4.4.2-signed.msi), NodeJS can be obtained from [NodeJS Installer](https://nodejs.org/dist/v14.15.3/node-v14.15.3-x64.msi), and Docker can be installed via the [Docker Desktop](https://www.docker.com/products/docker-desktop) website.

To set up your project, navigate to the source-code directory and execute the command `npm run install` Once the installation is complete, run `npm run server` followed by `npm run client` Finally, open your web browser and visit the URL: http://localhost:3000.

06.01.02 Môi trường phát triển và triển khai phần mềm

● Hệ điều hành: phù hợp với mọi hệ điều hành và trình duyệt

● Cơ sở dữ liệu: MongoDB

Ngày đăng: 05/09/2021, 20:45

HÌNH ẢNH LIÊN QUAN

phần cơ bản (Hình vẽ) - DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG
ph ần cơ bản (Hình vẽ) (Trang 9)
Description: End user có nhu cầu re-build ứng dụng hay tái sử dụng cấu hình - DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG
escription End user có nhu cầu re-build ứng dụng hay tái sử dụng cấu hình (Trang 36)
Normal Flow: 1.Vào màn hình chính - DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG
ormal Flow: 1.Vào màn hình chính (Trang 37)
Normal Flow: 1.Vào màn hình chính - DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG
ormal Flow: 1.Vào màn hình chính (Trang 38)
4.Cấu hình build như bình thường => Build xong 5. Gửi email thông báo  - DỊCH vụ đám mây hỗ TRỢ DEVELOPER xây DỰNG ỨNG DỤNG DI ĐỘNG
4. Cấu hình build như bình thường => Build xong 5. Gửi email thông báo (Trang 38)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w