báo cáo thực tập nodejs backend developer

31 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo thực tập nodejs backend developer

Đ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

Công nghệ Web, là bản ngã của sự tiến bộ, khôngchỉ đáp ứng mà còn vượt qua mọi nhu cầu của con người, từ việcthương mại đến việc chia sẻ thông tin và tạo ra các trải nghiệmgiao tiếp tiên

Trang 1

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

Trang 2

LỜI MỞ ĐẦU

Trong thời kỳ cách mạng công nghiệp 4.0, sự bùng nổ của côngnghệ thông tin nói chung và ngành Công nghệ phần mềm nóiriêng đang định hình một bức tranh mới cho sự phát triển toàndiện của xã hội Công nghệ Web, là bản ngã của sự tiến bộ, khôngchỉ đáp ứng mà còn vượt qua mọi nhu cầu của con người, từ việcthương mại đến việc chia sẻ thông tin và tạo ra các trải nghiệmgiao tiếp tiên tiến.

Với hơn 1.5 tỷ trang web hiện tại, không có dấu hiệu nào cho thấysự giảm thiểu trong nhu cầu tạo ra những trang web mới, khiếncho thách thức của việc xây dựng một sản phẩm web đạt chấtlượng cao trở nên ngày càng phức tạp Để nổi bật trong mảng này,không chỉ về hình thức mà còn về nội dung, Full stack webdeveloper trở thành sự lựa chọn đúng đắn cho những người muốnđồng hành cùng sự đổi mới và sáng tạo trong ngành công nghiệpweb.

Sau những năm học tập tại đại học, khao khát áp dụng kiến thứcđã nắm bắt và tích lũy kinh nghiệm thực tế, quyết định tham giavào môi trường chuyên nghiệp là một bước quan trọng Công tySkydev đã được chọn là điểm đến lý tưởng, mang đến không chỉ sựchuyên sâu mà còn là cơ hội để thử thách bản thân và đưa ranhững đóng góp đáng giá trong sự phát triển không ngừng củangành công nghiệp web.

Trang 3

LỜI CẢM ƠN

Em xin trân trọng gửi lời cảm ơn anh Võ Ngọc Duy đã tạo điều kiện cho em cơ hộiđược thực tập tại công ty Dù trong thời gian ngắn nhưng nhờ sự chỉ dẫn nhiệt tìnhcủa anh Duy, em đã tiếp thu những kiến thức quan trọng để có thể tham gia một dựán thực tế

Chân thành cảm ơn các anh chị trong team Backend Developer đã bỏ ra nhiều thờigian, công sức để hướng dẫn, hướng dẫn, giúp đỡ em tận tình trong khi làm quenmôi trường mới cũng như trong việc tiếp cận kiến thức công nghệ, kỹ năng lập trìnhvà tư duy sản phẩm để có thể thực hiện tốt dự án cá nhân và dự án thực tế trong thờigian qua

Em 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áo cáo này

TP HCM, tháng 12 năm 2023Trần Duy Khôi

Trang 5

MỤC LỤC

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

1.1 Giới thiệu công ty Skydev 8

1.2 Sản phẩm công ty 9

1.2.1 Mạng xã hội Cafefinz 9

1.2.2 Kênh tin tức kinh tế, tài chính Investo 11

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

CHƯƠNG 2: NỘI DUNG THỰC TẬP 13

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

2.2 Nghiên cứu kỹ thuật 13

Trang 7

DANH MỤC HÌNH ẢNH

Hình 1.1 Logo công ty SkeDev 8

Hình 1.2 Website mạng xã hội Cafefinz 9

Trang 8

CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP1.1 Giới thiệu công ty Skydev

Hình 1.1 Logo công ty SkeDev

- Tên công ty: Công ty TNHH Skydev- Năm thành lập: 2021

- Địa chỉ: 19 Tố Hữu, Thủ Thiêm, Thành Phố Thủ Đức, Thành phố Hồ Chí

Minh, Việt Nam

- Website công ty: https://skydev.vn/

- CEO của công ty: anh Võ Ngọc Duy

- Skydev là công ty phần mềm Việt Nam luôn thấu hiểu nhu cầu của khách

hàng và thị trường Với kinh nghiệm làm việc trong lĩnh vực phát triển bất động sản và kinh doanh nước ngoài, chúng tôi giúp các đối tác/khách hàng của mình tiết kiệm thời gian, quản lý hoạt động kinh doanh của họ bằng cáchcung cấp cho họ Ứng dụng Web & Di động Hệ thống PropTech đầy đủ Sản phẩm của chúng tôi có thể hỗ trợ các nhà phát triển và đại lý bất động sản quản lý tài sản, doanh số bán hàng của họ cũng như tổ chức các sự kiện cho khách hàng của họ.

Trang 9

1.2 Sản phẩm công ty

1.2.1 Mạng xã hội Cafefinz

Hình 1.2 Website mạng xã hội Cafefinz

Hình 1.3 Ứng dụng di động mạng xã hội Cafefinz

Trang 10

- Giới thiệu chung:

o CafeFinz được thành lập vào năm 2022 - với định hướng trở thành

diễn đàn về đầu tư và là nơi kết nối, giao lưu các nhà đầu tư Việt.

o Cafefinz tập trung và xoay quanh những nội dung, kiến tức và tin tức

về đầu tư Thêm vào đó, đây còn là nơi mà bạn có thể trình bày nhữngquan điểm cá nhân về đầu tư nói chung, và về đầu tư tài chính nói riêng.

o Bên cạnh đó, đến với diễn đàn bạn cũng có quyền tự do tạo những

chủ đề và bình luận những vấn đề về đầu tư, tham gia hỏi/đáp, tham khảo kiến thức, tham gia phân tích thị trường, các chủ đề về phân tíchthị trường nói chung.

o Cafefinz còn mang đến nhiều thông tin đầu tư với nhiều lĩnh vực và

chuyên mục khác nhau như quỹ đầu tư, bất động sản, phân tích kỹ thuật, hàng hóa, chứng khoán, vàng, dầu… Đây hứa hẹn sẽ là nơi mà nhà đầu tư có thể cập nhật ngay các xu hướng và tin tức mới nhất trênthị trường.

o CafeFinz đã và đang tích cực cải tiến hệ thống và sẽ luôn đặt mục tiêu

xây dựng nên một cộng đồng đầu tư lớn mạnh tại Việt Nam.

Trang 11

1.2.2 Kênh tin tức kinh tế, tài chính Investo

Hình 1.4 Website kênh tin tức Investo

- Giới thiệu chung:

o Investo là trang thông tin tổng hợp, tập trung vào các tin tức mới và

quan trọng có ảnh hưởng mạnh tới nền kinh tế toàn cầu nói chung và thị trường tài chính nói chung Nguồn thông tin của Investo luôn đượctổng hợp mỗi ngày và theo sát các vấn đề nóng hổi với mọi lĩnh vực, trải dài từ chứng khoán, ngoại hối, … tới tiền ảo, kinh tế - chính trị,

o Sức mạnh của thông tin luôn được khẳng định trong mọi ngành nghề,

và đối với một ngành đặc thù như tài chính thì việc nắm giữ được thông tin là nắm giữ được sức mạnh Nắm được xu thế và nhu cầu về một nguồn tin liên tục và đáng tin cậy, Investo được tạo ra bởi đội ngũ đầy nhiệt huyết, yêu thích sáng tạo và năng động.

o Sứ mệnh: Mục tiêu dài hạn của Investo là sẽ trở thành trang thông tin

đáng tin cậy đồng thời là nơi ghé thăm thường xuyên của cộng đồng giao dịch tài chính Ngoài ra, trong tương lai Investo cũng hướng tới việc giao lưu và trao đổi giữa tất cả nhà đầu tư và giao dịch ở mọi cấpđộ trong và ngoài nước Trở thành cầu nối để các nhà đầu tư có thể dễ

Trang 12

dàng tham gia thị trường và đạt lợi nhuận cũng là một mục tiêu quan trọng của Investo.

- Một số tính năng chính:

o Xem các bài báo tin tức về kinh tế, tài chính.

o Phân loại tin tức theo từng lĩnh vực cụ thể (Điền điện tử, Vàng – Dầu,

Ngân hàng,…).

o Có những khóa học về chứng khoán, đầu tư, cổ phiếu,…

o Xem thông tin thực về giá cổ phiếu, lịch chia cổ tức,… của các công

ty trên thị trường.

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

- Em tham gia làm việc tại công ty bắt đầu từ ngày13/07/2023 tới 13/10/2023, các ngày làm việc trong tuần làtừ thứ 2 tới thứ 6

- Công việc hằng ngày bắt đầu từ lúc 8h30 đến 17h30 Thờigian nghỉ trưa khoảng 1 tiếng 30 phút từ 12h-13h30

- Công ty Skydev vận hành theo mô hình Agile Scrum nên sẽtổ chức Daily Meeting vào 9h30 hằng ngày Trong buổimeeting, mọi người sẽ báo cáo những công việc đã hoànthành được trong ngày hôm trước, những khó khăn và nhữngcông việc sẽ làm trong ngày hôm nay cho anh PO của team.

- Môi trường giao tiếp: tiếng Việt.

Trang 13

CHƯƠNG 2: NỘI DUNG THỰC TẬP

2.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, quy trình chấmcông, họp nội bộ và khách hàng, văn hóa làm việc của công ty…Kết quả: Hiểu được cơ bản về cách hoạt động, quy trình phát triểnphầm mềm của công ty, nhiêm vụ hằng ngày và quy trình thựchiện…

2.2 Nghiên cứu kỹ thuật2.2.1 Tuần 1

o Giao tiếp, trò chuyện và tìm hiểu các thành viên khác

trong công ty.

o Nghiên cứu và tìm hiểu thêm một số kỹ thuật liên quan

khác như: Cron Job, Message Queue, Redis Cache, AWSS3…

o Làm một demo nhỏ theo yêu cầu của người hướng dẫn.

Trang 14

- Kết quả:

o Nắm được tổng quan và cách áp dụng cơ bản của các

kỹ thuật trên.

o Xây dựng được một demo server các api của một ứng

dụng quản lý khu chăm sóc chó bằng frameworkNestJS, bao gồm:

 Api đăng ký và đăng nhập

 Api xem, thêm, xóa, sửa tài khoản cho Admin Api xem, thêm, xóa, sửa thông tin chó

 Api nhận nuôi hoặc bỏ nhận nuôi chó Api xem, thêm, xóa, sửa chuồng

 Api thêm chó vào chuồng hoặc cập nhật chó quachuồng khác

 Api gửi mail xác nhận nhận nuôi chó Api đăng tải ảnh lên S3 của AWS

2.2.3 Tuần 3- Nội dung:

o Tìm hiểu source code của một số dự án mà công ty đã và đang làm.o Refactor lại một số chỗ trong source code Backend của dự án Investo.- Kết quả:

o Nắm được cấu trúc, cách tổ chức mã nguồn của một dự án Backend

và phong cách code của công ty.

o Một số chỗ của source code Backend của dự án Investor được refactor

lại giúp clean và có hiệu năng cao hơn.

Trang 15

o Xây dựng API cho chức năng gửi mail thông báo của dự án Cafefinz

với điều kiện:

 Gửi nhiều mail với nhiều nội dung khác nhau để đính kèm mãcho phép người dùng hủy đăng ký nhận mail.

 Do số lượng mail gửi đi lớn nên phải set-up một RedisDatabase để đưa mail vào hàng đợi trong Redis rồi mới gửitheo từng lượt.

- Kết quả: Chức năng được hoàn thành tốt.

2.2.6 Tuần 6- Nội dung:

o Tham gia vào một dự án mới của công ty: dự án E-Commerce có tên

Rich Beauty Supply.

o Dựng source code của dự án Rich Beauty.

o Trao đổi, bàn bạc và đóng góp ý kiến trong việc xây dựng Database

cho dự án Rich Beauty Supply.

- Kết quả:

o Source code của dự án Rich Beauty Supply được dựng xong.o Database của dự án Rich Beauty Supply được tạo hoàn thành.

2.2.7 Tuần 7- Nội dung:

Trang 16

o Tham gia xây dựng API cho một số module của dự án Rich Beauty

Supply như: Users, Banners, Products, Reviews,…

o Sửa một số lỗi do QC báo cáo lại.- Kết quả:

o Hoàn thành được các API cho một số module trên của dự án Rich

o Các lỗi do QC báo cáo được sửa hoàn thành.

2.2.8 Tuần 8- Nội dung:

o Xây dựng API cho các module Bookings và Booking_Payments cho

dự án Rich Beauty Supply.

o Tích hợp cổng thanh toán bằng thẻ tín dụng thông qua nhà cung cấp

dịch vụ Authorize.net

- Kết quả:

o Hoàn thành được các API cho các module trên.

o Tích hợp thành công cổng thanh toán thông qua Authorize.net và

nhận webhooks trả về mỗi khi thanh toán thành công hoặc thất bại.

2.2.9 Tuần 9- Nội dung:

o Xây dựng API cho tính năng tạo, sửa, xóa “Bài viết có dạng khảo sát”

( gồm câu hỏi, ảnh, nhiều lựa chọn và cho người dùng bình chọn,…)trong dự án Cafefinz.

o Sửa một số lỗi do QC báo cáo lại.

Trang 17

2.2.10 Tuần 10- Nội dung:

o Xây dựng API cho tính năng “Trang các nhân công khai” của dự án

Cafefinz, bao gồm:

 Lấy thông tin cơ bản của tài khoản.

 Lấy thông tin các nhóm tài khoản đã tham gia. Lấy thông tin bài viết mà tài khoản đã đăng tài. Lấy thông tin bình luận mà tài khoản đã đăng tải.

 Sắp xếp bài viết và bình luận mà tải khoản đã đăng tải theomức độ tương tác.

o Tạo các API để Generate Sitemap của dự án Cafefinz phục vụ cho

o Xây dựng các API cho chức năng “Gửi hóa đơn thông

qua email” trong dự án Rich Beauty Supply.

o Xây dựng Middleware để phân quyền truy cập trong hệ

thống của dự án Rich Beauty Supply (Admin, Sale,Customer).

o Xây dựng các API giúp xuất file Excel về thông tin

khách hàng và đơn đặt hàng trong khoảng thời giannhất định.

Trang 18

o Sửa một số lỗi do QC báo cáo lại.- Kết quả:

o Hoàn thành được các API cho tính năng “Gửi hóa đơn thông

qua email” trong dự án Rich Beauty Supply.

o Hoàn thành được Middleware để phân quyền truy cập trong

hệ thống của dự án Rich Beauty Supply.

o Hoàn thành các API giúp xuất file Excel về thông tin khách

hàng và đơn đặt hàng trong khoảng thời gian nhất định.

o Các lỗi do QC báo cáo được sửa hoàn thành.

2.2.12 Tuần 12- Nội dung:

o Tích hợp API từ Polygon (dịch vụ cung cấp API cho các dữ liệu về

giá cổ phiếu, thông tin tài chính, lịch chia cổ tức của các công ty trênthế giới) để đồng bộ dữ liệu trong dự án Investo, bao gồm:

 Kéo dữ liệu về từ Polygon về và lưu vào Database và Airtable. Hằng ngày hoặc hằng tuần vào thời gian cố định kéo dữ liệu

(giá cổ phiếu, lịch chia cổ tức) từ Polygon để cập nhật vàoDatabase và Airtable.

 Website lấy dữ liệu từ Airtable thông qua API để hiển thị.

o Sửa một số lỗi do QC báo cáo lại.- Kết quả:

o Hoàn thành được các API cho tính năng “Đồng bộ dữ liệu từ

Polygon” trong dự án Investo.

o Các lỗi do QC báo cáo được sửa hoàn thành.

Trang 19

2.3 Công nghệ sử dụng:2.3.1 Typescript:

- Tổng quan:

TypeScript là một ngôn ngữ lập trình mã nguồn mở được pháttriển bởi Microsoft, là một siêu set của JavaScript Nó cung cấp cáctính năng mạnh mẽ để phát triển ứng dụng JavaScript lớn và phứctạp hơn, giúp giảm rủi ro và tăng tính maintainable của mã nguồn.

Hình 2.5 Typecript

- Ưu điểm:

o Kiểu dữ liệu tĩnh (Static Typing): TypeScript sử dụng

kiểu dữ liệu tĩnh, giúp phát hiện lỗi kiểu trước khichương trình chạy, tăng tính tin cậy và dễ dàng duy trìmã nguồn.

o Tính mở rộng (Extensibility): TypeScript là một mở rộng

của JavaScript, do đó nó hỗ trợ tất cả các tính năng củaJavaScript và có thể sử dụng các thư viện JavaScripthiện có.

Trang 20

o Quản lý mã nguồn (Code Organization): TypeScript hỗ

trợ module và namespace, giúp tổ chức mã nguồn mộtcách hiệu quả và làm cho mã trở nên dễ quản lý hơn.

o Hỗ trợ ES6 và ES7: TypeScript hỗ trợ các tính năng mới

từ ES6 và ES7, giúp người phát triển sử dụng nhữngtiện ích mới của JavaScript.

o Tooling tốt: TypeScript được tích hợp sẵn với nhiều IDEs

như Visual Studio Code, Sublime Text, và các công cụbuild như Webpack, giúp tăng hiệu suất làm việc.

- Nhược điểm:

o Kiểu dữ liệu tĩnh (Static Typing): TypeScript sử dụng

kiểu dữ liệu tĩnh, giúp phát hiện lỗi kiểu trước khichương trình chạy, tăng tính tin cậy và dễ dàng duy trìmã nguồn.

o Tính mở rộng (Extensibility): TypeScript là một mở rộng

của JavaScript, do đó nó hỗ trợ tất cả các tính năng củaJavaScript và có thể sử dụng các thư viện JavaScripthiện có.

o Quản lý mã nguồn (Code Organization): TypeScript hỗ

trợ module và namespace, giúp tổ chức mã nguồn mộtcách hiệu quả và làm cho mã trở nên dễ quản lý hơn.

o Hỗ trợ ES6 và ES7: TypeScript hỗ trợ các tính năng mới

từ ES6 và ES7, giúp người phát triển sử dụng nhữngtiện ích mới của JavaScript.

o Tooling tốt: TypeScript được tích hợp sẵn với nhiều IDEs

Trang 21

2.3.2 NestJS:- Tổng quan:

NestJS là một framework server-side (phía server) trên Node.js, được xây dựngdựa trên TypeScript và heavily được lấy cảm hứng từ Angular Nó cung cấp mộtcách hiệu quả để xây dựng ứng dụng server-side, đặc biệt là cho các ứng dụng webvà API.

Hình 2.6 NestJS

- Ưu điểm:

o Kiến trúc module hóa (Modularity): NestJS sử dụng kiến trúc module

hóa, giúp tạo ra các ứng dụng dễ dàng mở rộng và duy trì.

o Dependency Injection: NestJS hỗ trợ Dependency Injection, giúp

quản lý các thành phần và module trong ứng dụng một cách dễ dàng.

o Kiểu dữ liệu tĩnh (Static Typing): Như TypeScript, NestJS sử dụng

kiểu dữ liệu tĩnh, giúp phát hiện lỗi kiểu sớm và tăng tính đáng tin cậycủa mã nguồn.

o Middleware: Cung cấp middleware mạnh mẽ, giúp xử lý các yêu cầu

trước khi chúng được xử lý bởi các route chính.

o Support WebSockets: Hỗ trợ WebSockets cho các ứng dụng thời gian

o Testing dễ dàng: Có thư viện tích hợp sẵn cho việc kiểm thử (testing)

của ứng dụng, giúp việc kiểm thử trở nên dễ dàng hơn.

Trang 22

o Hỗ trợ GraphQL và RESTful API: NestJS hỗ trợ cả GraphQL và

RESTful API, giúp lựa chọn linh hoạt cho phong cách phát triển API.

o Document Generation: Có thể tự động tạo tài liệu API thông qua

- Nhược điểm:

o Kiến trúc module hóa (Modularity): NestJS sử dụng kiến trúc module

hóa, giúp tạo ra các ứng dụng dễ dàng mở rộng và duy trì.

o Dependency Injection: NestJS hỗ trợ Dependency Injection, giúp

quản lý các thành phần và module trong ứng dụng một cách dễ dàng.

o Kiểu dữ liệu tĩnh (Static Typing): Như TypeScript, NestJS sử dụng

kiểu dữ liệu tĩnh, giúp phát hiện lỗi kiểu sớm và tăng tính đáng tin cậycủa mã nguồn.

o Middleware: Cung cấp middleware mạnh mẽ, giúp xử lý các yêu cầu

trước khi chúng được xử lý bởi các route chính.

o Support WebSockets: Hỗ trợ WebSockets cho các ứng dụng thời gian

o Testing dễ dàng: Có thư viện tích hợp sẵn cho việc kiểm thử (testing)

của ứng dụng, giúp việc kiểm thử trở nên dễ dàng hơn.

o Hỗ trợ GraphQL và RESTful API: NestJS hỗ trợ cả GraphQL và

RESTful API, giúp lựa chọn linh hoạt cho phong cách phát triển API.

o Document Generation: Có thể tự động tạo tài liệu API thông qua

2.3.3 TypeORM:

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

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

Tài liệu liên quan