TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP NESTJS TRONG LẬP TRÌNH WEB Công ty thực tập The New Tech Người phụ trách Lê Công Nghĩa Thực tập sinh Nguyễn Tấn Thành 195222[.]
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM BÁO CÁO THỰC TẬP NESTJS TRONG LẬP TRÌNH WEB Công ty thực tập : The New Tech Người phụ trách : Lê Công Nghĩa Thực tập sinh : Nguyễn Tấn Thành - 19522239 TP Hồ Chí Minh, tháng 12 năm 2022 LỜI MỞ ĐẦU Sự phát triển cơng nghệ ln nằm mức thay đổi chóng mặt Chính phát triển khơng ngừng địi hỏi phải có hình thành, tiên tiến thay cũ Trong lĩnh vực công nghệ thông tin, lập trình viên ln phải cập nhật kiến thức không ngừng để bắt kịp xu hướng để vừa đại vừa tránh bị đào thải “XU HƯỚNG” cụm từ đề cập sau lần chuyển đổi có đời mang tính chuyển biến ngơn ngữ hay cơng nghệ NodeJS số tảng phát triển web ứng dụng có tăng trưởng định kể từ mắt NodeJS hữu ích việc đơn giản hóa quy trình làm việc sở liệu cung cấp giả pháp tuyệt vời đẻ tận dụng thời gian thực Nhờ có NodeJS, JavaScript trở thành ngôn ngữ tuyệt vời web cho ứng dụng frontend backend NodeJS giúp cải thiện suất nhà phát triển cho phép tạo ứng dụng cách nhanh chóng, testable scalable NestJS framework Node.JS cho phép xây dựng ứng dụng phía server Trong năm gần NestJS người dùng tin tưởng lựa chọn Với tính vượt trội kết hợp với cách cài đặt đơn giản, an tồn NestJS nhanh chóng “chiếm sóng” trở thành trụ cột vững giúp máy chủ Node.js phát triển cấp độ hoàn toàn Sau thời gian học tập trường, với mong muốn trao dồi kinh nghiệm thực tế, tham gia làm việc môi trường doanh nghiệp Vì thân định chọn The New Tech – công ty với môi trường làm việc lý tưởng, chuyên nghiệp, động để thực dự án lần LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty cổ phần The New Tech tạo điều kiện cho em có hội thực tập công ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình mentor thành viên team Back-end em tiếp thu kiến thức quan trọng lập trình web back-end nói chung hay NestJS nói riêng Chân thành cảm ơn anh chị công ty bỏ nhiều thời gian, cơng sức để hướng dẫn em hồn thành đợt thực tập Bên cạnh đó, em xin gửi lời cảm ơn chân thành đến thầy cô giáo trường Đại học Công nghệ Thông tin, ĐHQG – HCM nói chung thầy Khoa Cơng nghệ Phần mềm nói riêng giảng dạy kiến thức tảng quan trọng thời gian qua giúp em hoàn thành đề tài lần Cũng xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo Sau báo cáo kết trình tìm hiểu, nghiên cứu, thực thời gian thực tập, bên cạnh khơng tránh khỏi thiếu sót Em mong nhận lời nhận xét đóng góp q thầy để báo cáo hoàn thiện Em xin chân thành cảm ơn! Nguyễn Tấn Thành Thành phố Hồ Chí Minh, ngày 17 tháng 12 năm 2022 NHẬN XÉT CỦA KHOA MỤC LỤC LỜI MỞ ĐẦU LỜI CẢM ƠN MỤC LỤC CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP Giới thiệu công ty The New Tech Một Số Sản phẩm công ty CHƯƠNG 2: NỘI DUNG THỰC TẬP Tìm hiểu cơng ty Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc 2.2 Tìm hiểu NestJS 2.3 Github Action NPM Lịch làm việc 11 CHƯƠNG 3: CHI TIẾT VỀ PROJECT 14 Nội dung Project 14 Kết đạt 14 TÀI LIỆU THAM KHẢO 15 TỔNG KẾT 16 CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP Giới thiệu cơng ty The New Tech Được thành lập từ tháng năm 2021, The New Tech công ty phần mềm chuyên cung cấp dịch vụ phát triển ứng dụng, thiết bị hỗ trợ tự động hóa với đối tác The New Gym Trong thời gian vừa qua, The New Tech nỗ lực để trở thành tên bật đáng tin cậy cộng đồng công ty công nghệ Việt Nam Với mục tiêu xây dựng sản phẩm sáng tạo, giải thách thức kỹ thuật đặt Công ty biến ý tưởng khách hàng thành sản phẩm ổn định chất lượng giúp tối ưu hóa q trình vận hành, quản lí đối tác Một Số Sản phẩm công ty The New Gym app customer: Là ứng dụng chó phép người dùng đăng kí gói tập dịch vụ phịng gym, ngồi người dùng cịn đặt lịch tập với huấn luyện viên The New Gym app PT: Ứng dụng dùng để kết nối huấn luyện viên tới khách hàng, việc xác nhận/hủy buối tập với khách hàng chức khác thống kê doanh thu với PT, xem lịch dạy… CRM trang web quản lý chuỗi phong gym.Gồm số chức thống kê liệu, quản lí tài khoản khách hàng, nhân viên, huấn luyện viên dịch vụ cung cấp đối tác POS WEB trang web sử dụng cho lễ tân hỗ trợ chức năng: quản lí khách hàng phịng tập, tốn hóa đơn quầy…Và số sản phẩm khác thiết bị vào cổng, web đăng kí dịch vụ… CHƯƠNG 2: NỘI DUNG THỰC TẬP Tìm hiểu cơng ty Thời gian : ngày Nội dung : Được nghe người phụ trách giới thiệu công ty, trình thành lập phát triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức công ty Ngồi cịn thơng tin cần thiết khác thời gian làm việc, yêu cầu sử dụng tài khoản cấp Giao lưu với người Tìm hiểu sản phẩm cơng ty Kết : Biết thông tin công ty( q trình thành lập phát triển ) Có thêm kỹ việc sử dụng email cơng việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Nghiên cứu kỹ thuật 2.1 Các cơng cụ làm việc Nội dung : Tìm hiểu công cụ sử dụng trình làm việc Người hướng dẫn hỗ trợ cài đặt sử dụng phần mềm, package công ty sử dụng quy trình phát triển( DataGrip, máy ảo, ubuntu, slack, terminator, zsh…) Thực hiện: Thực hành cài đặt, sử dụng phần mềm Kết : Nắm cách cài đặt, setup công cụ hỗ trợ 2.2 Tìm hiểu NestJS Nội dung : • NestJS framework Node.JS cho phép xây dựng ứng dụng phía server Nest mở rộng framework Node.js Express hay Fastify để bổ sung thêm nhiều module hay thư viện hỗ trợ việc xử lý tác vụ Đây framework mã nguồn mở, sử dụng TypeScript linh hoạt để xây dựng hệ thống backend Bên cạnh đó, NestJS cịn giúp mở rộng server Node để hỗ trợ sở liệu MongoDB, Redis hay Apache Cassandra • Cấu trúc NestJS: − NestJS xây dựng từ nhiều yếu tố khác nhau, nhiên quan trọng ba thành phần sau: − Modules: sử dụng để tổ chức code chia tính thành đơn vị tái sử dụng hợp lý Các tệp TypeScript nhóm Decorator “@Module” Decorator “@Module” cung cấp siêu liệu cho NestJS giúp xác định thành phần, điều khiển hay tài nguyên khác để xếp cấu trúc ứng dụng khoa học, hiệu − Providers: Một thành phần khơng thể thiếu NestJS Providers Nó tương tự dịch vụ giúp xử lý tác vụ mang tính phức tạp, logic mà trình xử lý Controller khơng thể làm Providers tạo đưa vào Controllers Providers khác − Controllers: Chức Controllers xử lý yêu cầu gửi đến đáp trả lại cho client-side Sau nhận yêu cầu HTTP soạn thảo câu trả lời xác, phù hợp để gửi Mỗi Controllers có lộ trình riêng để giúp thực tốt tác vụ khác • Tính NestJS: − Sử dụng TypeScript cho phép ngơn ngữ lập trình thích ứng nhanh để đáp ứng thay đổi JavaScript − Cài đặt đơn giản, dễ sử dụng, không nhiều thời gian để học hỏi, nghiên cứu − Tăng hiệu suất dễ dàng phát triển nhờ giao diện dòng lệnh CLI mạnh mẽ − Nguồn tài liệu đa dạng, phong phú, chi tiết trì tốt − Khả mở rộng, phát triển bảo trì sở mã hoạt động − Là mã nguồn mở Node.js phát triển mạnh mẽ vượt bậc vài năm trở lại − Hỗ trợ mơ đun giúp ứng dụng tích hợp cơng nghệ khái niệm phổ biến Caching, WebSockets, Logging, Validation, TypeORM, Mongoose… − Được tạo cho Micro-services Monoliths Thực hiện: - Tìm hiểu kiến thức liên quan đến NestJS - Báo cáo lại cho người hướng dấn tiến trình tìm hiểu, người hướng dẫn giải đáp vấn đề tồn đọng trình tìm hiểu - Xây dựng server đơn giản với NestJS gồm chức CRUD account Kết : - Nắm kiến thức NestJS, tạo project nhỏ với NestJS 2.3 Github Action NPM Nội dung: • GitHub Actions tảng CI / CD cho phép bạn tự động hóa quy trình build, test deploy sản phẩm GitHub actions hoạt động theo hướng kiện, nghĩa thực loạt commands định nghĩa sẵn có kiện xảy • Thành Phần GitHub Actions: − Workflows: Workflow quy trình tự động thực hay nhiều cơng việc Workflow xác định file yml thư mục github/workflow thực sau event xảy ra( push, pull request…) Workflows định nghĩa để build, test, release, deploy dự án Github − Events Events trigger đặc biệt để workflow bắt đầu ví dụ như, bạn cấu hình để workflow bắt đầu có người push code tạo merger request lên branch develop Bạn sử dụng repository dispatch webhook để trigger workflow kiện bên xảy − Jobs Jobs tập hợp bước thược cơng việc runner Mặc định jobs workflow chạy song song Bạn cấu hình để jobs chạy Ví dụ workflow có jobs build, run test case Nhưng build fails test case khơng run − Steps Steps tác vụ độc lập command jobs Mỗi steps action command để thực hành động Mỗi step job thực thi runner, share data từ steps với step khác − Actions Actions command độc lập kết hợp lại tạo thành steps để tạo jobs workflow Actions đơn vị nhỏ workflow thành phần trực tiếp thực tác vụ mong muốn Có thể tự customize action sử dụng action có sẵn github − Runners Runners server cài đặt sẵn GitHub Actions runner application Bạn sử dụng runner hosted GitHub tự host cho để sử dụng Một runner sẵn sàng lắng nghe jobs, run job thời điểm, report process, logs trả kết cho GitHub Với GitHub-hosted runner job runs máy ảo hoàn tịan (Điều có nghĩa job cần có bước setup mơi trường từ đầu ) Thực hiện: − Tìm hiểu lý thuyết github actions, npm − Tạo node package có nhiệm vụ truyền nhận liệu gateway service mơ hình microservice − Sử dụng github actions để build publish package Kết quả: − Nắm kiến thức github actions, cách tạo node package − Áp dụng lý thuyết build package có áp dụng github actions Lịch làm việc Công việc Tuần - - - - - - - - Tìm hiểu cơng ty, cách tổ chức công ty Làm quen với công cụ làm việc công ty Học cách trao đổi, làm việc qua slack Tìm hiểu NestJS Tạo ứng dụng backend với chức (crud account, authentication) Tìm hiểu NestJS, chế authen, phân quyền project cơng ty Tìm hiểu access token, refresh token Làm task deactive token, đăng xuất phía server cho website quản lí lễ tân Đọc source code công ty Viết số api cho website quản lí Tham gia vào q trình phát triển chức Viết middleware ghi lại thông tin thay đổi khách hàng lần cập nhập profile cá nhân Chỉnh sửa cấu trúc, tối ưu source code cơng ty Tham gia vào q trình triển khai hệ thống Người hướng dẫn Lê Công Nghĩa Lê Công Nghĩa Lê Công Nghĩa Lê Công Nghĩa Lê Công Nghĩa Lê Cơng Nghĩa Mức độ hồn thành Nhận xét người hướng dẫn - - - (hệ thống toán, mua hàng online) Khởi tạo source code, viết api cho chức crud account, quản lí khách hàng, quản lí gói nạp point … Tìm hiểu github Lê Cơng Nghĩa actions, npm Tạo node package hỗ trợ truyền nhận liệu mơ hình microservices Tối ưu, hồn thiện Lê Cơng Nghĩa package Tích hợp github actions để tự động hóa việc build, deploy package CHƯƠNG 3: CHI TIẾT VỀ PROJECT Nội dung Project - Khi làm việc với kiến trúc microservices, nhân thấy vấn đề tồn đọng việc truyền nhận liệu gateway services cần lấy data từ bảng phải viết hai phương thức (ở phía gateway để gửi request phía service để nhận xử lý request đó) xuất trùng lặp cách xử lí code phương thức chung findOne, update, saveDate… Vì phương thức áp dụng toàn hệ thống nên cần build package chung để xử lí điều để tránh trùng lặp code, tối ưu resource, đảm bảo pattern, thuận tiện việc get data update data gateway - Ngoài để tối ưu trình phát triển, packge áp dụng github actions giúp tự động build, publish - Package cài đặt gateway service Khi sử dụng phương thức cung cấp phía gateway gửi request chứa số ứng với tên action (findOne, update…) tên table lấy liệu Phía service nhân thông qua message chung phương thức này, dựa vào số action để xử lí yêu cầu Kết đạt - Hoàn thiện package phục vụ cho quy trình phát triển cơng ty - Học kiến thức liên quan vầ npm, github actions - Học cách phân tích xử lí vấn đề TÀI LIỆU THAM KHẢO [1] https://docs.nestjs.com/ [2] https://docs.github.com/en/actions [3] https://blog.logrocket.com/setting-up-monorepo-with-lerna-typescript/ [4] https://viblo.asia/p/ban-da-biet-cach-tao-github-private-package-1VgZvJQYZAw [5] https://viblo.asia/p/build-va-publish-mot-npm-typescript-package-gDVK2nGnKLj TỔNG KẾT Sau khoảng thời gian tháng thực tập, tham gia vào dự án thực tế giúp em có hội cọ sát thực hóa kiến thức thân tới người sử dụng Trong thời gian em bổ sung nhiều kiến thức mới, trao dồi kĩ báo cáo, thuyết trình, làm việc nhóm,… Một lần nữa, em xin chân thành cảm ơn thầy cô cho em hội thực tập, trau dồi kinh nghiệm ứng dụng kiến thức kỹ năn học ngồi trường mơi trường làm việc thực tế Cảm ơn thành viên nhóm em nghiên cứu, tìm hiểu nội dung cần thiết, giúp đỡ em trình thực đề tài ... điều kiện em làm báo cáo Sau báo cáo kết trình tìm hiểu, nghiên cứu, thực thời gian thực tập, bên cạnh khơng tránh khỏi thiếu sót Em mong nhận lời nhận xét đóng góp q thầy để báo cáo hoàn thiện... gian tháng thực tập, tham gia vào dự án thực tế giúp em có hội cọ sát thực hóa kiến thức thân tới người sử dụng Trong thời gian em bổ sung nhiều kiến thức mới, trao dồi kĩ báo cáo, thuyết trình, ... POS WEB trang web sử dụng cho lễ tân hỗ trợ chức năng: quản lí khách hàng phịng tập, tốn hóa đơn quầy…Và cịn số sản phẩm khác thiết bị vào cổng, web đăng kí dịch vụ… CHƯƠNG 2: NỘI DUNG THỰC TẬP