Trước tình hình dịch bệnh Covid-19 phức tạp, anh Trần Hữu Lập (FPT Software) đã sáng tạo ra ứng dụng báo cáo tình trạng virus Corona. Ứng dụng chỉ mất 2 ngày để hoàn thành. 

Ứng dụng mang tên Coronavirus Reports đã được published trên Google Play Store. Lưu ý, phạm vi bài viết này là tập trung vào hướng dẫn sử dụng công nghê, không tập trung vào hướng dẫn cách code. Dưới đây là những chia sẻ của anh Trần Hữu Lập:

Bước 1: Xác định yêu cầu của ứng dụng

  1. Ứng dụng cần hiển thị thông tin về phòng chống, làm sao tự bảo vệ bản thân tránh lây nhiễm virus corona.
  2. Ứng dụng cần hiển thị thông tin về số ca lây nhiễm, hồi phục, chết trên toàn thế giới tính đến thời điểm hiện tại.
  3. Ứng dụng cần có những thông tin cơ bản liên quan đến virus corona để mọi người tham khảo.
  4. Ứng dụng phải cập nhật dữ liệu liên tục từ các nguồn dữ liệu tin cậy.
  5. Ứng dụng miễn phí, phục vụ cộng đồng nhưng phải ổn định.
  6. Đầu tư cho ứng dụng này thấp nhất: 2 ngày + 0 VNĐ cho hosting

Độc giả có thể đưa ra nhiều yêu cầu hơn, tuy nhiên trong phạm vị 1 đến 2 ngày, anh Lập chỉ đưa ra 6 yêu cầu như trên.

Bước 2: Nguồn dữ liệu

Khó khăn lớn nhất của ứng dụng loại này không phải là làm sao để code mà là nguồn dữ liệu ở đâu, làm sao để có thông tin chính xác nhất về coronavirus, có dữ liệu real time về các trường hợp lây nhiễm chính xác nhất. Trong thời gian tìm hiểu về tình trạng coronovirus anh Trần Hữu Lập đã tìm được 3 nguồn khá tin cậy.

  1. Nguồn từ WHO, đây được xem là nguồn tin đáng tin cậy nhất, những thông tin về coronavirus được anh Lập lấy từ đây. Nhưng nhược điểm của nguồn dữ liệu này là chậm, thông tin được báo cáo hàng ngày và để bóc tách dữ liệu cũng khá phức tạp, phải lấy từ file pdf nên không phù hợp cho phần thống kê tình hình thực tế.
  2. Nguồn từ Bộ Y Tế, nguồn thông tin này cũng rất đáng tin cậy, cập nhật nhanh, nhưng thông tin được đưa ra ở dạng text và image rất khó bóc tách, nên anh Lập không thể hoàn thành việc đó trong vòng 2 ngày được.
  3. Nguồn từ corona.kompa.ai, nguồn dữ liệu này cũng được cập nhật từ WHO và Bộ Y Tế nên cũng đáng tin cậy, ưu điểm của nguồn này là có thể bóc tách được dữ liệu từ API. Nó phù hợp cho dự án 2 ngày, nên anh Lập đã chọn nguồn này cho phần dữ liệu thời gian thực.

Bước 3: Kiến trúc ứng dụng

Kiến trúc ứng dụng.

Để thực hiện được yêu cầu đặt ra, ứng dụng này cần có 2 phần:

Back-End: Phần này sẻ được triển khai trên 1 máy chủ, chạy 24/24 để tổng hợp dữ liệu và public dữ liệu liên tục. Ngoài ra nó còn đảm nhận là 1 Back-End service cho ứng dụng khách.

Ở phần này, độc giả có thể dùng bất kỳ môi trường mình đang có, riêng cho ứng dụng này anh Lập đã sử dụng Google Cloud Platform (GCP) để tạo 1 VM đủ mạnh cho mục đích của mình. Một số môi trường cloud khác độc giả có thể chọn là AWSAzure hay HerokuDigitalOcean,…

Anh Lập cũng cho biết thêm: “Nếu bạn chưa quen thuộc với môi trường cloud thì bạn nên học một khóa cơ bản về cloud để hiểu thêm tại sao mình chọn nó. Không dùng cloud khó mà tạo được ứng dụng trong vòng 2 ngày.”

Front-End: Để đơn giãn hóa việc sử dụng, và phục vụ đa số người nên anh Lập sẻ làm một ứng dụng điện thoại để hiển thị dữ liệu được tổng hợp. Độc giả không cần gì khác ngoài việc code và publish.

Ứng dụng điện thoại tối thiểu được publish lên 2 store của Google và Apple.

Bước 4: Xác định công nghệ

Back-End: việc tổng hợp từ các nguồn dữ liệu khác nhau thông qua web API khá đơn giãn. Ở phần này để thực hiện nhanh, tận dụng khả năng xử lý JSON tốt, triển khai nhanh, nhẹ. Anh Trần Hữu Lập đã chọn NodeJS và thư viện express để tạo RESTful service.

Front-End: hiện tại có khá nhiều hybrid framework cho việc code 1 lần và triển khai được trên nhiều nền tảng. Ở phần này anh chọn React Native.

“Việc lựa chọn công nghệ nào nó phụ thuộc vào thế mạnh của bạn, tuy nhiên hiện nay theo mình thấy dân DEV nên trang bị cho mình tối thiểu 1 bộ ba kỹ năng chỉ dự vào 1 ngôn ngữ lập trình Javascripts/ES là: NodeJS/ReactJS/React Native hoặc tương đương cho Angular/Vue. Nó sẻ giúp các bạn phát triển ứng dụng đơn giãn hơn, nhanh hơn, mềm dẽo hơn.” anh Lập chia sẻ.

Bước 5: Thiết kế giao diện

Phần này tùy mỗi người có mỗi thiết kế khác nhau, riêng ứng dụng của anh Lập được thiết kế như hình dưới đây, độc giả có thể download ứng dụng để thấy chi tiết hơn.

Giao diện ứng dụng.

Công cụ thiết kế khá nhiều, độc giả có thể tham khảo một số cung cụ sau:

  1. Fluid UI: Ưu điểm là phần miễn phí đáp ứng khá đầy đủ những gì mình cần, thiết kế trên nền web, xem kết quả trực tiếp trên điện thoại.
  2. Color tool: Giúp bạn có thể chọn được bảng màu phù hợp nhất cho ứng dụng của mình.

Bước 6: Code

Chuẩn bị: Chuẩn bị môi trường phát triển và triển khai.

Môi trường Production:

  1. 1 host với Node (10.x) server trên GCP cho phần BE.
  2. Các tài khoản để đẩy ứng dụng lên Android và iOS store. Để làm được điều này, độc giả sẽ mất khoảng 2 triệu VNĐ cho lần đầu.

Môi trường Development:

  1. Cần Node (10.x) ở local để chạy thử.
  2. Bộ React Native CLI để xây dựng ứng dụng (để giảm tải cho PC, độc giả nên cài đặt cấu hình sử dụng máy thực khi chạy thử ứng dụng thay vì chạy máy ảo).
  3. Bộ Express generator để tạo ứng dụng RESTful dùng thư viện express.
  4. Visual studio Code, IDE cho cả BE và FE.

Anh Lập cũng chia sẻ một số tip hướng dẫn độc giả:

  • Khi cài Node, bạn nên cài thông qua nvm sẻ đơn giãn hơn mà tiện cho sau này muốn chuyển qua version khác để dùng.
  • Đẩy ứng dụng lên store: sau khi code xong các phần cơ bản thì mình cần xây dựng bản release và upload luôn, sau đó hoàn thiện dần rồi upload phiên bản cuối cùng lên. Vì khi upload ứng dụng lên store lần đầu các bạn cần qua rất nhiều bước, thường bước review là mất thời gian nhất, còn bước update thì thường nhanh hơn nhiều.

Code ứng dụng: Trong phạm vi bài này không nói về cách làm sao code với Node hay React Native cũng như hướng dẫn chi tiết cách cài đặt môi trường Production, Development mà chỉ dừng lại ở việc làm sao để xây dựng ứng dụng này trong 2 ngày và các kỹ thuật, kiến thức liên quan bạn cần biết để thực hiện được mục tiêu đó.

Độc giả có thể tải code liên quan đến bài này từ github:

Chú ý: Độc giả có thể đọc phần README có trong mỗi repository để biết cách chạy DEMO.

Theo Cucumber

Tin liên quan: