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[.]
Trang 1TRƯỜ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
Trang 2LỜ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 chuyên 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
Trang 3Đặ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
Trang 4Nhận xét của khoa
Trang 5
Mục Lục
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 9
Trang 61 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: https://www.vitalify.asia/
Đ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 chuyên 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ế
Trang 71.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 ngoà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:
Trang 10Ứ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 hoá 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ả :
Trang 11Có 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
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 toà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ả
Trang 12NestJS 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
Trang 13Thô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
Trang 14• 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 đè
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à
Trang 15Container 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
Trang 16• 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:
Trang 17Docker 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
Trang 18dụ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