Tải bản đầy đủ (.docx) (18 trang)

Đề tài lập trình outsource với node js

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 (150.11 KB, 18 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

THỰC TẬP TỐT NGHIỆP
ĐỀ TÀI: Lập trình Outsource với Node.js

Cơng ty thực tập: Vitalify Asia Co., Ltd.
Lớp: SE501.N11
Sinh viên thực hiện: Nguyễn Phạm Duy Bằng – 19520397

TP. Hồ Chí Minh, ngày 24 tháng 12 năm 2022


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

NHẬN XÉT
(Của giảng viên)

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


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

1


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

MỤC LỤC
CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP
I. Giới thiệu chung về cơng ty
II. Tầm nhìn phát triển
III. Thơng tin về đơn vị làm việc

6
6
6
7


 CHƯƠNG 2: NỘI DUNG THỰC TẬP
I. Quá trình thực tập
1. Tìm hiểu về cơng ty và đơn vị
2. Nghiên cứu kỹ thuật
a. Nghiên cứu công cụ làm việc
b. NestJS api server
c. NodeJS batch
3. Tham gia dự án
II. Lịch làm việc 

8
8
8
8
8
9
10
11
12

 CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN
I. Giới thiệu
II. Thực hiện
III. Kế hoạch
1. Giai đoạn làm quen dự án
2. Giai đoạn tiếp nhận yêu cầu

14
14
14

14
14
15

CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC QUA ĐỢT THỰC TẬP
I. Kết quả thu được
II. Các điểm yếu của bản thân
III. Cảm nhận về công ty

15
15
16
16

2


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

LỜI NÓI ĐẦU
Ngày nay, việc phát triển phần mềm outsource là một bộ phận không thể thiếu của
ngành công nghiệp phần mềm. Cùng với xu thế phát triển của thế giới, các phần mềm
mới liên tục được tạo ra và số lượng phần mềm cần bảo trì cũng tăng lên nhanh chóng.
Đó cũng là tiền đề cho ngành cơng nghiệp outsource thế giới nói chung và Việt Nam nói
riêng phát triển mạnh mẽ, để đáp ứng nhu cầu cho những công ty hàng đầu về xây dựng
phần mềm trên khắp thế giới.
Sau ba năm học tập ở trường, nhận thấy bản thân thích tìm hiểu nhiều công nghệ,
tiếp xúc với nhiều môi trường, văn hố làm việc nên em đã chọn hướng lập trình

outsource để thực tập. Bên cạnh đó, em cũng mong muốn có thêm kinh nghiệm thực tế,
cũng như muốn được tham gia làm việc trong một mơi trường chun nghiệp. Vì vậy, em
quyết định chọn Công Ty TNHH Vitalify Asia - một công ty mạnh về mảng outsource trở thành công ty thực tập.

3


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn ban giám hiệu và quý thầy cô trường Đại học
Công nghệ Thông tin đã trực tiếp giảng dạy cho em những kiến thức nền tảng cực kỳ
quan trọng về lập trình và tạo ra môi trường học tập rất thuận lợi để em bổ sung kiến
thức, phát triển bản thân.
Em xin gửi lời cảm ơn quý Công Ty TNHH Vitalify Asia đã tạo điều kiện cho em
thực tập tại công ty. Nhờ vào sự hỗ trợ nhiệt tình của các anh/chị trainer, chỉ trong thời
gian 12 tuần ngắn ngủi em đã có thể tự hồn thành tốt cơng việc được giao.
Em xin chân thành cảm ơn!

Nguyễn Phạm Duy Bằng
TP. Hồ Chí Minh, ngày 24 tháng 12 năm 2022

4


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp


DANH MỤC CÁC CỤM TỪ VIẾT TẮT
TNHH
EDL

:
:

Trách nhiệm Hữu hạn
Enterprise Development Labo

5


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

CHƯƠNG 1: GIỚI THIỆU CƠNG TY THỰC TẬP
I.
-

Giới thiệu chung về cơng ty
Tên đơn vị: CÔNG TY TNHH VITALIFY Á CHÂU
Địa chỉ: 224A-224B Điện Biên Phủ, Phường Võ Thị Sáu, Quận 3, Thành phố Hồ
Chí Minh, Việt Nam
Trang web: a/
Email:
Điện thoại:  +84 (028) 3932 6293
Thời gian làm việc: Thứ 2 đến thứ 6: 08h30 - 17h35


Hình 1: Logo Cơng ty TNHH Vitalify Asia

II.

Tầm nhìn phát triển

Kể từ khi thành lập vào năm 2008, Vitalify Asia đã tham gia phát triển phần mềm
tập trung vào thiết bị di động để đạt được tầm nhìn “Delivering happiness through the
Internet”. Với mục tiêu trở thành một nhóm chuyên nghiệp thực sự có thể cạnh tranh
trên phạm vi tồn cầu, mỗi lập trình viên hay quản lý đều mở rộng vai trò và phạm vi
trách nhiệm của cá nhân và cam kết cung cấp giá trị cho người dùng với cấu trúc chia
nhóm nhỏ ưu tú.
Bây giờ, sau hơn 10 năm sau khi thành lập, Vitalify Asia thử thách với một giai
đoạn mới để nâng cao hơn nữa giá trị năng lực tại Việt Nam. Để đạt được mục tiêu
này, Vitalify Asia sẽ tiếp tục nỗ lực cải tiến hàng ngày.
III. Thông tin về đơn vị làm việc
Công ty Vitalify Asia được chia thành nhiều đơn vị làm việc (gọi là labo). Em
được phân công làm việc tại “Enterprise Development Labo” (viết tắt là EDL)
6


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

Enterprise Development Labo là đơn vị chuyên về lập trình outsource, liên kết với
các đối tác tại Nhật để phát triển phần mềm hỗ trợ doanh nghiệp. Đối với mỗi dự án
nhận được, các nhóm lập trình viên cụ thể sẽ được phân cơng từ danh sách thành viên
của EDL. Thơng thường mỗi nhóm sẽ có cấu trúc như sau:

- Quản lý dự án (Project manager): Quản lý tiến độ chung, phân công vai trị cụ
thể cho từng thành viên
- Quản lý quy trình nghiệp vụ (Business process management): Liên lạc với
khách hàng để nắm vững quy trình hoạt động của ứng dụng, yêu cầu cụ thể của
khách hàng và triển khai lại cho các thành viên khác.
- Trưởng nhóm code (Code leader): Xác định cụ thể phần cần code, giao việc
cho developer và review code.
- Lập trình viên: (Developer): Thực hiện code và kiểm thử.

7


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

CHƯƠNG 2: NỘI DUNG THỰC TẬP
Chương trình thực tập kéo dài trong 12 tuần, nhằm mục đích giúp thực tập sinh
làm quen với kỷ luật của cơng ty, hiểu rõ quy trình làm việc và có thể tự hồn thành
cơng việc được giao. Bên cạnh đó, kỳ thực tập cũng giúp cơng ty đánh giá được kỹ
năng và trình độ của thực tập sinh để có thể phân cơng cơng việc một cách hợp lý hơn
I. Q trình thực tập
1. Tìm hiểu về cơng ty và đơn vị
Thời gian: 2 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 chung về công ty, môi trường, lối làm việc, các nguyên tắc.


-

Giới thiệu về cơ cấu nhân sự, tầm nhìn, định hướng phát triển của cơng ty.

-

Được tư vấn về hướng phát triển và dự định của bản thân.

-

Được phân công thực tập tại đơn vị EDL.

-

Giới thiệu về lịch sử, thế mạnh và định hướng của EDL.

-

Giới thiệu về mơ hình nhóm ở EDL.

Kết quả: Hiểu hơn rõ về công ty, về hướng phát triển của bản thân. Biết được cụ
thể các vị trí trong nhóm, có thể đặt mục tiêu phấn đấu.
2. Nghiên cứu kỹ thuật
a. Nghiên cứu công cụ làm việc
Thời gian: 3 ngày
Nội dung:
-

Học cách sử dụng các công cụ, ứng dụng được sử dụng bởi công ty.


Kết quả:

8


Nguyễn Phạm Duy Bằng

-

Thực tập tốt nghiệp

Công cụ quản lý mã nguồn: Tuỳ theo dự án mà cơng ty có thể sử dụng
GitHub, GitLab hoặc Bitbucket. Đã sử dụng được các thao tác cơ bản như
commit code, tạo pull request đối với mỗi công cụ.

-

ChatWork: Công ty sử dụng ChatWork để giao tiếp nội bộ và phân công
task. Đã sử dụng được các chức năng cơ bản như: gửi tin nhắn, đính kèm
tệp, đọc các task được giao, đánh hồn thành task,..

-

HRM: Công ty sử dụng phần mềm nội bộ HRM (web/android/ios) để quản
lý hành chính. Đã sử dụng được các chức năng cơ bản như: điểm danh, báo
nghỉ, xem nội quy, đặt lịch phịng họp,...

-

Zoom: Cơng ty sử dụng Zoom để họp định kỳ hàng tuần. Đã sử dụng được

các thao tác cơ bản như tham gia cuộc họp, bật/tắt camera/micro,...

-

NodeJS: Cài đặt đầy đủ môi trường để lập trình NodeJS.

-

VSCode: Cài đặt đầy đủ mơi trường để lập trình NodeJS trên VSCode.

b. NestJS api server
Thời gian: 10 ngày (2 tuần)
Nội dung tìm hiểu:

Hình 2: Logo NestJS

-

NestJS là một framework Node.js mã nguồn mở, có thể mở rộng, linh hoạt,
tiến bộ để xây dựng ứng dụng phía server. Nó sử dụng TypeScript và rất
linh hoạt để xây dựng các hệ thống phụ trợ hấp dẫn và đòi hỏi nhiều yêu
cầu.

-

NestJS có các phần quan trọng sau:
9


Nguyễn Phạm Duy Bằng


Thực tập tốt nghiệp

+ Module: Mỗi ứng dụng có ít nhất một module. Module là điểm bắt đầu của
mọi thứ. Trong module sẽ mô tả các thành phần cần thiết để hoạt động. Một
module có thể import module khác. Khi ứng dụng được chạy thì root
module sẽ được chạy. Và nó sẽ khởi tạo các module đã import và các thành
phần đã khai báo.
+ Controller: Là đơn vị làm việc của module. Xử lý các việc như routing và
lấy dữ liệu từ request. Khi module được khởi tạo xong thì controller sẽ
được tạo và đưa vào trạng thái lắng nghe request.
+ Provider: Là cơ chế truyền các parameter cần thiết để controller hoạt động.
Sau khi các parameter được khởi tạo xong thì sẽ được truyền vào controller
thơng qua một giao thức khai báo sẵn (gọi là provider).
Kết quả:
-

Tạo một api server đơn giản, bao gồm CRUD và có cơ chế xác thực.

-

Vừa có phiên bản sử dụng MySQL Server vừa có phiên bản dùng
MongoDB.

-

Vừa có phiên bản dùng REST API vừa có phiên bản dùng GraphQL.

-


Viết đầy đủ unit test.

-

Viết đầy đủ end-to-end test.

-

Đã hoàn thành đúng thời hạn.

c. NodeJS batch
Thời gian: 5 ngày (1 tuần)
Nội dung:
-

Thông thường, ứng dụng có những cơng việc cần thực hiện một cách định
kỳ như: xoá những session cũ, tổng kết báo cáo, dựng bản xếp hạng, lọc dữ
liệu rác, gửi thông báo định kỳ,... Các công việc trên thường được thực hiện
bởi một loại chương trình khơng có giao diện, thực hiện một mục đích cụ

10


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

thể với đầu ra cụ thể. Ở EDL, khi viết một chương trình NodeJS thực hiện
các cơng việc trên thì chương trình đó được gọi là NodeJS batch.
-


Một batch cần phải đảm bảo các tiêu chí như:

+ Hoạt động độc lập với ứng dụng: khơng bị ảnh hưởng dù cho ứng dụng
chính đang crash.
+ Hạn chế dùng chung tài nguyên với ứng dụng chính: Nếu ứng dụng chính
và batch cùng dùng 1 tài nguyên thì khi batch được gọi, ứng dụng chính sẽ
bị block. Cần tránh hết sức có thể.
+ Hiệu năng tối đa: Có loại batch có thể được gọi vài lần mỗi giây. Do đó,
ảnh hưởng hiệu năng của nó lên hệ thống là cực kỳ lớn. Cần đặc biệt chú ý.
+ Ln ln có cơ chế sao lưu và phục hồi nếu lỗi xảy ra: Một batch có thể
đến vài phút để thực hiện, tỉ lệ xảy ra lỗi vật lý trong khoảng thời gian trên
là không nhỏ. Nên luôn cần xử lý trường hợp batch bị ngừng giữa chừng.
Kết quả:
-

Viết 1 batch xóa các session đăng nhập quá 1 phút mà chưa sử dụng.

-

Sử dụng Docker và NodeMon để tạo cơ chế hoạt động định kỳ.

-

Đã hoàn thành đúng thời hạn.

3. Tham gia dự án
Sau một tháng được training và thực hành, thực tập sinh đã nắm được những kiến
thức cơ bản về NodeJS và NestJS. Trong thời gian còn lại, thực tập sinh được phân
cơng vào nhóm dự án thực tế để áp dụng kiến thức đã học.

Chi tiết đồ án sẽ được nói ở phần sau.

11


Nguyễn Phạm Duy Bằng

II.

Thực tập tốt nghiệp

Lịch làm việc 

Tuần
Tuần 1

Nội dung thực tập
-

Tuần 2, 3

-

Tuần 4

-

Tuần 5
Tuần
6, 7, 8


-

Người hướng dẫn

Mentor: Võ Ngọc
Tìm hiểu về cơng ty, cách tổ chức của cơng ty.
Trọng
Làm quen với đơn vị làm việc, tìm hiểu về mơ
hình và vai trị của các thành viên trong một
nhóm làm việc.
Làm quen với các cơng cụ làm việc trong cơng
ty.
Làm quen với các quy trình khi làm việc
outsource.
Tìm hiểu về coding rule.
Mentor: Võ Ngọc
Tìm hiểu về Node.js.
Trọng
Tạo một api server đơn giản với Node.js và
Nest.js.
Tạo unit test và end-to-end test.
Được mentor review code và rút kinh nghiệm.
Mentor: Võ Ngọc
Tạo một chương trình Node.js hoạt động định Trọng
kỳ đơn giản.
Tạo unit test và end-to-end test.
Được mentor review code và rút kinh nghiệm.
Được tham gia vào nhóm và trải nghiệm làm Manager: Đồn
việc thực tế với dự án

Thanh Tùng
Tìm hiểu về dự án
Mentor: Lê Đức
Cài đặt môi trường làm việc cho dự án
Thắng
học về các quy định riêng của dự án
Tìm hiểu và thực hiện việc thiết kế test case từ Manager: Đoàn
danh sách yêu cầu
Thanh Tùng
Thực hiện test các case được giao
Mentor: Nguyễn
Viết báo cáo nếu tìm được bug
Mai trung
12


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

-

Được review và rút kinh nghiệm

Tuần 9

-

Được phân công giải quyết vấn đề cụ thể
Thiết kế cách giải quyết vấn đề

Xác định phạm vi ảnh hưởng và viết báo cáo

Manager: Đoàn
Thanh Tùng
Mentor: Nguyễn
Mai trung

Tuần
10, 11, 12

-

Thực hiện code theo thiết kế
Viết unit test
Tạo Pull Request
Được review và rút kinh nghiệm

Manager: Đoàn
Thanh Tùng
Mentor: Nguyễn
Mai trung

13


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

CHƯƠNG 3: CHI TIẾT VỀ DỰ ÁN

I. Giới thiệu
Tên dự án: KShop Management
Mục tiêu dự án: Xây dựng một môi trường back-end hỗ trợ cho ứng dụng bán lẻ
hàng hoá. Bao gồm một api server (NestJS) và một chương trình quản lý các tác vụ
định kỳ (NodeJS).
Đây là một dự án outsource với một đơn vị công ty khác. Nội dung bao gồm nâng
cấp và thêm mới một số tính năng.
II. Thực hiện
- Project Manager: Đoàn Thanh Tùng
- Code Leader: Nguyễn Mai trung
- Developer:
+ Lê Đức Thắng
+ Nguyễn Thuận Thiên
+ Nguyễn Văn Hà
+ Nguyễn Văn Toàn
+ Nguyễn Trung Nguyên
+ Nguyễn Phạm Duy Bằng
III. Kế hoạch
1. Giai đoạn làm quen dự án
Thời gian: 20 ngày (4 tuần)
Nội dung:
-

Nghe phổ biến quy tắc làm việc của phía đối tác và một số quy định riêng
cho dự án.

-

Tìm hiểu và thực hiện việc thiết kế test case từ danh sách yêu cầu.


-

Thực hiện test các case được giao.
14


Nguyễn Phạm Duy Bằng

-

Thực tập tốt nghiệp

Viết báo cáo nếu tìm được bug.

Kết quả:
-

Nhờ vào việc thiết kế test case, em có cơ hội được phân tích u cầu, được
thảo luận với các mọi người về mục tiêu của dự án và hình dung rõ ràng
hơn về dự án.

-

Khi thực hiện kiểm thử, em có cơ hội khám phá ứng dụng cũng như biết
được các vùng tác động của code.

-

Hoàn thành đúng hạn nhiệm vụ được giao.


2. Giai đoạn tiếp nhận yêu cầu
Thời gian: 20 ngày (4 tuần)
Nội dung:
-

Nhận source code và tìm hiểu cách hệ thống vận hành.

-

Chuyển chức năng import/export khách hàng từ CSV sang Excel.

-

Sửa một số lỗi hệ thống.

-

Viết unit test và end-to-end test.

Kết quả:
-

Hoàn thành tốt yêu cầu được giao.

CHƯƠNG 4: KẾT QUẢ ĐẠT ĐƯỢC QUA ĐỢT THỰC TẬP
I. Kết quả thu được
-

Được tiếp xúc với NestJS, MongoDB, Docker, GraphQL.


-

Trau dồi nhiều hơn về kiến thức Back-end.

-

Được làm việc trong một môi trường kỷ luật cao. Rèn luyện tính tỉ mỉ và cẩn thận.

-

Nâng cao khả năng research.

-

Học được cách tiếp cận dự án mới một cách nhanh và hiệu quả thông qua test
case.

-

Nâng cao kỹ năng làm việc nhóm.
15


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

-

Biết cách trình bày ý tưởng và giải đáp thắc mắc khi được yêu cầu.


-

Biết cách trình bày câu hỏi rõ ràng qua văn bản.

II. Các điểm yếu của bản thân
-

Cần tích lũy thêm kinh nghiệm, nâng cao khả năng optimize code và query.

-

Cần cởi mở hơn trong việc tiếp nhận ý kiến nhận xét của mọi người.

III. Cảm nhận về công ty
-

Cơ sở vật chất tốt, gần gũi với tự nhiên, khơng khí trong lành.

-

Công ty cho phép làm việc tại nhà (work from home), rất phù hợp để vừa học vừa
làm.

-

Công ty có định hướng rõ ràng, có tham vọng và động lực phát triển.

-


Thành viên EDL hồ đồng, cởi mở, tích cực trong việc dẫn dắt người mới.

16


Nguyễn Phạm Duy Bằng

Thực tập tốt nghiệp

DANH MỤC TÀI LIỆU THAM KHẢO
[1]  a/
[2] />[3] />
17



×