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

Báo cáo thực tập doanh nghiệp backend developer

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 (830.09 KB, 32 trang )

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

🙥o🙥

BÁO CÁO THỰC TẬP DOANH NGHIỆP

BACKEND DEVELOPER
Công ty

: Imbrace Hong Kong

Người phụ trách

: Geoffrey Tipton

Sinh viên

: Nguyễn Thế Đan

MSSV

: 19521312

Lớp

: SE501.N21.PMCL
Thành phố Hồ Chí Minh, tháng 6 năm 2023



2

LỜI CẢM ƠN
Chương trình thực tập (03/04/2023 – 16/06/2023) tại công ty Imbrace Hongkong là lần
đầu tiên em được trải ghiệm một môi trường phát triển phần mềm thực tế với những kỹ
thuật và công nghệ tiên tiến trên thế giới. Đây là cơ hội lớn để em không những được
học các kiến thức, kỹ thuật, kỹ năng mới mà em cịn có thể áp dụng những kiến thức,
kỹ năng được lãnh hội ở trường áp dụng vào trong môi trường làm việc quốc tế và
chuyên nghiệp tại công ty.
Lời đầu tiên, em xin gửi lời cảm ơn chân thành nhất đến trường và quý thầy cô khoa
Công nghệ phần mềm đã truyền đạt vốn kiến thức làm nền tảng cho em trong quá trình
thực tập.
Tiếp đến, em xin gửi lời cảm ơn chân thành đến quý công ty Imbrace Hongkong.
Khơng vì dịch bệnh nặng nề, cơng ty đã tạo cơ hội thuận lợi nhất và giành nhiều quyền
lợi cho em trong thời gian thực tập. Em được làm việc remote cho một công ty đa quốc
gia. Đây là một cơ hội cũng như một thách thức lớn, trong xu hướng làm việc remote
đang nổi trội hiện nay.
Cũng không quên gửi lời cảm ơn chân thành đến ông Geoffrey Tipton – PM của dự án
imBrace, các đồng nghiệp ở nhiều lĩnh vực như frontend, backend, devops, designer đã
tận tình chỉ bảo, hỗ trợ em những ngày đầu bước chân vào công ty.
Xin chúc tất cả mọi người nhiều sức khỏe, thành công trong cuộc sống.
Em xin chân thành cảm ơn!
Nguyễn Thế Đan
Hồ Chí Minh, ngày 17 tháng 6 năm 2023


3

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
……………………………………………………………………………………………

……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………
……………………………………………………………………………………………


4

MỤC LỤC
LỜI CẢM ƠN................................................................................................................2

NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN.........................................................3
MỤC LỤC...................................................................................................................... 4
DANH MỤC HÌNH ẢNH..............................................................................................7
CHƯƠNG 1: GIỚI THIỆU CƠNG TY IMBRACE HONGKONG...............................8
1.1

Thông tin chung................................................................................................8

1.2

Lĩnh vực hoạt động...........................................................................................8

1.3

Đối tác công ty..................................................................................................8

CHƯƠNG 2 KIẾN THỨC- KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN.................................9
2.1

. Kiến thức về NodeJS.......................................................................................9

2.1.1

Tổng quan về NodeJS.................................................................................9

2.1.2

Vai trò của NodeJS mang lại cho doanh nghiệp.......................................10

2.2


Kiến thức về Scrum.........................................................................................11

2.2.1

Tổng quan về Scrum [1]...........................................................................11

2.2.2

Vai trò của Scrum mang lại cho doanh nghiệp.........................................14

2.3

Kiến thức về Git..............................................................................................14

2.3.1

Tổng quan về Git......................................................................................14

2.3.2

Vai trò của Git mang lại cho doanh nghiệp..............................................15

2.4

Kiến thức về CI...............................................................................................15

2.4.1

Tổng quan về CI.......................................................................................15



5

2.4.2
2.5

Vai trò của CI mang lại cho doanh nghiệp................................................18

Kiến thức về Docker.......................................................................................18

2.5.1.

Tổng quan về Docker [4]......................................................................18

2.5.2.

Vai trò của Docker mang lại cho doanh nghiệp.....................................20

CHƯƠNG 3 TĨM TẮT Q TRÌNH THỰC TẬP....................................................20
3.1

Giới thiệu nhóm dự án và cơng việc mỗi tuần.................................................20

3.1.1

Nhóm dự án..............................................................................................20

3.1.2


Lịch thực tập.............................................................................................20

3.1.3

Bảng chi tiết công việc mỗi tuần..............................................................21

3.2

Các cơng việc đã thực hiện..............................................................................22

3.2.1

Q trình giao cơng việc...........................................................................22

3.2.2

Các cơng cụ sử dụng trong quá trình làm việc..........................................22

3.2.3

Nhiệm vụ được giao.................................................................................23

CHƯƠNG 4 MƠ TẢ CƠNG VIỆC..............................................................................24
4.1

Ứng dụng Imbrace...........................................................................................24

4.1.1

Thơng tin chung........................................................................................24


4.1.2

Chi tiết cơng việc trong q trình thực tập................................................25

CHƯƠNG 5 ĐÁNH GIÁ- NHẬN XÉT.......................................................................26
5.1

Kết quả đạt được.............................................................................................26

5.1.1

Những kiến thức lý thuyết đã được cũng cố:............................................26

5.1.2

Những kỹ năng thực hành đã được học thêm:..........................................27

5.2

Những hạn chế................................................................................................27


6

5.3

Bài học kinh nghiệm.......................................................................................28

5.4


Quy trình cơng việc và các hoạt động trong tương lai.....................................29

Tài liệu tham khảo:.......................................................................................................30


7

DANH MỤC HÌNH ẢNH
Hình 1:Mơ hình làm việc Scrum

12

Hình 2: Mơ hình làm việc Cross-functional

13

Hình 3: Q trình tích hợp CI

16

Hình 4: Pipeline CI

17

Hình 5: Đồ thị Pipeline

18

Hình 6: Quy trình, các bước hoạt động của Docker


19

Hình 7: Giao task của mỗi Sprint qua ClickUp

22

Hình 8: Ví dụ khi gọi tới endpoint Oauth.

25


8

CHƯƠNG 1: GIỚI THIỆU CƠNG TY IMBRACE HONGKONG
1.1 Thơng tin chung


Tóm tắt thơng tin: Imbrace Hong Kong ( Future Embrace Limited ) là cơng ty
production nước ngồi có trụ sở chính ở Tsuen Wan- Hong Kong, được thành lập
năm 2021. Cơng ty hiện tại có 3 chi nhánh ở Tsuen Wan – Hong Kong, Ipoh –
Malaysia, và Kaohsiung – Taiwan.



Các sản phẩm của cơng ty:
+ Imbrace




Trụ sở chính của cơng ty tại Việt Nam: Hiện tại cơng ty chưa có chi nhánh ở Việt
Nam



Website: />
1.2 Lĩnh vực hoạt động


Giải pháp dịch vụ phần mềm



Thiết kế và phát triển phần mềm



Quản lý dự án phần mềm.



Dịch vụ bảo trì và hỗ trợ trọn gói sản phẩm của cơng ty

1.3 Đối tác công ty
- Imbrace Hong Kong là một product-based company , có rất nhiều cơng ty,
doanh nghiệp khác sử dụng Imbrace trong tự động hóa quy trình nghiệp vụ ví dụ
như : KBQuest, Redwolf Airsoft, Master Concept, GoGoX, Patrick Henry
Group, Partner Rhodes Restaurant Group, Jadine Restaurant Group, MercedezBenz, ….



9

CHƯƠNG 2 KIẾN THỨC- KỸ NĂNG ĐÃ ĐƯỢC TẬP HUẤN
2.1 . Kiến thức về NodeJS
2.1.1 Tổng quan về NodeJS
Node.js là một mơi trường thực thi mã JavaScript phía máy chủ (server-side) được
xây dựng dựa trên Chrome's V8 JavaScript engine. Nó cho phép chạy mã JavaScript
bên ngồi trình duyệt web và xây dựng các ứng dụng mạng đa năng và hiệu suất cao.
Dưới đây là một số điểm quan trọng về Node.js:
Kiến trúc khơng đồng bộ: Node.js sử dụng mơ hình không đồng bộ
(asynchronous) và hướng sự kiện (event-driven), cho phép xử lý nhiều yêu cầu cùng
lúc mà không cần tạo ra các luồng (threads) riêng biệt. Điều này giúp tăng hiệu suất và
khả năng mở rộng của ứng dụng.
Mã chạy phía máy chủ: Node.js cho phép viết mã JavaScript để xây dựng các
ứng dụng phía máy chủ, bao gồm các dịch vụ web, API, ứng dụng mạng và các ứng
dụng thời gian thực.
Nền tảng mã nguồn mở: Node.js được phát triển dưới dạng mã nguồn mở, có
cộng đồng lớn và tích cực. Điều này đảm bảo sự phát triển nhanh chóng, hỗ trợ đa dạng
và sự liên tục cải tiến của Node.js.
Hệ sinh thái mô-đun (module ecosystem) phong phú: Node.js có hệ sinh thái
mơ-đun đa dạng, cho phép các nhà phát triển sử dụng và tái sử dụng các mô-đun có
sẵn. Nền tảng npm (Node Package Manager) là một trong những hệ thống quản lý gói
phần mềm mạnh mẽ nhất, cho phép tìm kiếm, cài đặt và quản lý các mô-đun thư viện
dễ dàng.
Xây dựng ứng dụng thời gian thực: Với tính năng khơng đồng bộ và hướng sự
kiện, Node.js thích hợp cho việc xây dựng các ứng dụng thời gian thực như ứng dụng
chat, streaming, và game trực tuyến.


10


Mở rộng dễ dàng: Node.js cho phép mở rộng ứng dụng một cách linh hoạt.
Bằng cách sử dụng các kỹ thuật như clustering và load balancing, bạn có thể tăng khả
năng xử lý và đáp ứng của ứng dụng dễ dàng.
Tóm lại, Node.js là một nền tảng mạnh mẽ cho phát triển các ứng dụng mạng phía
máy chủ, với tính năng không đồng bộ, hướng sự kiện và khả năng mở rộng. Nó được
sử dụng rộng rãi trong cộng đồng phát triển phần mềm và là một công cụ quan trọng
trong việc xây dựng các ứng dụng hiệu suất cao và linh hoạt.
2.1.2 Vai trò của NodeJS mang lại cho doanh nghiệp
Node.js mang lại một số lợi ích quan trọng cho Ombrace. Dưới đây là một số vai
trò quan trọng mà Node.js mang lại:
Phát triển ứng dụng mạng nhanh chóng: Node.js sử dụng mơ hình khơng đồng bộ
và hướng sự kiện, cho phép xử lý đồng thời nhiều yêu cầu mà không gây chờ đợi. Điều
này giúp giảm thời gian phát triển ứng dụng và tăng tốc độ đáp ứng, đồng thời tạo ra
trải nghiệm người dùng tốt hơn.
Mở rộng dễ dàng: Node.js cho phép mở rộng ứng dụng một cách linh hoạt. Bằng
cách sử dụng các kỹ thuật như clustering và load balancing, Node.js có thể xử lý đồng
thời hàng ngàn kết nối và đảm bảo hiệu suất ổn định khi có nhiều người dùng truy cập
vào cùng một lúc.
Tiết kiệm tài ngun: Vì Node.js sử dụng mơ hình khơng đồng bộ, nó có thể xử lý
nhiều u cầu mà không cần phải tạo ra các luồng riêng biệt như trong các ứng dụng
truyền thống. Điều này giúp tiết kiệm tài nguyên máy chủ và giảm chi phí vận hành hệ
thống.
Hỗ trợ cho ứng dụng thời gian thực: Với khả năng xử lý sự kiện và tính khơng đồng
bộ, Node.js là một lựa chọn tốt cho việc phát triển các ứng dụng thời gian thực như ứng
dụng trò chơi, streaming trực tiếp, chat trực tuyến và các ứng dụng IoT (Internet of
Things).


11


Hệ sinh thái mơ-đun phong phú: Node.js có một hệ sinh thái mô-đun đa dạng và
phong phú thông qua npm (Node Package Manager). Điều này cho phép các nhà phát
triển nhanh chóng tìm kiếm, sử dụng và tái sử dụng các thư viện, mơ-đun và cơng cụ
có sẵn để nâng cao hiệu suất và tốc độ phát triển.
Tích hợp dễ dàng: Node.js có khả năng tương thích tốt với các công nghệ khác như
JSON, RESTful API, WebSocket, GraphQL và nhiều hơn nữa. Điều này cho phép tích
hợp linh hoạt với các hệ thống và dịch vụ khác, tạo ra các ứng dụng phức tạp và linh
hoạt.
Tóm lại, Node.js mang lại nhiều lợi ích quan trọng cho Imbrace, bao gồm tăng tốc
độ phát triển ứng dụng, mở rộng dễ dàng, tiết kiệm tài nguyên và hỗ trợ cho các ứng
dụng thời gian thực.
2.2 Kiến thức về Scrum
2.2.1 Tổng quan về Scrum [1]


Scrum là một phương pháp Agile (Phát triển phần mềm linh hoạt) dựa trên cơ chế
lặp và tăng trưởng. Scrum được thiết kế để hỗ trợ việc phát triển, cung cấp và cải
tiến các sản phẩm phức tạp.



Với Scrum, dự án sẽ được thực hiện trong các phân đoạn lặp đi lặp lại (được gọi là
sprint) thường có khung thời gian ngắn (từ 1 – 4 tuần). Trong mỗi phân đoạn này,
nhóm phát triển thực hiện đầy đủ các cơng việc cần thiết: lập kế hoạch, phân tích
yêu cầu, thiết kế, triển khai, kiểm thử, … để cho ra các phần nhỏ của sản phẩm.
Phù hợp cho những dự án có sự điều chỉnh liên tục, thay đổi trong quá trình phát
triển, u cầu tốc độ cao.




Với mơ hình phát triển lặp đi lặp lại Scrum, có 3 vai trị chính:
+ Product Owner: Quản lý Product Backlog. Định nghĩa các yêu cầu của khách
hàng và đánh giá cuối cùng đầu ra của các nhà phát triển phần mềm.


12

+ Scrum Master: chịu trách nhiệm về hiệu quả của nhóm, đảm bảo nhóm làm
đúng mơ hình làm việc, cũng như đảm bảo các sprint được hồn thành đúng
mục đích.
+ Development Team (Dev, Test, …): lập kế hoạch cho các sprint, thiết kế, thực
hiện và triển khai yêu cầu từ đầu.

Hình 1:Mơ hình làm việc Scrum



Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt (các cuộc họp) nhằm tạo môi
trường và quy cách hoạt động và cộng tác cho các thành viên trong dự án.



Sprint là một phân đoạn lặp đi lặp lại trong quy trình phát triển phần mềm, thường
có khung thời gian ngắn (từ 1 – 4 tuần).
+ Sprint Planning (Họp Kế hoạch Sprint)
● Nhóm phát triển gặp gỡ với Product Owner để lên kế hoạch làm việc cho
một Sprint. Công việc lập kế hoạch bao gồm việc chọn lựa các yêu cầu cần
phải phát triển, phân tích và nhận biết các cơng việc phải làm kèm theo các
ước lượng thời gian cần thiết để hoàn tất các tác vụ.



13

● Scrum sử dụng cách thức lập kế hoạch từng phần và tăng dần theo thời gian,
theo đó, việc lập kế hoạch không diễn ra duy nhất một lần trong vòng đời
của dự án mà được lặp đi lặp lại, có sự thích nghi với các tình hình thực tiễn
trong tiến trình đi đến sản phẩm.
+ Daily Scrum (Họp Scrum hằng ngày)
● Scrum Master tổ chức cho Đội sản xuất họp hằng ngày trong khoảng 15
phút để Nhóm Phát triển chia sẻ tiến độ công việc cũng như chia sẻ các khó
khăn gặp phải trong q trình phát triển phần mềm suốt một Sprint.
+ Sprint Review (Họp Sơ kết Sprint)
● Cuối Sprint, nhóm phát triển cùng với Product Owner sẽ rà sốt lại các cơng
việc đã hồn tất (DONE) trong Sprint vừa qua và đề xuất các chỉnh sửa hoặc
thay đổi cần thiết cho sản phẩm.
+ Sprint Retrospective (Họp Cải tiến Sprint)
● Dưới sự trợ giúp của Scrum Master, nhóm phát triển sẽ rà sốt lại tồn diện
Sprint vừa kết thúc và tìm cách cải tiến quy trình làm việc cũng như bản
thân sản phẩm.


Theo đó, cơng ty định sẵn đặc trưng Scrum là Cross-Functional – liên chức năng:
+ Các thành viên kỹ năng bổ trợ cho nhau, tự hoàn thành cơng việc mà khơng phụ
thuộc người khác bên ngồi nhóm.
+ Khơng có các chức danh nào khác ngồi Team members (hoặc Developers).


14


Hình 2: Mơ hình làm việc Cross-functional

2.2.2 Vai trị của Scrum mang lại cho doanh nghiệp


Scrum thích ứng nhanh với sự thay đổi yêu cầu



Scrum vận hành dựa trên đặc tính tự nhiên của người phát triển nên rất dễ hiểu, dễ
áp dụng, tạo nên tính tương tác cao giữa các thành viên trong nhóm thay vì chịu sự
áp đặt từ phía bên ngồi



Scrum giúp team tập trung vào sản phẩm, thích ứng nhanh với các thay đổi về yêu
cầu từ đó tạo nên sự tương tác cao giữa khách hàng với nhóm phát triển để sản
phẩm làm ra đáp ứng đúng với các yêu cầu của khách hàng

2.3 Kiến thức về Git
2.3.1 Tổng quan về Git


Git là phần mềm quản lí mã nguồn phân tán.



Git là một hệ thống VCS (Version Control System) đi theo hướng quản lí source
code phân tán, khác với SVN và CVS là hệ thống quản lí mã nguồn đi theo hướng
quản lí source code tập trung.



15



Các hệ thống giúp quản lí dự án hiện nay như: github, gitlab, Jira ticket, Backlog.



Một số lệnh cơ bản
+ git init: Khởi tạo git repo, sẽ tạo ra một thư mục .git, thư mục này chứa tất cả
các tập tin cần thiết cho repo.
+ git clone: Sao chép một remote repo về máy tính mình.
+ git status: để kiểm tra trạng thái của tệp tin (staged, modified, committed)
+ git add: Cập nhật các file lên Staging Area.
+ git commit: Cập nhật file lên local repository.
+ git push: Cập nhật file từ local repository lên remote repository.
+ git fetch: Cập nhật các thay đổi từ remote repo về local repo, nhưng không tiến
hành merge.
+ git pull: Cập nhật những thay đổi từ remote repo về local repo, đồng thời tiến
hành merge.
+ git merge: Gộp các branch lại với nhau.
+ git rebase: Gộp các commit lại với nhau.
+ git branch: xem các branch
+ git checkout <name-branch>: checkout sang branch
+ git checkout -b <name branch>: vừa tạo ra vừa checkout sang branch mới.
+ git commit --amend: sửa code mà không muốn tạo commit mới.

2.3.2 Vai trò của Git mang lại cho doanh nghiệp



Giúp quy trình làm việc code theo nhóm đơn giản hơn rất nhiều bằng việc kết hợp
các phân nhánh (branch).



Sắp xếp công việc tốt hơn.



Linh hoạt hơn khi cùng lúc phải làm nhiều task.


16



Tự tin thử nghiệm những ý tưởng mới.



Dễ dàng trong việc phát triển sản phẩm.



Có thể làm việc bất cứ đâu, chỉ cần clone mã nguồn từ repo về máy.

2.4 Kiến thức về CI
2.4.1 Tổng quan về CI



CI là tên viết tắt của Continuous Integration, hay cịn gọi là tích hợp liên tục. Quá
trình hoạt động cho phép các thành viên trong một team liên tục lưu trữ những mã
mới vào một kho nhất định. Nhờ vào số lượng dữ liệu này, CI sẽ tự động chạy test
và kiểm tra độ chính xác. Cùng lúc đó cũng hỗ trợ phát triển phần mềm một cách
nhanh chóng hơn bằng việc báo lỗi sai và đưa ra gợi ý giải quyết. [2]



Về chi tiết, khi bản mã được lập trình viên tải lên kho lưu trữ. CI sẽ tự động nhận
dữ liệu và tiến hành kiểm tra. Bằng nhiều thước đo khác nhau, CI đảm bảo mã
nguồn khơng cịn bất kỳ lỗi nào khi chạy trong bất cứ điều kiện nào. Mỗi tiến trình
đều sẽ có thơng báo trả về để người dùng có thể nắm rõ tiến trình phát triển của
phần mềm. Cùng với đó nhận biết những lỗi sai mắc phải và rút kinh nghiệm cho
lần tiếp theo. [2]

Hình 3: Q trình tích hợp CI


17



Q trình tích hợp mã vào kho cũng có thể diễn ra tự động nếu được cài đặt trước.
Vậy nên dây chuyền tích hợp – kiểm tra – test – report sẽ diễn ra liền mạch và tự
động. Lập trình viên có thể tiết kiệm thời gian để phát triển những phần khác và
quay trở lại xem báo cáo sau khi phần này đã được build và test xong. [2]




Các yêu cầu cơ bản cho một hệ thống CI đó là: [2]
+ Build được chạy tự động.
+ Test được chạy tự động.
+ Thường xuyên commits các thay đổi tới repository của dự án.
+ Cung cấp giao diện dễ nhìn cho các tiền trình của hệ thống cũng như real-time
status cho cả team có thể theo dõi.
+ Bên cạnh đó cũng cần một Version Control System (VCS). Xem như một nơi
tập trung hóa cũng như lưu giữ các thay đổi mà chúng ta tạo ra cho dự án theo
thời gian. Ngoài ra cũng cần một server hoặc máy ảo để có thể chạy hệ thống CI
tại chỗ.



CI với Gitlab CI [3]
+ Gitlab có tính năng Gitlab CI, code để ở Gitlab, rồi trong đó có cho cài đặt CI để
test và deploy code tự động.
+ Để GitLab CI cỏ thể hoạt động được chúng ta sẽ cần 02 thành phần:
● File .gitlab-ci.yml: nằm trong thư mục gốc của repo, file này sẽ định nghĩa
các Job để thực hiện, các Job sẽ chạy như thế nào, ở đâu và cấu hình project
sử dụng các Runner.
● Gitlab Runner: Có nhiệm vụ clone project về, đọc file .gitlab-ci.yml và thực
hiện các hưởng dẫn trong file. Luồng thực hiện như sau:


18

▪ Khi chúng ta chạy git push hoặc click vào pipeline thì gitlab repo sẽ
thơng báo đến cho gitlab runner, khi đó gitlab runner sẽ pull code mới
về, đọc file gitlab-ci.yml và thực hiện theo các bước đã được định nghĩa

trong đó.
▪ Một Pipeline CI sinh ra và report sẽ được hiển thị giao diện sau.

Hình 4: Pipeline CI

+ Pipelines là thành phần cấp cao nhất của tích hợp, phân phối và triển khai liên
tục. Pipeline bao gồm:
● Jobs: Các cơng việc được giao thực thi. (Ví dụ: biên dịch mã hoặc chạy test)
● Stage: Xác định các thời điểm và cách thực hiện. (Ví dụ: test chỉ chạy sau
khi biên dịch thành công)
● Pipeline hoạt động theo nguyên tắc sau:
▪ Tất cả các công việc trong cùng một stage được Runner thực hiện song
song, nếu có đủ số lượng Runner đồng thời.
▪ Nếu Success, pipeline chuyển sang stage tiếp theo.


19

▪ Nếu Failed, pipeline sẽ dừng lại. Có một ngoại lệ là nếu job được đánh
dấu làm thủ cơng, thì dù bị fail thì pipeline vẫn tiếp tục.
▪ Bên dưới là ví dụ về đồ thị Pipeline thơng thường:

Hình 5: Đồ thị Pipeline

+ Tóm lại, các bước để Gitlab CI hoạt động như sau:
● Thêm.gitlab-ci.yml vào thư mục gốc của repo.
● Cấu hình gitlab Runner
2.4.2 Vai trị của CI mang lại cho doanh nghiệp



Giảm thiểu đi những rủi ro nhờ việc phát hiện và sửa lỗi sớm, giúp tăng chất lượng
sản phẩm nhờ khả năng tự động kiểm tra và quan sát.



Khơng những vậy, những quy trình thủ cơng lặp đi lặp lại hằng ngày cũng được
giảm tải, thay vào đó là xây dựng và kiểm thử tự động mà không cần đến sự giúp
đỡ của con người.



Một đặc điểm nữa của CI chính là có thể deploy, triển khai phần mềm ở bất cứ địa
điểm và thời gian nào.


20



Ngồi ra, việc tích hợp mã lên CI tăng tính chia sẻ giữa các thành viên. Khi thông
tin được cập nhật liên tục, các thành viên trong team sẽ có những kế hoạch triển
khai phù hợp cho phần việc của bản thân.

2.5 Kiến thức về Docker
2.5.1. Tổng quan về Docker [4]


Docker là một nền tảng để cung cấp cách để building, deploying và running ứng
dụng dễ dàng hơn bằng cách sử dụng các containers (trên nền tảng ảo hóa).




Các containers cho phép lập trình viên đóng gói một ứng dụng với tất cả các
phần cần thiết, chẳng hạn như thư viện và các phụ thuộc khác, và gói tất cả ra
dưới dạng một package. Nhờ vào container, ứng dụng sẽ chạy trên mọi máy
Linux khác bất kể mọi cài đặt tùy chỉnh mà máy có thể có khác với máy được sử
dụng để viết code

Hình 6: Quy trình, các bước hoạt động của Docker

+ Build: đầu tiên truy cập Docker và tạo lập một dockerfile, trong đó chứa code
của người dùng. Dockerfile này sẽ được thiết lập trên thiết bị đã được cài đặt



×