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

Báo cáo thực tập xây dựng server với NodeJS ExpressJS

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 (1.39 MB, 20 trang )

0

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

Xây dựng server với NodeJS - ExpressJS

Công ty thực tập

: TNHH Công Nghệ SUMVIET

Người phụ trách

: Nguyễn Vĩnh Khiêm

Thực tập sinh

: Trương Viết Huy Phong

TP. Hồ Chí Minh, tháng 01 năm 2021
Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


1

LỜI MỞ ĐẦU

Hàng triệu doanh nghiệp sử dụng Internet như một kênh truyền thơng giúp tiết kiệm chi


phí. Nó cho phép doanh nghiệp trao đổi thông tin với thị trường mục tiêu của mình và thực hiện
các giao dịch một cách nhanh chóng, an tồn. Tuy nhiên, các hoạt động này chỉ trở nên hiệu quả
khi doanh nghiệp có thể nắm bắt và lưu trữ tất cả các dữ liệu cần thiết và có phương tiện xử lý
tồn bộ các thơng tin này, sau đó tiến hành trình bày kết quả cho người dùng. Từ đó xuất hiện
Web app là những ứng dụng chạy trên web. Thông qua web app, người dùng có thể thực hiện
một số cơng việc: tính tốn, chia sẻ hình ảnh, mua sắm … Tính tương tác của web app cao
hơn website rất nhiều. Bên cạnh đó, các tập đồn lớn như Google, Facebook ra mắt những
framework hỗ trợ lập trình viên xây dựng các ứng dụng web như NodeJS, Express với nhiều
phiên bản khác nhau
Cùng với xu thế đó, Cơng ty Cổ phần Codosa Holing , cụ thể hơn là mảng Codosa Tech
chọn tập trung nghiên cứu và xây dựng các ứng dụng theo mã nguồn mở. Và thực tập sinh được
trực tiếp tham gia vào quá trình dưới sự hướng dẫn, định hướng của công ty.
Sau ba năm học tập trên trường, với mong muốn có thêm kinh nghiệm thực tế, cũng như
được tham gia phát triển ứng dụng di động trong một môi trường chuyên nghiệp, nên em đã
quyết định chọn Codosa nơi giúp em thực hiện những dự định này

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


2

LỜI CẢM ƠN
Em xin gửi lời cảm ơn đến Trường đại học Công Nghệ Thông Tin, quý thầy cô trong
trường đã tận tình chỉ dạy để bổ sung kiến thức cho em suốt thời gian theo học tại trường.
Và em xin gửi lời cảm ơn đến anh Nguyễn Vĩnh Khiêm, anh Nguyễn Quốc Khánh đã tạo
điều kiện cho em có cơ hội được thực tập tại công ty, cùng tất cả các anh đã giúp đỡ, chỉ bảo
trong quá trình thực tập.
Q trình thực tập tại cơng ty đã giúp em học hỏi được rất nhiều, từ tác phong, thái độ
làm việc đến các vấn đề kỹ thuật, từng bước hoàn thiện sản phẩm… Xin cảm ơn tất cả mọi

người đã động viên, giúp đỡ và chia sẻ những kinh nghiệm quý báu, giúp em có những trải
nghiệm tuyệt vời trong thời gian tại công ty
Trương Viết Huy Phong
TP. Hồ Chí Minh, ngày 14 tháng 01 năm 2021

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


3

NHẬN XÉT CỦA KHOA

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

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

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


4

MỤC LỤC
LỜI MỞ ĐẦU.............................................................................................................................................1
LỜI CẢM ƠN.................................................................................................................................................2
Chương 1: Giới thiêu công ty thực tập.......................................................................................................5
1.

Giới thiệu công ty Gameloft..........................................................................................................5

2.

Sản phẩm của công ty....................................................................................................................5

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...............................................................6

2.

Nghiên cứu kỹ thuật.......................................................................................................................6

3.


Thực hiện project...........................................................................................................................9

4.

Lịch làm việc...................................................................................................................................9

Chương 3: Chi tiết về project.....................................................................................................................12
1.

Giới thiệu về PawnVn..................................................................................................................12

2.

Thực hiện......................................................................................................................................17

TÀI LIỆU THAM KHẢO..........................................................................................................................18
TỔNG KẾT..................................................................................................................................................19

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


5

Chương 1: Giới thiêu công ty thực tập

1. Giới thiệu công ty Gameloft
Tên công ty: Codosa Holding
Địa chỉ: 74/43/8 Đường số 20, Khu phố 1, Phường Long Thạnh Mỹ, Quận 9, TP

Hồ Chí Minh.
Email:
Điện thoại: 0931 78 00 31 - 0936 04 72 39
SUMVIET là một công ty startup trực thuộc công ty CODOSA HOLDING được
thành lâp từ năm 2017, là một công ty phát triển các sản phẩm cơng nghệ:
Blockchain, Smart Contract, sàn thương mại điện tử, ví điện tử, … trên các nền tảng
Web, Android, IOS.

2. Sản phẩm của công ty
Codosa Tech hiện tại đã và đang cung cấp các sản phẩm công nghệ từ website
(Thương mại điện tử, Fintech, … ), ứng dụng di động (Ví điện tử, … ) đến game,
sàn trade dựa trên các nền tảng như Binary Option, MT4 & MT6 Platform, trade
Forex, Crypto, …

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


6

Chương 2: Nội dung thực tập
Trong kỳ thực tập này, em phối hợp cùng 3 bạn khác ( 2 bạn front-end, và một bạn
backend) phát triển giai đoạn 1 cho dự án ứng dụng Pawnvn - hỗ trợ khách hang có nhu cầu
mua bán và trao đổi sản phẩm, hoặc qua trung gian thực hiện việc cầm cố tài sản. Nhóm bắt đầu
dự án với các bản giới thiệu và mơ tả sản phẩm từ phía cơng ty, cùng với sự chỉ dẫn giúp đỡ của
các anh chị hướng dẫn, đến thời điểm em viết báo cáo này, nhóm đã hoàn thành cơ bản module
chức năng giai đoạn 1( Chi tiết dự án sẽ được mô tả ở phần sau và giới hạn theo quy định của
cơng ty).

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

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 nghe người phụ trách giới thiệu về cơng ty, q trình thành lập và phát triên
(như đã nhắc đến ở trên), quy trình làm việc từ cao xuống thấp, cách thức tổ chức của
cơng ty .
Ngồi ra, thực tập sinh cịn đượ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 email trong công
việc…
Kết quả : Hiểu thêm về cơng ty, q trình thành lập và phát triển. Có thêm các kỹ năng
về việc sử dụng email trong cơng việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm
hơn..

2. Nghiên cứu kỹ thuật
2.1. Các cơng cụ làm việc
Thời gian : 4 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, supervisor đã hướng dẫn thực tập sinh tìm hiểu về các cơng
cụ sẽ giúp ích cho trong cơng việc sau này. Một số phần mềm trong số đó như Gitlab

2.2.

- sử dụng trong làm việc nhóm, VScode - một editor để xây dựng ứng dụng
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả : Lập trình sử dụng các cơng cụ miễn phí, giúp dễ dàng kết hợp các cơng cụ
với nhau, so với việc dung các IDE.
Tìm hiểu ngôn ngữ Typescript
Thời gian : 3 ngày (1 tuần)

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong



7

Nội dung : Ôn tập về các kiến thức javascript căn bản, javascript ES6 ( arrow
functions, async, await, promise, … ) và training về các kỹ thuật của typescript, sự
khác nhau của typescript và javascript, sử dụng typescript với framework Express để
xây dựng và phát triển server.
Thực hiện :
- Tham gia đầy đủ các buổi training của công ty.
- Làm các bài thực hành, kiểm tra về kiến thức đã học.
Kết quả :
-

2.3.

Nâng cao kỹ năng lập trình với ngơn ngữ typescript
Có được những kiến thức quan trọng cho việc lập trình server sau này.
Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho đúng
chuẩn, dễ đọc, dễ hiểu.

Tìm hiểu RESTful API và Framework ExpressJS
Thờ gian: 6 ngày (2 tuần)
Nội dung: Các kiến thức cơ bản về RESTfulAPI và ExpressJS
-

Cơ bản về RESTful API
RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng
dụng web (thiết kế Web services) để tiện cho việc quản lý các resource. Nó chú
trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu

động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải

-

qua HTTP.
Framework React Native
Expressjs là một framework được xây dựng trên nền tảng của Nodejs. Nó
cung cấp các tính năng mạnh mẽ để phát triển web hoặc mobile. Expressjs hỗ trợ
các method HTTP và midleware tạo ra API vô cùng mạnh mẽ và dễ sử dụng.…

Thực hiện :
-

Tham gia đầy đủ các buổi trainning.

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


8

-

Tự đọc thêm tài liệu, nghiên cứu thêm về các library, luyện tập thêm về cách cài
đặt, sử dụng các library.

Kết quả :

2.4.


-

Làm quen, hiểu được kiến trúc cơ bản của các thành phần trong NodeJS,

-

ExpressJS.
Thành thạo việc cài đặt, config và sử dụng các thư viện cần dùng cho project

Tìm hiểu MongoDB
Nội dung : Các kỹ thuật cơ bản trong mongodb
-

Định nghĩa về MongoDB:
MongoDB là một cơ sở dữ liệu mã nguồn mở và là cơ sở dữ liệu NoSQL(*) hàng
đầu, được hàng triệu người sử dụng. MongoDB được viết bằng C++.
Ngoài ra, MongoDB là một cơ sở dữ liệu đa nền tảng, hoạt động trên các khái
niệm Collection và Document, nó cung cấp hiệu suất cao, tính khả dụng cao và
khả năng mở rộng dễ dàng.

-

Sử dụng thư viện mongoose hỗ trợ thao tác với mongodb
Mongoose là một thư viện JavaScript cho phép bạn định nghĩa các schema với dữ
liệu được định kiểu rõ ràng. Khi một schema được định nghĩa, Mongoose cho
phép bạn tạo một Model dựa trên một schema cụ thể. Model của Mongoose sau
đó được ánh xạ tới một MongoDB document thông qua định nghĩa schema của
Model.

Thực hiện :

-

Tham gia đầy đủ các buổi training.
Xây dựng model và các api thực thi transaction trên các model.

Kết quả:
-

Đã có thể xây dựng model của hệ thống, thực thi các transaction trên các model
thông qua API.

3. Thực hiện project

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


9

Sau 1 tháng được training, thực hành và tự nghiên cứu tìm hiểu thêm về Typescript và
ExpressJS thực tập sinh được trang bị kiến thức cơ bản về lập trình server, sử dụng các
công cụ hỗ trợ debug, các quy tắc code dễ đọc, dễ hiểu và bảo trì, cách tổ chức cấu trúc
cây thư mục, tận dụng và tái sử dụng code. Thực tập sinh được sắp xếp tham gia vào 01
team để xây dựng một ứng dụng của công ty đang bắt đầu phát triển áp dụng những kiến
thức đã học để thực hiện.
Chi tiết đồ án sẽ được nói ở phần sau.

4. Lịch làm việc

Tuần


1

2

3
4

Mức
độ
Cơng việc
Người hướng dẫn
hồn
thành
- Tìm hiểu về cơng ty, Anh Nguyễn Vĩnh 100%
cách tổ chức của Khiêm
công ty.
- Làm quen với các
công cụ làm việc
trong công ty.
- Học cách trao đổi,
làm việc qua email.
- Học tập ôn lại các Anh Nguyễn Quốc 100%
kiến thức cũ, nắm Khánh
chắc những gì cơ Anh Nguyễn Cơng
bản đã học.
Minh
- Tìm hiểu, ơn tập về
Typescript, NodeJS,
ExpressJS.

- Tìm
hiểu
về Anh Nguyễn Quốc 100%
MongoDB, sử dụng Khánh
thư viện mongoose Anh Nguyễn Công
để làm việc với Minh
mongoDB.
- Cấu trúc source code. Anh Nguyễn Quốc 100%
- Tìm hiểu, nắm bắt Khánh
thơng tin dự án.
- Tìm hiểu các quy
trình của ứng dụng

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

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


10

PawnVN chuẩn bị triển
khai.
Tiến hành dự án
Anh Nguyễn Vĩnh 100%
PawnVn, giai đoạn 1
Khiêm
-


Thực hiện các chức
năng đăng nhập,
đăng kí, xác thực
thông qua sms.

-

Xây dựng model
tổng quan về
authencation.

5

-

6&7

8

9 & 10

11 trở đi

Thực hiện chức
năng phân quyền
cho admin.
- Xây dựng service
xác thực người dùng
theo cơ chế token.
- Xây dựng các chức

năng xác thực KYC
của người dùng.
- Các api liên quan
đến thông tin của
người dùng.
- Tìm
hiểu ci/cd,
docker giúp triển
khai ứng dụng liên
tục
- Tìm hiểu PM2,
Nginx và config
ecosystem file của
pm2.
- Phân tích chức năng
của hệ thống theo
nhu cầu của anh
Nguyễn
Vĩnh
Khiêm.
- Xây dựng các model
của ứng dụng.
- Xây dựng các API.
-

Anh Nguyễn Vĩnh 100%
Khiêm

Anh Nguyễn Vĩnh 100%
Khiêm


Anh Nguyễn Quốc 100%
Khánh
Anh Nguyễn Công
Minh

Anh Nguyễn Vĩnh 100%
Khiêm

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


11

-

Viết document và
Swageer.
Viết Unit test cho hệ
thống.
Phân công công việc
cho các thành viên
trong nhóm.
Tham gia các hoạt
động nghiên cứu,
cuộc thi tại công ty.

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong



12

Chương 3: Chi tiết về project
Theo quy chế đối với thực tập sinh, trích dẫn:
Điều 5: Bảo mật thơng tin
Phần a.Thông tin của khách hàng: … Bảo mật thông tin khách hàng ( họ tên, địa chỉ,
điện thoại, sản phẩm, doanh thu, dữ liệu, …)
Phần b.Thông tin của công ty: … Đảm bảo an tồn thơng tin về sản phẩm, dự án đang
trong giai đoạn kế hoạch, phát triển sản phẩm hoặc chưa được phép công bố
Nên phần này sẽ mơ tả giới hạn về q trình thực tập

1. Giới thiệu về PawnVn
1.1.

Giới thiệu
PawnVn là ứng dụng thương mại điện tử theo hình thức P2P kết hợp với mall từ
đối tác hoặc sở hữu của công ty. Ứng dụng cho phép người dùng giao dịch trực
tiếp thông qua ứng dụng dưới sự kiểm duyệt sản phẩm từ cửa hàng và các chuyên
gia kiểm định nhằm đem lại sản phẩm đúng và an toàn với người mua và người
bán.

1.2.

Chi tiết ứng dụng
Ứng dụng được xây dựng bằng ReactJs, server sử dụng NodeJS với mục đích tiết
kiệm chi phí khi phát triển ứng dụng.
Các công nghệ sử dụng trong dự án:
o Mongoose: Mongoose là một framework JavaScript thường được sử dụng

trong ứng dụng Node.js với database là MongoDB
o Bcrypt: BCrypt là một thuật tốn mã hóa mật khẩu được thiết kế bởi Niels
Provos and David Mazières.
BCrypt được đánh giá là bảo mật và an toàn hơn so với MD5 và SHA bởi
mỗi lần thực hiện băm nó lại cho một giá trị khác nhau, việc này khiến cho
việc dị tìm mật khẩu trở nên khó hơn.
o Jsonwebtoken: JSON Web Token (JWT) là 1 tiêu chuẩn mở (RFC 7519)
định nghĩa cách thức truyền tin an toàn giữa các thành viên bằng 1 đối
tượng JSON. Thơng tin này có thể được xác thực và đánh dấu tin cậy nhờ

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


13

vào “chữ ký” của nó. Phần chữ ký của JWT sẽ được mã hóa lại bằng
HMAC hoặc RSA.
o Swagger-ui-express: Swagger UI là một tool cho phép bất kỳ ai - từ
developers cho đến end users - có thể hình dung và tương tác với các tài
nguyên API của dự án. Tool này sẽ tự động generates ra API documents từ
file config Swagger, với cái nhìn trực quan và việc triển khai trở nên dễ
dàng hơn cho phía client.
o Axios: Axios là một HTTP Client được viết dựa trên Promise, được dùng
cho việc hỗ trợ xây dựng các ứng dụng API, nó có thể sử dụng trong React,
Vue, Angular…
o Cors: CORS là một cơ chế cho phép nhiều tài nguyên khác nhau (fonts,
Javascript, v.v…) của một trang web có thể được truy vấn từ domain khác
với domain của trang đó. CORS là viết tắt của từ Cross-origin resource
sharing

o Helmet: Helmet là một package được viêt để giúp bạn bảo vệ ứng dụng của
mình khỏi những lỗ hổng đã biết bằng cách thiết lập các Http headers một
cách phù hợp Thực tế thì Helmet chỉ là một tập hợp các Middleware nhỏ
làm nhiệm vụ thiết lập các Http headers liên quan đến bảo mật
o PM2: pm2 là một trình quản lý các process (tiến trình) dành cho các ứng
dụng Nodejs. Nó được viết bằng chính Nodejs và Shell. PM2 cũng được
tích hợp bộ cân bằng tải (load balancer). Bạn có thể giữ cho các process của
server còn sống và reload/restart với zero downtime.

1.3.

o Nginx: là một phần mềm web server mã nguồn mở nỗi tiếng. Ban đầu nó
dùng để phục vụ web HTTP. Tuy nhiên, ngày nay nó cũng được dùng làm
reverse proxy, HTTP load balancer và email proxy như IMAP, POP3, và
SMTP
Một số giao diện:
Một sơ màn hình giao diện hệ thống và màn hình giao diện swagger

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


14

Màn hình swagger thể hiện các thơng tin api của ứng dụng.

Màn hình terminal deploy ứng dụng thơng qua pm2

Màn hình log các thơng tin khi ứng dụng chạy


Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


15

Màn hình đăng nhập

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


16

Màn hình đăng kí

Màn hình xác thực OTP

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


17

Màn hình phân quyền

2. Thực hiện
4 thành viên của team fresher PawnVN:
-


Trương Viết Huy Phong
Chung Nguyễn Trường Duy
Võ Phi Nhật Duy
Trần Quốc An

Và sự giúp đỡ tận tình của team trainer Codosa Holding.

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


18

TÀI LIỆU THAM KHẢO
Mongodb

Packages

Typescript
/> />a/p/tim-hieu-typescript-va-kien-thuc-co-ban-PmeRQpnyGoB
pm2

/>nginx
/>
Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong


19


TỔNG KẾT

Sau 7 tháng thực tập tại công ty, em đã học được rất nhiều đều, không chỉ kiến thức riêng
về lập trình mà cịn về quy chuẩn làm việc tại công ty, để biết được rằng hiện tại những doanh
nghiệp đang làm việc như thế nào, phối hợp nhân lực ra sao.
Hơn nữa, em còn được tiếp thu những kinh nghiệp quý báu từ các anh chị và đồng
nghiệp, góp phần giúp em hồn thiện kiến thức, kỹ năng của mình và đạt được một số thành
cơng nhất định trong q trình thực tập tại cơng ty.
Về tư tưởng của bản thân, em biết được làm sao để trở thành một lập trình viên, các
những lập trình viên khác giải quyết vấn đề, về nghề nghiệp sẽ làm trong tương lai, định hướng
nghề nghiệp.

Nguyễn Vĩnh Khiêm
Trương Viết Huy Phong



×