Tiki 20201127 Masthead Hero


Hành Trình Phát Triển Ứng Dụng Từ Công Nghệ Cross-platform - Dân Làm App P.1
1 thángBình luận: 12
Lời nói đầu,

Ngày nay, Ứng dụng Mobile được đánh giá là kênh phân phối thông tin & kết nối đến người dùng, khách hàng tốt nhất. Xét về mặt giao diện, thân thiện đối với người dùng, Ứng dụng Mobile dường như đã soán ngôi Website từ nhiều năm trước trên khắp các vùng lãnh thổ, quốc gia đã và đang có tốc độ phát triển cao. Không ngoại lệ, thị trường Ứng dụng Mobile Việt Nam là một đại dương xanh mướt, sôi động & giàu tài nguyên. Nắm bắt tín hiệu này, các nhà phát triển công nghệ tiên phong đã cho chúng ta chứng kiến không ít những Ứng dụng Mobile nội địa ra mắt trong vài năm gần đây. Gặt hái nhiều thành công vượt trội, sánh ngang những gã khổng lồ trong khu vực là “trái ngọt” của “những kẻ mở đường mộng mơ”. Chính vì điều này, giấc mơ “Ứng dụng thập kỷ” trở thành niềm mong ước của nhiều doanh nghiệp & chủ đầu tư trong nước. Theo thời gian, nguyện vọng ấy ngày càng rõ nét & khả thi hơn bao giờ hết. Vậy họ nên chọn nền tảng ứng dụng nào phù hợp cho mình?
Qua bài viết này, mình mong muốn chia sẻ đến mọi người thông tin & một chút am hiểu cá nhân về một trong những Nền tảng Công nghệ Ứng dụng phổ biến và được đánh giá tốt nhất ở thời điểm hiện tại: Nền tảng Công Nghệ Ứng dụng Cross-platform.

react-native-logo.jpg

Tổng Quan Công Nghệ Phát Triển Ứng Dụng - Cross-platform Là Gì?

Đầu tiên, để trả lời cho câu hỏi “Cross-platform là gì?”, chúng ta cần biết về các Công nghệ Phát triển Ứng dụng đã và đang có mặt trên thế giới. Các khái niệm kỹ thuật cần lưu ý bao gồm:
  1. Cross-platform
  2. Native App
  3. Hybrid App
  4. Web-app (khái niệm này thường bị hiểu lầm).
Trong đó, Cross-platform hay còn được gọi là Multi-platform (Đa Nền Tảng). Công nghệ này được viết từ 01 bộ Code trung gian - Coder sẽ thực hiện triển khai Code 1 lần, sau đó biên dịch nó ra thành 2 bản dành cho 2 hệ điều hành riêng biệt: IOS Android.
Khác với Cross-platform, Native App được hiểu là Ứng dụng Gốc. Công nghệ này được viết từ 02 bộ Ngôn ngữ tách biệt hoàn toàn do Google & Apple phát triển. (mình sẽ có bài viết dành riêng cho Native App trong thời gian tới). Tiếp theo là Hybrid App, còn được biết đến với tên thường gọi: Ứng dụng Lai. Nền tảng Ứng dụng này được hình thành từ 03 loại Công Nghệ chính là HTML, CSS và JavaScript. Hybrid App có thể hiểu là một Website Rỗng được đặt vào trong một Native Container (mình sẽ có bài viết riêng nhằm đi sâu hơn về Hybrid App). Sau cùng là Web-app. Đây là khái niệm mà mình có đề cập ở trên là: Thường bị hiểu lầm. Đối với Developers (các bạn kỹ thuật viên phát triển công nghệ) thì khái niệm này khá rạch ròi, tuy nhiên nhiều Marketers (các bạn công tác trong lĩnh vực Marketing) vẫn gặp sự cố nhầm lẫn giữa 3 khái niệm kỹ thuật Cross-platform, Hybrid App & Web-app. Trên thực tế, Web-app có thể hiểu là Website “động” có thể tương tác với người dùng thay vì một Website tĩnh đơn thuần.

Nên Lựa Chọn Xây Ứng Dụng Cross-platform?

Có tốc độ phát triển & tối ưu về nguồn lực hơn khá nhiều so với Native App, nhưng Cross-platform App vẫn có cấu trúc hoàn thiện, bao gồm: Mobile Front-end; Web Admin Portal Front-end; API (Application Programming Interface) trên Mobile và Admin Portal, được hiểu là Back-end. Đi sâu vào kỹ thuật, phần cấu trúc Mobile Front-end thường được viết bằng 1 trong 2 loại Ngôn ngữ thông dụng nhất là React NativeFlutter. Các cấu trúc còn lại: Admin Portal, API Mobile & API Portal Back-end thường được lựa chọn ngôn ngữ sao cho thoải mái nhất với đội ngũ kỹ thuật viên,
vd: ReactJs, VueJs, Angular dành cho Admin Portal Front-end và Dot.net core, Golang, NodeJs, Java, Python, PHP dành cho API Back-ends.
Ở khía cạnh một nhà phát triển Ứng dụng, mình thường đề xuất doanh nghiệp & nhà đầu tư nên lựa chọn một bộ Ngôn ngữ có sự đồng điệu nhằm tiết kiệm chi phí, thời gian và nguồn lực khi triển khai xây dựng một Ứng dụng Cross-platform:
  • Mobile Front-end: React Native
  • Admin Portal Front-end: ReactJs
  • API Mobile & Admin Portal Back-ends: NodeJs

nodejs-logo.png

Ưu điểm: Cả 3 Framework (bộ mã hoá) này đều hình thành trên nền JavaScript. Vì thế, chúng ta sẽ tiết kiệm tối đa nguồn tài nguyên. Đồng thời, sự đồng điệu sẽ giúp tiết kiệm thời gian hình thành và chưa kể chi phí nhân sự kỹ thuật cho công tác vận hành & bảo trì về lâu dài. Tuy nhiên, ở các thị trường phát triển như Bắc Mỹ, Châu Âu, Trung Đông, Ấn Độ, Nhật Bản & Hàn Quốc có xu hướng lựa chọn Flutter thay vì React Native.
Khuyết điểm: Cross-platform sẽ trở nên khá yếu đuối đối với các Ứng dụng có chức năng yêu cầu nặng về phần cứng hoặc yêu cầu về hiệu suất lớn. Vd: Mobile Game có đồ họa cao, App xử lý nội dung Video (HD), hình ảnh chất lượng cao như Youtube, Tik Tok,..

Quay lại với màn trình diễn thực tế (Performance) của Ứng dụng Cross-platform. hiện nay, với công nghệ tiên tiến & hiện đại hơn rất nhiều, màn trình diễn của Công nghệ Cross-platform ngày càng thu ngắn khoảng cách với Native App. Riêng cá nhân mình đánh giá, nếu đem so sánh hiệu suất hoạt động (Performance), Ứng dụng Cross-platform đạt mức 9/10 (90%) so với những gì Ứng dụng Gốc thể hiện. Thậm chí, đối với các ứng dụng có chức năng hoạt động không phụ thuộc quá nhiều vào cơ sở hạ tầng của thiết bị Mobile, không cần hiệu suất lớn, sự thể hiện của Cross-platform sẽ là 9.5/10 (95%) so với Native App.
Các ứng dụng Cross-platform nổi tiếng toàn cầu: Facebook - một ví dụ điển hình. Ứng dụng Mobile của Facebook được hình thành trên Nền tảng Công nghệ React Native. Đó cũng là lý do vì sao chúng ta thỉnh thoảng bắt gặp các trường hợp ảnh & Video không được nét như lưu trữ trên Mobile Gallery. Tại thị trường nội địa, các Ứng dụng hàng đầu cũng được hình thành từ Cross-platform là các ông lớn Thương mại Điện tử như Shopee, Tiki, Lazada,.. Ngoài ra, Grab cũng là một cái tên nổi bật mà mình đánh giá cao.

(Mình xin cảm ơn mọi người đã theo dõi phần chia sẻ trên của mình. về mặt phát triển ứng dụng, mong mọi người góp ý & cùng mình thảo luận. Phần tiếp theo phía dưới đây sẽ đi sâu hơn một chút về mặt kỹ thuật mà mình muốn dành tặng cho cộng đồng Developers).

Tìm Hiểu Thêm Về Mặt Kỹ Thuật,
(Ở phần này mình sẽ trả lời các câu hỏi thường gặp)

Ứng dụng Cross-platform có thể viết bằng những bộ ngôn ngữ nào?

1. JavaScript
Hiện nay, một vài Javascript Framework được xây dựng nhằm nhắm tới việc phát triển riêng cho nền tảng di động, cụ thể như Ionic 2 và React Native. Sử dụng các Framework và thư viện này giúp cho việc phát triển các ứng dụng di động đa nền tảng trở nên khá dễ dàng. Điều này đồng nghĩa với việc kỹ thuật viên chỉ cần viết (Coding) một lần, sau đó biên dịch & điều chỉnh thì sẽ chạy được trên cả iOS và Android.
2. Dart
Dart (dùng cho Flutter) là ngôn ngữ lập trình đa mục đích. Ban đầu được phát triển bởi Google và sau đó được Ecma (ECMA-408) phê duyệt làm thước đo Công nghệ Tiêu chuẩn. Dart được sử dụng để xây dựng các Ứng dụng Web, Server, PC (máy tính cá nhân) và thiết bị Mobile. Đây được xem là một Ngôn ngữ Hướng Đối tượng, được xác định theo lớp, với cơ chế Garbage-collected, sử dụng cú pháp TypeC để dịch mã tùy ý sang JavaScript. Dart có thể thực hiện biên dịch thành mã ARM và x86, để các Ứng dụng Mobile được xây từ Dart có thể chạy một cách tự nhiên trên cả iOS & Android, hơn thế nữa, đối với các Ứng dụng Web, chuyển hóa từ Dart sang JavaScript.
1_68k6w8FfHgrT_H8OTVM1rw.png
3. TypeScript
TypeScript là một Superset (phiên bản tiến hóa) của JavaScript, có tính an toàn hơn thông qua việc hỗ trợ tĩnh (Static Type). Nó cũng cung cấp nhiều tính năng & hỗ trợ cho việc phát triển các Ứng dụng Quy mô lớn (Large-scale App). Được phát triển bởi Microsoft, TypeScript cho phép các Nhà phát triển Ứng dụng viết các Ứng dụng Cross-platform bằng việc sử dụng các Framework như NativeScript.
4. Các Ngôn Ngữ Khác: C#, C, C++, Python, Ruby

Bộ Ngôn ngữ nào được đánh giá tối ưu nhất hiện nay?
Đó chính là JavaScript (React Native) Dart (Flutter). React Native, là một Framework do chính Facebook phát triển nhằm mục đích giải quyết bài toán hiệu năng của Cross-platform, đồng thời vô tình xử lý bức tranh tài chính viết App. Thay vì phải xây Ứng dụng bằng nhiều Ngôn ngữ Native cho mỗi Hệ điều hành Mobile tách biệt: IOS & Android. Ở chiến tuyến đối diện, Flutter được phát triển bởi Google nhằm giải quyết bài toán thường gặp với Công nghệ Mobile là Fast Developing (Tối ưu Tốc độ Hình thành) và Native Performance (Tối ưu hóa Hiệu năng Hoạt động). Nếu như React Native chỉ đảm bảo Fast Development và Code Native thuần chỉ đảm bảo Native Performance thì Flutter đã dung hòa được cả 2 điều đó. Do vậy, như mình có đề cập phía trên: Ngày nay, ở các thị trường phát triển như Bắc Mỹ, Châu Âu, Trung Đông, Ấn Độ, Nhật Bản & Hàn Quốc có xu hướng lựa chọn Flutter thay vì React Native.

Nên phân bổ nguồn tài nguyên như thế nào khi phát triển Ứng dụng Cross-platform?
Đối với Native App. vì phải sử dụng các Ngôn ngữ Lập trình cho mỗi nền tảng khác nhau nên việc phân bổ nguồn lực, nhân sự sẽ nhiều hơn 2,5 lần so với Cross-platform trong giai đoạn phát triển Ứng dụng, bảo trì, cũng như thời gian để hoàn thành những tính năng mới. Như mình có đề cập phần trên, Cross-platform với bộ ba Framework: React native, ReactJs và NodeJs, việc code 1 lần, sau đó có thể biên dịch & sử dụng trên 2 Hệ điều hành Mobile. Lúc này, việc phân chia nhân sự tối ưu hơn Native App.

Khi lựa chọn Cross-platform, Doanh nghiệp & Nhà đầu tư có lợi thế là gì?
  1. Mạch lạc về kiến trúc: Để xây dựng một ứng dụng Cross-platform. Quá trình thiết kế buộc phải chặt chẽ, tuân thủ theo đúng mô hình (MVC, MVVM,..) nhằm tách biệt phần phụ thuộc vào 1 Hệ điều hành. Phần phụ thuộc vào phía 3rd Library (sẽ được mô tả chi tiết các phần sau). Việc này sẽ là áp lực cho Nhà thiết kế Ứng dụng. Tuy nhiên, “trái ngọt” sẽ là Ứng dụng có Hiệu năng cao, bảo trì dễ dàng hơn rất nhiều trong tương lai.
  2. Dễ dàng bảo trì và mở rộng: Như một chuỗi Domino, yếu tố mạch lạc về kiến trúc giúp việc tra cứu, chỉnh sửa lỗi Ứng dụng cũng sẽ nhanh chóng hơn, tạo điều kiện cho việc bảo trì và mở rộng cũng sẽ đạt kết quả vượt trội.
  3. Khả năng tái sử dụng cao: Hiển nhiên rồi. Vì có thể sử dụng đa nền tảng nên các đoạn mã sẽ dễ dàng được tái sử dụng và chia sẻ cho các ứng dụng, phần mềm khác (nếu có) dù nó là Cross-platform hoặc không. Một trong những lợi ích lớn nhất mà việc phát triển Cross-platform App mang lại là khả năng tái sử dụng mã nguồn dễ dàng. Thay vì phát hành Native App cho mỗi nền tảng Mobile, Nhà phát triển Ứng dụng có thể tái sử dụng phần lớn mã nguồn và triển khai cùng một Ứng dụng trên nhiều nền tảng khác nhau. Vd: các Ứng dụng chuyển đổi linh hoạt giữa B2C - B2B như Vexere, Ahamove,..
  4. Rút ngắn thời gian phát triển, tiết kiệm chi phí & nguồn lực: Công việc ít hơn cũng có nghĩa là thời gian triển khai nhanh hơn, chi phí . Do đó, dành ít thời gian hơn cho việc phát triển có nghĩa là Doanh nghiệp có thể cung cấp giá trị cho khách hàng nhanh hơn và tốn ít chi phí hơn trong việc điều chỉnh ứng dụng sao cho phù hợp với nhu cầu của khách hàng. Điều này là vô cùng quan trọng, đặc biệt với các Doanh nghiệp Startup khi mà họ luôn phải đổi mình liên tục.
  5. Sau cùng, như mình đã đề cập trên bài, xét về App Performance hay nói cách khác là thang điểm UX/UI. Trải nghiệm người dùng trên Cross-platform App không kém cạnh Native App. Mặc dù luôn có sự khác biệt về UI/UX giữa Android và IOS, nhưng với những Framework như Flutter hay React Native, các Nhà phát triển Ứng dụng hiện nay đã có thể phát triển những Cross-platform App với trải nghiệm người dùng được đánh giá tiến bộ vượt trội so với trong quá khứ. Vd: Facebook, Twitter,...


Cảm ơn mọi người đã dành thời gian theo dõi,
Tuanngoth.
vocweb
ĐẠI BÀNG
1 tháng
Bài viết hay.
@vocweb Mình cảm ơn bạn đã qua theo dõi 😁
Thanks for sharing! Bài viết hữu ích ạ!
@Thanhxuanha2402 mình cảm ơn @Thanhxuanha (y)
Đầu tư quá ạaa, quá nhiều kiến thức mới luôn. Cảm ơn chủ thớt nhiều nhé 😁
@Nguyen Nha Tra My Cảm ơn My :D
Hiện tại đa số app sẽ code bằng ngôn ngữ nào vậy bạn, bạn có biết thông tin này ko share mình với. Do mình cũng muốn học code, đang học Python nhưng chưa hiểu lắm 😂
@Uyen Mac Cảm ơn Uyên (y)
5 sao 👌
@truongsteven Em cảm ơn ạ ^^
bạn có làm app luôn k
@Alice Mập dạ vâng hiện tại team em đã và đang triển khai phần hỗ trợ doanh nghiệp vừa và nhỏ về mảng công nghệ làm app ạ, chị có thể liên hệ với em qua Telegram: @tuanngoth để chị em mình trao đổi cụ thể hơn, chị nhé ^^
Cá nhân
Bạn
Hi bạn!
Điểm Reward Store: 
Tuổi Tinh tế: 
Cấp độ thành viên Tinh Tế


Tải app Tinh tế

Tải app Tinhte - Theo dõi thông tin mà bạn yêu thích

Tải app TinhteTải app Tinhte
Tải app Tinh tế cho Android trên Google PlayTải app Tinh tế cho iPhone, iPad trên App Store



Cộng đồng nổi bật




  • Chịu trách nhiệm nội dung: Trần Mạnh Hiệp
  • © 2020 Công ty Cổ phần MXH Tinh Tế
  • Địa chỉ: 209 Đường Nam Kỳ Khởi Nghĩa, Phường 7, Quận 3, TP.HCM
  • Số điện thoại: 02862713156
  • MST: 0313255119
  • Giấy phép thiết lập MXH số 11/GP-BTTTT, Ký ngày: 08/01/2019