SlideShare a Scribd company logo
1 of 36
Download to read offline
KINH NGHIỆM TRIỂN
KHAI CI/CD TẠI
STRINGEE
Hồ Chí Minh 08.2023
Tạ Văn Dậu – Head of Technical
Quy trình phát triển phần mềm
Môi trường phát triển phần mềm
Source scan (Security scan, Coding convention scan, ...)
Unit test và Automation test
NỘI DUNG
Giới thiệu
Demo
Ứng dụng CI/CD trong công ty SaaS
Quy trình phát triển phần mềm và CI/CD tại Stringee
Giới thiệu Stringee API, StringeeX Contact Center
Kiến trúc hệ thống Stringee
Tải hệ thống và các con số hiện tại
SaaS là gì và khác các công ty khác ở đâu?
Ứng dụng CI/CD mang lại lợi ích gì
Vai trò Unit Test & Automation Test
stringee.com 2
or sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet purus gravida quis blandit turpis. At erat pellentesque adipiscing commodo elit at.
placerat orci nulla.
Stringee SMS
APIs
Stringee Video
Conference APIs
Stringee Chat
APIs
SẢN PHẨM STRINGEE
StringeeX - Contact Center Platform
Stringee Programable Contact Center APIs
Stringee Call
APIs
APIs
Completed
Software
stringee.com 3
STRINGEE CALL APIs
App to App
01
03
05
02
04
06
Phone to App
Voice/Video Conference
App to Phone
Phone to Phone
RESTful API
stringee.com 4
APP TO APP
2. Get SCCO (Stringee Call
Control Object)
stringee.com 5
APP TO PHONE
stringee.com 6
PHONE TO APP
stringee.com 7
PHONE TO PHONE
stringee.com 8
STRINGEE CLIENT SDK
stringee.com 9
KIẾN TRÚC HỆ THỐNG STRINGEE
stringee.com 10
stringee.com
stringee.com 11
stringee.com
stringee.com 12
HỆ THỐNG DATABASE TẠI STRINGEE
stringee.com
CÁC MODULE CHÍNH CỦA STRINGEE
Stringee server:
Module chính, quản lý các core nghiệp vụ,
call, voice call, chat, …
Charging server:
Quản lý charging, account balance, …
Payment server:
Quản lý subscription
Daemon server:
Chịu trách nhiệm export các loại dữ liệu liên
quan đến file, dữ liệu lớn
ICC server:
Quản lý, control nghiệp vụ các cuộc gọi voice,
video call, video conf
StringeeX server:
quản lý nghiệp vụ live chat, tích hợp với các
social network
File server:
Quản lý, đồng bộ file giữa các server
File agent:
Đồng bộ file giữa các server
Push server:
xử lý push notification đến các device
Hệ thống website, Web app:
Giao diện người dùng cuối
01
01 06
06
07
07
08
08
09
09
10
10
02
02
03
03
04
04
05
05
stringee.com 13
stringee.com 14
stringee.com
1000+
70M+
2.5M+
6000+
Hà Nội
4 Data center:
Mumbai (Ấn Độ)
TP Hồ Chí Minh
Oregon (USA)
5B+
Doanh nghiệp
Người dùng cuối
cuộc gọi
mỗi ngày
cuộc gọi
đồng thời
Tổng số lượng
cuộc gọi
TẢI HỆ THỐNG VÀ CÁC CON SỐ HIỆN TẠI CỦA
stringee.com 15
ỨNG DỤNG CI/CD TRONG CÔNG TY SAAS
SaaS là gì và khác các
công ty khác ở đâu?
Ứng dụng CI/CD
mang lại lợi ích gì
Vai trò Unit Test &
Automation Test
stringee.com 16
SaaS
(Software as a Service)
Phần mềm được cung cấp
dưới dạng dịch vụ (service)
qua internet thay vì cài đặt
trên thiết bị.
Thanh toán theo thời gian sử
dụng hoặc theo tính năng,
không cần mua bản quyền.
Làm sao đảm bảo hệ thống
phục vụ người dùng, dễ nâng
cấp, ít lỗi
Sử dụng CI/CD
VD: Slack, Office 365, Salesforce, Dropbox
Sử dụng phần mềm thông qua
trình duyệt web hoặc ứng dụng di
động.
stringee.com 17
CI/CD LÀ GÌ? LỢI ÍCH? ƯU NHƯỢC ĐIỂM?
CI/CD là một bộ đôi công việc bao gồm CI (Continuous Integration) và CD (Continuous Delivery), là
quá trình tích hợp (Integration) thường xuyên, nhanh chóng hơn khi code cũng như thường xuyên
cập nhật phiên bản mới (delivery).
stringee.com 18
CI/CD
stringee.com 19
Quy trình
phát triển
phần mềm
Môi trường
phát triển
phần mềm
Source scan Unit test
Automation
test
QUY TRÌNH PHÁT TRIỂN PHẦN MỀM VÀ CI/CD TẠI STRINGEE
stringee.com 20
Lặp lại liên tục
stringee.com 21
stringee.com
Tính năng được release liên tục (mỗi sprint 2 tuần) có nhiều sprint chạy song song.
Nhiều nhân sự thực hiện các công việc khác nhau, ở các giai đoạn khác nhau.
Nhân sự CSKH, NVKD, thậm chí cả khách hàng cũng tham gia vào quá trình phát
triển/nghiệm thu sản phẩm trước khi tính năng được đưa lên production cho người dùng cuối.
CÁC MÔI TRƯỜNG PHÁT TRIỂN TẠI STRINGEE
stringee.com 22
CI/CD TOOLS
stringee.com 23
Jenkins
Open source
Plugin phong phú
Cross platform
Hỗ trợ pipe line script
mạnh mẽ
stringee.com 24
stringee.com 25
CI/CD at stringee
stringee.com 26
stringee.com
scanSource()
met, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet purus gravida quis blandit turpis. At erat pellentesque adipiscing commodo elit at. Ultrices
Security scan
Check dirty code
Check duplicate code, smell code
Coding convention scan
SOURCE SCAN
stringee.com 27
Viết bởi developer.
Phát hiện thuật toán thực thi không hiệu quả.
UNIT TEST
Phát hiện các lỗi nghiêm trọng có thể xảy ra.
Tăng độ tin tưởng vào mã nguồn, đặc biệt khi mã nguồn dự án phình lớn sau 1
khoảng thời gian dài phát triển sản phẩm, lúc đó các tính năng mới phát triển có
thể gây lỗi các tính năng cũ.
Java: Junit, TestEG
PHP: PHPUnit
JavaScript: Jest, jest-dom Testing Library (for vuejs, reactjs)
Các công cụ unit test:
stringee.com 28
UNIT TEST - BEST PRACTICES
Chạy nhanh
Phản ánh đúng hoạt động của module
Chạy độc lập các test case
Sử dụng data dễ đọc, dễ hiểu
Coverage code tối thiểu 60% code
01
02
04
03
05
stringee.com 29
AUTOMATION TESTING
Ngoài unit test, thì automation test là khâu quan trọng trước
và sau khi deploy lên một môi trường mới.
Tại mỗi môi trường, sẽ cần chạy automation test nghiệm thu
trước khi được deploy lên môi trường tiếp theo.
Nếu quá trình automation test trên production không đạt tiêu chí
đề ra, thì sẽ phải roll back.
stringee.com 30
Cloud Platform: Browser Stack, Sauce Labs, Lambda Test, AWS Device
Farm
Self Machine
AUTOMATION TESTING ENVIRONMENT
stringee.com 31
Tester chuẩn bị test case từ ban đầu sprint cho mỗi tính năng.
Tester implement các case test với Java: Selenium WebDriver.
Thực hiện trigger build và deploy.
Trigger Automation test.
Theo dõi kết quả test.
AUTOMATION TESTING TẠI STRINGEE
stringee.com 32
2. Demo CI/CD với Jenkins
1. Giới thiệu
3. Demo automation test
Chạy luồng CI/CD trên jenkins
Demo scan source với sonar qube
Demo unit test
Chạy automation test trên máy local
Demo automation với Jenkins
Demo rollback ứng dụng khi gặp lỗi
stringee.com 33
stringee.com 34
Jenkins CI/CD
stringee.com 35
THANK YOU

More Related Content

What's hot

Cài đặt và cấu hình dns server trên windows server 2012
Cài đặt và cấu hình dns server trên windows server 2012Cài đặt và cấu hình dns server trên windows server 2012
Cài đặt và cấu hình dns server trên windows server 2012laonap166
 
Openshift Container Platform
Openshift Container PlatformOpenshift Container Platform
Openshift Container PlatformDLT Solutions
 
Kubernetes on AWS with Amazon EKS
Kubernetes on AWS with Amazon EKSKubernetes on AWS with Amazon EKS
Kubernetes on AWS with Amazon EKSAmazon Web Services
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Vietnam Open Infrastructure User Group
 
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptxAvi Networks
 
An Introduction to VMware NSX
An Introduction to VMware NSXAn Introduction to VMware NSX
An Introduction to VMware NSXScott Lowe
 
Configuring the Apache Web Server
Configuring the Apache Web ServerConfiguring the Apache Web Server
Configuring the Apache Web Serverwebhostingguy
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Vietnam Open Infrastructure User Group
 
CI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day IsraelCI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day IsraelAmazon Web Services
 
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...Dịch vụ viết thuê Luận Văn - ZALO 0932091562
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Vietnam Open Infrastructure User Group
 
Báo Cáo Thực Tập PowerPoint
Báo Cáo Thực Tập PowerPointBáo Cáo Thực Tập PowerPoint
Báo Cáo Thực Tập PowerPointKhôi Nguyễn
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyPhamTuanKhiem
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Vietnam Open Infrastructure User Group
 

What's hot (20)

Advanced Container Security
Advanced Container Security Advanced Container Security
Advanced Container Security
 
Điên toán đám mây
Điên toán đám mâyĐiên toán đám mây
Điên toán đám mây
 
Docker 101
Docker 101Docker 101
Docker 101
 
Cài đặt và cấu hình dns server trên windows server 2012
Cài đặt và cấu hình dns server trên windows server 2012Cài đặt và cấu hình dns server trên windows server 2012
Cài đặt và cấu hình dns server trên windows server 2012
 
Openshift Container Platform
Openshift Container PlatformOpenshift Container Platform
Openshift Container Platform
 
Kubernetes on AWS with Amazon EKS
Kubernetes on AWS with Amazon EKSKubernetes on AWS with Amazon EKS
Kubernetes on AWS with Amazon EKS
 
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
Room 3 - 1 - Nguyễn Xuân Trường Lâm - Zero touch on-premise storage infrastru...
 
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx
23.06.15 NSX ALB and vCD integration deepdive_webinar0615.pptx
 
Hệ Thống DNS
Hệ Thống DNSHệ Thống DNS
Hệ Thống DNS
 
An Introduction to VMware NSX
An Introduction to VMware NSXAn Introduction to VMware NSX
An Introduction to VMware NSX
 
Configuring the Apache Web Server
Configuring the Apache Web ServerConfiguring the Apache Web Server
Configuring the Apache Web Server
 
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
Room 3 - 6 - Nguyễn Văn Thắng & Dzung Nguyen - Ứng dụng openzfs làm lưu trữ t...
 
CI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day IsraelCI/CD pipelines on AWS - Builders Day Israel
CI/CD pipelines on AWS - Builders Day Israel
 
AWS Security Hub
AWS Security HubAWS Security Hub
AWS Security Hub
 
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...
Luận văn Thạc sĩ Nghiên cứu triển khai giải pháp đảm bảo an ninh mạng trên nề...
 
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
Room 1 - 3 - Lê Anh Tuấn - Build a High Performance Identification at GHTK wi...
 
Báo Cáo Thực Tập PowerPoint
Báo Cáo Thực Tập PowerPointBáo Cáo Thực Tập PowerPoint
Báo Cáo Thực Tập PowerPoint
 
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mâyLưu trữ và xử lý dữ liệu trong điện toán đám mây
Lưu trữ và xử lý dữ liệu trong điện toán đám mây
 
Bizweb Microservices Architecture
Bizweb Microservices ArchitectureBizweb Microservices Architecture
Bizweb Microservices Architecture
 
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
Room 2 - 4 - Juncheng Anthony Lin - Redhat - A Practical Approach to Traditio...
 

Similar to Kinh nghiệm triển khai CI/CD tại cong ty SaaS phục vụ 70M người dùng

Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmNguyễn Anh
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.Nguyễn Anh
 
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm AgileVai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm AgileMinh Tri Lam
 
Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Minh Tri Lam
 
Slide đồ án kiểm thử PM
Slide đồ án kiểm thử PMSlide đồ án kiểm thử PM
Slide đồ án kiểm thử PMNguyễn Anh
 
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web siteđề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web sitejackjohn45
 
Nguyễn Đằng Vân_Báo Cáo Giữa Kỳ
Nguyễn Đằng Vân_Báo Cáo Giữa KỳNguyễn Đằng Vân_Báo Cáo Giữa Kỳ
Nguyễn Đằng Vân_Báo Cáo Giữa KỳNguyễn Vân
 
Cnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhCnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhKy Vo
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmThuyet Nguyen
 
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website nataliej4
 
DevOps flow to improve developer's productivity & quality
DevOps flow to improve developer's productivity & qualityDevOps flow to improve developer's productivity & quality
DevOps flow to improve developer's productivity & qualityPhi Huynh
 
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cậnTrần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cậnSecurity Bootcamp
 
AppViewX CERT+ Presentation for Enduser.pdf
AppViewX CERT+ Presentation for Enduser.pdfAppViewX CERT+ Presentation for Enduser.pdf
AppViewX CERT+ Presentation for Enduser.pdfitvnds
 
ggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggHngPhmTh35
 
Silde báo cáo Athena -LêPha
Silde báo cáo Athena -LêPhaSilde báo cáo Athena -LêPha
Silde báo cáo Athena -LêPhaTôi Là Duy
 
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...Ngo Trung
 

Similar to Kinh nghiệm triển khai CI/CD tại cong ty SaaS phục vụ 70M người dùng (20)

Đồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềmĐồ án kiểm thử phần mềm
Đồ án kiểm thử phần mềm
 
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.Tìm hiểu các kỹ thuật kiểm thử phần mềm  ứng dụng trong lập trình Java.
Tìm hiểu các kỹ thuật kiểm thử phần mềm ứng dụng trong lập trình Java.
 
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm AgileVai trò của Jenkins trong mô hình phát triển phần mềm Agile
Vai trò của Jenkins trong mô hình phát triển phần mềm Agile
 
Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)Jenkins (Continuous Integration System with Jenkins)
Jenkins (Continuous Integration System with Jenkins)
 
Slide đồ án kiểm thử PM
Slide đồ án kiểm thử PMSlide đồ án kiểm thử PM
Slide đồ án kiểm thử PM
 
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web siteđề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
đề Tài tìm hiểu phần mềm loadrunner kiểm tra hiệu năng web site
 
Nguyen Dang Van
Nguyen Dang VanNguyen Dang Van
Nguyen Dang Van
 
Nguyễn Đằng Vân_Báo Cáo Giữa Kỳ
Nguyễn Đằng Vân_Báo Cáo Giữa KỳNguyễn Đằng Vân_Báo Cáo Giữa Kỳ
Nguyễn Đằng Vân_Báo Cáo Giữa Kỳ
 
Cnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinhCnpmnc ch3 kiem thu ql cau hinh
Cnpmnc ch3 kiem thu ql cau hinh
 
Báo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềmBáo cáo môn đảm bảo chất lượng phần mềm
Báo cáo môn đảm bảo chất lượng phần mềm
 
378932167-Coha.pdf
378932167-Coha.pdf378932167-Coha.pdf
378932167-Coha.pdf
 
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
Đồ Án Tìm Hiểu Phần Mềm Loadrunner Kiểm Tra Hiệu Năng Website
 
DevOps flow to improve developer's productivity & quality
DevOps flow to improve developer's productivity & qualityDevOps flow to improve developer's productivity & quality
DevOps flow to improve developer's productivity & quality
 
Nhom 17.pptx
Nhom 17.pptxNhom 17.pptx
Nhom 17.pptx
 
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cậnTrần Anh Khoa - Kautilya và Powershelltrong kỹ thuật tấn công tiếp cận
Trần Anh Khoa - Kautilya và Powershell trong kỹ thuật tấn công tiếp cận
 
AppViewX CERT+ Presentation for Enduser.pdf
AppViewX CERT+ Presentation for Enduser.pdfAppViewX CERT+ Presentation for Enduser.pdf
AppViewX CERT+ Presentation for Enduser.pdf
 
hoptructuyen.net.vn - VMeet UC
hoptructuyen.net.vn - VMeet UChoptructuyen.net.vn - VMeet UC
hoptructuyen.net.vn - VMeet UC
 
ggggggggggggggggggggggggggggggggggggggggggggggggggg
gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg
ggggggggggggggggggggggggggggggggggggggggggggggggggg
 
Silde báo cáo Athena -LêPha
Silde báo cáo Athena -LêPhaSilde báo cáo Athena -LêPha
Silde báo cáo Athena -LêPha
 
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...
Cách tối ưu hóa môi trường lập trình ứng dụng cho Android - Tăng tốc máy ảo A...
 

Kinh nghiệm triển khai CI/CD tại cong ty SaaS phục vụ 70M người dùng

  • 1. KINH NGHIỆM TRIỂN KHAI CI/CD TẠI STRINGEE Hồ Chí Minh 08.2023 Tạ Văn Dậu – Head of Technical
  • 2. Quy trình phát triển phần mềm Môi trường phát triển phần mềm Source scan (Security scan, Coding convention scan, ...) Unit test và Automation test NỘI DUNG Giới thiệu Demo Ứng dụng CI/CD trong công ty SaaS Quy trình phát triển phần mềm và CI/CD tại Stringee Giới thiệu Stringee API, StringeeX Contact Center Kiến trúc hệ thống Stringee Tải hệ thống và các con số hiện tại SaaS là gì và khác các công ty khác ở đâu? Ứng dụng CI/CD mang lại lợi ích gì Vai trò Unit Test & Automation Test stringee.com 2
  • 3. or sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet purus gravida quis blandit turpis. At erat pellentesque adipiscing commodo elit at. placerat orci nulla. Stringee SMS APIs Stringee Video Conference APIs Stringee Chat APIs SẢN PHẨM STRINGEE StringeeX - Contact Center Platform Stringee Programable Contact Center APIs Stringee Call APIs APIs Completed Software stringee.com 3
  • 4. STRINGEE CALL APIs App to App 01 03 05 02 04 06 Phone to App Voice/Video Conference App to Phone Phone to Phone RESTful API stringee.com 4
  • 5. APP TO APP 2. Get SCCO (Stringee Call Control Object) stringee.com 5
  • 10. KIẾN TRÚC HỆ THỐNG STRINGEE stringee.com 10 stringee.com
  • 12. stringee.com 12 HỆ THỐNG DATABASE TẠI STRINGEE stringee.com
  • 13. CÁC MODULE CHÍNH CỦA STRINGEE Stringee server: Module chính, quản lý các core nghiệp vụ, call, voice call, chat, … Charging server: Quản lý charging, account balance, … Payment server: Quản lý subscription Daemon server: Chịu trách nhiệm export các loại dữ liệu liên quan đến file, dữ liệu lớn ICC server: Quản lý, control nghiệp vụ các cuộc gọi voice, video call, video conf StringeeX server: quản lý nghiệp vụ live chat, tích hợp với các social network File server: Quản lý, đồng bộ file giữa các server File agent: Đồng bộ file giữa các server Push server: xử lý push notification đến các device Hệ thống website, Web app: Giao diện người dùng cuối 01 01 06 06 07 07 08 08 09 09 10 10 02 02 03 03 04 04 05 05 stringee.com 13
  • 15. 1000+ 70M+ 2.5M+ 6000+ Hà Nội 4 Data center: Mumbai (Ấn Độ) TP Hồ Chí Minh Oregon (USA) 5B+ Doanh nghiệp Người dùng cuối cuộc gọi mỗi ngày cuộc gọi đồng thời Tổng số lượng cuộc gọi TẢI HỆ THỐNG VÀ CÁC CON SỐ HIỆN TẠI CỦA stringee.com 15
  • 16. ỨNG DỤNG CI/CD TRONG CÔNG TY SAAS SaaS là gì và khác các công ty khác ở đâu? Ứng dụng CI/CD mang lại lợi ích gì Vai trò Unit Test & Automation Test stringee.com 16
  • 17. SaaS (Software as a Service) Phần mềm được cung cấp dưới dạng dịch vụ (service) qua internet thay vì cài đặt trên thiết bị. Thanh toán theo thời gian sử dụng hoặc theo tính năng, không cần mua bản quyền. Làm sao đảm bảo hệ thống phục vụ người dùng, dễ nâng cấp, ít lỗi Sử dụng CI/CD VD: Slack, Office 365, Salesforce, Dropbox Sử dụng phần mềm thông qua trình duyệt web hoặc ứng dụng di động. stringee.com 17
  • 18. CI/CD LÀ GÌ? LỢI ÍCH? ƯU NHƯỢC ĐIỂM? CI/CD là một bộ đôi công việc bao gồm CI (Continuous Integration) và CD (Continuous Delivery), là quá trình tích hợp (Integration) thường xuyên, nhanh chóng hơn khi code cũng như thường xuyên cập nhật phiên bản mới (delivery). stringee.com 18
  • 20. Quy trình phát triển phần mềm Môi trường phát triển phần mềm Source scan Unit test Automation test QUY TRÌNH PHÁT TRIỂN PHẦN MỀM VÀ CI/CD TẠI STRINGEE stringee.com 20
  • 21. Lặp lại liên tục stringee.com 21 stringee.com
  • 22. Tính năng được release liên tục (mỗi sprint 2 tuần) có nhiều sprint chạy song song. Nhiều nhân sự thực hiện các công việc khác nhau, ở các giai đoạn khác nhau. Nhân sự CSKH, NVKD, thậm chí cả khách hàng cũng tham gia vào quá trình phát triển/nghiệm thu sản phẩm trước khi tính năng được đưa lên production cho người dùng cuối. CÁC MÔI TRƯỜNG PHÁT TRIỂN TẠI STRINGEE stringee.com 22
  • 24. Jenkins Open source Plugin phong phú Cross platform Hỗ trợ pipe line script mạnh mẽ stringee.com 24
  • 27. met, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Sit amet purus gravida quis blandit turpis. At erat pellentesque adipiscing commodo elit at. Ultrices Security scan Check dirty code Check duplicate code, smell code Coding convention scan SOURCE SCAN stringee.com 27
  • 28. Viết bởi developer. Phát hiện thuật toán thực thi không hiệu quả. UNIT TEST Phát hiện các lỗi nghiêm trọng có thể xảy ra. Tăng độ tin tưởng vào mã nguồn, đặc biệt khi mã nguồn dự án phình lớn sau 1 khoảng thời gian dài phát triển sản phẩm, lúc đó các tính năng mới phát triển có thể gây lỗi các tính năng cũ. Java: Junit, TestEG PHP: PHPUnit JavaScript: Jest, jest-dom Testing Library (for vuejs, reactjs) Các công cụ unit test: stringee.com 28
  • 29. UNIT TEST - BEST PRACTICES Chạy nhanh Phản ánh đúng hoạt động của module Chạy độc lập các test case Sử dụng data dễ đọc, dễ hiểu Coverage code tối thiểu 60% code 01 02 04 03 05 stringee.com 29
  • 30. AUTOMATION TESTING Ngoài unit test, thì automation test là khâu quan trọng trước và sau khi deploy lên một môi trường mới. Tại mỗi môi trường, sẽ cần chạy automation test nghiệm thu trước khi được deploy lên môi trường tiếp theo. Nếu quá trình automation test trên production không đạt tiêu chí đề ra, thì sẽ phải roll back. stringee.com 30
  • 31. Cloud Platform: Browser Stack, Sauce Labs, Lambda Test, AWS Device Farm Self Machine AUTOMATION TESTING ENVIRONMENT stringee.com 31
  • 32. Tester chuẩn bị test case từ ban đầu sprint cho mỗi tính năng. Tester implement các case test với Java: Selenium WebDriver. Thực hiện trigger build và deploy. Trigger Automation test. Theo dõi kết quả test. AUTOMATION TESTING TẠI STRINGEE stringee.com 32
  • 33. 2. Demo CI/CD với Jenkins 1. Giới thiệu 3. Demo automation test Chạy luồng CI/CD trên jenkins Demo scan source với sonar qube Demo unit test Chạy automation test trên máy local Demo automation với Jenkins Demo rollback ứng dụng khi gặp lỗi stringee.com 33