Giới thiệu
Chào mừng bạn đến với hành trình xây dựng sản phẩm backend của tôi! Trong bài viết này, tôi sẽ chia sẻ về việc xây dựng 4 sản phẩm backend trong các lĩnh vực Edtech, E-commerce, Chatting và SaaS. Hãy cùng nhau khám phá quy trình và công nghệ mà tôi sẽ sử dụng.
Tại sao lại là xây dựng sản phẩm?
Tôi luôn đam mê việc tạo ra những sản phẩm mới, từ ý tưởng trên giấy đến việc hiện thực hóa chúng. Đó là một trải nghiệm tuyệt vời khi biến những ý tưởng thành hiện thực. Trong giai đoạn xây dựng này, tôi sẽ thực hiện theo quy trình: hình dung → xây dựng → triển khai.
Đánh giá lại phương pháp của tôi
Điều đầu tiên tôi làm trong giai đoạn xây dựng này là đánh giá lại toàn bộ phương pháp xây dựng backend cho sản phẩm. Bởi vì phần mềm chất lượng được tạo ra thông qua những quy trình và hệ thống chất lượng.
Hai quy trình chính mà tôi sẽ sử dụng là:
- Quy trình dự án
- Quy trình mã nguồn
Quy trình Dự án
Bắt tay vào việc xây dựng một sản phẩm thực chất là bắt đầu một dự án, bất kể có áp dụng kỹ thuật quản lý dự án hay không.
Khi xây dựng dự án, tôi thường sử dụng một bảng Kanban đơn giản để theo dõi tất cả các nhiệm vụ cần thực hiện. Việc này giúp tôi quản lý công việc từ Todo đến Done một cách dễ dàng. Tuy nhiên, khi làm việc với những dự án lớn, việc giữ vững bức tranh tổng thể và đảm bảo sản phẩm đạt yêu cầu có thể trở nên khó khăn.
Nó không chỉ đơn thuần là di chuyển các nhiệm vụ qua một bảng, mà còn là việc căn chỉnh nỗ lực với các mục tiêu, phân chia công việc thành những cột mốc có thể đạt được, theo dõi các phụ thuộc và liên tục đảm bảo rằng dự án vẫn đang đi đúng hướng.
Nếu không có một phương pháp có cấu trúc, rất dễ bị lạc trong những nhiệm vụ hàng ngày mà mất đi sự chú ý đến thời hạn, ưu tiên và chất lượng tổng thể. Tất cả những phức tạp này có thể rất khó quản lý chỉ với một bảng Kanban đơn giản.
Để cải thiện quy trình dự án, tôi sẽ áp dụng phương pháp Agile và sử dụng Jira để quản lý từng sản phẩm backend trong giai đoạn xây dựng này. Tôi sẽ sử dụng Epics, User Stories, nhiệm vụ và nhiệm vụ con để phân chia dự án thành các phần có thể quản lý. Và sử dụng sprints để ưu tiên các tính năng và theo dõi thời gian.
Quy trình Mã nguồn
Với những quy trình và hệ thống chất lượng được thiết lập, bạn có thể tự tin phát triển và thêm các tính năng cho sản phẩm của mình. Các kiểm tra như linting, kiểm tra bảo mật, và kiểm tra tự động sẽ đảm bảo phần mềm chất lượng được phát hành.
Lợi ích của việc có một phương pháp có cấu trúc rõ ràng là giúp bạn phát hành phần mềm chất lượng một cách nhất quán, vì mọi thứ đều được đưa qua một quy trình đã được suy nghĩ kỹ lưỡng để đảm bảo chất lượng.
Quy trình của tôi sẽ là:
1. Thiết kế
Mỗi tính năng sẽ được thiết kế trước khi thực hiện. Đôi khi, thiết kế tốt nhất rất rõ ràng ngay từ đầu, nhưng đôi khi không. Khi không rõ ràng, tôi sẽ đưa ra nhiều thiết kế và chọn ra phương án phù hợp nhất.
Việc thiết kế trước khi thực hiện sẽ cho phép tôi không chỉ tạo ra những sản phẩm hoạt động mà còn là những sản phẩm hoạt động tốt.
2. Phát triển
Đây là giai đoạn tôi sẽ viết mã để thực hiện các tính năng. Mã nguồn cần phải đảm bảo các tiêu chí: an toàn, có khả năng mở rộng, dễ bảo trì, đáng tin cậy và hiệu suất tốt.
Mã tôi viết sẽ tự động được phân tích bởi linters để đảm bảo chất lượng mã nguồn.
3. Kiểm tra
Sau khi một tính năng đã được triển khai, tôi sẽ kiểm tra nó với các trường hợp kiểm tra mạnh mẽ để xác nhận tính đáng tin cậy. Các loại kiểm tra khác nhau sẽ được thực hiện như: kiểm tra hiệu suất, kiểm tra e2e, kiểm tra bảo mật, v.v.
Những bài kiểm tra này sẽ xác nhận rằng phần mềm hoạt động như mong đợi.
4. Tài liệu
Khi một tính năng hoàn thành, nó sẽ được tài liệu hóa. Điều này đảm bảo rằng phần mềm có thể duy trì được trong bất kỳ thời điểm nào.
5. Triển khai
Tại thời điểm này, phần mềm đã sẵn sàng để được đẩy lên môi trường sản xuất, nhưng chưa phải ngay lập tức. Trước khi phần mềm được phát hành, nó sẽ phải trải qua một pipeline CI/CD với các kiểm tra sau:
-
Kiểm tra chất lượng mã
- Kiểm tra kiểu (Type checking)
- Kiểm tra linting
-
Kiểm tra
- Kiểm tra đơn vị (Unit)
- Kiểm tra tích hợp (Integration)
- Kiểm tra e2e
-
Quét bảo mật
- Quét ứng dụng tĩnh (Static application scanning)
-
Biên dịch
- Biên dịch ứng dụng để triển khai sản xuất
-
Triển khai
-
Giám sát
- Theo dõi lỗi (Error Tracking)
- Hiệu suất
- Phân tích
Với tất cả những điều này, tôi có thể ngồi lại, nhâm nhi cà phê và quan sát người dùng của mình hài lòng.
Các sản phẩm backend tôi sẽ xây dựng
- Một nền tảng thương mại điện tử nơi mọi người có thể tìm kiếm và mua sản phẩm
- Một nền tảng Edtech dành cho người học và giảng viên
- Một ứng dụng trò chuyện mạng xã hội với tính năng trò chuyện trực tiếp
- Một nền tảng SaaS nơi người dùng có thể nhận hàng bằng cách kết nối với những người đã đi theo hướng của họ
Công nghệ tôi sẽ sử dụng
- Ngôn ngữ/Frameworks: TypeScript, Node.js, Express, Jest
- Cơ sở dữ liệu: MongoDB, Mongoose
- Cache: Redis
- Hàng đợi: Rabbit MQ
- Thời gian thực: Socket.IO
- Hạ tầng: Docker, NGINX, Kubernetes
Kiến trúc
Tôi sẽ sử dụng kiến trúc monolithic để bắt đầu cho tất cả các backend — không có gì phức tạp (như modular monoliths hay microservices), vì điều đó sẽ là thừa thãi.
Mục tiêu là có những backend hoạt động và đáng tin cậy.
Dự án đầu tiên
Vì vậy, trong không thứ tự nào, tôi sẽ bắt đầu với ứng dụng trò chuyện mạng xã hội.
Tôi sẽ liên tục chia sẻ tiến trình của mình ở đây và trên các kênh mạng xã hội của mình:
linkedin | twitter | youtube | medium | hashnode | instagram | tiktok
Hãy cùng bắt đầu hành trình này nào! 🚀