báo cáo thực tập lập trình backend với nestjs

33 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo thực tập lập trình backend với nestjs

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

TP.HCM và các thầy cô là giảng viên của khoa Công nghệ phần mềm đã tạo điều kiện để em hoàn thành khóa thực tập ngắn hạn tại doanh nghiệp và quan trọng hơn hết là nền tảng kiến thức cơ b

Trang 1

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNGTIN KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO THỰC TẬP

Lập trình Backend với NestJS

Công ty thực tập: Vitalify Asia

Người phụ trách: Dương Văn Khương Thực tập sinh: Nguyễn Thái Tuấn

Tp Hồ Chí Minh, tháng 12 năm 2023

1

LỜI MỞ ĐẦU

Trang 2

Ngày nay, các ngành và lĩnh vực về công nghệ phần mềm đang phát triển với tốc độ chóngmặt Các công nghệ về web, mobile hay game là những hướng đi cực kì thu hút các bạn trẻ đam mê lĩnh vực công nghệ phần mềm cũng như nhận được sự quan tâm cao từ phía các nhà tuyển dụng Các lĩnh vực này được ví như một tảng băng trôi, phần nổi là phần nhìn thấy được gọi là Front-end và phần chìm, phần không nhìn thấy được chính là Back-end Vai trò lập trình viên Back-end hiện nay là vô cùng cần thiết và luôn có mặt trong hầu hết các dự án công nghệ phần mềm

Xu hướng phát triển mạnh mẽ của các quốc gia trên thế giới cũng thúc đẩy vai trò Back end tại Việt Nam tới mức cao nhất Đa số các công ty phát triển các phần mềm đều đi kèmvới việc tuyển dụng nhân lực Back-end Nhu cầu tăng cao đối với Back-end tại Việt Nam là minh chứng cho việc xây dựng một Back-end vững mạnh, an ninh bảo mật là vô cùng cần thiết Back-end phát triển vững mạnh là một yếu tố cơ bản cho một nền công nghiệp phần mềm phát triển trường tồn

Từ lâu, trong quá trình học tập tại trường, em đã định hướng bản thân trở thành một lậptrình viên Back-end chuyên nghiệp Điều đó thúc đẩy em tìm tòi và học hỏi về các côngnghệ Back-end hiện nay, các ngôn ngữ hỗ trợ và chủ động đảm nhiệm vai trò phát triểnback-end trong các đồ án tại trường

Sau hơn ba năm học tập trên trường, em cảm thấy bản thân đã sẵn sàng để dấn thân vàomôi trường chuyên nghiệp, em tin rằng điều này sẽ giúp em học hỏi, tiếp thu nhiều kiếnthức hơn trong ngành này Do đó em đã đăng kí môn thực tập và bắt đầu tìm kiếm côngviệc Em đã chọn được công ty để bắt đầu phát triển bản thân là Vitalify Á Châu, đây làmôi trường out-sourcing, một môi trường có khả năng thúc đẩy bản thân em thay đổi liêntục Qua quá trình thực tập tại đây, em mong rằng bản thân sẽ tích thêm nhiều kinhnghiệm, củng cố kiến thức cá nhân cũng như học hỏi thêm nhiều công nghệ mới.

2

LỜI CẢM ƠN

Trước hết, em xin gửi lời cảm ơn đến Trường Đại học Công nghệ thông tin – ĐHQG

Trang 3

TP.HCM và các thầy cô là giảng viên của khoa Công nghệ phần mềm đã tạo điều kiện để em hoàn thành khóa thực tập ngắn hạn tại doanh nghiệp và quan trọng hơn hết là nền tảng kiến thức cơ bản về công nghệ phần mềm

Em xin gửi lời cảm ơn chân thành và sâu sắc đến Công ty TNHH Vitalify Á Châu Việt Nam đã tạo điều kiện cho em có cơ hội thực tập tại công ty

Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của anh chị, em đã tiếp thuđược những kỹ năng, kiến thức quan trọng để có thể xây dựng và góp phần hoàn thiệnđược được một hệ thống back-end Chân thành cảm ơn các anh chị đã bỏ ra nhiều thờigian, công sức để hướng dẫn chúng em hoàn thành đợt thực tập này

Đặc biệt gửi lời cảm ơn sâu sắc đến anh hướng dẫn Dương Văn Khương, cùng anh HoàngMinh Châu, chị Đinh Nguyễn Yến Nhi đã training em các kỹ năng và công nghệ nhưNestJS, MongoDB, Typescript, Git, Unit test, E2E test, AWS và mô hình làm việc Agilescrum Cùng thêm các kiến thức khác về DevOps để làm nên một hệ thống Back

end hiệu quả, bảo mật Trong giai đoạn này mọi thứ thật sự mới mẻ với em, nhờ có sựgiúp đỡ tận tình đặc biệt các anh em mới có thể hoàn thành được Em cũng xin gửi lờicảm ơn đến anh Manager của dự án là anh Nguyễn Anh Duy đã tạo điều kiện để em tiếpcận dự án thực tế và kết nối mọi người lại với nhau Nhân cơ hội em cũng xin cảm ơn đếncác anh chị trong dự án Niko đã đồng hành và giúp đỡ em trong những ngày đầu tiếp cậndự án thực tế

Một lần nữa em xin cảm ơn các thầy cô đang công tác tại khoa Công nghệ Phần mềm đãtận tình giúp đỡ, đặc biệt là cô Trần Thị Hồng Yến đã hỗ trợ em rất nhiều trong quá trìnhthực tập tại doanh nghiệp!

Em xin cảm gửi lời cảm ơn trân quý đến doanh nghiệp!

Trang 4

BẢNG 6 DANH MỤCHÌNH ẢNH 7 DANH

Trang 5

MỤC TỪ VIẾT TẮT 8

Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP 9

1.2.1Niko niko (Hệ thống HRM) 10 1.2.2 Nativecamp 13 1.2.3 Các sản phẩmứng dụng game (Unity) 14

Chương 2: NỘI DUNG THỰC TẬP 16

2.3.1Công nghệ 20 2.3.2 Mô tả dựán 20 2.3.3 Kếtquả 23

2.4.1 Môtả quá trình thực hiện 28 2.4.2 Kếtquả 31 2.4.3 Thuậnlợi 31 2.4.4 Khókhăn 31 Chương 3: TỔNGKẾT 32

TÀILIỆU THAM KHẢO 34

5 DANH MỤC CÁC BẢNG Bảng 1 1 Tổng quan thông tin về công ty 9

Bảng 1 2 Lịch làm việc 15

Bảng 2 2 Bảng nghiên cứu kỹ thuật 17

Bảng 2 3 Bảng công việc thực hiện dự án cá nhân 20

Bảng 2 4 Bảng mô tả thông tin dự án thực tế đã tham gia 24

Bảng 2 5 Mô tả quá trình thực hiện dự án thực tế 28

Trang 6

Bảng 3 1 Đánh giá chuẩn đạt được 33

6 DANH MỤC HÌNH ẢNH Hình 1 1 Logo công ty thực tập 9

Hình 1 2 Giới thiệu sản phẩm Niko gồm Web, App 10

Hình 1 3 Tính năng thống kê số hóa cảm xúc nhân viên 11

Hình 1 4 Các bước check-in bằng app 11

Hình 1 5 Nhập/xuất dữ liệu qua CSV 12

Hình 1 6 Logo Native Camp .13

Hình 1 7 Các dòng sản phẩm game được viết bằng Unity trên AppStore 14

Hình 2 1 Check-in bằng App 25

Hình 2 2 Check-in bằng web 25

Trang 7

Hình 2 3 Theo dõi thông tin làm việc 26

# Từ viết tắt Từ đầy đủ Ý nghĩa

được merge vào code đã cótrước đó

Programing Interface Một nơi để các ứng dụng giao tiếpvới nhau

toán đám mây

Trang 8

4 ECR Elastic Container Registry Dịch vụ lưu trữ Docker đượccung cấp bởi AWS

được cung cấp bởi AWS

ứng dụng được cung cấp bởi AWS

8

Chương 1: GIỚI THIỆU CÔNG TY THỰC TẬP Giới thiệu công ty

Hình 1 1 Logo công ty thực tập

Bảng 1 1 Tổng quan thông tin về công ty

Tên công ty Vitalify Á Châu (Vitalify Asia)

Thành lập 2008

Địa chỉ 224A - 224B Điện Biên Phủ, phường Võ Thị Sáu, quận 3, thành phố Hồ Chí Minh.

Quy mô nhân sự Trên 200

Trang web https://www.vitalify.asia/

Điện thoại +84 (028) 3932 6293

Vitalify Á Châu được thành lập vào năm 2008, là một công ty outsourcing Nhật Bản tạiViệt Nam tập trung vào mảng phát triển phần mềm trên ứng dụng di động với sứ mạng“Đưa những giá trị hạnh phúc thông qua internet” (Delivering Happiness through theInternet)

Vitalify Á Châu có mục tiêu trở thành một công ty chuyên nghiệp có thể đảm nhận các dựán mang tầm vóc quốc tế Chính sách phát triển của công ty đó là: mỗi nhân sự từ kỹ sư,

Trang 9

quản lý,… có trách nhiệm mở rộng vai trò và phạm vi công việc, tinh thần trách nhiệm của chính bản thân để mang lại giá trị cho người dùng với cấu trúc tổ chức phân thành các nhóm nhỏ ưu tú.

9 Sau hơn 10 năm thành lập, Vitalify Á Châu bước vào một giai đoạn thử thách mới nhằmnâng cao hơn nữa giá trị kỹ thuật của công ty tại Việt Nam Mục tiêu sẽ phát triển 10 dịchvụ thu hút 100.000 user vào năm 2025

Sản phẩm công ty

1.2.1 Niko niko (Hệ thống HRM)

Hình 1 2 Giới thiệu sản phẩm Niko gồm Web, App

NikoNiko là hệ thống chấm công cho mô hình doanh nghiệp kết hợp tại chỗ và làm từ xa Niko cung cấp cách chấm công đơn giản không phụ thuộc địa điểm và thời gian

Niko bao gồm các tính năng chính: • Checkin / Out (Web & Mobile) • Chấm công tăng ca

• Ghi nhận và số hóa cảm xúc nhân viên • Thông báo đẩy

Trang 10

• Quản lí user role, layer, report line, … • Dashboard

• Cài đặt ngày nghỉ phép

10

Hình 1 3 Tính năng thống kê số hóa cảm xúc nhân viên

Hình 1 4 Các bước check-in bằng app

Niko tập trung số hóa cảm xúc nhân viên theo từng bộ phân, vị trí, dự án, thâm niên, …

Trang 11

11

Hình 1 5 Nhập/xuất dữ liệu qua CSV

Dễ dàng nhập liệu và xuất liệu thông qua CSV

Hệ thống là mô hình dịch vụ SaaS được phân phối bán giữa các doanh nghiệp với doanhnghiệp với nhau và tính phí dịch vụ dựa trên các tính năng và số lượng thành viên trongmột công ty

Hiện nay, hệ thống Niko đã có khách hàng, cả khách hàng bên ngoài và khách hàng nội bộ Có khả năng chịu tải 10.000 người dùng.

12

Trang 12

13

1.2.3 Các sản phẩm ứng dụng game (Unity)

Trang 13

Hình 1 7 Các dòng sản phẩm game được viết bằng Unity trên AppStore

Vitalify Asia phát triển nhiều tựa game giải trí trên thiết bị di động với lối chơi đơn giản.Một số trong đó có sử dụng công nghệ AR tăng cường thực tế ảo như game Zombie DoorsAR,

14

Lịch làm việc thực tập tại công ty

Bảng 1 2 Lịch làm việc

Trang 14

Khoảng thời gian thực tập

Bắt đầu bắt đầu từ ngày 03/07/2023 đến hết ngày 31/10/2023 (17tuần) Thời gian thực tập là từ thứ 2 hai đến thứ 6 hàng tuần.

Thời gian làm việc trong ngày

Công việc hàng ngày bắt đầu từ lúc 8h35 phút sáng và kết thúc vào 17h35 phút chiều.

Thời gian nghỉ trưa

Thời gian nghỉ trưa là 65 phút, từ 11h55 đến 13h.

Báo cáo công việc hàng ngày

Sau mỗi ngày làm, vào 5h15 phút em sẽ báo cáo tiến độ công việc chi chị quản lí Nội dung báo cáo bao gồm: công việc hôm nay đã làm kèm số thời gian thực hiện, có gặp vấn đề không thể giải quyết trong quá trình thực hiện, kế hoạch thực hiện công việc cho ngày kế tiếp, dự kiến làm thêm thời gian để hoàn thành công việc.

Daily meeting Vào mỗi sáng vào lúc 9h hàng ngày sẽ tổ chức Daily meetingtrong 30 phút Chị quản lý sẽ đánh giá tiến độ công việc của từngthành viên và giao công việc mới nếu hoàn thành ở ngày trướcđó, các thành viên trong team nếu có khó khăn thì sẽ nói trực tiếpđể đưa ra hướng giải quyết.

Sprint planning Vào 14h chiều thứ 2 hàng tuần sẽ tổ chức một buổi planning chotuần tiếp theo Nội dung buổi planning này sẽ diễn ra trongkhoảng từ 30-60 phút, sẽ tổng kết lại những công việc còn tồnđọng lại và một số công việc được cấp trên giao phó xuống Chị quản lí sẽ giao công việc cho những thành viên và mỗi thành viên sẽ tìm giải pháp cho task, ước tính thời gian thực hiện côngviệc.

Weekly review Vào 15h chiều thứ 6 hàng tuần sẽ tổng kết những gì đã làm được và những gì chưa làm được, mọi người chia sẽ những khó khăn đã gặp phải Chị quản lí tổng kết và báo cáo tiến độ đến cấp trên.

Môi trường giao tiếp

Hoàn toàn bằng tiếng Việt

15

Chương 2: NỘI DUNG THỰC TẬP

Tìm hiểu công ty và các kỹ năng cơ bản trong công ty

Trang 15

Thời gian: 1 ngày

Nội dung: Giới thiệu về công ty, cơ cấu tổ chức phòng ban của công ty, cách chấm công, tính lương, quyền lợi và văn hoá làm việc của công ty

• Thực tập sinh được tập trung tại sảnh chính của công ty và lắng nghe từng thành viêntrong ban quản lý công ty lần lượt chia sẻ, giới thiệu về công ty, quá trình thànhlập, phát triển, tầm nhìn chiến lược của công ty, quy trình làm việc từ cao xuốngthấp, cách thức tổ chức của công ty

• Giới thiệu vị trí các phòng ban công ty, quy định gửi xe, các tiện ích, giới thiệu người hướng dẫn trong suốt quá trình thực tập

• Sinh viên được giới thiệu về các lab mà công ty hiện có, cách thức làm việc của từnglab và vai trò, technical chính mà các lab đảm nhận Sinh viên được giải thích kĩhơn về cách thức phân đội nhóm dự án, cách thức tiếp nhận dự án của đội nhóm,cách tiếp nhận và giải quyết các task nhiệm vụ và báo cáo hàng ngày

• Trong thời gian này, sinh viên được công ty đánh giá sơ lược về khả năng để chuyển về các lab phù hợp với năng lực Sinh viên được cấp quyền truy cập các tài nguyênnội bộ, chỉ dẫn của công ty, email domain riêng để tương tác với hệ thống của khách hàng

Kết quả: Có hiểu biết về cơ cấu hoạt động của công ty, quy trình phát triển phần mềmScrum, Agile cách tham gia các cuộc họp nội bộ và với khách hàng, cách tiếp nhận nhiệmvụ và báo cáo hàng ngày.

16

Nghiên cứu kỹ thuật

Trang 16

Bảng 2 1 Bảng nghiên cứu kỹ thuật

Tuần Ngày thực hiện

Nội dung thực hiện Kết quả

23 đến 09/07/2023

- Tìm hiểu về công ty, cơ cấu tổ chức, phòng ban

- Cài đặt môi trường làm việc gồm: Git,NodeJS, AWS DynamoDB, Postman, VPN,Docker, Redis, Gmail, Chatwork

- Đọc source code dự án Sky và chạy dưới môi trường local

- Tham gia buổi welcome lunch giới thiệu bản thân với các anh mentor

- Tìm hiểu và thực hiện cách viết báo cáo vào mỗi ngày

- Báo cáo tiến độ hàng ngày.

Hoàn thành tốtcông việc đượcgiao.

3 đến 16/07/2023

- Tìm hiểu framework Back-end NestJS - Tìm hiểu về Unit test, E2E test, độ

coverage trong testing

- Tìm hiểu các folder thư mục dự án, ý nghĩa, quy định đặt tên biến, hàm, … - Tìm hiểu về DynamoDB, Redis.

Hoàn thành tốtcông việc đượcgiao.

23 đến 23/07/2023

- Tham gia Daily meeting cùng các anh chị,học hỏi về mô hình agile scrum

- Thực hiện dự án cá nhân, viết Restful API cho các API xác thực người dùng

- Viết E2E cho các API đã viết

Hoàn thành tốtcông việc đượcgiao.

23 đến 30/07/2023

- Viết tài liệu đặc tả cho những API đã viết - Tìm hiểu và thực hành các công nghệ trên điện toán đám mây (AWS) như ECR, Code build, ELB, ECS, DynamoDB, Code pipeline.

Hoàn thành tốtcông việc đượcgiao.

Trang 17

17 - Cài đặt CI/CD cho các API xác thực

người dùng

23 đến 05/08/2023

- Tham gia dự án Niko (hệ thống HRM) - Cài đặt môi trường dự án bao gồm: NodeJS, MongoDB, Python, Redmine, Github dự án

- Đọc các quy tắt khi làm việc với git như:Tạo nhánh, tạo PR, các lỗi thường xảy rakhi code, review chéo, …

- Đọc hiểu source code dự án mới - Tìm hiểu graphQL

Hoàn thành tốtcông việc đượcgiao.

3 đến 12/08/2023

- Tìm hiểu luồng code của dự án

- Tìm hiểu các thành phần có trong dự án: Controller, Provider, Module, Middleware,Pipe, Interceptor

- Tìm hiểu AWS Cloudwatch:

+ Được cấp account AWS để tìm hiểu+ Các phần có trong Cloudwatch

- Tìm hiểu nội dung Logger bao gồm các thành phần: ProcessId, thời gian log được in, Ram sử dụng, loại log, thời gian xử lí 1request, thông tin trên log, stacktrace, …

Hoàn thành tốtcông việc đượcgiao.

3 đến 19/08/2023

- Đọc hiểu tài liệu NestJS về Logger và source code

- Tìm hiểu thư viện SpectaQL tự động tạo document cho GraphQL.

Hoàn thành tốtcông việc đượcgiao.

3 đến 26/08/2023

- Tìm hiểu Docker, đọc hiểu file docker được viết trong dự án

- Tìm hiểu cách tạo evidence, testcase cho một task

- Đọc nguyên tắc làm việc khi merge code từ local lên develop và staging.

Hoàn thành tốtcông việc đượcgiao.

Trang 18

18- Tìm hiểu sâu về luồng chạy của Logger

Nâng cấp thư viện Logger để đáp ứng task Tìm phạm vi ảnh hưởng của Logger trong toàn bộ đoạn code

- Nâng cấp thư viện npm để đáp ứng task Logger.

3 đến 02/09/2023

- Thực hiện kiểm thử Logger trên Cloudwatch

- Tìm hiểu các API được công khai của Chatwork.

Hoàn thành tốtcông việc đượcgiao.

3 đến 09/09/2023

- Tìm hiểu thành phần CronJob, Guard, JwtStrategy, Pipes, Decorators trong dự án - Tìm hiểu các bảng dữ liệu có trong hệ thống

- Nghiên cứu bản vẽ thiết kế hệ thống

Hoàn thành tốtcông việc đượcgiao.

23 đến 16/09/2023

- Nghiên cứu những ảnh hưởng khi nâng cấp phiên bản NodeJS đối với Front-end - Tìm hiểu S3, ECS, ECR trên AWS, đẩy code lên S3 và chạy code trên ECS Hoàn thành task.

Hoàn thành tốtcông việc đượcgiao.

3 đến 23/09/2023

- Tìm hiểu output của AI chấm điểm cảm xúc

- Nghiên cứu cấu trúc lưu trữ hiện tại củaouput AI này dưới MongoDB, phạm vi ảnhhưởng API, CronJob

- Nghiên cứu CronJob tổng hợp điểm cảm xúc hàng ngày.

Hoàn thành tốtcông việc đượcgiao.

3 đến 30/09/2023

- Tìm hiểu cấu hình unit test, e2e test đã được cấu hình trước đó trong dự án.

Hoàn thành tốtcông việc đượcgiao.

Trang 19

Thực hiện dự án cá nhân 2.3.1 Công nghệ

• Backend: NestJS framework, Typescript, Docker • Testing: Jest

• DevOps: AWS, S3, ECR, Code build, ELB, ECS, DynamoDB • Tool: Postman, Trello

2.3.2 Mô tả dự án

Dự án cá nhân được em thực hiện trong vòng 3 tuần (10/07/2023 đến 30/07/2023) sau khithực hiện đọc source code dự án thực tế được tuần đầu tiên Mục tiêu anh hướng dẫn làlàm quen với framework NestJS, RestfulAPI, E2E test, Unit test, viết tài liệu cho API, tạocơ sở dữ liệu với DynamoDB, làm quen với AWS bằng cách cài đặt CI/CD với đoạn codetrên

Các nội dung của API chỉ xoay quanh xác thực người dùng, thêm xóa sửa bảng User Nhưng sẽ bao phủ các kỹ năng mà Backend cơ bản cần có

Ngoài ra các còn phải tuân thủ quy tắt tên biến, tên file, không được commit code vào nhánh master phải tạo PR, …

Bảng 2 2 Bảng công việc thực hiện dự án cá nhân

Tuần 1 (10/07 – 15/07)

Khởi tạo source code - Khởi tạo source NestJS với DynamoDB trên account github cá nhân - Tổ chức các thư mục config, database, modules, repositories

thông tin users - Yêu cầu hash key là trường email

10/07

Ngày đăng: 15/05/2024, 09:23

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan