Bên dưới là tổng quan về dự án Goingsunny để mọi người có cái nhìn tổng quát và hiểu hơn về dự án. Dự án gồm các thành phần như:
Nguyên tắc thiết kế các service APIs của mình là, bất kỳ thông tin nào trên App cũng sẽ đều được truy vấn từ database. Từ đó App sẽ đóng vai trò là một platform để show các thông tin có trong hệ thống. Từ đó các microservices
cũng sẽ một phần nào đấy góp phần sinh ra các personal data cho từng người dùng nhất định.
Hiện tại APIs đang được chia thành 2 phần:
Trong khi api.goingsunny.com
chứa toàn bộ các thông tin cần thiết để app chạy, thì perz
đóng vai trò là service để lưu các thông tin personalize cho từng người dùng.
Perz được phát triển bởi strapi, là một CMS có cách tổ chức tốt và chặt chẽ hơn KeystoneJS nhiều. Trong tương lai mình sẽ tập trung hơn vào Strapi.
Hiện tại APIs của Goingsunny được phát triển dựa trên Express Restify Mongoose, với mục đích sinh ra hầu hết các api cần thiết trong thời gian ngắn. Đồng thời cũng bảo đảm được tính ổn định của hệ thống.
Vì hiện tại đang có rất nhiều việc cần phải tập trung, dzo đó nếu tính năng nào có thể handle được với APIs sẵn có thì mình nên dùng cái này trước nha. Sau đó mình sẽ xem xét để phát triển APIs cho từng trường hợp cụ thể đó sau.
Trong một số trường hợp cụ thể, Backend (BE) sẽ phát triển thêm các api mới tuỳ theo nhu cầu cụ thể. Trong tương lai có thể tích hợp GraphQL để đưa thêm lựa chọn cho phía client, để có thể truy vấn data được thuận tiện hơn.
Trong quá trình phát triển có khá nhiều task cần được handle một cách tự động (ie: Assign một record mới cho giáo viên, gởi notification cho người dùng...). Những tính năng này đòi hỏi sự thay đổi khá thường xuyên, và tính độc lập cao. Do đó, mình sẽ phát triển các tính năng này một cách độc lập, mỗi tính năng sẽ được deploy lên một AWS-Lambda riêng. Sẽ truy cập tới APIs
để lấy data nếu cần thiết, hiện tại mình chưa cho phép các microservices này truy cập trực tiếp vào database.