Trong phần trước, chúng ta đã thảo luận về bốn vai trò chính trong quản lý dự án. Tiếp tục loạt blog này, GCT Solution sẽ thảo luận về bốn vai trò bổ sung mà các nhà quản lý phải nhận thức được khi làm việc cho một công ty phát triển phần mềm.
1. Backend
Phần backend của một sản phẩm phần mềm chịu trách nhiệm chấp nhận các yêu cầu từ ứng dụng khách và xử lý chúng trên các máy chủ chuyên dụng, thường được lưu trữ bởi các dịch vụ đám mây hoặc nhà cung cấp máy chủ. Để kể tên một số ví dụ, bạn có thể lưu trữ phần backend của sản phẩm trên Amazon Web Services, Google Cloud Platform và điện toán đám mây Microsoft Azure.
Có các loại dịch vụ web backend khác (ví dụ: RESTful, WSDL và SOAP) hiển thị một tập hợp các hoạt động có thể được sử dụng bởi các ứng dụng giao diện người dùng hoặc thậm chí các dịch vụ tích hợp, nhưng trọng tâm của blog này sẽ là RESTful. Các dịch vụ web RESTful hiện là một trong những dịch vụ phổ biến nhất vì chúng thường hoàn toàn dựa vào giao thức HTTP, không giống như WSDL và SOAP, đồng thời chúng tương đối dễ hiểu và triển khai.
Khi người quản lý sản phẩm tạo các tính năng hoặc câu chuyện mới, các nhóm backend thường triển khai chúng trước vì phần còn lại của sản phẩm phụ thuộc vào họ để hoàn thành câu chuyện. Trong một số trường hợp nhất định, cả triển khai giao diện người dùng và chương trình backend sẽ bắt đầu đồng thời, vì luôn có các hoạt động có thể được hoàn thành mà không cần phần backend, chẳng hạn như triển khai màn hình và sau đó được kết nối.
Các nhà phát triển backend thường gặp phải những trở ngại trong khi phát triển các hoạt động backend, đặc biệt là về hiệu suất. Điều này là do chương trình backend phải xử lý đồng thời một số lượng lớn truy vấn, vì tất cả các ứng dụng sẽ trỏ vào nó.
Khi phát triển các điểm cuối backend, tối ưu hóa là yếu tố cần cân nhắc chính, bao gồm cách truy xuất dữ liệu, cách sắp xếp dữ liệu, cách làm cho chúng dễ dàng thích ứng với các sửa đổi trong tương lai và cách tương tác với các dịch vụ bên ngoài, bộ đệm, cơ sở dữ liệu, v.v.
Xác thực và ủy quyền là một mối quan tâm bổ sung mà chương trình backend phải giải quyết. Các điểm cuối công khai và riêng tư, vai trò của người dùng (những gì người dùng có thể hoặc không thể truy cập), thu hồi quyền truy cập, v.v., phải được người quản lý sản phẩm thiết lập một cách tỉ mỉ, vì chúng là nền tảng cho khái niệm của sản phẩm.
Khi một ứng dụng cung cấp một cửa hàng trực tuyến hoặc các dịch vụ dựa trên đăng ký, phần backend cũng chịu trách nhiệm xử lý các khoản thanh toán thông qua Nhà cung cấp dịch vụ thanh toán hoặc, như thường lệ hiện nay, thu thập biên lai từ các cửa hàng di động (Apple, Google, Amazon), xác thực các biên lai đó và hành động tương ứng. Điều này chỉ ra rằng các dịch vụ backend thường xuyên cộng tác với nhau. Điều này còn được gọi là giao tiếp giữa máy chủ với máy chủ hoặc giao tiếp phía máy chủ.
Giờ đây, phần backend của bạn đã hoàn tất, đã đến lúc bắt đầu xây dựng ứng dụng giao diện người dùng của chúng tôi, ứng dụng mà người dùng sẽ giao tiếp trực tiếp.
2. Frontend
Ứng dụng dành cho người dùng cuối của một sản phẩm là ứng dụng giao diện người dùng. Thông thường, khi nhắc đến frontend, chúng ta sẽ thấy một ứng dụng web chạy trên trình duyệt web. Mặc dù điều này là đúng, nhưng bất kỳ ứng dụng nào có giao diện người dùng đồ họa hoặc giao diện dòng lệnh đều có thể được gọi là ứng dụng giao diện người dùng. Nói chung, ứng dụng giao diện người dùng là một phần mềm chạy ở phía máy khách; điều này bao gồm các ứng dụng web, ứng dụng di động và gần đây là ứng dụng truyền hình.
Công việc frontend có thể được chia thành hai mô-đun cơ bản: biểu diễn và logic. Biểu diễn là giao diện, cách các phần tử được hiển thị và cách tương tác với chúng. Logic bao gồm mọi thứ khác làm cho nó trở thành một ứng dụng, chẳng hạn như truy xuất dữ liệu, thay đổi dữ liệu để hiển thị cho người dùng và xử lý các yêu cầu, trạng thái, xác thực đầu vào, v.v.
Tùy thuộc vào quy mô của nhóm hoặc công ty, có thể có những cá nhân chịu trách nhiệm duy nhất về một nhiệm vụ giao diện người dùng nhất định, chẳng hạn như chuyên gia trình bày HTML và CSS và người viết mã JavaScript. Điều này cực kỳ khó xác định trong các tổ chức mới bắt đầu, vì thường không có đủ công việc để phân biệt các vị trí này. Trong các trường hợp khác, các cá nhân chịu trách nhiệm cho cả frontend và backend; những cá nhân như vậy thường được gọi là kỹ sư full-stack hoặc lập trình viên full-stack, tùy thuộc vào chuyên môn hoặc nền tảng học vấn của họ.
Khi một câu chuyện hoặc tính năng của người dùng đến bàn của một kỹ sư giao diện người dùng, không rõ liệu họ nên bắt đầu với việc triển khai logic hay triển khai thiết kế. Theo kinh nghiệm của chúng tôi và như thường lệ trong các doanh nghiệp, việc triển khai giao diện người dùng bắt đầu trước khi thiết kế hoàn tất. Trong những trường hợp như vậy, các nhà phát triển giao diện người dùng thường bắt đầu với logic.
Tuy nhiên, không có quy tắc nhất định về chủ đề này; nó sẽ luôn phụ thuộc vào mức độ năng động và kinh nghiệm của nhóm.
Tóm lại, các nhóm giao diện người dùng chịu trách nhiệm triển khai các giao diện và logic ứng dụng tương tác với người dùng. Thông thường, đây là giai đoạn phát triển cuối cùng cho phần lớn các câu chuyện và tính năng của người dùng. Sau khi cài đặt, QA được cung cấp các vé để thử nghiệm, nơi chúng có thể được chuyển qua lại cho đến khi đáp ứng các yêu cầu chấp nhận. Trong giai đoạn triển khai này, việc phát triển backend bổ sung cũng là điều bình thường. Đôi khi không thể nhìn thấy một bức tranh rõ ràng cho đến khi một điều gì đó đã được thực hiện. Mặc dù điều này được hiểu rõ, nhưng các bài học phải được rút ra từ những sự kiện như vậy để giảm bớt tác động của chúng trong tương lai. Khi các nhóm tích lũy kinh nghiệm thông qua cộng tác và quản lý sản phẩm, các thay đổi backend trong quá trình phát triển giao diện người dùng không còn là một khuôn mẫu.
3. Kiểm soát chất lượng
Bộ phận đảm bảo chất lượng (QA) chịu trách nhiệm đảm bảo rằng mọi thứ đến tay người dùng cuối đều tuân thủ các thông số kỹ thuật và chức năng như dự kiến. Mặc dù đây là định nghĩa của QA, nhưng chất lượng của sản phẩm bắt đầu từ những giai đoạn phát triển sớm nhất.
Trong quá trình phát triển, nhiều loại thử nghiệm khác nhau sẽ được viết, bao gồm cả thử nghiệm đơn vị, trong đó các thành phần được thử nghiệm riêng biệt; kiểm tra tích hợp, trong đó chức năng của nhiều thành phần được đánh giá; và các thử nghiệm chức năng, xác minh rằng các yêu cầu được đáp ứng dựa trên các tiêu chí chấp nhận.
Cấu trúc của các bộ phận đảm bảo chất lượng cũng phụ thuộc vào quy mô và sản phẩm/dịch vụ của công ty. Ví dụ, có những công ty mà các nhóm phát triển chịu trách nhiệm duy nhất về đảm bảo chất lượng. Ngay cả đối với các công ty mới thành lập, việc có nhân viên chuyên môn thực hiện kiểm tra thủ công để đảm bảo rằng sản phẩm đáp ứng tất cả các tiêu chí là điều cực kỳ phổ biến, đặc biệt nếu sản phẩm có giao diện người dùng đồ họa. Tùy thuộc vào mức độ kinh nghiệm của họ, một số nhóm QA cũng bao gồm các cá nhân có thể tạo các bài kiểm tra tự động.
Các thành viên của nhóm QA phải tạo mã để đạt được các mục tiêu này, đòi hỏi kiến thức và kỹ năng lập trình cao hơn.
Sau khi một tính năng đã được triển khai, QA được giao nhiệm vụ kiểm tra tính năng đó. Loại thử nghiệm này thường được tiến hành thủ công. Các thành viên của QA sẽ truy xuất phiếu yêu cầu và tiến hành nhiều thử nghiệm để đảm bảo rằng mọi thứ đã được triển khai phù hợp với tiêu chí chấp nhận. Thử nghiệm hồi quy cũng sẽ là ưu tiên hàng đầu của các nhóm QA, do có nhiều thay đổi thường xuyên được thực hiện giữa các lần phát hành. Kiểm thử hồi quy về cơ bản là đảm bảo rằng một tập hợp các thay đổi (phiên bản mới) không gây hại cho toàn bộ hệ thống. Hãy tưởng tượng một chức năng cho phép các cá nhân thanh toán bằng PayPal ngoài Visa và MasterCard. Trong phạm vi thử nghiệm hồi quy này, cần đảm bảo rằng sau khi giới thiệu PayPal, người dùng vẫn có thể thanh toán bằng các phương thức thanh toán trước đây và không chỉ chức năng “thanh toán bằng PayPal” mới hoạt động. Các nhóm QA cũng chịu trách nhiệm kiểm tra hệ thống, điều này đòi hỏi phải đảm bảo các chức năng của sản phẩm như dự định trên tất cả các môi trường mục tiêu. Trong các trường hợp phần mềm được đặt tại chỗ, điều này có thể liên quan đến hệ điều hành hoặc có thể liên quan đến việc đảm bảo rằng ứng dụng web tương thích với tất cả các trình duyệt được yêu cầu. Các loại thử nghiệm khác tồn tại, nhưng theo kinh nghiệm của chúng tôi, chúng không được thực hiện bởi các nhóm QA mà là bởi các nhóm phát triển và vận hành (DevOps). Trong số đó có (1) kiểm tra căng thẳng — đảm bảo hệ thống hoạt động dưới tải trọng nghiêm trọng và dự đoán hệ thống sẽ hoạt động như thế nào nếu điều này xảy ra — và (2) kiểm tra hiệu suất để xem liệu hệ thống có hoạt động như mong đợi và đáp ứng các yêu cầu trong khoảng thời gian chấp nhận được hay không.
4. DevOps
Các nhóm DevOps phụ trách tất cả các khía cạnh vận hành cơ sở hạ tầng và phát triển. Điều này có nghĩa là họ chịu trách nhiệm xây dựng quy trình tích hợp liên tục và phân phối liên tục, quản lý máy chủ, thực hiện di chuyển và triển khai thực tế. Đây là một vị trí rất kỹ thuật. Trong một số tổ chức nhất định, các nhóm phát triển cũng chịu trách nhiệm về chức năng DevOps.
Một lần nữa, nó sẽ luôn dựa vào quy mô, tần suất triển khai và phong cách hoạt động của công ty.
Như đã nêu trước đây, các nhóm này cũng chịu trách nhiệm đảm bảo rằng cơ sở hạ tầng hiện tại có thể xử lý nhu cầu dự đoán và tiếp tục hoạt động bằng cách tránh từ chối dịch vụ.
Vị trí này thường bị nhầm lẫn với Quản trị viên hệ thống. Mặc dù chúng trông giống hệt nhau, nhưng chúng khác nhau đáng kể. DevOps quan tâm đến quy trình phân phối và phát triển phần mềm hơn là đảm bảo rằng tất cả các hệ thống, ngay cả những hệ thống không liên quan đến sản phẩm, đang chạy bình thường. Ở một số công ty, những cá nhân giống nhau có thể đảm nhận cả hai trách nhiệm. Quản trị viên hệ thống cũng quản lý tất cả các yếu tố giúp duy trì hoạt động kinh doanh, chẳng hạn như mạng văn phòng và các hệ thống nội bộ được sử dụng hàng ngày.
Kết luận:
Nếu bạn đang tìm kiếm một nhà cung cấp IT giàu kinh nghiệm, GCT Solution là sự lựa chọn lý tưởng. Chúng tôi có hơn 3 năm kinh nghiệm trong việc cung cấp các giải pháp số hóa cho doanh nghiệp như phát triển ứng dụng di động, phát triển ứng dụng web, phát triển hệ thống, phát triển blockchain và dịch vụ kiểm thử. Cùng đội ngũ gồm hơn 100 chuyên gia và lập trình viên, chúng tôi có thể xử lý các dự án ở mọi quy mô cũng như độ phức tạp. Chúng tôi đã hợp tác thành công với các khách hàng từ nhiều ngành nghề và khu vực khác nhau, mang lại hơn 50+ giải pháp chất lượng cao. Tại GCT Solution, chúng tôi cam kết hỗ trợ bạn trong việc đạt được mục tiêu của bạn. Nếu bạn quan tâm, xin vui lòng liên hệ với chúng tôi để có một cuộc thảo luận chi tiết. Chúng tôi tự tin rằng GCT Solution có thể đáp ứng mọi nhu cầu IT của bạn với những giải pháp linh hoạt và hiệu quả.