Tiếp nối phần trước, Frontend Du Ký S1E3 | EGANY Apps sẽ kể về quá trình cải thiện cũng như thêm mới dự án đã có sau khi có được một nền tảng đủ vững chắc về quy trình cũng như kỹ thuật.
Nếu bạn chưa đọc các phần trước:
Do hầu hết các vướng mắc lớn đã được giải quyết ở giai đoạn trước đó, giai đoạn này team chỉ tập trung cải thiện những chỗ chưa tốt và phát triển thêm các tính năng mới, cụ thể:
Nguồn ảnh: https://dribbble.com/shots/6101200-Time-to-Refactoring-your-Code
Ứng dụng ở đây ám chỉ các ứng dụng được bán trên platform (như apps.haravan.com, apps.sapo.vn hay apps.shopify.com) không phải EGANY Apps.
EGANY Apps chỉ đóng vai trò quản lý và thiết lập ứng dụng cho người dùng.
Ứng dụng cũ ở EGANY có cấu trúc như sau:
Quá trình cài đặt ứng dụng sẽ như hình dưới:
Lưu ý: Website của khách là một phần của platform. Mình tách riêng platform (API) và website của khách để các bạn dễ hình dung việc sử dụng API để đẩy file vào website.
Cấu trúc trên áp dụng tốt cho những ứng dụng cơ bản, không có quá nhiều thiết lập phức tạp. Mọi thiết lập đều thực hiện qua bộ công cụ có sẵn của platform.
Tuy nhiên với cấu trúc trên, các bạn có thể thấy ngoài việc đẩy file qua API thì ứng dụng đang phụ thuộc khá nhiều vào platform. Để dễ dàng phát triển ra nhiều platform khác, team quyết định điều chỉnh cấu trúc với các tiêu chí sau:
Sau nhiều giờ thử nghiệm, vò đầu bứt tóc và thảo luận thì team đề xuất cấu trúc sau:
Cấu trúc đã được đơn giản hóa hết mức có thể vì lý do bảo mật
Về mặt chức năng thì các thành phần vẫn như cũ. Tuy nhiên, một số thay đổi mới bao gồm:
// Platform's format (flat)
const platformSettings = {
app__title: 'Title',
app__description: 'Description here',
}
// EGANY's format (nested)
const eganySettings = {
app: {
title: 'Title',
description: 'Description here',
},
}
Thiết lập của ứng dụng cũng như các assets (hình ảnh, icon, font, …) vẫn sẽ được lưu ở phía platform để tận dụng CDN có sẵn. Ngoài ra, nếu khách hàng quyết định gia hạn lại ứng dụng, vì thiết lập cũng như các assets cần thiết đã có sẵn nên quá trình cài đặt lại sẽ rất nhanh và tiện lợi.
Addon là một hướng đi mới mà team quyết định lựa chọn trong giai đoạn này.
Quay về một chút về ứng dụng. Mọi ứng dụng trên platform đều phải được đăng ký trước với phía đối tác và phải chờ đối tác duyệt thì mới được đăng lên sàn của platform. Đây là một cản trở lớn nếu team muốn phát triển cùng lúc nhiều ứng dụng tương tự nhau.
Để giải quyết vấn đề trên thì team nảy sinh ý tưởng làm ứng dụng theo dạng addon. Cụ thể:
Với hướng đi trên, team loại bỏ được các bước kiểm duyệt ứng dụng và chủ động hơn khi muốn thêm, sửa hoặc tháo gỡ addon.
Nguồn ảnh: https://dribbble.com/shots/12915609-Icons
Để phục vụ cho cấu trúc mới thì việc cập nhật API là điều không thể tránh khỏi. Do API bây giờ phụ thuộc vào platform cũng như môi trường triển khai (develop, staging, production, …) nên team cũng quyết định refactor lại theo factory pattern.
Quá trình chuyển đổi cũng không quá phức tạp, mọi thứ diễn ra tương đối suôn sẻ. Điểm trừ duy nhất ở thời điểm này có lẽ là thời gian "chết" khi chờ phía backend deploy lại service sau khi điều chỉnh, đặc biệt là core service (user, authentication, …).
Ngoài API service thì team cũng refactor lại một số chỗ chưa hài lòng phát hiện được trong quá trình chỉnh sửa. Điển hình như phần xử lý xác thực người dùng lồng ghép if else
tương đối nhiều. Team sửa lại theo dạng early return để dễ đọc và dễ kiểm soát hơn đồng thời thêm comment để sau này không bị bỡ ngỡ. Thật sự sau một thời gian không đụng tới thấy những dòng code chính tay mình viết khó hiểu đến lạ thường.
Nguồn ảnh: https://dribbble.com/shots/12531701-Design-system-elements
Sẵn tiện trong quá trình điều chỉnh lại API thì team cũng tranh thủ xem lại (review) những chỗ còn chưa hợp lý hoặc chưa đồng nhất trong xử lý giao diện.
Việc đầu tiên có lẽ là điều chỉnh lại component đồng thời bổ sung tài liệu cho chính component đó. Component là từ mình sử dụng chung, bao gồm layout, higher-order-component (HOC) cũng như form inputs.
Bước tiếp theo là bóc tách các function
chung để sử dụng xuyên suốt các dashboard, đơn cử như formatMoney
hoặc normalizeUrl
.
Bước cuối cùng là bổ sung loading state, empty state cũng như error state cho những dashboard còn thiếu để trải nghiệm người dùng được suôn sẻ hơn. Bên cạnh đó là bổ sung các kênh hỗ trợ như hướng dẫn sử dụng, chat, email, số điện thoại, … để người dùng dễ dàng liên lạc khi có vướng mắc.
Nguồn ảnh: https://dribbble.com/shots/2797795-Start-from-Scratch-Illustration
Song song với việc phát triển EGANY Apps thì các ứng dụng khác cũng được khởi tạo để bổ trợ.
Như đã đề cập ở đầu bài, giai đoạn này team chủ yếu tập trung phát triển trên nền tảng sẵn có nên không gặp quá nhiều khó khăn. Thành quả của giai đoạn này:
Tưởng chừng như mọi thứ đã đâu vào đấy, chỉ cần chờ ngày release là triển khai thôi. Đâu ai ngờ rằng cả hai platform đang được hỗ trợ quyết định điều chỉnh khiến cho các ứng dụng đang chạy tốt giờ lại lăn ra chết. Chi tiết như thế nào mình sẽ kể cho các bạn vào tập sau.
Cám ơn các bạn đã đọc. Happy hacking!
Trong phần trước, mình đã chia sẻ với mọi người những khó khăn khi team…
Xin chào, tiếp tục loạt bài về trải nghiệm của mình trong việc xây dựng…
Cắm đầu cắm cổ dọn dẹp deadline và dọn nhà trước Tết nên ngâm bài…
Nếu bạn yêu thích phát triển sản phẩm với nhiều thử thách và cơ hội…
Trong phần 1, mình đã giải thích lý do tại sao EGANY chọn AWS làm…
Trong giới công nghệ hiện nay, Amazon Web Service không còn là một cái gì…