1. Trang chủ
  2. » Giáo Dục - Đào Tạo

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

18 6 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Đề Tài Lập Trình Outsource Với Node.js
Tác giả Nguyễn Phạm Duy Bằng
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại Đề tài lập trình outsource với Node js
Năm xuất bản 2022
Thành phố TP. Hồ Chí Minh
Định dạng
Số trang 18
Dung lượng 288,4 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Nguyễn Phạm Duy Bằng Thực tập tốt nghiệp ĐẠ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 t[.]

Trang 1

ĐẠ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

Trang 2

NHẬN XÉT

(Của giảng viên)

1

Trang 3

MỤC LỤC

Trang 4

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 hoá 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 chuyên 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

Trang 5

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ự hoà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

Trang 6

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

TNHH : Trách nhiệm Hữu hạn

EDL : Enterprise Development Labo

5

Trang 7

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: https://www.vitalify.asia/

- Email: info@vitalify.asia

- Đ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 toà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)

Trang 8

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

Trang 9

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ự hoà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 Quá 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ả:

Trang 10

- 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 hoà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

Trang 11

+ 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ụ

Trang 12

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ú ý + Luôn luôn 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

Trang 13

II Lịch làm việc 

Tuần 1 - Tìm hiểu về công ty, cách tổ chức của công ty.

- 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 Trọng

Tuần 2, 3 - Tìm hiểu về Node.js

- 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 Trọng

Tuần 4 - Tạo một chương trình Node.js hoạt động định

kỳ đơn giản

- Tạo unit test và end-to-end test

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

Mentor: Võ Ngọc Trọng

Tuần 5

- Được tham gia vào nhóm và trải nghiệm làm việc thực tế với dự án

- Tìm hiểu về dự án

- Cài đặt môi trường làm việc cho dự án

- học về các quy định riêng của dự án

Manager: Đoàn Thanh Tùng Mentor: Lê Đức Thắng

Tuần

6, 7, 8

- 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

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

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

Trang 14

- Đượ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

Trang 15

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

Trang 16

- 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 yê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

Trang 17

- 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 hoà đồng, cởi mở, tích cực trong việc dẫn dắt người mới

Trang 18

DANH MỤC TÀI LIỆU THAM KHẢO

[1]  https://www.vitalify.asia/

[2] https://stackoverflow.com/

[3] https://nestjs.org/

17

Ngày đăng: 01/02/2023, 21:23

w