Tải bản đầy đủ (.pdf) (31 trang)

Báo Cáo Thực Tập Back-End Developer.pdf

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.27 MB, 31 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
BACK-END DEVELOPER

Công ty thực tập: Công ty Vitalify Asia
Người phụ trách: Phạm Minh Chí
Thực tập sinh: Lê Thành Tâm - 19520254

Tp Hồ Chí Minh, Tháng 12 năm 2022


LỜI MỞ ĐẦU
Ngày nay, các ngành công nghiệp về phần mềm đang phát triển với tốc độ chóng
mặt. Các cơng nghiệp về web, mobile hay game là những lĩnh vực cực kì hot và nhận
được sự quan tâm đơng đảo của lớp trẻ. Các lĩnh vực này được ví như một tảng băng
trơi, phần nổi là phần nhìn thấy được gọi là Front-end và phần chìm, phần khơng nhìn
thấy được chính là Back-end. Hiện nay lĩnh vực Back-end đang phát triển vơ cùng
nhanh chóng, thu hút khơng kém các lĩnh vực khác.
Xu hướng phát triển mạnh mẽ của thế giới cũng thúc đẩy ngành công nghiệp
backend tại Việt Nam tới mức cao nhất. Đa số các công ty phát triển các phần mềm đều
đi kèm với việc tuyển dụng nhân lực Back-end. Nhu cầu tăng cao đối với Back-end tại
Việt Nam là minh chứng cho việc xây dựng một Back-end vững mạnh, an ninh bảo mật
là vô cùng cần thiết. Nền công nghiệp Back-end phát triển vững mạnh là một yếu tố cần
thiết cho một nền công nghiệp phần mềm phát triển trường tồn.
Từ lâu, trong quá trình học tập tại trường, em đã định hướng bản thân trở thành
một lập trình viên Back-end chun nghiệp. Điều đó thúc đẩy em tìm tỏi về các cơng
nghệ back-end hiện nay, các ngôn ngữ hỗ trợ và chủ động đảm nhiệm vai trò phát triển
back-end trong các đồ án tại trường.
Sau hơn ba năm học tập trên trường, em cảm thấy bản thân đã sẵn sàng để dấn


thân vào môi trường chuyên nghiệp, em tin rằng điều này sẽ giúp em học hỏi, tiếp thu
nhiều kiến thức hơn trong ngành này. Do đó em đã đăng kí mơn thực tập và bắt đầu tìm
kiếm cơng việc. Em đã chọn được cơng ty để bắt đầu phát triển bản thân là Vitalify Á
Châu, đây là mơi trường out-sourcing, một mơi trường có khả năng thúc đẩy bản thân
em thay đổi liên tục. Qua quá trình thực tập tại đây, em mong rằng bản thân sẽ tích thêm
nhiều kinh nghiệm, củng cố kiến thức cá nhân cũng như học hỏi thêm nhiều công nghệ
mới.

1


LỜI CẢM ƠN

Trân trọng gửi lời cảm ơn Công ty Vitalify Asia đã tạo điều kiện cho em có cơ hội được
thực tập tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các anh chị trong
team, nhóm thực tập chúng em đã tiếp thu được những kiến thức quan trọng về xây
dựng Back-end. Chân thành cảm ơn các anh chị trong nhóm đã 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 Chí đã training, hướng dẫn, giúp đỡ cho chúng em tận tình cả
những khó khăn trong cơng việc, đến những khó khăn việc làm quen với mơi trường
mới, những kỹ năng về đọc tài liệu và cách report một con bug, hỗ trợ chúng em rất
nhiều về các vấn đề kỹ thuật trong thời gian qua.
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.
Lê Thành Tâm
TPHCM, tháng 12 năm 2022

2



Nhận xét của khoa
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................
..........................................................................................................................................

3


Mục Lục
1. Giới thiệu công ty thực tập

5

1.1 Giới thiệu về công ty


5

1.2 Sản phẩm và dịch vụ của công ty

6

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

9
9

2.2 Giai đoạn training các kiến thức cơ bản

10

2.2.1 Tìm hiểu về mơi trường NestJS

10

2.2.2 Tìm hiểu về Postman

11

2.2.3 Tìm hiểu về Docker

13

2.2.4 Tìm hiểu về MongoDB


18

2.2.5 Hiểu rõ về Observable và Promise

21

2.3 Lịch trình làm việc
3. Chi tiết về project

22
26

3.1 Tổng quan:

26

3.2 Thông tin

26

3.3 Thực hiện

28

3.4 Kế hoạch

29

3.4.1 Giai đoạn training


29

3.4.2 Giai đoạn Research (Pre-Alpha)

29

3.4.3 Giai đoạn tổng kết:

29

4


1. Giới thiệu công ty thực tập
1.1 Giới thiệu về công ty

Tên công ty: Vitalify Á Châu (Vitalify Asia)
Địa chỉ: 224A Điện Biên Phủ, Phường 6, Quận 3, Thành phố Hồ Chí Minh
Trang web: a/
Điện thoại: 028 3932 6293
Vitalyfy Asia được thành lập vào năm 2008, là một công ty outsourcing tập trung
vào mảng phát triển phần mềm trên ứng dụng di động với sứ mạng “đưa những
giá trị hạnh phúc thơng qua internet”.
Vitalify Asia có mục tiêu trở thành một cơng ty chun nghiệp có thể đảm nhận
các dự án mang tầm vóc quốc tế. Chính sách phát triển của cơng ty đó là: mỗi nhân
sự từ kỹ sư, quản lý,… có trách nhiệm mở rộng vai trị và phạm vi cơng việc, tinh
thần trách nhiệm của chính bản thân để mang lại giá trị cho người dùng với cấu
trúc tổ chức phân thành các nhóm nhỏ ưu tú.
Sau hơn 10 năm thành lập, Vitalify Asia bước vào một giai đoạn thử thách mới

nhằm nâng cao hơn nữa giá trị kỹ thuật của công ty tại Việt Nam. Mục tiêu tạo ra
những sản phẩm “made in Vietnam” tiêu chuẩn quốc tế.

5


1.2 Sản phẩm và dịch vụ của công ty
Vitalify Asia nhận gia công phát triển web và ứng dụng di động cho phù hợp
với yêu cầu của tôt chức và doanh nghiệp. Đội nhóm của Vitalify Asia có tính
chất đa quốc gia, có thể hoạt động từ xa, Vitalify Asia cam kết mang đến những
sản phẩm với giá trị bền vững và nhanh chóng cho doanh nghiệp.
Vitalify Asia có kinh nghiệm phát triển các hệ thống, ứng dụng trên đa dạng các
lĩnh vực, với khả năng hoạt động real-time bao gồm nhiều gia đoạn phát triển
khác nhau từ lên kế hoạch, vận hành và phát triển, cập nhật về sau.
Các sản phẩm của Vitalify Asia có thể kể đến như sau:

NativeCamp
Nền tảng trực tuyến gia sư dạy tiếng anh chuyên sâu. Native Camp là một trong
những nền tảng trường học tiếng anh lớn nhất tại Nhật Bản. Native Camp giúp
người dùng học tập tiếng Anh với tất cả 4 kỹ năng: nghe, nói, đọc, viết ngồi ra
cịn có các chức năng đánh giá, kiểm tra khả năng tiếng Anh, học trực tiếp với
giáo viên hoặc thông qua các tài nguyên có sẵn.
Hình ảnh minh họa:

6


7



Các sản phẩm ứng dụng game
Vitalify Asia phát triển nhiều tựa game giải trí trên thiết bị di động với lối chơi
đơn giản. Một số trong đó có sử dụng công nghệ AR tăng cường thực tế ảo như
Face Emotion – Xác định cảm xúc, Zombie Doors AR.
Hình ảnh minh họa:

Ứng dụng Face Emotion

8


Ứng dụng Zombie Doors AR
2. Nội dung thực tập
Trong khoảng thời gian thực tập tại cơng ty, sinh viên có cơ hội học tập thêm
các kiến thức chuyên môn, tiếp xúc với các quy trình thực hiện dự án, giải quyết các
vấn đề phát sinh trong một dự án thực tế. Sinh viên được nâng cao kĩ năng phần tích
yêu cầu, đặt câu hỏi, tương tác trực tiếp với khách hàng và các thành viên trong đội
phát triển. Ngoài ra, sinh viên cịn có cơ hội phát triển các kỹ năng mềm như nghiên
cứu thơng tin, thuyết trình, giao tiế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: 2 ngày.
Nội dung :
Giới thiệu về công ty, cơ cấu tổ chức của công ty, các chấm cơng, tính lương,
quyền lợi và văn hố làm việc của công ty
Sinh viên được giới thiệu về cơ cấu tổ chức của cơng ty, cách phân đội nhóm,
cách thức tiếp nhận dự án của đội nhóm, cách tiếp nhận và giải quyết các task nhiệm vụ
và báo cáo hàng ngày
Trong thời gian này, sinh viên được công ty đánh giá sơ lược về khả năng để
chuyển về các đội nhóm phù hợp với năng lực. Sinh viên được cấp quyền truy cập các
tài nguyên nội bộ, chỉ dẫn của công ty, email domain riêng để tương tác với hệ thống

của khách hàng
Kết quả :

9


Có hiểu biết về cơ cấu hoạt động của cơng ty, quy trình phát triển phần mềm
Scrum, cách tham gia các cuộc họp nội bộ và với khách hàng, cách tiếp nhận nhiệm vụ
và báo cáo hàng ngày.
2.2 Giai đoạn training các kiến thức cơ bản
2.2.1 Tìm hiểu về mơi trường NestJS
Nội dung:
Sinh viên được giao nhiệm vụ tìm hiểu về package managers : npm và yarn, đọc
hiểu và cài đặt NodeJS, đọc hiểu về NestJS.
Npm và yarn:
Npm (tên đầy đủ là Node Package Manager) sinh ra vào năm 2010, là một
cơng cụ quản lý cực kì phổ biến đối với các lập trình viên JavaScrip. Npm được
cài đặt tự động ngay khi bạn cài đặt NodeJs lên hệ thống.
Npm cung cấp cho ta 2 chức năng chính:
• Là kho lưu trữ trực tuyến cho các package/module.
• Quản lý các module javascrip và phiên bản của chúng trong các dự
án của chúng ta một cách đơn giản, dễ dàng, giúp tiết kiệm thời
gian.
Yarn được Facebook cho ra đời năm 2016. Mục đích tạo ra yarn vì nó giải
quyết một số thiếu sót về hiệu suất và bảo mật của Npm.
NodeJS:
NodeJS là một mã nguồn được xây dựng dựa trên nền tảng Javascript V8
Engine, nó được sử dụng để xây dựng các ứng dụng web như các trang video
clip, các forum và đặc biệt là trang mạng xã hội phạm vi hẹp. NodeJS là một mã
nguồn mở được sử dụng rộng bởi hàng ngàn lập trình viên trên tồn thế giới.

NodeJS có một đặc tính rất quan trọng đó là Realtime, tuy nhiên vẫn cịn
khá nhiều đặc tính khác như : không đồng bộ, chạy nhanh, đơn luồng nhưng khả
năng mở rộng cao, khơng đệm, có giấy phép.
NodeJS có 2 framework phổ biến là Express và SocketIO

NestJS:
10


NestJS là một NodeJS framework dùng để phát triển server-side
applications hiệu quả và có thể mở rộng. NestJS là sự kết hợp bởi OOP(Object
Oriented Programming), FP(Functional Programming), FRP(Functional Reactive
Programming). NestJS sử dụng TypeScript để phát triển nhưng nó cũng hỗ trợ cả
Javascript.
NestJS cung cấp cho chúng ta một kiến trúc cụ thể và rõ dàng cho dự án .
Sau khi tạo một project NestJS, chúng ta sẽ có source với cấu trúc như sau:

• app.controller.ts: Chứa các router để xử lý các request và trả về
response cho client.
• app.controller.spec.ts: Có nhiệm vụ viết unit-test cho các controller.
• app.module.ts: Root module của ứng dụng.
• app.service.ts: Service chứa các logic mà controller sẽ dùng đến.
• main.ts: Sử dụng NestFactory để khởi tạo ứng dụng.
Kết quả:
Hiểu về package npm và yarn, cách cài đặt và quản lý các package. Hiểu cơ bản
về NodeJS và NestJS, cách xây dựng một project đơn giản, cấu trúc và cách vận hành
của 2 mã nguồn này.
2.2.2 Tìm hiểu về Postman
Nội dung:
Postman là một ứng dụng cho phép người dùng có thể tương tác với API. API

là tên viết tắt của Application Programming Interface – giao diện lập trình ứng dụng.
API chịu trách nhiệm tạo ra các kết nối giữa những ứng dụng khác nhau. Còn Postman
sẽ chịu trách nhiệm giúp cho thao tác của người dùng với API trở nên dễ dàng hơn.

11


Thông thường, Postman sẽ được dùng cho API REST. Postman có thể dễ dàng gọi
REST mà khơng cần tạo code như cách truyền thống.
Postman còn chịu trách nhiệm cho rất nhiều thao tác phát triển phần mềm như
test, chạy thử, rà lỗi, cung cấp các đoạn code tự động cần thiết… Nhìn chung, lợi ích
mà Postman mang lại là rất nhiều.
Đặc biệt, Postman tương thích với hầu hết các giao thức HTTP, bao gồm: Get,
Put, Delete, Post, Patch… Cấu tạo của Postman hướng đến sự linh động. Postman có
sẵn nhiều phiên bản cho các hệ điều hành và môi trường khác nhau. Đó cùng là điểm
khiến nó trở nên phổ biến hơn.
Thành phần chính của Postman:
Postman gồm 3 thành phần chính bao gồm: Setting, Collections và API Content.


Setting bao gồm những cài đặt cơ bản về tài khoản của người dùng và giao diện
hiển thị.



Collections giống như một thư viện trong Postman. Nhiệm vụ chính của nó là
lưu trữ và hiển thị các dữ liệu, yêu cầu mà người dùng tạo nên.




Phần quan trọng nhất trong Postman là API Content. Trong API tồn tại 3 thành
phần chính: environment, request và response. Environment là môi trường để
thực hiện các hành động với API. Nó cung cấp các thơng tin mơi trường cần thiết
để lập trình viên có thể thay đổi khi cần thiết. Khi đã ổn định được môi trường
rồi, người dùng sẽ tiến hành gửi các yêu cầu – request để hệ thống hoạt động.
Kết quả sau thao tác được trả về chính là response.

Các chức năng của Postman:


New: Chức năng này hỗ trợ người dùng tạo ra các request, collection hoặc
environment mới.



Import: Nếu bạn đã có sẵn collection hoặc environment muốn tiếp tục sử dụng
thì có thể dùng chức năng Import. Postman hỗ trợ Import từ file, folder, link và
cả paste từ text thuần.



Runner: Đây là phím tắt giúp chạy tự động hóa cả collection.

12




Open New: Nếu muốn mở một tab Postman hoặc Runner mới, bạn hãy chọn nút
này.




My Workspace: Nút này đã xuất hiện một lần khi bạn mới cài đặt xong Postman.
Nó có nghĩa là tạo cho mình một khu vực làm việc riêng biệt hoặc cùng hội
nhóm. Nếu ban đầu bạn chưa chọn hoặc bạn muốn tạo thêm một khu vực khác
thì có thể chọn chức năng này.



Invite: Sau khi đã tạo Workspace cho nhóm rồi, hãy dùng Invite để mời các thành
viên vào.



History: Tất cả các hành động bạn đã thực hiện đều được lưu trữ trong History.
Vì thế khi gặp vấn đề cần truy ra nguyên nhân, bạn hãy truy cập vào mục này.



Collections: Đây được ví như một thư viện riêng của người dùng. Bạn có thể tạo
nhiều Collections cùng lúc với các thư mục và request trùng lặp.



HTTP Request: Mục này là tập hợp các Request phổ biến và được sử dụng nhiều
nhất trong Postman, ví dụ như: get, copy, delete, post…




Save: Hãy Save liên tục sau mỗi Request nếu bạn không muốn Request bị mất
hoặc bị ghi đè.

Kết quả:
Hiểu được cách cài đặt và cách sử dụng Postman, áp dụng Postman để kiểm
thử API .
2.2.3 Tìm hiểu về Docker
Nội dung:
Docker là nền tảng cung cấp cho các cơng cụ, service để các developers,
adminsystems có thể phát triển, thực thi, chạy các ứng dụng với containers. Hay
nói một cách khác nó là một nền tảng để cung cấp cách để building, deploy và
run các ứng dụng một cách dễ dàng trên nền tảng ảo hóa - "Build once, run
anywhere".
Container không giống như VMs, Container không cung cấp sự ảo hóa
về phần cứng. Một Container cung cấp ảo hóa ở cấp hệ điều hành bằng một khái
niệm trừu tượng là “user space”. Sự khác nhau lớn nhất của Container và VMs là

13


Container có thể chia sẻ host system’s kernel với các container khác. Cùng xem
mơ hình bên dưới để hiểu rõ hơn về Container.

Dựa vào sơ đồ bên trên, có thể thấy các gói container chỉ là một user space
bao gồm ứng dụng, system binaries và libraries mà không cần guest OS hoặc ảo
hóa phần cứng như VMs. Đây là cái mà làm cho các container nhẹ hơn
(lightweight). Các container sẽ chạy trên công nghệ cụ thể ở đây là Docker
Engine.
Các thành phần cơ bản của Docker:
Docker engine: là một ứng dụng client-server. Có 2 phiên bản phổ biến: Docker

Community Edition (CE) và Docker Enterprise(EE).
Các thành phần chính của docker engine gồm có:


Server hay cịn được gọi là docker daemon: chịu trách nhiệm tạo,
quản lý các Docker objects như images, containers, networks,
volume.



REST API: docker daemon cung cấp các api cho Client sử dụng
để thao tác với Docker

14




Client là thành phần đầu cuối cung cấp một tập hợp các câu lệnh
sử dụng api để người dùng thao tác với Docker.

Distribution tools : Là các công cụ phân tán giúp chúng ta lưu trữ và quản lý
các Docker Images như: Docker Registry, Docker Trusted Registry, Docker
Hub
Orchestration tools :
• Docker Machine : Machine tạo Docker Engine trên laptop của
bạn hoặc trên bất cứ dịch vụ cloud phổ biến nào như AWS,
Azure, Google Cloud, Softlayer hoặc trên hệ thống data center
như VMware, OpenStack. Docker Machine sẽ tạo các máy ảo và
cài Docker Engine lên chúng và cuối cùng nó sẽ cấu hình Docker

Client để giao tiếp với Docker Engine một cách bảo mật
• Docker Compose : là cơng cụ giúp định nghĩa và khởi chạy
multi-container Docker applications
• Docker Swarm : là một công cụ giúp chúng ta tạo ra một
clustering Docker. Nó giúp chúng ta gom nhiều Docker Engine lại
với nhau và ta có thể "nhìn" nó như duy nhất một virtual Docker
Engine
Kiến trúc của Docker:

15


Docker Daemon: lắng nghe các yêu cầu từ Docker Client để quản lý các đối
tượng như Container, Image, Network và Volumes. Các Docker Daemon cũng
giao tiếp với nhau để quản lý các Docker Service.
Docker Client: là một công cụ giúp người dùng giao tiếp với Docker host. Khi
người dùng gõ lệnh docker run imageABC tức là người dùng sử dụng CLI và
gửi request đến dockerd thông qua api, và sau đó Docker daemon sẽ xử lý tiếp.
Docker client có thể giao tiếp và gửi request đến nhiều Docker daemon.
Docker Registry (Docker Hub): là một kho chứa các image được publish bởi
cộng đồng Docker. Nó giống như GitHub và bạn có thể tìm những image cần
thiết và pull về sử dụng.
Docker object: chính là các đối tượng mà ta thường xuyên gặp khi sử dụng
Docker. Gồm có Images và Containers .


Images: hiểu nôm na là một khuôn mẫu để tạo một container. Thường
thì image sẽ base trên 1 image khác với những tùy chỉnh thêm. ví dụ bạn
build 1 image dựa trên image ubuntu để chạy Apache web service và
ứng dụng của bạn và những tùy chỉnh, cấu hình để ứng dụng của bạn có

thể chạy được. Bạn có thể tự build một image riêng cho mình hoặc sử
16


dụng những image được publish từ cộng đồng Docker Hub. Một image
sẽ được build dựa trên những chỉ dẫn của Dockerfile.


Containers: là một instance của một image. Bạn có thể create, start,
stop, move or delete container dựa trên Docker API hoặc Docker CLI.

Qui trình thực thi của một hệ thống sử dụng Docker:

Như trong hình, một hệ thống Docker được thực thi với 3 bước chính :
BUILD -> PUSH -> PULL,RUN
Build: Đầu tiên tạo một dockerfile, trong dockerfile này chính là code của
chúng ta. Dockerfile này sẽ được Build tại một máy tính đã cài đặt Docker
Engine. Sau khi build ta sẽ có được Container, trong Container này chứa ứng
dụng kèm bộ thư viện của chúng ta.
Push: Sau khi có được Container, chúng ta thực hiện push Container này lên
cloud và lưu tại đó.
Pull, Run: Nếu một máy tính khác muốn sử dụng Container chúng ta thì bắt
buộc máy phải thực hiện việc Pull container này về máy, tất nhiên máy này
cũng phải cài Docker Engine. Sau đó thực hiện Run Container này.

Dockerfile:
Dockerfile : như một script dùng để build các image trong container, bao gồm
các câu lệnh liên tiếp nhau được thực hiện tự động trên một image gốc để tạo ra

17



một image mới. Hiểu đơn giản, Dockerfile là một file dạng text, khơng có đi,
giúp thiết lập cấu trúc cho docker image nhờ chứa một tập hợp các câu lệnh.
Dockerfile giúp đơn giản hóa tiến trình từ lúc bắt đầu đến khi kết thúc.

Như vậy Dockerfile sẽ quy định Docker image được khởi tạo từ đâu, gồm những
gì trong đó.
Kết quả:
Hiểu được Docker là gì, khi nào nên sử dụng docker, các thành phần của
Docker và chức năng của chúng, nắm được kiến trúc và qui trình của docker, Hiểu
hơn về Dockerfile và biết tạo một Dockerfile đơn giản của riêng mình.

2.2.4 Tìm hiểu về MongoDB
Nội dung:

Định nghĩa MongoDB:
18




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



Ngồ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.

Các thuật ngữ hay sử dụng trong MongoDB:


_id – Là trường bắt buộc có trong mỗi document. Trường _id đại diện
cho một giá trị duy nhất trong document MongoDB. Trường _id cũng có
thể được hiểu là khóa chính trong document. Nếu bạn thêm mới một
document thì MongoDB sẽ tự động sinh ra một _id đại diện cho
document đó và là duy nhất trong cơ sở dữ liệu MongoDB.



Collection – Là nhóm của nhiều document trong MongoDB. Collection
có thể được hiểu là một bảng tương ứng trong cơ sở dữ liệu RDBMS
(Relational Database Management System). Collection nằm trong một cơ
sở dữ liệu duy nhất. Các collection không phải định nghĩa các cột, các
hàng hay kiểu dữ liệu trước.



Cursor – Đây là một con trỏ đến tập kết quả của một truy vấn. Máy
khách có thể lặp qua một con trỏ để lấy kết quả.



Database – Nơi chứa các Collection, giống với cơ sở dữ liệu RDMS
chúng chứa các bảng. Mỗi Database có một tập tin riêng lưu trữ trên bộ
nhớ vật lý. Một mấy chủ MongoDB có thể chứa nhiều Database.




Document – Một bản ghi thuộc một Collection thì được gọi là một
Document. Các Document lần lượt bao gồm các trường tên và giá trị.



Field – Là một cặp name – value trong một document. Một document có
thể có không hoặc nhiều trường. Các trường giống các cột ở cơ sở dữ
liệu quan hệ.



JSON – Viết tắt của JavaScript Object Notation. Con người có thể đọc
được ở định dạng văn bản đơn giản thể hiện cho các dữ liệu có cấu trúc.
Hiện tại JSON đang hỗ trợ rất nhiều ngơn ngữ lập trình.

19




Index – Là những cấu trúc dữ liệu đặc biệt, dùng để chứa một phần nhỏ
của các tập dữ liệu một cách dễ dàng để quét. Chỉ số lưu trữ giá trị của
một fields cụ thể hoặc thiết lập các fields, sắp xếp theo giá trị của các
fields này. Index hỗ trợ độ phân tích một cách hiệu quả các truy vấn. Nếu
khơng có chỉ mục, MongoDB sẽ phải qt tất cả các documents của
collection để chọn ra những document phù hợp với câu truy vấn. Quá
trình quét này là không hiệu quả và yêu cầu MongoDB để xử lý một khối
lượng lớn dữ liệu.


MongoDB hoạt động như thế nào?


MongoDB hoạt động dưới một tiến trình ngầm service, ln mở một cổng
(Cổng mặc định là 27017) để lắng nghe các yêu cầu truy vấn, thao tác từ
các ứng dụng gửi vào sau đó mới tiến hành xử lý.



Mỗi một bản ghi của MongoDB được tự động gắn thêm một field có tên
“_id” thuộc kiểu dữ liệu ObjectId mà nó quy định để xác định được tính
duy nhất của bản ghi này so với bản ghi khác, cũng như phục vụ các thao
tác tìm kiếm và truy vấn thơng tin về sau. Trường dữ liệu “_id” luôn được
tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao
nhất.



Mỗi khi có một truy vấn dữ liệu, bản ghi được cache (ghi đệm) lên bộ nhớ
Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà khơng cần phải
đọc từ ổ cứng.



Khi có u cầu thêm/sửa/xóa bản ghi, để đảm bảo hiệu suất của ứng dụng
mặc định MongoDB sẽ chưa cập nhật xuống ổ cứng ngay, mà sau 60 giây
MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ
cứng.


Kết quả:
Hiểu được bản chất, cấu trúc, cú pháp trong MongoDB, sử dụng MongoDB để
quản lý cơ sở dữ liệu.
20


2.2.5 Hiểu rõ về Observable và Promise
Nội dung:
Phân biệt Observable và Promise:
Promise:
• Promise là cơ chế giúp thực hiện tác vụ bất đồng bộ và không rơi vào
callback hell hay pyramid of doom.
• Khi sử dụng Promise thường co tham số là 2 hàm :
o Resolve : hàm sẽ được gọi khi promise hoàn thành.
o Reject : hàm sẽ được gõi khi promise lỗi.
• Chúng ta có thể truy xuất kết quả trả về của promise bằng phương thức
“.then()”.
• Khi một Promise được khởi tạo thì nó có một trong ba trạng thái sau:
o Fulfilled : hành động đã xử lý xong và thành công.
o Reject : hành động xử lý xong và thất bại.
o Pending: hành động đang chờ xử lý hoặc bị từ chối.
o Trong đó hai trạng thái Reject và Fulfilled ta gọi là Settled, tức là đã
xử lý xong.
Async/await trong promise:
• Async/await cũng là promise, nhưng nó giúp chúng ta viết code bất địng bộ
mà trơng như là đồng bộ.
• Để sử dụng , ta khai báo hàm với từ khóa async, bên trong hàm có thể dùng
await. Khi sử dụng await, thì chương trình sẽ thực hiện lệnh có await trước
rồi mới thực hiện tiếp các lệnh sau ,mặc dù là bất đồng bộ.
• Kết quả trả về của một async fucntion luôn là 1 promise.

Promise.all() và Promise.race()
Khi muồn thực thi và lấy kết quả của nhiều Promise cùng lúc.
• Promise. All() : hương thức này nhận vào một mảng các promises và chỉ
resolve khi tất cả các promises này hoàn thành, hoặc reject khi một trong số
chúng xảy ra lỗi.

21


• Promise.Race(): Phương thức này nhận vào một mảng các promises và sẽ
resolve/reject ngay khi một trong số các promises này hồn thành/xảy ra lỗi.
Observable:
• Observable cũng sử dụng để giải quyết tác vụ bất đồng bộ, nhưng nó cị thể
nhận về nhiều giá trị ngắt quảng trong tương lai, cịn Promise thì chỉ trả vế
1 lần.
• Áp dụng observable cũng tương tự mơ hình Producer và Consumer.
• Có thể tạo Observable bắng “new Observable()” hoăc tạo bang các hàm như
from, of, interval,..
• Để thực hiện một Observable, ta cần phần gọi hàm “.subscribe()”
• 3 loại giá trị khi thực thi Observable là:
o “next” : gửi một giá trị như là number, string, object…
o “error”: gửi một javascript error or excecption.
o “complete”: sẽ khơng gửi giá trị nữa.
• “Subcription “ : khi chúng ta “.subcribe” một observable, nó sẽ return một
object “Subcription”, Subcription cung cấp một phương thực quan trọng là
“.unsubscribe()” để hủy bỏ Observable.
Ngồi ra cịn các phần quan trọng như Operator, ví dụ cụ thề => tham khảo
documents tại : />Kết quả:
Hiểu và phân biệt rõ về Obdservable và Promise, biết khi nào nên sử dụng cho phù hợp.
2.3 Lịch trình làm việc

Mức
Tuần

1

Cơng việc

-

Người hướng dẫn

Tìm hiểu về cơng ty, cách Phạm Minh Chí

độ Nhận

xét

hồn

của

người

thành

hướng dẫn

100

tổ chức của công ty.

22


-

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.

-

Tìm hiểu về Npm và Phạm Minh Chí

90

Yarn
-

Tìm hiểu về NodeJS và
NestJS

-

Clone source NestJS và
chạy thử.


2
-

Tự tạo một source NestJS
và upload lên GitHub

-

Cài đặt và luyện tập với
GitHub.

3

-

Tìm hiểu về MongoDB.

Phạm Minh Chí

100

-

Tìm hiểu về PostMan

-

Tìm hiểu về Docker

-


Tạo API cơ bản với GET,

- Kết nối và cấu hình NestJS Phạm Minh Chí

100

PUSH, POST, DELETE
và test với Postman.

và MongoDB.
- Tạo API để insert, update,
4

delete data vào MongoDB.
-

Tạo API login : Restful

API, check Middleware, sử
dụng JWT để tạo token, cấu
hình format cho data

23


-

Tạo API để lấy thông tin


user với JWT.
- Tải ảnh avatar cho user

Phạm Minh Chí

100

Phạm Minh Chí

100

Phạm Minh Chí

100

- Tạo chức năng resize ảnh.
- Tìm hiểu và sử dụng
Swagger

để viết API

documents.
5

- Viết document để cài đặt
môi trường : cài đặt
docker, cài đặt data, cấu
hình và chạy source,..
-


Hiểu về Observable và
Promise.

- Tải API pagination.
- Tạo API để xác nhận email
thông qua mã code.
6

- Tạo API quên mật khẩu.
- Tạo API đổi mật khẩu
- Tổng hợp output và kiểm
tra
- Tham gia dự án trực tiếp
- Tham gia lấy yêu cầu khách

7,8,9,10,
11,12

hàng
- Tham gia các cuộc hợp
meeting của team.
- Nghiên cứu tài liệu về dự
án.

24


×