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

Tìm hiểu docker và xây dựng mô hình cicd

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 (787.12 KB, 24 trang )

ỦY BAN NHÂN DÂN TP HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC SÀI GÒN
Khoa Công nghệ thông tin

ĐỒ ÁN MÔN HỌC
Tìm hiểu Docker và xây dựng mơ hình CICD

Tên thành viên :
Trần Ngọc Sơn: 3120410454
Lê Bảo Tài: 3120410457
Vương Trường Chung: 3120410068
Trương Hồ An:3120410024

THÀNH PHỐ HỒ CHÍ MINH, THÁNG 12 NĂM 2023

LỜI CẢM ƠN

Lời đầu tiên, chúng em xin chân thành cảm ơn thầy Lương Minh Huấn– giảng viên phụ trách – đã hướng dẫn tận tình
chúng em trong thời gian thực hiện đồ án. Nhờ có sự giúp đỡ tận tình của thầy chúng em có thể hoàn thành được đồ án
một cách tốt nhất

Tuy chúng em đã cố gắng hạn chế những sai sót hết mức có thể nhưng vì kiến thức cịn hạn hẹp nên chúng em khó tránh
khỏi những sai sót trong quá trình thực hiện cũng như là lúc báo cáo đồ án. Do đó, chúng em mong nhận được ý kiến
đóng góp từ thầy để chúng em có thể khắc phục, sửa chữa.

Chúng em xin chân thành cảm ơn thầy!

Contents

Chương 1: Kiến thức về Docker............................................................................................................................................. 5
1.1. Giới thiệu sơ lược về Docker ................................................................................................................................. 5


Tại sao lại có Docker ...................................................................................................................................................... 5
Docker là gì? .................................................................................................................................................................. 5
Lịch sử ra đời ................................................................................................................................................................. 5
Roadmap phát triển....................................................................................................................................................... 5
1.2. Kiến trúc tổng thể .................................................................................................................................................. 7
Docker Engine................................................................................................................................................................ 7
Docker Hub .................................................................................................................................................................... 8
Một số thuật ngữ........................................................................................................................................................... 8
1.3. Cách thức hoạt động ............................................................................................................................................. 9
1.4. Docker mang lại lợi ích gì? Cho ai? Trong hồn cảnh nào? ................................................................................. 10
Lợi ích và hoàn cảnh sử dụng ...................................................................................................................................... 10
Ai sử dụng Docker ....................................................................................................................................................... 10
1.5. Một số công cụ phổ biến ..................................................................................................................................... 10
Docker Compose.......................................................................................................................................................... 11
Docker Swarm.............................................................................................................................................................. 11
1.6. So sánh Docker với các công nghệ tương tự ....................................................................................................... 11

Chương 2: Áp dụng Docker ................................................................................................................................................. 12
2.1. Setup Dockerfile .................................................................................................................................................. 12
NestJs – backend ......................................................................................................................................................... 12
VueJs – frontend.......................................................................................................................................................... 13
2.2. Setup Docker-Compose ....................................................................................................................................... 14
Quy trình cơ bản.......................................................................................................................................................... 14
Docker-compose file.................................................................................................................................................... 15

Chương 3: Mơ hình CI/CD ................................................................................................................................................... 16
CICD là gì ? ....................................................................................................................................................................... 16
Triển khai CICD đơn giản ............................................................................................................................................. 16
Jenkins ............................................................................................................................................................................. 17
Tại sao lại có Jenkins? .................................................................................................................................................. 17

Jenkins là gì? ................................................................................................................................................................ 17

Thành phần của Jenkins............................................................................................................................................... 17
Ứng dụng của Jenkins .................................................................................................................................................. 18
AWS ............................................................................................................................................................................. 19
AWS là gì ? ................................................................................................................................................................... 19
Các tính năng vượt trội................................................................................................................................................ 19
Dịch vụ quan trọng trên AWS ...................................................................................................................................... 20
Ansible: ............................................................................................................................................................................ 21
Ansible là gì? ................................................................................................................................................................ 21
Thành phần của Ansible .............................................................................................................................................. 21
Ứng dụng của Ansible.................................................................................................................................................. 22

Chương 1: Kiến thức về Docker

1.1. Giới thiệu sơ lược về Docker

Tại sao lại có Docker
Trong q trình phát triển phần mềm, có thể xuất hiện nhiều vấn đề của sự khơng tương thích giữa các máy tính của các
nhà phát triển và môi trường triển khai.

Docker ra đời để giải quyết vấn đề trên.Bằng cách đơn giản hóa q trình triển khai có nghĩa là

Docker được sử dụng để đóng gói ứng dụng và mơi trường thực thi của nó vào một container duy nhất, đảm bảo rằng ứng
dụng sẽ chạy đúng trên môi trường hoặc một máy tính.

Docker là gì?
Docker là một nền tảng cho developers và sysadmin để develop, deploy và run application với container. Nó cho phép
tạo các mơi trường độc lập và tách biệt để khởi chạy và phát triển ứng dụng và môi trường này được gọi là container. Khi
cần deploy lên bất kỳ server nào chỉ cần run container của Docker thì application của bạn sẽ được khởi chạy ngay lập

tức.

Lịch sử ra đời
• Docker được thành lập bởi ơng Solomon Hykes and Sebastien Pahl. Nó là sản phẩm của nhóm startup Y
Combinator phát triển và được công bố năng 2011.
• Lúc đầu Docker project là dự án nội bộ của công ty dotCloud, platform-as-a- service ở Pháp
• Lần đầu tiên docker được công bố dưới dạng open-source là tháng 3 năm 2013.
• Từ phiên bản 0.9 thì docker đã dùng những component riêng được biết bằng Go ( Golang ) để thay thế cho việc
dùng LXC(linux system) làm mơi trường thực thi.
• Vào năm 2017 thì docker đã tạo ra Moby project để phát triển vấn đề đa nhân thay cho việc dùng docker engine.

Roadmap phát triển

• Tháng 9-2013 Red hat và docker công bố hợp tác xoay quanh Fedora, RHEL, OpenShift.
• Tháng 10-2014 cơng bố tích hợp Docker engine vào windows server và hỗ trợ native cho

docker client trong windows.

• Tháng 11-2014 Docker cơng bố hợp tác với Stratoscale(công ty làm về data center

operating system. Vmware là 1 trong các sản phẩm).Ngoài ra, Docker container đã có thể
support cho EC2 của Amazon.

• Tháng 12-2014, IBM công bố hợp tác với Docker và tích hợp docker vào Cloud của IBM.

• Tháng 6-2015, Docker và 1 số công ty như: CoreOS, Google, Microsoft,
AWS, đã công bố liên kết với nhau để cung cấp giải pháp tiêu chuẩn của hệ điều
• hành cho software containers.
Tháng 5-2016 nghiên cứu cho thấy những tổ chức chính tham gia đónng góp
• cho docker là: The Docker Teamm Cisco, Google, Huawei,IBM, Microsoft and

• Red Hat.
1.2. Tháng 6-2016, Microsoft công bố docker có thể sử dụng trên Windown 10.
Tháng 5-2019 WSL2 của windows có thể hỗ trợ chạy Docker.

Kiến trúc tổng thể

Hình 1.1: Kiến trúc Docker

Docker có 2 thành phần chính: Docker Engine và Docker Hub. Docker Engine là giải pháp ảo hóa
(virtualization) dựa trên cơng nghệ container, còn tại Docker Hub là platform Software-as-a-Service để
chia sẻ images
Docker Engine

Docker Engine là ứng dụng dựa trên kiến trúc client-server với các thành phần chính:
• Docker daemon đóng vai trị như một server. Docker daemon có thể build, run và distribute

docker container

• Một REST API đóng vai trị như interface để giao tiếp với docker daemon
• Một command line interface (CLI) đóng vai trị như một client
Docker client sẽ giao tiếp với docker daemon thông qua REST API, cả 2 sẽ kết nối với nhau thông qua
UNIX socket hoặc qua giao tiếp mạng. Việc giao tiếp theo phương thức này cho phép Docker Client và
Docker Daemon có thể chạy trên cùng một hệ thống hoặc khác hệ thống.
Docker Hub
Docker hub là nơi lưu trữ các image (public hoặc private). Ở đây người dùng có thể chia sẻ các
customized image. Ngồi ra, người dùng có thể tìm và tải các image thông qua docker client

Hình 1.2: Trang Docker hub

Một số thuật ngữ

• Image: Là một package chứa tất cả các thông tin, thư viện, framework,... cần thiết để tạo ra một

container. Thông thường, các image được tạo ra dựa trên các image cha (based image) – image cha được
cung cấp sẵn bởi docker.

• Container: Về cơ bản, container là một cơng nghệ ảo hóa nhưng thay vì phải giả lập phần cứng
như Vmware thì container sẽ chia sẻ hệ điều hành với host. Mỗi container đều chạy độc lập với các
container khác và hệ thống mà docker đang chạy. Do đó người dùng có thể thêm, xóa, sửa container; Kết
nối với network; Thậm chí là tạo một image dựa trên trạng thái hiện tại của container mà không ảnh
hưởng tới hệ thống host và các container khác.

Hình 1.3: So sánh kiến trúc của container và Virtual Machines

• Daemon: là một loại chương trình trên các hệ điều hành Like-Unix hoạt động ẩn mà khơng cần sự
kiểm sốt bởi user

• Docker Registry: là nơi lưu trữ riêng của Docker Images. Images được push vào registry và client
sẽ pull images từ registry. Có thể sử dụng registry của riêng bạn hoặc registry của nhà cung cấp như :
AWS, Google Cloud, Microsoft Azure

1.3. Cách thức hoạt động

Để cho mỗi container có thể chạy như một process độc lập và chiếm khơng gian ít thì docker sử dụng kiến
trúc phân lớp (layer). Những layer này còn được gọi là layer trung gian, chúng được tạo từ những câu
lệnh trong Dockerfile khi build một docker image
Ví dụ:

Với mỗi câu lệnh trên, docker sẽ tạo ra một layer nằm chồng lên container image. Các layer sẽ
được hash, có nghĩa là docker sẽ lưu các layer vào bộ nhớ cache. Điều này sẽ tối ưu thời gian build cho
các layer mà không thay đổi giữa những lần build. Tức là người dùng sẽ không phải rebuild và copy các

file ở bước COPY nếu như câu lệnh COPY không thay đổi.

Sau khi build xong các câu lệnh, Docker sẽ tạo ra một lớp trắng mới. Người dùng có thể truy cập
tới layer này sử dụng câu lệnh docker exec –it <container> <command>. Bằng cách này người dùng có
thể thay đổi image và có thể commit những thay đổi đó bằng câu lệnh docker commit

Hình 1.4: Kiến trúc phân lớp của container
1.4. Docker mang lại lợi ích gì? Cho ai? Trong hồn cảnh nào?

Lợi ích và hồn cảnh sử dụng
• Việc sử dụng Docker cho phép ta vận chuyển mã nhanh hơn, tiêu chuẩn hóa hoạt động của ứng

dụng, di chuyển mã một cách trơn tru và tiết kiệm tiền bằng cách cải thiện khả năng tận dụng tài nguyên.
• Với Docker, ta sẽ được nhận một đối tượng duy nhất có khả năng chạy ổn định ở bất kỳ đâu. Cú

pháp đơn giản và không phức tạp của Docker sẽ cho ta quyền kiểm sốt hồn tồn.
• Thứ tư là dễ dàng automate (tự động hóa) việc quản lý các docker container thông qua

Kubernetes hoặc Docker Swarm.
• Container Docker giúp cho việc chạy nhiều mã hơn trên từng máy chủ trở nên dễ dàng hơn, cải

thiện khả năng tận dụng và tiết kiệm tiền bạc cho chúng ta, giúp dự án có khả năng mở rộng cao.
Ai sử dụng Docker

• Business Analysist: thường dùng docker để chạy môi trường demo cho khách hàng.
• QA & QC: thường dùng docker để chạy môi trường test để kiểm thử sản phầm.
• Software Architect dùng để kiểm thử những công nghệ và tính ổn định của các cơng nghệ trên
nhiều nền tảng khác

1.5. Một số công cụ phổ biến


Docker Compose
Docker Compose là một công cụ được dùng để quản lý và chạy các Docker Container. Docker Compose
cho phép ta cấu hình các container trong một file YAML duy nhất và chạy tất cả các container chỉ với
một câu lệnh

Docker Swarm
Docker Swarm là một công cụ giúp gom cụm các Docker. Docker Swarm có thể gom nhiều Docker
Engine lại với nhau thành một Docker Engine “ảo”. Tức là bất cứ cơng cụ nào giao tiếp với Docker
Engine thì cũng có thể giao tiếp với Docker Swarm như bình thường

1.6. So sánh Docker với các công nghệ tương tự

LXD OpenVZ LinuxVServer
Sử dụng nhân được vá để
So sánh với Mô phỏng trải nghiệm Một phần mở rộng cung cấp các tính năng ảo
Docker vận hành Máy ảo của nhân Linux, cung hóa cấp hệ điều hành. Mỗi
Máy chủ riêng ảo được chạy
nhưng về vùng chứa và cấp các công cụ để ảo như một quy trình riêng biệt
trên cùng một hệ thống máy
làm như vậy mà khơng hóa cho người dùng. chủ lưu trữ và có hiệu quả
cao do không cần mô phỏng.
tốn chi phí mơ phỏng Nó sử dụng Mơi Tuy nhiên, nó là cổ điển về
số lượng phát hành, vì chưa
tài nguyên phần cứng. trường ảo để lưu trữ có bản nào kể từ năm 2007.

Mặc dù daemon LXD các hệ thống Khách, Nhiều VPS lưu trữ và quản trị,
và hỗ trợ Legacy.
yêu cầu nhân Linux, nó có nghĩa là nó sử
trung bình

có thể được cấu hình để dụng vùng chứa cho

truy cập bằng máy toàn bộ hệ điều hành,

khách không phải các ứng

Windows hoặc macOS. dụng và quy trình
riêng lẻ.

Trường hợp sử Quyền truy cập phần CI / CD và DevOps,

dụng cứng trần cho VPS, Vùng chứa và dữ liệu

nhiều bản phân phối lớn, Bộ Ứng dụng

Linux trên cùng một Người dùng Biệt lập

máy chủ. Lưu trữ, Hợp nhất máy

chủ.

Khả năng tích dễ dễ

hợp

Các công ty sử Walmart PayPal, Box. FastVPS, Parallels, DreamHost, Amoebasoft,
dụng Pixar Animation OpenHosting Inc., Lycos,
Studios, Yandex. Pháp,MosaixCommunications,
Inc.


Chương 2: Áp dụng Docker

2.1. Setup Dockerfile

NestJs – backend

FROM node:12.13-alpine As development

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install –only=development

COPY . .

RUN npm run build

FROM node:12.13-alpine as production

ARG NODE_ENV=production
ENV
NODE_ENV=${NODE_ENV}

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install –only=production


COPY . .

COPY –from=development /usr/src/app/dist ./dist

CMD [“node”, “dist/main”]

Giải thích thơng số
FROM — chỉ định image gốc: python, unbutu, alpine…
LABEL — cung cấp metadata cho image. Có thể sử dụng để add thơng tin maintainer. Để xem các label
của images, dùng lệnh docker inspect.
ENV — thiết lập một biến mơi trường.
RUN — Có thể tạo một lệnh khi build image. Được sử dụng để cài đặt các package vào container.
COPY — Sao chép các file và thư mục vào container. ADD — Sao chép các file và thư mục vào
container.
CMD — Cung cấp một lệnh và đối số cho container thực thi. Các tham số có thể được ghi đè và chỉ có
một CMD.
WORKDIR — Thiết lập thư mục đang làm việc cho các chỉ thị khác như: RUN, CMD, ENTRYPOINT,
COPY, ADD,…
ARG — Định nghĩa giá trị biến được dùng trong lúc build image. ENTRYPOINT — cung cấp lệnh và
đối số cho một container thực thi. EXPOSE — khai báo port lắng nghe của image.
VOLUME — tạo một điểm gắn thư mục để truy cập và lưu trữ data.

Run project với nestjs
Bước 1: config file Dockerfile
Bước 2: docker build –t <<app-name>> .
Bước 3: docker run –p 8080:8080 app-name
VueJs – frontend

FROM node:12


WORKDIR /app COPY

package*.json .
RUN npm install
COPY . .

RUN npm run build
EXPOSE 8080
CMD [“npm”,”run”,”serve”]

Run Project cho VueJs
Bước 1: docker build –t <<app-name>>

Hình 2.1: Build dockerfile cho
VueJs

Bước 2: docker run -it -p 8080:8080 -v /app/node_modules --rm test:latest

2.2. Setup Docker-Compose

Quy trình cơ bản
Cơ bản quy trình dùng docker compose gồm ba bước:

1. Xác định mơi trường ứng dụng của bạn bằng Dockerfile để nó có thể được lưu trữ ở mọi nơi.
2. Xác định các dịch vụ tạo nên ứng dụng của bạn trong docker-compose.yml để chúng có thể chạy
cùng nhau trong một môi trường biệt lập.
3. Chạy docker-compose up và bắt đầu chạy toàn bộ ứng dụng của bạn.

Docker-compose file


Ghi chú:
services: để khai báo những service có trong docker-compose
build: để khai báo đường dẫn tới service và có thể thêm đường dẫn đến docker file reset: always dùng khi
db gặp sự cố thì tự khởi động lại
image: khai báo tên image khi build container_name: khai báo tên container khi build
port: ánh xạ port từ container sang port sang máy local
environment: tương tự như file .env để setup môi trường
links: để chỉ ra liên kết của các image với nhau
volumes: là nơi chứa data

Chương 3: Mơ hình CI/CD

3.1. CICD là gì ?

CI/CD là viết tắt của Continuous Integration và Continuous Delivery (hoặc Continuous Deployment), đây
là một phương pháp trong quy trình phát triển phần mềm để tự động hóa q trình kiểm thử và triển khai
mã nguồn.

1. Continuous Integration (CI): Là q trình tích hợp tự động mã nguồn từ các thành viên của nhóm
phát triển. Mỗi khi có thay đổi trong mã nguồn, CI sẽ tự động kích hoạt q trình kiểm thử tự động để
đảm bảo rằng mã mới khơng làm hỏng tính ổn định của hệ thống.

2. Continuous Delivery (CD): Là q trình tự động hóa việc triển khai (deploy) mã nguồn từ môi
trường phát triển đến môi trường sản phẩm một cách liên tục. Mục tiêu là để có thể triển khai các thay đổi
mà không cần sự can thiệp thủ công, giúp giảm thiểu lỗi và tăng tính ổn định của hệ thống.

3. Continuous Deployment (CD): Tương tự như Continuous Delivery, nhưng với Continuous
Deployment, các thay đổi sẽ được triển khai tự động đến môi trường sản phẩm mà khơng cần sự can thiệp
thủ cơng. Điều này có nghĩa là mọi thay đổi qua các bước kiểm thử sẽ tự động triển khai nếu tất cả các
bước kiểm thử đều thành cơng.

Quy trình CI/CD giúp tăng cường sự linh hoạt, tính ổn định và tăng tốc trong quá trình phát triển phần
mềm bằng cách giảm thời gian và công sức cần thiết cho các bước kiểm thử và triển khai.
Triển khai CICD đơn giản
Triển khai CI/CD có thể được thực hiện theo một số bước cơ bản. Dưới đây là hướng dẫn giả sử bạn đang
bắt đầu từ một dự án phần mềm và muốn triển khai CI/CD:

Continuous Integration (CI):
Quản lý mã nguồn:

• Sử dụng một hệ thống quản lý mã nguồn như Git để theo dõi và quản lý mã nguồn.

Automated Builds:

• Cấu hình cơng cụ tự động hóa quy trình xây dựng (build) như Jenkins, Travis CI, hoặc GitLab CI
để tự động xây dựng mã nguồn mỗi khi có thay đổi.

Automated Tests:

• Thêm bộ kiểm thử tự động (automated tests) vào quy trình xây dựng để đảm bảo tính ổn định của
mã nguồn. Các loại kiểm thử có thể bao gồm unit tests, integration tests, và end-to-end tests.

Continuous Delivery/Continuous Deployment (CD):

Quy trình Triển khai (Deployment Pipeline):

• Xây dựng một quy trình triển khai tự động, từ môi trường phát triển cho đến môi trường thử
nghiệm và môi trường sản phẩm.

Environment Configuration:


• Quản lý cấu hình mơi trường một cách tự động để đảm bảo rằng ứng dụng có thể chuyển đổi giữa
các môi trường một cách dễ dàng.

Rollback Mechanism:

• Thêm chức năng tự động rollback để đảm bảo rằng nếu có vấn đề trong quá trình triển khai, hệ
thống có thể quay lại phiên bản trước đó một cách an tồn.

Monitoring và Logging:

• Tích hợp công cụ theo dõi và ghi log để theo dõi hiệu suất của ứng dụng sau mỗi lần triển khai.

3.2.Jenkins

Tại sao lại có Jenkins?
Trong q trình phát triển phần mềm, đặc biệt là trong mơ hình Agile và DevOps, việc tích hợp liên tục
và triển khai liên tục trở nên quan trọng. Jenkins được thiết kế để tự động hóa các bước này, giúp tăng
cường chất lượng phần mềm, giảm thời gian triển khai và tạo điều kiện cho quá trình phát triển linh hoạt
hơn.

Jenkins là gì?
Jenkins là một công cụ mã nguồn mở được sử dụng để tự động hóa các quy trình phần mềm, đặc biệt là
trong các quy trình CI/CD.

Được xây dựng trên Java và hỗ trợ nhiều loại cơng nghệ và ngơn ngữ lập trình.

Thành phần của Jenkins
Jenkins Server: Nền tảng chính để cài đặt và chạy Jenkins.

Ví dụ: Một doanh nghiệp phần mềm quyết định triển khai Jenkins trên một máy chủ riêng để tự động

hóa quy trình phát triển và triển khai của họ. Jenkins Server sẽ chạy liên tục và theo dõi các thay đổi trong
kho mã nguồn, kích hoạt các cơng việc và xây dựng tự động khi cần.

Jobs/Projects: Các công việc cần thực hiện, bao gồm các bước như biên dịch mã nguồn, kiểm thử, triển
khai, vv.

Ví dụ: Một job trong Jenkins có thể là q trình triển khai tự động của một ứng dụng web. Công
việc này sẽ bao gồm các bước như biên dịch mã nguồn, kiểm thử tự động, và triển khai lên môi trường
sản xuất. Mỗi công việc đại diện cho một phần của quy trình tự động hóa.

Plugins: Mở rộng chức năng của Jenkins, giúp tích hợp với nhiều cơng cụ khác nhau.

Ví dụ: Để tích hợp với cơng cụ kiểm thử tự động như Selenium, nhóm phát triển có thể cài đặt và sử
dụng plugin Selenium trong Jenkins. Plugin này mở rộng chức năng của Jenkins để có khả năng chạy các
bài kiểm thử tự động trên trình duyệt, tăng cường độ tin cậy của quy trình kiểm thử.

Builds: Quá trình biên dịch và kiểm thử mã nguồn.

Ví dụ: Mỗi lần có sự thay đổi trong kho mã nguồn, Jenkins sẽ khởi động một build. Quá trình này
bao gồm việc biên dịch mã nguồn, tạo các phiên bản thử nghiệm, và kiểm thử. Kết quả của build này sẽ
quyết định liệu ứng dụng có thể triển khai hay không.

Workspaces: Nơi Jenkins lưu trữ mã nguồn và các tệp cần thiết để thực hiện công việc.Ví dụ: Khi
Jenkins thực hiện một cơng việc, nó sẽ tạo một workspace để lưu trữ mã nguồn và tất cả các tệp cần thiết.
Điều này bao gồm cả mã nguồn từ kho mã nguồn, các tệp cấu hình, và bất kỳ tài nguyên nào khác cần
thiết để thực hiện cơng việc. Workspaces giúp Jenkins duy trì một mơi trường cô lập cho mỗi công việc.

Ứng dụng của Jenkins
CI/CD: Triển khai liên tục và Kiểm thử liên tục:


Ví dụ: Một nhóm phần mềm sử dụng Jenkins để triển khai liên tục ứng dụng web của họ. Khi một
nhà phát triển thực hiện một commit vào kho mã nguồn, Jenkins tự động kích hoạt quy trình CI, trong đó
bao gồm biên dịch mã nguồn, chạy các bài kiểm thử tự động và triển khai ứng dụng nếu tất cả các bước
thành công. Điều này đảm bảo rằng mọi thay đổi đều được kiểm thử và triển khai một cách nhanh chóng
và đáng tin cậy.

Tự động hóa cơng việc lặp đi lặp lại:

Ví dụ: Một dự án phần mềm lớn sử dụng Jenkins để tự động hóa q trình biên dịch mã nguồn.
Khi có bất kỳ sự thay đổi nào trong kho mã nguồn, Jenkins tự động bắt đầu quá trình biên dịch, kiểm thử
tự động và tạo bản triển khai. Điều này giúp giảm cơng sức của nhóm phát triển, đồng thời đảm bảo rằng
mỗi phiên bản mới của ứng dụng được kiểm thử đầy đủ và có thể triển khai một cách tự động.

Quản lý dự án:

Ví dụ: Một dự án phần mềm lớn sử dụng Jenkins để quản lý công việc và theo dõi tiến độ.
Jenkins cung cấp giao diện người dùng đồ họa, trong đó nhóm phát triển có thể tạo và quản lý các cơng

việc, xem trạng thái của các công việc, và theo dõi tiến độ của dự án. Điều này giúp cả nhóm hiểu rõ hơn
về trạng thái của dự án và có khả năng đưa ra các quyết định dựa trên thơng tin thực tế và chi tiết.
AWS

AWS là gì ?
Amazon Web Services (AWS) là giải pháp đám mây toàn diện và được sử dụng rộng rãi nhất, cung cấp
trên 200 dịch vụ đầy đủ tính năng từ các trung tâm dữ liệu trên toàn thế giới. Hàng triệu khách hàng – bao
gồm các công ty khởi nghiệp tăng trưởng nhanh nhất, các tập đoàn lớn nhất cũng như các cơ quan hàng
đầu của chính phủ – đều tin tưởng vào AWS để giảm chi phí, trở nên linh hoạt hơn và đổi mới nhanh hơn.
Các tính năng vượt trội

Đầy đủ chức năng nhất

AWS có nhiều dịch vụ hơn và nhiều tính năng hơn trong các dịch vụ đó, hơn bất kỳ nhà cung cấp đám
mây nào khác–từ các cơng nghệ cơ sở hạ tầng như máy tính, ổ lưu trữ và cơ sở dữ liệu–đến các công nghệ
mới nổi, như machine learning và trí tuệ nhân tạo, kho dữ liệu và phân tích, và Internet of Things. Điều
này giúp bạn chuyển các ứng dụng hiện có của bạn lên đám mây nhanh hơn, dễ dàng hơn và hiệu quả hơn
về chi phí cũng như xây dựng gần như mọi thứ bạn có thể hình dung.
AWS cũng có chức năng sâu nhất trong các dịch vụ đó. Ví dụ, AWS cung cấp nhiều loại cơ sở dữ liệu
nhất được xây dựng có mục đích cho các loại ứng dụng khác nhau để bạn có thể chọn cơng cụ phù hợp
cho cơng việc để có chi phí và hiệu suất tốt nhất.

Cộng đồng khách hàng và đối tác lớn nhất
AWS có cộng đồng lớn và linh hoạt nhất với hàng triệu khách hàng hoạt động và hàng chục ngàn đối tác
trên toàn cầu. Khách hàng trên hầu hết các ngành công nghiệp thuộc mọi quy mô, bao gồm công ty khởi
nghiệp, doanh nghiệp và tổ chức cơng, đang chạy mọi trường hợp sử dụng có thể diễn ra trên AWS. Mạng
lưới đối tác AWS (APN) bao gồm hàng nghìn đơn vị tích hợp hệ thống chun về dịch vụ AWS và hàng

chục nghìn nhà cung cấp phần mềm độc lập (ISV) điều chỉnh cơng nghệ của mình để hoạt động trên
AWS.

Bảo mật nhất

AWS được thiết kế để trở thành mơi trường điện tốn đám mây bảo mật và linh hoạt nhất hiện nay. Cơ sở
hạ tầng cốt lõi của chúng tôi được xây dựng để đáp ứng các yêu cầu bảo mật cho quân đội, ngân hàng
toàn cầu và các tổ chức khác với mức độ nhạy cảm cao. Điều này được hỗ trợ bởi một bộ công cụ bảo mật
đám mây sâu rộng với hơn 300 dịch vụ và tính năng bảo mật, tuân thủ và quản trị cũng như hỗ trợ 143
tiêu chuẩn bảo mật và chứng nhận tuân thủ.

Tốc độ đổi mới nhanh nhất

Với AWS, bạn có thể tận dụng các cơng nghệ mới nhất để thử nghiệm và đổi mới nhanh hơn. Chúng tôi
liên tục đẩy nhanh tốc độ đổi mới để phát minh ra các cơng nghệ hồn tồn mới mà bạn có thể sử dụng để

chuyển đổi doanh nghiệp của mình. Ví dụ, vào năm 2014, AWS đã tiên phong trong khơng gian điện tốn
khơng có máy chủ với việc ra mắt AWS Lambda, cho phép các nhà phát triển chạy mã của họ mà không
cần cung cấp hoặc quản lý máy chủ. Và AWS đã xây dựng Amazon SageMaker, một dịch vụ machine
learning được quản lý hoàn toàn, trao quyền cho các nhà phát triển và nhà khoa học mỗi ngày sử dụng
machine learning–mà không cần bất kỳ kinh nghiệm nào trước đó.

Chun mơn vận hành đã được chứng minh là tốt nhất

AWS có kinh nghiệm, sự trưởng thành, độ tin cậy, bảo mật và hiệu suất chưa từng có mà bạn có thể tin
tưởng cho các ứng dụng quan trọng nhất của mình. Trong hơn 17 năm, AWS đã cung cấp dịch vụ đám
mây cho hàng triệu khách hàng trên toàn thế giới, phục vụ nhiều trường hợp sử dụng đa dạng. AWS có
nhiều kinh nghiệm vận hành nhất, trên quy mô lớn hơn so với bất kỳ nhà cung cấp đám mây nào.

Dịch vụ quan trọng trên AWS
EC2 (Elastic Compute Cloud): Là dịch vụ máy ảo cho phép bạn chạy ứng dụng trên các máy ảo có khả

năng điều chỉnh.

S3 (Simple Storage Service): Dịch vụ lưu trữ đối tượng, cho phép lưu trữ và truy xuất dữ liệu từ bất kỳ
đâu trên internet.

RDS (Relational Database Service): Cung cấp cơ sở dữ liệu quan hệ quản lý và dễ mở rộng.

Lambda: Cho phép chạy mã không cần quản lý máy chủ, thường được sử dụng cho các chức năng
(functions) serverless.

IAM (Identity and Access Management): Quản lý quyền và truy cập vào các tài nguyên AWS.

VPC (Virtual Private Cloud): Cho phép tạo mạng ảo cô lập trong AWS.


Route 53: Dịch vụ quản lý tên miền và DNS.

Elastic Beanstalk: Tự động triển khai và quản lý ứng dụng web.

CloudFormation: Dịch vụ tự động hóa triển khai và quản lý các tài nguyên AWS.


×