Có thể dùng Reactjs phát triển core system?
Hiện tại công ty mình mới nhận được 1 dự án phát triển một ứng dụng web là core system cho một công ty khách hàng. Có 2 ứng cử viên nặng ký mà team mình đang phân vân là ReactJs là ASP.NET MVC. Qua việc tra cứu, xem code ASP.NET và từ kinh nghiệm lập trình ReactJs thì mình cảm thấy trải nghiệm khi code web bằng ASP khá là tệ.
React thì cho trải nghiệm tốt nhưng mình lại lo ngại về việc hệ thống viết bằng React thì khoảng chục năm sau có thể maintain được nữa hay không? Xin mọi người cho mình các ý kiến tham khảo về vấn đề này ạ. Cảm ơn mọi người.
3 CÂU TRẢ LỜI
Thực ra việc một ngôn ngữ/một công nghệ bảo là có thể maintain sau khoảng chục năm nữa hay không thì cũng còn phụ thuộc vào rất nhiều yếu tố, từ năng lực của đội ngũ developer ở thời điểm hiện tại, cách thức thiết kế ban đầu, effort bỏ ra để phát triển, vận hành, maintain sản phẩm ... chứ để nói chung chung là một công nghệ A, hay B, hay C thì sau 10 năm còn có thể maintain được hay không thì rất khó bạn ạ
Mình từng làm project đến nay đã là gần 8 năm, sử dụng framework là Laravel, từ cái thời mà version còn là 4.2. Đến thời điểm hiện tại dự án vẫn vận hành tốt, ngày càng được mở rộng thêm tính năng, ngày càng có nhiều người dùng hơn. Tính ra có thể tiếp tục vận hành thêm 3, 5 năm nữa cũng không phải là vấn đề lớn. Và quá trình mình cùng Team phát triển nó thì không phải là làm xong sản phẩm rồi bỏ đó, gần 10 năm sau quay lại maintain, mà là bên mình không ngừng cải tiến sản phẩm, không ngừng update công nghệ mới. Không chỉ bản thân framework Laravel được nâng dần từ version 4.2, lên các bản 5, bản 6, bản 7 ..., mà cả phần frontend cũng thay đổi không ngừng từ việc dùng jquery đơn giản rồi dùng các framework như vuejs, nuxtjs ...
Và mình nghĩ rằng nếu Team bạn cũng có thể có được cách tiếp cận như vậy, tức không ngừng đầu tư vào sản phẩm và upgrade liên tục, thì bất kỳ ngôn ngữ gì, framework gì mọi người cũng có thể đi cùng nó một cách lâu dài.
Như mình thấy thì mảng phát triển web là một trong những mảng công nghệ phát triển nhanh nhất, và thay đổi với tốc độ chóng mặt nhất hiện nay (nên nhớ cách đây 10 năm, tức ở thời điểm năm 2012 thì React còn chưa ra đời (chưa được public)). Các Libraries, Framework mới được đẻ ra hàng ngày Các Library, Framework lớn mặc dù đang có chỗ đứng hiện tại, nhưng nếu không ngừng cải tiến thì sẽ nhanh chóng bị bỏ lại phía sau ngay. React là một công nghệ rất hot hiện nay, cộng đồng phát triển của nó rất lớn, được hỗ trợ rất nhiều. Bản thân React cũng không ngừng được cải tiến, update, và hệ sinh thái của nó cũng không ngừng được mở rộng. Thế nên nếu bạn không thể đi cùng những sự update của công nghệ trong suốt chục năm tới, thì sẽ rất khó để sau này bạn có thể maintain được cái project đã không được động gì vào mấy trong suốt 10 năm. Lúc đó dù bạn có assign người mới vào dự án thì họ cũng cảm thấy chán nản vì những công nghệ mà giờ đã chẳng ai dùng, có gặp vấn đề lên stackoverflow hỏi cũng chẳng còn ai nhớ để mà trả lời, có lỗi bảo mật nhưng không còn được fix...
Còn nếu bạn luôn không ngừng update công nghệ, thì rõ ràng sau 10 năm, React trong project của bạn lúc đó, cũng sẽ rất khác so với React ở thời điểm hiện tại, và lúc đó mình nghĩ sẽ có rất nhiều người sẽ có thể giúp bạn tiếp tục maintain, phát triển được sản phẩm thôi.
Phân vẫn giữa ReactJs và ASP.NET thì quá khập khiễng, 1 cái chỉ là Frontend và 1 cái là Web Framework.
Như bạn đã có kinh nghiệm React và kết hợp với xu hướng hiện tại cũng như tương lai việc dùng cả 2 trong 1 dự án không vấn đề gì cả. Trong đó ASP.NET đóng vai trò làm Backend API thôi còn Frontend vẫn là React là tốt nhất. Backend API có thể là Restful hoặc GraphQL.
Nếu thực sự team bạn đã có người kinh nghiệm ASP.NET thì nên chọn nó không thì vẫn có nhiều lựa chọn thay thế đáng quan tâm như Go, Nodejs, PHP,...