Contents
1. Học thêm về types và schema. Typescript là ứng cử viên tuyệt vời trong năm 2020
Code theo cách typeless được chứng minh là phản tác dụng(counter-productive) và rất dễ bị lỗi. Thay vào đó hãy chọn mức độ schema mong muốn bằng cách xác thực các thực thể (entities) / model sử dụng JSON schema. Nên chọn việc gõ tĩnh cho JavaScript (hãy xem flow của Facebook) hoặc sử dụng cú pháp Typescript trong NodeJS. Năm 2019 là năm đáng nhớ của Typescript, với rất nhiều nỗ lực để khẳng định chổ đứng trong cộng đồng NodeJS. Hãy chọn Typescript.
Tài liệu tham khảo:
2. Làm phong phú thêm Linters của bạn
Linter là một công cụ dùng để phân tích source để phát hiện những lỗi sai, bug, vi phạm lỗi sai viết code.
Trong thực tế, linter để bảo đảm code mình viết ra theo đúng chuẩn (do mình hoặc team đặt ra). Các team sử dụng linter để thống nhất style code / coding convention. Vì vậy nên phát triển học hỏi thêm Linters
Tài liệu tham khảo:
- eslint-plugin-chai-expect giúp bạn hiểu rõ hơn về việc test
- eslint-plugin-promise giúp bạn hiểu rõ về promies
- eslint-plugin-security kiến thức về bảo mật
3. Đào sâu kiến thức về kiến trúc(architecture)
Rất ít kiến thức architecture và design được nói xung quanh NodeJS, mọi người đều nói về microservice. Hầu hết đều là các khái niệm MVC và các pattern từ Ruby. MVC được xây dựng để phục vụ nội dung và là một kỹ thuật tuyệt vời để architecture phần back-end. Liệu bạn có thể mô tả toàn bộ logic kinh doanh, quy tắc, dữ liệu, giao tiếp với các Microservices trong hai lớp Controller & Model không ? Nên hãy học hỏi nhiều hơn về architecture
Tài liệu tham khảo:
- Cấu trúc của một project node
- Kết hợp logic và truy cập dữ liệu(data-access) trong một lớp dễ dẫn đến khó kiểm tra hơn. Thay vào đó, hãy xem xét sử dụng mẫu ánh xạ dữ liệu
- Lướt qua cấu trúc của API Node.js để có cái nhìn tổng quan về architecture sạch
4. Cách sử dụng Async-Hook để tiếp cận trace và context
Mô hình luồng async-hook có nhược điểm lớn : khi chúng qua nhiều tệp và thực hiện các hoạt động không đồng bộ(async). Nó có một cơ chế inject code bất cứ lúc nào khi nào chạy async. Và các biến không được bảo toàn trong suốt vòng đời. Năm 2020 mang đến những thứ tốt hơn và async-hook là một trong số đó.
Tài liệu tham khảo :
- cls-hooked chia sẻ biến và context thông qua request
- Client Jaeger sẽ trực quan hóa toàn bộ flow request thông qua hệ thống trên các dịch vụ và máy chủ của microservice
5. Hiểu về tính năng Serverless
Lưu ý: FaaS và Serverless được sử dụng hoán đổi cho nhau mặc dù chúng không hoàn toàn giống nhau. Thực tế tôi đang đề cập đến dịch vụ FaaS trên nền tảng đám mây như Lambda và Google Function
Ban đầu FaaS phát triển để dùng cho các tác vụ vi mô chứ không phải cho ứng dụng microservice trên NodeJS. Khi càng phổ biến, sự khao khát của các nhà cung cấp cloud vendors, tạo ra rất nhiều tính năng mớ.
Tài liệu tham khảo :
- Công cụ AWS Lambda SAM cho phép định nghĩa và chạy FaaS local
- AWS Lambda hiện hỗ trợ phát triển!
- Các lớp AWS Lambda cho phép tái sử dụng logic giữa nhiều FaaS
6. Học hỏi các tính năng JavaScript mới nhất
Thỉnh thoảng, một số tính năng Javascript thực sự có giá trị được trình bày (như giới thiệu async /await b năm trước). Vì vậy, xem danh sách TC39 proposal và node.green để xác định các tính năng mới hấp dẫn phù hợp với phong cách code của bạn
Ví dụ:
7. Làm quen với API trên NodeJS
API rất phù hợp với mục đích mà nó được xây dựng cho: có quyền kiểm soát lớn đối với các sửa đổi và truy vấn. Tuy nhiên, kiểu REST hoàn toàn đáp ứng mọi trường hợp sử dụng rất phổ biến khác như thực hiện các truy vấn tương tự có thể trả về một tập hợp dữ liệu khác.
Ví dụ:
8. Cách sử dụng unit & integration tests
Bạn cần phải sử dụng quen cách bài test kim tự tháp, đơn vị, tích hợp và thử nghiệm đầu cuối(end-to-end) chưa? Tuy nhiên, trong 10 năm qua, thế giới phát triển đã trải qua những thay đổi mạnh mẽ nhưng các mô hình test vẫn còn nguyên vẹn khiến tôi tự hỏi làm thế nào để test những thứ như microservice, frontends và Serverless.
Tài liệu tham khảo :
- Test ứng dụng REACT với PUPPETEER VÀ JEST
- Unit test là gì – Jest test Javascript cho người mới bắt đầu
9. Học thêm về DevOps
Vào năm 2020, ứng dụng cỡ trung bình có thể tạo thành hàng tá bộ phận chuyển động vật lý và đứng trên đỉnh của dàn nhạc lớn này nên được thực hiện một cách cẩn thận. Hầu hết các nhà phát triển đã không dành thời gian của họ để học giám sát(monitoring) và cảnh báo(alert).
Các nhà phát triển thường ưu tiên và tập trung vào các số liệu phần cứng bên trong như CPU và bộ nhớ. Thay vì bắt đầu từ các số liệu ảnh hưởng trực tiếp và không thể chối cãi đến người dùng cuối như tỷ lệ lỗi hoặc độ trễ.
Tài liệu tham khảo :
- Độ tin cậy trang web của Google
- Số liệu thống kê yêu cầu giúp trích xuất các số liệu hướng tới client
10. Tăng mức độ bảo mật bằng cách học công cụ và kỹ thuật tấn công
Nếu bạn không thể nghĩ bị một kẻ tấn công, thì bạn không thể phòng thủ. Năm 2020, không nên thuê bên thứ ba để bảo mật hoặc chỉ dựa vào máy quét bảo mật tĩnh. Số lượng các loại tấn công trên NodeJS là quá nhiều, ứng dụng không thể đo lường được.
Một khi bạn bắt đầu làm điều này, hóa ra nó không đáng sợ. Chỉ cần làm quen với các công cụ phổ biến, vẽ kiến trúc. Sau đó suy nghĩ cách tấn công ứng dụng. Theo thời gian, vô thức bạn sẽ bắt đầu bảo mật tâm trí trong mọi quyết định thiết kế và mọi dòng code trên ứng dụng NodeJS
Ví dụ:
- Hãy dùng thử OWASP ZAP – một công cụ đánh giá và thâm nhập cho phép những người mới khám phá mức độ bảo mật của ứng dụng
Kết luận
Qua bài này chúng ta đã biết được 10 điều cần nên cải thiện trong năm 2020 để nâng cao trình độ về NodeJS. Hãy đăng ký nhận tin và tiếp tục chờ đón phần 2 để biết 9 điều còn lại nhé.

Bài viết này được sưu tầm và tổng hợp từ nhiều nguồn trên Internet.
Nếu có gì không hiểu thì inbox messenger bên dưới mình hỗ trợ thêm nhé.