Tải bản đầy đủ (.doc) (16 trang)

Báo cáo thực tập BACKEND DEVELOPER với NESTJS

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (161.57 KB, 16 trang )

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

BACKEND DEVELOPER VỚI NESTJS

Công ty thực tập : Công ty Cổ Phần TGL Solutions
Người phụ trách : Lê Ry Gút
Thực tập sinh

: Trương Hồng Nam

TP. Hồ Chí Minh, tháng 12 năm 2020
1
Trương Hoàng Nam


LỜI MỞ ĐẦU

Ngày nay, Internet là một phần không thế thiếu trong đời sống của chúng ta. Từ giải trí,
mua sắm, học tập, báo chí,... đều có mặt trên internet. Đặc biệt hơn, trong năm vừa qua, thế giới
đối mặt với một thách thức mới mang tên Corona. Đại dịch Corona, càng khiến cho chúng ta
cần phải số hóa, sử dụng internet để trao đổi thông tin nhiều hơn. Với nhu cầu đó, internet nói
chung, và website nói riêng đều ngày càng phát triển để đáp ứng những nhu cầu của người
dùng.
Sau ba năm học tập ở trường, với mong muốn có thêm kinh nghiệm thực tế, và học hỏi ở
môi trường doanh nghiệp. Vậy nên, em đã quyết định đi thực tập tại Công ty Cổ phẩn TGL
Solutions - đây là một môi trường hiện đại, cởi mở, giúp em trau dồi các kiến thức khi là thực
tập sinh.


2
Trương Hoàng Nam


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty Cổ Phần TGL Solutions đã tạo điều kiện cho em có cơ
hội được thực tập tại cơng ty.
Trong thời qua, nhờ sự chỉ dẫn nhiệt tình của anh chị trainer, em đã tiếp thu được những
kiến thức hiểu rõ hơn về cách vận hành một website và cách xây dựng, viết code, đến cả deploy
một trang web thực tế. Chân thành cảm ơn các anh chị trong nhóm trainer đã bỏ ra nhiều thời
gian,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 cảm ơn anh Lê Ry Gút và anh Nguyễn Thiện Hải đã nhiệt tình hướng dẫn, chỉ
bảo, hỗ trợ em trong quá trình thực tập; Cảm ơn anh Nguyễn Thiện Hải đã trainning cho em về
TypeORM, và NestJS; Cảm ơn anh Lê Ry Gút đã giúp em hịa nhập vào cơng trường trong cơng
ty; Cảm ơn anh Trần Hồng Sơn và anh Nguyễn Xuân Nghiêm đã giúp đỡ em trong quá trình
làm việc.
Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo điều
kiện em làm bài báo cáo này.
Trương Hoàng Nam
Tp.HCM, ngày 28 tháng 12 năm 2020

3
Trương Hoàng Nam


NHẬN XÉT CỦA KHOA

.......................................................................................................................................................
.......................................................................................................................................................

.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................
.......................................................................................................................................................

4
Trương Hoàng Nam


MỤC LỤC
1.Giới thiệu công ty Cổ Phần TGL Solutions.............................................................................6
2.Sản phẩm của cơng ty..............................................................................................................6
Chương 2: Nội dung thực tập......................................................................................................................6
1.Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty cài đặt phần mềm, môi trường..........7
2.Nghiên cứu kỹ thuật.................................................................................................................7
3.Thực hiện project.....................................................................................................................9
4.Lịch làm việc..........................................................................................................................10
3.1 Giới thiệu về dự án..............................................................................................................12

3.2 Thực hiện.............................................................................................................................13

5
Trương Hoàng Nam


1. Giới thiệu công ty Cổ Phần TGL Solutions
Công ty cổ phần TGL Solutions được thành lập năm 2019, là công ty đang hợp tác
với công ty skyACE của Nhật Bản để tạo ra những sản phẩm, dịch vụ mới.
Với ba phương châm Speed, Smart và Simple Solutions, công ty ln đưa ra sản
phẩm nhanh chóng và thơng minh đến khách hàng. Đáp ứng các như cầu của khách
hàng.
Công ty tạo ra một môi trường tư duy làm việc trẻ, năng động sáng tạo và khuyến
khích thế mạng của bản thân. Đây là một môi trường đang để rèn luyện, học hỏi và
làm việc.

2. Sản phẩm của công ty
Công ty Cổ phần TGL Solutions đưa ra những sản phẩm dựa trên yêu cầu của khách
hàng, trong số đó, những sản phẩm thuộc vào các mảng như website, app mobile,
AR...
Một số sản phẩm có thể kể đến như: Shuho System, Rebate King, Doboku-Uo,
Dental Clinic, Mirai Ichi, Mail Management System,…

Chương 2: Nội dung thực tập
Trong đợt thực tập lần này, để biết thêm về những công nghệ mới, em đã xin thực tập tại
vị trí backend developer với cơng nghệ sử dụng là NestJS.

6
Trương Hoàng Nam



1. Tìm hiểu cơng ty và các kỹ năng cơ bản trong công ty cài đặt phần
mềm, môi trường.
Thời gian : 1 ngày
Nội dung : Giới thiệu về công ty, cách tổ chức của công ty, cài đặt công cụ làm việc.
Được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển,
quy trình làm việc, cách thức tổ chức của công ty .
Thực tập sinh được giới thiệu về cách thức làm việc trong công ty như thời gian đi
làm, các quy định cần phải tuân thủ, cách sử dụng các công cụ trong quá trình làm việc…
Cuối cùng, thực tập sinh cài đặt các mơi trường cần thiết cho q trình thực tập,
như Git, SourceTree, Microsoft Team...
Kết quả : Hiểu về công ty Cổ phần TGL Solutions, quá trình thành lập và phát triển. Biết
về quy trình làm việc. Biết thêm về các công cụ mới.

2. Nghiên cứu kỹ thuật
2.1. Các công cụ làm việc
Thời gian : 1 ngày
Nội dung : Tìm hiểu về các công cụ sẽ được sử dụng trong quá trình làm việc.
Trong thời gian này, anh supervisor đã giới thiệu các công cụ và cách sử dụng các
công cụ trong q trình làm việc, trong số đó có thể kể đến là: Gitlab - đây là một
Version Control System dùng để quản lý source code khi phát triển dự án theo team;
SourceTree là một phần mềm hữu ích cho phép thao tác với git thông qua giao diện;
Visual Studio Code và một số extention hữu ích có trên Visual Studio Code;
Microsoft Team - dùng để trao đổi, lên lạc giữa mọi người trong công ty...
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Sử dụng được các cơng cụ nêu trên.

2.2. Tìm hiểu ngơn ngữ TypeScript
Thời gian : 4 ngày
Nội dung : Tìm hiểu ngôn ngữ TypeScript.

- Sự khác nhau giữa TypeScript và JavaScript
TypeScript là một dự án mã nguồn mở do Microsoft phát triển, đây được xem là phiên bản nâng
cao của JavaScript. TypeScript đưa lập trình hướng đối tượng, bổ sung các tùy chọn kiểu tĩnh
7
Trương Hoàng Nam


cho JavaScript. Và TypeScript có cú pháp tường minh hơn JavaScript, nó giúp cho việc code và
đọc code trở nên dễ dàng hơn.
- Cách biên dịch code TypeScript thành JavaScript
Về cơ bản, code TypeScript sẽ được biên dịch thành code JavaScript trước khi chạy.
TSC là dùng để biên dịch code TypeScript thành JavaScript.
- Các kiểu dữ liệu trong TypeScript
Các biến, tham số hay giá trị trả về của một hàm được viết tường minh thông qua
các kiểu dữ liệu được định sẵn trong TypeScript như: string, number, boolean,
array, enum, void...
- Lập trình hướng đối tượng trong TypeScript:
Hướng đối tượng cũng là một điểm mạnh trong TypeScript. Trước đó JavaScript
chỉ cho lập trình hàm, TypeScript đã bổ sung các khái niệm OOP trong cho
JavaScript như: Kế thừa, đóng gói, constructor, abstract class, interface, ...
Thực hiện :
- Tìm hiểu ngơn ngữ TypeScript dưới sự chỉ dẫn của anh supervisor, với nền tàng
JavaScript đã có sẵn từ trước.
- Báo cáo tìm hiểu.
Kết quả :
-

Biết về ngơn ngữ TypeScript.

2.3. Tìm hiểu NestJS, GraphQL và TypeORM

2.3.1 Tìm hiểu NestJS
Thời gian: 6 ngày
Nội dung: Tìm hiểu Framework NestJS
- “A progressive Node.js framework for building efficient, reliable and scalable server-side
applications.” đây là một Framework Node.js tiến bộ để xây dựng ứng dụng phía máy chủ một
cách hiệu quả, đáng tin cậy và dễ dàng mở rộng.
- Với NestJS chúng ta có thể viết bằng Javascript hoặc Typescript, ngơn ngữ mặc định là
Typescript.
Thực hiện:
- Tìm hiểu Framework NestJS. Cách cài đặt NestJS, cách khởi tạo một project với NestJS.
- Tìm hiểu cấu trúc source trong NestJS, mỗi service được viết như một module
Thực hiện:
- Tạo thử project mới bằng NestJS.
- Viết mototj module trong NestJS, kiểm tra các API xem đã trả về đúng dữ liệu.
Kết quả:
- Có kiến thức về NestJS.
8
Trương Hoàng Nam


- Có thể xây dựng ứng dụng phía backend với NestJS.

2.3.2 Tìm hiểu GraphQL
Thời gian: 3 ngày
Nội dung: Tìm hiểu GraphQL
- Là ngôn ngữ truy vấn dữ liệu cho API.
- GraphQL khác với Restful API ở chỗ chúng ta có thể tùy chỉnh những biến trả về. Điều này
giúp giảm kích thước payload bằng cách loại bỏ những field khơng cần thiết khi trả data về.
- Cách cấu hình GraphQL trong ứng dụng NestJS.
Thực hiện:

- Tìm hiểu GraphQL dưới sự chỉ dẫn của anh Supervisor.
- Cấu hình GraphQL vào trong ứng dụng NestJS.
- Thực hành viết 1 API đơn giản với NestJS sử dụng GraphQL.
Kết quả:
- Có kiến thức về GraphQL.
- Có thể cấu hình GraphQL trong ứng dụng NestJS.

2.3.3 Tìm hiểu về TypeORM
Thời gian: 2 ngày
Nội dung: Tìm hiểu về TypeORM
- TypeORM là một ORM có thể chạy trên NodeJS, React Native, Browser,... và có thể sử dụng
Typesript hoặc Javascript để viết code. TypeORM hỗ trợ rất nhiều loại cơ sở dữ liệu quan hệ
như: MySQL, Oracle, SQL Server, Postgres,... ngồi ra, nó cịn có hỗ trợ NoSQL là MongoDB.
- Đây là một ORM cho các ứng dụng Node.js cực kỳ mạnh mẽ. Nó giúp cho q trình phát triển
nhanh hơn.
Thực hiện:
- Cấu hình TypeORM vào ứng dụng NestJS.
- Thực hành kết nối đến Oracle Database và tạo schema bằng kỹ thuật code first.
- Tạo migration khi thực hiện thay đổi trên code.
Kết quả:
- Có kiến thức cơ bản về TypeORM.
- Tạo được các schema, tạo quan hệ giữa các thực thể.
- Có kiến thức về Migration trong TypeORM.

3. Thực hiện project
Sau một tháng tìm hiểu về các cơng nghệ, sinh viên đã có kiến thức cơ bản về NestJS,
GraphQL, TypeORM và một số kiến thức khác được tích lũy trong thời gian này. Thời
gian tiếp theo, sinh viên được tham gia vào một dự án thực tế của cơng ty tên là
9
Trương Hồng Nam



Questionnaire App.

4. Lịch làm việc

Tuần

Cơng việc
-

1

-

2
3
-

4

5

6

7

Người hướng dẫn

Tìm hiểu về công

ty, cách tổ chức của
công ty.
Làm quen với các
công cụ làm việc
trong cơng ty.
Tìm hiểu ngơn ngữ
TypeScript.
Tìm
hiểu
NestJS.

Mức
độ
hồn
thành

Nhận xét của người
hướng dẫn

Anh Lê Ry Gút,
anh Nguyễn Thiện
Hải

Anh Lê Ry Gút,
Anh Nguyễn Thiện
Hải
về Anh Lê Ry Gút,
Anh Nguyễn Thiện
Hải
về Anh Nguyễn Thiện

và Hải

Tìm
hiểu
GraphQL
TypeORM.
- Tìm hiểu dự án
Questionnaire.
- Tìm hiểu về server
và các deploy lên
server.
- Tìm hiểu về kiểm
thử
API
với
Postman.
- Tìm hiểu về chứng
thực bằng token với
JWT.
- Viết module auth
cho
dự
án
questionnaire.
- Kiểm thử module
auth.
- Viết module maker
cho dự án.
- Kiểm thử module


Anh Nguyễn Xuân
Nghiêm, anh Trần
Hoàng Sơn
Anh Nguyễn Xuân
Nghiêm, anh Trần
Hoàng Sơn

Anh Nguyễn Xuân
Nghiêm, anh Trần
Hoàng Sơn
10
Trương Hoàng Nam


8

9

10

maker.
- Viết
module
product cho dự án.
- Tìm
hiểu
Subscription trong
GraphQL.
- Làm chức năng
realtime voting.

- Làm chức năng
thống kê.
- Kiểm tra lại toàn bộ
chức năng
- Deploy backend dự
án.

Anh Nguyễn
Xuân Nghiêm, anh
Trần Hoàng Sơn

Anh Nguyễn Xuân
Nghiêm
Anh Nguyễn Xuân
Nghiêm,
anh
Nguyễn Thiện Hải

11
Trương Hoàng Nam


3.1 Giới thiệu về dự án.
Đầu tiên, Questionnaire App là một dự án thực tế của công ty. Đây là một website cho
phép người dùng có thể bình chọn sản phẩm mà mình u thích.
Questionnaire sử dụng framework NestJS để viết backend. Các API được viết dưới dạng
GraphQL APIs.

3.1.1 Mục đích
Questionnaire App cho phép người dùng bình chọn sản phẩm mà họ yêu thích trong hội

chợ Mirai Ichi. Từ những bình chọn này, các nhà cung cấp sản phẩm có thể phân tích để
đưa ra những chiến lược kinh doanh phù hợp với doanh nghiệp của mình.
3.1.2 Một số API chính phục vụ cho hệ thống
API login
- Cho phép người dùng đang nhập vào hệ thống bằng cách chứng thực JWT token.
APIs Maker:
- Với API createMaker, quản trị viên có thể thêm một nhà cung cấp vào hệ thống.
- Với API updateMaker, quản trị viên có thể update một nhà cung cấp có trong hệ thống.
- Với API deleteMaker, quản trị viên có thể xóa một nhà cung cấp ra khỏi hệ thống.
- Với API makers, quản trị viên có thể lấy ra danh sách nhà cung cấp có trong hệ thống
- Với API makerById, quản trị viên có thể lấy ra nhà cung cấp bằng Id.

APIs Product
- Với API createProducts, quản trị viên thêm sản phẩm vào hệ thống.
- Với API updateProducts, quản trị viên có thể chỉnh sửa thơng tin sản phẩm có trong hệ thống.
- Với API deleteProduct, quản trị viên có thể xóa sản phẩm ra khỏi hệ thống.
- Với API productById, quản trị viên có thể lấy sản phẩm bằng Id sản phẩm
- Với API products, quản trị viên có thể lấy tất cả sản phẩm có trong hệ thống.
- Với API productByEventId, người dùng có thể xem các sản phẩm có trong sự kiện đang diễn
ra.
12
Trương Hoàng Nam


APIs Event
- Với API createEvent, quản trị viên có thể tạo một sự kiện mới.
- Với API updateEvent, quản trị viên có thể chỉnh sửa thơng tin của một sự kiện.
- Với API deleteEvent, quản trị viên có thể xóa một sự kiện.
- Với API addProductsIntoEvetn, quản trị viên có thể thêm các sản phẩm vào sự
kiện cho khách hàng bình chọn.

- Với API events, quản trị viên có thể lấy được danh sách các sự kiện.
- Với API listEvent, người dùng có thể xem được các sự kiện đang diễn ra.

APIs Vote
- Với API vote, người dùng có thể bình chọn sản phẩm mình u thích.
- Với API voted, quản trị viên có thể xem biết được sản phẩm được vote. API này cho
phép quản trị viên nhận xem được sản phẩm nào được voted, ngay trong thời gian thực.

3.2 Thực hiện
3.2.1 Người thực hiện.
- Phát triển API cho Questionnaire App: thực tập sinh Trương Hoàng Nam cùng với anh
Nguyễn Thiện Hải.
- Phối hợp cùng team frontend gồm anh Nguyễn Xuân Nghiêm và anh Trần Hoàng Sơn.

13
Trương Hoàng Nam


3.2.2 Quá trình thực hiện
Giai đoạn tìm hiểu dự án
- Tìm hiểu yêu cầu dự án.
- Trao đổi với anh supervisor và team frontend để thống nhất về công nghệ.
Kết quả:
- Thống nhất sự dụng ReactJS để viết frontend, và backend xây dựng bằng framework
NestJS.
Giai đoạn phát triển
- Developer xem các tài liệu liên quan để tìm hiểu dự án.
- Team backend và frontend phối hợp với nhau để phát triển. Khi có bất kỳ vấn đề nào,
đưa vấn đề đó ra trao đổi và thảo luận. Liên lạc với phía khách hàng để chốt các phương
án đưa ra.

- Sau khi developer hồn thành cơng việc, QC sẽ thực hiện phần test để kiểm tra sản
phẩm. Nếu có bất kỳ sai sót nào thì trao đổi với nhóm developer và khách hàng để giải
quyết.
Kết quả
- Hồn thành các cơng việc được giao đúng thời hạn.

14
Trương Hoàng Nam


TỔNG KẾT
Như vậy, trong vòng hơn hai tháng, em đã học hỏi và trãi nghiệm được nhiều thứ bổ ích.
Cơng ty đã giúp em học được các công nghệ hot hiện nay là NestJS, GraphQL, biết tổ chức làm
việc nhóm, trao đổi, giúp đỡ nhau trong công việc. Bên cạnh đó, em cịn học được tác phong,
trách nhiệm đối với nhiệm vụ được giao. Những kiến thức và kinh nghiệm em tích lũy được
trong thời gian qua vơ cùng q giá đối với bản thân.
Chân thành cảm ơn sự giúp đỡ của các anh chị nhóm trainer, đặc biệt là anh Nguyễn
Thiện Hải, anh Lê Ry Good, anh Nguyễn Xuân Nghiêm và anh Trần Hoàng Sơn.
Em cũng xin cảm ơn quý thầy cô khoa Công nghệ Phần mềm đã dạy bảo, cung cấp cho
em những kiến thức nền tảng để có thể tham gia khóa thực tập của cơng ty. Một lần nữa
em xin chân thành cảm ơn.

15
Trương Hoàng Nam


TÀI LIỆU THAM KHẢO
NestJS



TypeORM
/>
GraphQL
/>
16
Trương Hoàng Nam



×