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

Báo cáo Thực tập doanh nghiệp Công ty thực tập: DEK Technologies

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 (573.97 KB, 25 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CƠNG NGHỆ THƠNG TIN

Báo cáo Thực tập doanh nghiệp
SE501.M21.PCML
Cơng ty thực tập: DEK Technologies

Sinh viên thực hiện
Nguyễn Thành Đạt 18520579

TP HCM, 17 tháng 6 năm 2022


LỜI CẢM ƠN
Trong cuộc sống của chúng ta, có lẽ ai cũng đã từng thất bại hoặc thành công, dù
như thế nào thì đó cũng là kết quả nỗ lực của bản thân mình. Và đằng sau đó chính là sự
hỗ trợ giúp đỡ từ mọi người. Xét về mặt thành cơng, trong thực tế khơng có sự thành
cơng nào mà khơng có sự giúp đỡ, nhất là trong học tập. Dân gian ta có câu “Khơng thầy
đố mày làm nên” quả thật là đúng, học sinh không thể thành cơng nếu khơng có sự giúp
đỡ, truyền đạt cũng như chỉ bảo tận tình của người Thầy, người Cơ. Và để có thể nắm rõ
và hồn thành tốt được q trình thực tập này, em rất biết ơn Thầy Nguyễn Khánh Thuật
đã hỗ trợ tận tình, cung cấp các tài liệu cần thiết và sẵn sàng tìm những cơng việc thực
tập phù hợp cho các bạn sinh viên chưa tìm được nơi thực tập.
Với lòng biết ơn sâu sắc nhất, em cũng xin gửi đến quý công ty DEK
Technologies nơi em thực tập, đã tạo điều kiện tối đa và hỗ trợ em rất nhiệt thành trong
suốt quá trình thực tập tại công ty. Đặc biệt, em cũng xin cảm ơn các anh mentor trong
team CSCF, là người đã hướng dẫn em trong quá trình thực tập, đã cùng với kinh nghiệm
và tâm huyết của mình để truyền đạt vốn kiến thức quý báu cho em trong suốt thời gian
thực tập tại công ty. Các anh đã hướng dẫn cho em cụ thể, chi tiết quy trình cách làm một
dự án thực tế cũng như nhiều kiến thức quý báu và lời góp ý trong suốt q trình thực tập.
Ngồi ra, để q trình thực tập được hồn thành tốt đẹp thì khơng thể nào khơng cảm ơn


những người đã cùng nhau tham gia vào q trình thực tập đó, cũng xin cảm ơn các bạn,
các anh chị trong nhóm thực tập đã chăm chỉ và chịu khó hồn thành nhiệm vụ đúng tiến
độ.
Xin chân thành cảm ơn thầy cô khoa Công nghệ phần mềm và quý công ty DEK!
Trân trọng cảm ơn.
Tp. Hồ Chí Minh tháng 6 năm 2022.


Nhận Xét Của Giảng Viên
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................

............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................
............................................................................................................................................


Mục lục
CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP ........................................................... 6
1.1

Tổng quan về công ty ............................................................................................. 6

1.2

Môi trường làm việc............................................................................................... 7

CHƯƠNG 2 TỔNG QUAN VỀ QUÁ TRÌNH THỰC TẬP .............................................. 7
2.1

Tổng quan về chương trình thực tập ...................................................................... 7

2.2

Vị trí và thời gian thực tập ..................................................................................... 7

2.3 Các nhiệm vụ được giao ............................................................................................ 8
CHƯƠNG 3 NHỮNG KIẾN THỨC ĐÃ HỌC ĐƯỢC...................................................... 8
3.1


Kiến thức về Agile – Scrum ................................................................................... 8

3.1.1 Tổng quan về Agile ............................................................................................ 9
3.1.2 Tuyên ngôn của Agile ........................................................................................ 9
3.1.3 Tổng quan về Scrum ........................................................................................... 9
3.1.4 Ba giá trị cốt lõi của Scrum ................................................................................ 9
3.1.5

Lợi ích của việc sử dụng Scrum trong phát triển phần mềm hiện nay.......... 10

3.2 Kiến thức về GitLab ................................................................................................ 10
3.2.1 Tổng quan về GitLab ........................................................................................ 10
3.2.2 Lợi ích khi sử dụng Gitlab ................................................................................ 11
3.2.3 Lý do nên sử dụng GitLab ................................................................................ 12
3.3 Kiến thức về IMS .................................................................................................... 12
3.3.1 Tổng quan về IMS ............................................................................................ 12
3.3.2 Kiến trúc IMS Network .................................................................................... 13
3.4 Kiến thức về công cụ Jenkins .................................................................................. 17
3.4.1 CI/CD................................................................................................................ 17


3.4.2 Jenkins .............................................................................................................. 18
3.5 Kiến thức về Automation Test trong Android. ........................................................ 20
3.5.1 Testing trong Android ...................................................................................... 20
3.5.2 Automation test với Jenkins ............................................................................. 21
CHƯƠNG 4 KẾT QUẢ CÔNG VIỆC .............................................................................. 22
CHƯƠNG 5 TỔNG KẾT, KHÓ KHĂN VÀ HẠN CHẾ ................................................. 24
5.1 Tổng kết ................................................................................................................... 24
5.2 Khó khăn và hạn chế ............................................................................................... 25
CHƯƠNG 6 TÀI LIỆU THAM KHẢO ............................................................................ 25



CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Tổng quan về công ty

DEK Technologies là công ty công nghệ từng đạt giải thưởng về cung cấp các dịch vụ
phần mềm và phần cứng trên tồn cầu. Cơng ty có trụ sở chính tại Úc, và các văn phịng
làm việc khác gồm Việt Nam, Thụy Điển, Ý và Hoa Kỳ.
Công ty TNHH DEK Technologies Việt Nam được thành lập từ năm 2008, địa chỉ hiện
tại: 121/137 Lê Lợi, phường Bến Thành, quận 1, thành phố Hồ Chí Minh. Tính đến nay
là văn phòng quốc tế lớn nhất của DEK Technologies với gần 400 nhân viên. DEK
Technologies Việt Nam luôn đánh giá cao năng lực của nhân viên và tự hào khi có rất
nhiều kỹ sư giỏi đã gắn bó với cơng ty. DEK Technologies phát triển dịch vụ phần mềm
và phần cứng trên nhiều lĩnh vực:
- Điện tử viễn thông
- E-commerce
- Y tế
- An ninh – quốc phòng
- Năng lượng
- Điều khiển & tự động hóa


1.2 Mơi trường làm việc
Do tình hình dịch bệnh nên không thể trực tiếp đến công ty để thực tập, sinh viên được
thực tập online thông qua các nền tảng trực tuyến như:
Microsoft Team: meeting, chat.
Outlook: mail
Retrospective: ideaboardz
Task manager: microsoft planner.
VPN

...

CHƯƠNG 2 TỔNG QUAN VỀ QUÁ TRÌNH THỰC TẬP
2.1 Tổng quan về chương trình thực tập
Là kì đào tạo thực tập sinh thứ 29 của công ty DEK Technologies. Sinh viên khi tham gia
kì thực tập sẽ được tham gia vào các team khác nhau như:
-

Microservice Deployment with Containers.

-

IP Multimedia Subsystem – CSCF

-

IP Multimedia Subsystem – SBG

Ngoài các kiến thức chun mơn, chương trình cũng trang bị các kỹ năng như khả năng
làm việc nhóm, kĩ năng giao tiếp, khả năng hịa nhập với mơi trường doanh nghiệp.
Thực tập sinh khi tham gia kì thực tập cũng có các quyền lợi như:
-

Tham gia các khóa đào tạo nội bộ.

-

Tham gia các sự kiện của cơng ty.

-


Có cơ hội trở thành nhân viên chính thức.

Chương trình thực tập kéo dài 10 tuần.

2.2 Vị trí và thời gian thực tập
Vị trí thực tập: Software Developer
Thời gian thực tập kéo dài từ 18/10/2021 – 22/12/2021.
Thực tập fulltime từ 9h00 – 18h00 từ thứ 2 dến thứ 6.


2.3 Các nhiệm vụ được giao
Được phân công vào team IP Multimedia Subsystem – CSCF.
Nhiệm vụ chính của nhóm là xây dựng một ứng dụng viễn thông nhằm cung cấp các dịch
vụ đa phương tiện như nhắn tin, cuộc gọi thoại và video. Sinh viên sẽ xây dựng ứng dụng
client (máy tính hoặc di động) để yêu cầu dịch vụ và tài nguyên từ IMS Server đã triển
khai bằng cách sử dụng các giao thức IMS chính như: SIP, SDP, RTP, H.248, ENUM,
Diameter. Dự án sử dụng IMS Core System (Kamaillio) ở phía server Nhóm có thể sử
dụng ngơn ngữ lập trình bất kì để xây dựng ứng dụng client.
Sau khi cân nhắc lựa chọn, nhóm lựa chọn phát triển ứng dụng app chat trên nên tảng
Android với Android Studio.
Các nhiệm vụ chính được phân cơng khi tham gia vào nhóm:
-

Tìm hiểu khái qt về hệ thống và các giao thức được sử dụng trong IMS network

-

Tìm hiểu và thực hiện cấu hình IMS core nodes được triển khai trên server linux.


-

Tìm hiểu về Automation Test trong Android và viết một số test case cơ bản.

-

Tìm hiểu và triển khai hệ thống Continuous Integration sử dụng công cụ Jenkins.

CHƯƠNG 3 NHỮNG KIẾN THỨC ĐÃ HỌC ĐƯỢC
3.1 Kiến thức về Agile – Scrum


3.1.1 Tổng quan về Agile
Agile là một phương pháp phát triển phần mềm linh hoạt, là một hướng tiếp cận cụ thể
cho việc quản lý dự án phần mềm. Nó gồm một q trình làm việc tương tác và tích hợp
để có thể đưa sản phẩm đến tay người dùng càng nhanh càng tốt.
Những phương pháp phát triển phần mềm theo cách truyền thống ngày càng bộc lộ nhiều
nhược điểm và tỷ lệ các dự án thất bại cao trong thời kỳ bùng phát của ngành công nghệ.
Nhận ra vấn đề đó, một số cá nhân và cơng ty riêng lẻ đã đưa ra các phương pháp phát
triển phần mềm hiện đại hơn và khác nhau để thích ứng với tình hình mới.
3.1.2 Tun ngơn của Agile
• Cá nhân và sự tương tác hơn là quy trình và cơng cụ
• Phần mềm chạy tốt hơn là tài liệu đầy đủ
• Cộng tác với khách hàng hơn là đàm phán hợp đồng
• Phản hồi với sự thay đổi hơn là bám theo kế hoạch
3.1.3 Tổng quan về Scrum
Scrum là một “bộ khung làm việc” cơ bản để tiếp cận những công việc phức tạp. Dựa
trên bộ khung này, nhóm làm việc có thể áp dụng những quy trình, kỹ thuật khác nhau
cho cơng việc của mình. Nó là một thành viên của họ Agile.
3.1.4 Ba giá trị cốt lõi của Scrum

Scrum giúp loại bỏ những công đoạn phức tạp và chỉ tập trung vào những công đoạn cần
thiết đáp ứng được nhu cầu của khác hàng đưa ra. Ba yếu tố nịng cốt tạo thành một mơ
hình quản lý tiến trình thực nghiệm gồm: sự minh bạch (transparency), thanh
tra (inspection) và thích nghi (adaptation).


3.1.5 Lợi ích của việc sử dụng Scrum trong phát triển phần mềm hiện nay
Tính minh bạch, kiểm tra, và thích nghi là 3 nền tảng cơ bản của Scrum. Và dưới đây là
những lý do tại sao nên dùng Scrum.
• Cải thiện chất lượng phần mềm, dễ học và dễ sử dụng.
• Rút ngắn thời gian phát hành phần mềm, cho phép khách hàng sử dụng sản phẩm
sớm hơn.
• Nâng cao tinh thần đồng đội, tối ưu hóa hiệu quả và nỗ lực của đội phát triển.
• Gia tăng tỷ suất hồn vốn đầu tư (ROI)
• Tăng mức độ hài lịng của khách hàng
• Kiểm sốt dự án tốt, cải tiến liên tục
• Giảm thiểu rủi ro khi xây dựng sản phẩm

3.2 Kiến thức về GitLab
3.2.1 Tổng quan về GitLab
Git là hệ thống quản lý phiên bản phân tán (Distributed Version Control System –
DVCS) được nhiều người ưa chuộng. Git giúp máy tính lưu trữ nhiều phiên bản khác
nhau của một mã nguồn được nhân bản từ kho lưu trữ. Tất cả những code đã được update
và thông tin về người sửa đổi đều được lưu lại với Git.
GitLab là một phần mềm có nhiệm vụ quản lý kho code Git. Gitlab sở hữu các tính năng
đơn giản, góp phần to lớn trong việc giúp các doanh nghiệp, cá nhân, tổ chức lưu trữ code
một cách nhanh chóng vơ cùng, người dùng hồn tồn có thể truy cập mọi lúc mọi nơi
miễn là có kết nối Internet.
Người dùng có thể ẩn kho code của mình, khơng cơng khai chúng cho bất kỳ ai, trong
trường hợp vượt quá ngưỡng miễn phí thì bạn mới phải mất phí để mua thêm dịch vụ.



3.2.2 Lợi ích khi sử dụng Gitlab
Khi sử dụng phần mềm Gitlab chúng sẽ mang lại cho bạn rất nhiều những lợi ích đặc
biệt, cụ thể là:
• Open core
Khi các đối thủ của Gitlap chủ yếu là các closed-source, thì đây là một ưu thế cạnh tranh
dành cho phần mềm này. GitLab Community Edition là mã nguồn mở hoàn chỉnh và
phiên bản Enterprise Edition là open core (độc quyền).
• Truy cập vào mã nguồn
Người dùng có thể xem và sửa đổi source code của GitLab Community Edition và
Enterprise Edition với Open core bất cứ khi nào bạn muốn. Điều này khơng thể thực hiện
đối với phần mềm closed-source.
Người dùng có thể thêm các tính năng và thực hiện các tùy chỉnh trên Server hoặc bằng
cách giả lập kho lưu trữ của GitLab. GitLab khuyên bạn nên cố gắng hợp nhất các thay
đổi trở lại source code chính để những người khác có thể hưởng lợi từ những thay đổi và
những thay đổi này vẫn để duy trì và cập nhật.
• Xây dựng với cộng đồng
Cùng với đóng góp, xây dựng và sự phản hồi tích của của người sử dụng, GitLab đang
tích cực xây dựng những phiên bản tốt nhất từ ý kiến của khách hàng để đem đến cho
người dùng những trải nghiệm tuyệt vời nhất.
Điều này góp phần tạo nên các tính năng mà các tổ chức thực sự cần, chẳng hạn như quản
lý người dùng thật dễ dàng nhưng khơng hề kém phần mạnh mẽ.
• Tính khả thi lâu dài (Viable long term)
GitLab lấy được lòng tin để khẳng định uy tín, nên đã tạo ra một cộng đồng vững chắc
với hàng trăm nghìn tổ chức, cá nhân sử dụng và đóng góp cho phần mềm. GitLab có khả
năng sử dụng lâu dài hơn vì có nhiều người cùng xây dựng, sẽ không đáng tin cậy nếu chỉ
có duy nhất một cơng ty hỗ trợ cho phần mềm.



• Phiên bản ổn định mỗi tháng
GitLab phát hành phiên bản ổn định mới mỗi tháng, đầy đủ các cải tiến, tính năng và bản
sửa lỗi. Điều này khiến cho GitLab phát triển rất nhanh và luôn đáp ứng yêu cầu của
khách hàng theo cách cực kỳ nhanh chóng.
3.2.3 Lý do nên sử dụng GitLab
Sử dụng Gitlab mang đến cho lập trình viên những lợi ích sau:


Sự tiện lợi. Thao tác mỗi khi cần lưu trữ, tải lên, tải xuống code dễ dàng hơn.



Kiểm sốt các thay đổi trong code nhanh chóng, chính xác.



Dễ dàng quản lý, phân phối cơng việc, hồn thành dự án lập trình chất lượng hơn.

3.3 Kiến thức về IMS
3.3.1 Tổng quan về IMS
- IMS, thuật ngữ viết tắt của IP Multimedia Subsystem, IMS được định hình và phát triển
bởi diễn đàn cơng nghiệp 3G.IP, thành lập năm 1999. Kiến trúc ban đầu của IMS được
xây dựng bởi 3G.IP và sau đó đã được chuẩn hóa bởi 3GPP (3rd Generation Partnership
Project) trong Release 5 công bố tháng 3 năm 2003.
- Đây là một kiến trúc mạng nhằm tạo sự thuận tiện cho việc phát triển và phân phối các
dịch vụ đa phương tiện đến người dùng, bất kể là họ đang kết nối thông qua mạng truy
nhập nào. IMS hỗ trợ nhiều phương thức truy nhập như GSM, UMTS, CDMA2000, truy
nhập hữu tuyến băng rộng như cáp xDSL, cáp quang, cáp truyền hình, cũng như truy
nhập vô tuyến băng rộng WLAN, WiMAX. IMS tạo điều kiện cho các hệ thống mạng
khác nhau có thể tương vận (interoperability) với nhau. Để nói một cách dễ hiểu hơn IMS

là một hệ thống giúp người dùng mạng di động có thể kết nối đến người dụng mạng
internet để gọi điện hoặc nhắn tin với nhau.


3.3.2 Kiến trúc IMS Network
Kiến trúc IMS được phân thành 3 lớp: lớp ứng dụng, lớp điều khiển (hay còn gọi là lớp
IMS hay IMS lõi) và lớp vận tải (hay lớp người dùng).
-

Lớp dịch vụ bao gồm các máy chủ ứng dụng AS (Application Server) và các máy
chủ thuê bao thường trú HSS (Home Subscriber Server).

-

Lớp điều khiển bao gồm nhiều hệ thống con trong đó có hệ thống IMS lõi.

-

Lớp vận tải bao gồm thiết bị người dùng UE (User Equipment), các mạng truy nhập
kết nối vào mạng lõi IP. Hai thực thể chức năng NASS và RACS định nghĩa bởi
TISPAN có thể được xem như thuộc lớp vận tải hay thuộc lớp điều khiển ở trên

a. Lớp dịch vụ.
Máy chủ ứng dụng AS (Application Server) là nơi chứa đựng và vận hành các dịch vụ
IMS. AS tương tác với S-CSCF thông qua giao thức SIP để cung cấp dịch vụ đến người
dùng. Máy chủ VCC (Voice Call Continuity), đang được phát triển và chuẩn hóa bởi
3GPP, là một ví dụ về máy chủ ứng dụng AS. AS có thể thuộc mạng thường trú hay
thuộc một mạng thứ ba nào đó. Nếu AS là một phần của mạng thường trú, nó có thể giao
tiếp trực tiếp với HSS thông qua giao thức DIAMETER để cập nhật thông tin về hồ sơ
người dùng (user profiles). AS có thể cung cấp các dịch vụ như quản lý sự hiện diện

(presence) của người dùng trên mạng, quản lý quá trình hội thảo trực tuyến, tính cước
trực tuyến…
Máy chủ quản lý thuê bao thường trú HSS (Home Subscriber Server) có thể xem như là
một cải tiến của bộ đăng ký định vị thường trú HLR (Home Location Register). HSS là
một cơ sở dữ liệu lưu trữ thông tin của tất cả khách hàng th bao. Nó chứa đựng các
thơng tin như nhận dạng người dùng, tên của S-CSCF gán cho người dùng, hồ sơ
roaming, thông số xác nhận thực cũng như thông tin về dịch vụ thuê bao. Trong trường
hợp có nhiều HSS trong cùng một mạng, chức năng định vị người dùng SLF (Subscriber
location Function) sẽ được thiết lập nhằm xác định HSS nào đang chứa hồ sơ của người
dùng tương ứng.


b. Lớp lõi IMS.
Chức năng của lõi IMS là quản lý việc tạo lập phiên liên lạc và dịch vụ đa phương tiện.
Các chức năng của nó bao gồm:
CSCF (Call Session Control Function) có nhiệm vụ thiết lập, theo dõi, hỗ trợ và giải
phóng các phiên đa phương tiện cũng như quản lý những tương tác dịch vụ của người
dùng. CSCF được phân ra 3 loại : Serving-CSCF, Proxy-CSCF và Interogating-CSCF.

-

Proxy-CSCF (P-CSCF) là một proxy SIP. Sở dĩ gọi là proxy vì nó có thể nhận các
u cầu dịch vụ, xử lý nội bộ hoặc chuyển tiếp yêu cầu đến các bộ phận khác trong
hệ thống IMS. Đây là điểm kết nối đầu tiên giữa hạ tầng IMS và người dùng
IMS/SIP. Một vài hệ thống mạng có thể dùng SBC (Session Border Controller) để
thực hiện chức năng này. Để kết nối với hệ thống IMS, người dùng trước tiên phải
đăng ký với P-CSCF trong mạng mà nó đang kết nối. Địa chỉ của P-CSCF được truy
cập thông qua giao thức DHCP hoặc sẽ được cung cấp khi người dùng tiến hành thiết
lập kết nối PDP (Packet Data Protocol) trong mạng thơng tin di động gói tế bào.
Chức năng của P-CSCF bao gồm:

o P-CSCF nằm trên đường truyền của tất cả các thơng điệp báo hiệu trong hệ
thống IMS. Nó có khả năng kiểm tra bất kỳ thông điệp nào. P-CSCF có
nhiệm vụ đảm bảo chuyển tải các yêu cầu từ UE đến máy chủ SIP (ở đây là
S-CSCF) cũng như những thông điệp phản hồi từ máy chủ SIP về UE.
o P-CSCF xác thực người dùng và thiết lập kết nối bảo mật IPSec với thiết bị
IMS của người dùng. Nó cịn có vai trị ngăn cản các tấn cơng như spoofing,
replay để đảm bảo sự bảo mật và an tồn cho người dùng.
o P-CSCF cũng có thể nén và giải nén các thông điệp SIP để giảm thiểu khối
lượng thông tin báo hiệu truyền trên những đường truyền tốc độ thấp.
o P-CSCF có thể tích hợp chức năng quyết định chính sách PDF (Policy
Decision Function) nhằm quản lý và đảm bảo QoS cho các dịch vụ đa
phương tiện.
o P-CSCF cũng tham gia vào q trình tính cước dịch vụ.


-

Serving-CSCF (S-CSCF) là một nút trung tâm của hệ thống báo tín hiệu IMS. SCSCF vận hành giống như một máy chủ SIP nhưng nó bao hàm cả chức năng quản lý
phiên dịch vụ. Các chức năng chính của S-CSCF bao gồm:
o Tiến hành các đăng ký SIP nhằm thiết lập mối liên hệ giữa địa chỉ người dùng
(địa chỉ IP của thiết bị) với địa chỉ SIP. S-CSCF đóng vai trò như một máy
chủ Registar trong hệ thống SIP.
o S-CSCF tham gia trong tất cả các quá trình báo hiệu từ hệ thống IMS về người
dùng. Nó có thể kiểm tra bất kỳ thông điệp nào nếu muốn.
o S-CSCF giữ vai trò quyết định chọn lựa AS nào sẽ cung cấp dịch vụ cho
người dùng. Nó giữ vai trị định tuyến dịch vụ thông qua việc sử dụng giải
pháp DNS/ENUM (Electronic Numbering).
o S-CSCF thực hiện các chính sách của nhà cung cấp dịch vụ. S-CSCF tương
tác với máy chủ AS để yêu cầu các hỗ trợ dịch vụ cho khách hàng. S-CSCF
liên lạc với HSS để lấy thông tin, cập nhật thông tin về hồ sơ người dùng và

tham gia vào q trình tính cước dịch vụ.

-

Interrogating-CSCF (I-CSCF) trong hệ thống mạng của một nhà cung cấp dịch vụ
là điểm liên lạc cho tất cả các kết nối hướng đến một UE nằm trong mạng đó. Địa chỉ
IP của I-CSCF được công bố trong máy chủ DNS của hệ thống. Chức năng của ICSCF bao gồm:
o Định tuyến thông điệp yêu cầu SIP nhận được từ một mạng khác đến S-CSCF
tương ứng. Để làm được điều này, I-CSCF sẽ liên lạc với HSS (thông qua
DIAMETER) để cập nhật địa chỉ S-CSCF tương ứng của người dùng. Nếu như
chưa có S-CSCF nào được gán cho UE, I-CSCF sẽ tiến hành gán một S-CSCF
cho người dùng để nó xử lý yêu cầu SIP.
o Ngược lại, I-CSCF sẽ định tuyến thông điệp yêu cầu SIP hoặc thông điệp trả lời
SIP đến một S-CSCF/I-CSCF nằm trong mạng của một nhà cung cấp dịch vụ
khác.

-

BGCF (Breakout Gateway Control Function) là một máy chủ SIP chứa đựng chức
năng định tuyến dựa trên số điện thoại. Nó được sử dụng khi một thiết bị IMS thực


hiện cuộc gọi đến mạng nối chuyển mạch hay mạng điện thoại cố định truyền thống
PSTN. BGCF hỗ trợ khả năng kết nối liên mạng thông qua việc định tuyến yêu cầu
SIP trong trường hợp S-CSCF xác định rằng không thể định tuyến yêu cầu này bằng
DNS/ENUM. BGCF sẽ xác định nút mạng tiếp theo trên đường định tuyến, hoặc là
MGCF hoặc là một BGCF của mạng khác rồi chuyển báo hiệu đến nút mạng tương
ứng.
-


MGCF ( Media Gateway Control Function) có nhiệm vụ quản lý cổng phương
tiện, bao hàm các chức năng như: liên lạc với S-CSCF để quản lý các cuộc gọi trên
kênh phương tiện, làm trung gian chuyển đổi (conversion) giữa giao thức báo hiệu
ISUP và SIP. MGCF quản lý một hay nhiều IM-MGW (IP Multimedia-Media
Gateway). IM-MGW sẽ tương tác với MGCF để quản lý tài nguyên. IM-MGW đóng
vai trị là điểm chuyển đổi nội dung đa phương tiện giữa mạng chuyển nối gói và
chuyển nối mạch khi thông tin truyền từ mạng này sang mạng khác.

-

Chức năng quản lý tài nguyên đa phương tiện (Media Resource Function) có thể
phân ra thành 2 thành phần: MRFC (Media Resource Function Controller) và MRFP
(Media Resource Function Processor). MRFC có vai trò quản lý tài nguyên cho các
dòng dữ liệu đa phương tiện trong MRFP (Media Resource Function Processor), giải
mã thông điệp đến từ máy chủ ứng dụng AS truyền qua S-CSCF, điều khiển MRFP
tương ứng cũng như tham gia vào q trình tính cước. MRFP đóng vai trị quan trọng
trong việc thích ứng nội dụng dịch vụ, chuyển đổi định dạng (transcoding) nội dung.

c. Lớp vận tải
Ở đây, chúng ta tạm xem NASS và RACS là 2 thành phần thuộc lớp vận tải. Vài trò của 2
thành phần này được miêu tả dưới đây:
-

NASS ( Network Attachment Subsystem): Chức năng chính của NASS bao gồm:
o Cung cấp một cách linh hoạt địa chỉ IP cũng như các thông số cấu hình khác cho
UE (sử dụng DHCP)
o Xác nhận thực người dùng trước và trong quá trình cấp phát địa chỉ IP
o Cấp phép cho mạng truy nhập dựa trên hồ sơ mạng
o Quản lý định vị người dùng



o Hỗ trợ quá trình di động và roaming của người dùng.
-

RACS (Resource & Admission Control Functionality) bao gồm 2 chức năng chính
là: chức năng quyết định chính sách dịch vụ (S-PDF) và chức năng điều khiển chấp
nhận kết nối và tài nguyên truy nhập (A-RACF).

-

S-PDF (Serving Policy Decision Function) dưới yêu cầu của các ứng dụng, sẽ tạo ra
các quyết định về chính sách (policy) bằng việc sử dụng các luật chính sách và
chuyển những quyết định này tới A-RACF. S-DPF cung cấp một cách nhìn trừu
tượng về các chức năng truyền tải với nội dung hay các dịch vụ ứng dụng. Bằng cách
sử dụng S-DPF, việc xử lý tài nguyên sẽ trở nên độc lập với việc xử lý dịch vụ.

-

A-RACF (Access Resource and admission Control Function) nhận các yêu cầu về tài
nguyên QoS từ S-PDF. A-RACF sẽ sử dụng thông tin QoS nhận được từ S-PDF để
quyết định chấp nhận hay không chấp nhận kết nối. A-RACF cũng thực hiện chức
năng đặt trước tài nguyên và điều khiển các thực thể NAT/Firewall.

3.4 Kiến thức về công cụ Jenkins
3.4.1 CI/CD
Continuous Integration hay CI là một phương pháp phát triển phần mềm. Phương pháp
này đòi hỏi các thành viên trong đội cần phải tích hợp cơng việc với nhau một cách
thường xuyên, mỗi ngày cần ít nhất một lần tích hợp. Mỗi lần tích hợp sẽ được xây dựng
một cách tự động nhằm mục đích phát hiện ra những lỗi phát sinh một cách nhanh nhất
có thể. Khi sử dụng CI sẽ giúp làm giảm những vấn đề về tích hợp và cho phép các

developer phát triển phần mềm được nhanh hơn và đúng tiến độ hơn. Quy trình làm việc
của CI có thể được diễn ra như sau:
-

Các developer sẽ commit code (mã cam kết) có thể lên repo (repository - kho).

-

Tiếp theo, CI server sẽ thực hiện giám sát trên repo và kiểm tra xem có bất kỳ sự
thay đổi nào trên repo hay không.

Khi xảy ra những thay đổi, CI server sẽ phải hiện ra code mới nhất từ repo và sau đó sẽ
build, chạy các unit test và integration test. Tiếp sau đó, CI server sẽ tạo ra những phản


hồi và gửi đến cho các thành viên trong dự án. Và CI server lại tiếp tục chờ đợi những
thay đổi từ repo.
Mỗi lần mà Dev làm xong các task của mình, họ sẽ chạy trên local trước để kiểm tra
trước khi commit code lên repo. Đây là một công đoạn thường xuyên diễn ra tại bất cứ
thời điểm nào trong ngày. Việc xây dựng tích hợp sẽ khơng xảy ra nếu chúng không ảnh
hưởng đến repo.
CD được viết tắt bởi Continuous Delivery - chuyển giao liên tục. Đây là q trình nâng
cao hơn chút đó là kiểm tra tất cả những thay đổi về code đã được build và code trong
môi trường kiểm thử. CD cho phép các lập trình viên tự động hóa phần mềm testing,
kiểm tra phần mềm qua nhiều thước đo trước khi triển khai.
Những bài test này có thể bao gồm UI testing, integration testing, API testing,... CD sử
dụng Deployment Pipeline giúp chia quy trình chuyển giao thành các giai đoạn. Mỗi giai
đoạn có những mục tiêu riêng để xác minh chất lượng của các tính năng từ một góc độ vơ
cùng khác để có thể kiểm định được chức năng và tránh những lỗi phát sinh ảnh hưởng
đến người dùng.

Những lợi ích của CI/CD:
-

Giảm thiểu rủi ro phát sinh trong quá trình phát triển phần mềm

-

Tạo những thay đổi nhỏ giúp giải quyết từng vấn đề một cách đơn giản

-

Hạn chế những ảnh hưởng của lỗi đến code

3.4.2 Jenkins
Hiện nay có rất nhiều cơng cụ CI/CD được phát triển có thể kể ra như: Jenkins, Gitlab
CI/CD, CircleCI, Travis CI, TeamCity... Tuy nhiên Jenkins vẫn là một lựa chọn khá phù
hợp với nhiều dự án vì những lợi ích của nó mang lại như: chiếm 71% thị trường với
cộng đồng sử dụng cũng như nguồn tài liệu phong phú; có hơn 1400 plugin nên dễ dàng
mở rộng.


a. Tổng quan về Jenkins
Jenkins là một phần mềm tự động hóa, mã nguồn mở và viết bằng Java. Dự án được tách
ra từ dự án ban đầu là Hudson, sau khi xảy ra sự tranh chấp với Oracle.
Jenkins giúp tự động hóa các quy trình trong phát triển phần mềm, hiện nay được gọi
theo thuật ngữ Tích hợp liên tục, và còn được dùng đến trong việc Phân phối liên tục.
Jenkins là một phần mềm dạng server, chạy trên nền servlet với sự hỗ trợ của Apache
Tomcat. Nó hỗ trợ hầu hết các phần mềm quản lý mã nguồn phổ biến hiện nay như Git,
Subversion, Mercurial, ClearCase... Jenkins cũng hỗ trợ cả các mã lệnh của Shell và
Windows Batch, đồng thời còn chạy được các mã lệnh của Apache Ant, Maven, Gradle...

Người sáng tạo ra Jenkins là Kohsuke Kawaguchi. Phát hành theo giấy phép MIT nên
Jenkins là phần mềm miễn phí.
b. Các tính năng của jenkins
Jenkins cung cấp nhiều tính năng hấp dẫn cho các developers:
o Dễ dàng cài đặt: là một chương trình dựa trên java, độc lập về nền tảng và
sẳm sằng chạy với các packages cho Windows, MacOS và các hệ điều hành
giống Unix.
o Dễ dàng cấu hình: Jenkins dễ dàng cài đặt và cấu hình thơng qua giao diện
web của nó, có các tính năng kiểm tra lỗi.
o Các plugins dồi dào Có hàng trăm plugin có sẵn trong update center, mỗi
plugin có thể cung cấp hoặc hỗ trợ cho một tính năng náo đó, tích hợp với
mọi cơng cụ trong chuỗi cơng cụ CI và CD.
o Dễ dàng mở rộng (extensible): Jenkins có thể được mở rộng bằng kiến trúc
plugin của nó, cung cấp khả năng gần như vơ tận cho những gì nó có thể làm.
o Dễ dàng phân phối: Jenkins có thể dễ dàng phân phối công việc trên nhiều
máy để xây dựng, kiểm tra và triển khai nhanh hơn trên nhiều nền tảng.
o Mã nguồn mở: Jenkins là một công cụ mã nguồn mở, vì là mã nguồn mở
nên dĩ nhiên nó miễn phí cộng với một cộng đồng hỗ trợ hùng hậu.


c. Workflow

Quy trình làm việc với Jenkins:
-

Các developer commit code thay đổi lên shared repository.

-

Máy chủ Jenkins CI đều đặn kiểm tra repository đều đặn và lấy bất kỳ code mới

nào được thêm vào.

-

Build Server xây dựng mã thành một tệp thực thi. Trong trường hợp build thất bại,
phản hồi được gửi đến các đội dev.

-

Jenkins deploy ứng dụng đã được build lên máy chủ test. Nếu test thất bại, phản
hồi được gửi đến các đội dev.

-

Nếu code khơng có lỗi, ứng dụng đã được test sẽ được deploy trên máy chủ
production..

3.5 Kiến thức về Automation Test trong Android.
3.5.1 Testing trong Android
Unit Testing là phương pháp kiểm thử phần mềm dựa trên các đơn vị kiểm thử (hay unit
test). Trong các ngơn ngữ hướng đối tượng (ví dụ C# hay Java), các đơn vị kiểm thử này


có thể là các phương thức hay lớp. Một đơn vị kiểm thử được dùng để kiểm tra một đơn
vị công việc (unit of work) với một kết quả giả định nào đó; Nếu kết quả thực thi của đơn
vị công việc cần kiểm tra khác với kết quả giả định thì đơn vị kiểm thử thất bại.
Unit Testing có thể được thực hiện dễ dàng nhờ các framework. Framework phổ biến hỗ
trợ cho các nhà phát triển Java là Junit. Trong mỗi project của Android Studio sẽ bao
gồm các class testing như Unit test và Instrument Test (kiểm thử trên thiết bị) .Có thể dễ
dàng kiểm tra các class kiểm thử này trong mục app > java

Lớp unit test hỗ trợ kiểm thử trên máy ảo Java cục bộ (JVM) và không phụ thuộc vào các
lớp thư viện Android, trong khi đó, lớp instrumented test khá chậm, liên quan nhiều thư
viện Android và chỉ phù hợp khi kiểm thử ứng dụng trên các thiết bị thực (hay ảo).

3.5.2 Automation test với Jenkins
Vì Jenkins thực hiện build và test ứng dụng ngay tại jenkins server nên việc thực hiện
Automation Test sẽ giống như công việc build và test trong máy, tuy nhiên sẽ thực hiện
một cách tự động, thông qua Jenkins. Trong Android Studio, Gradle là một công cụ tự
động hóa q trình build và quản lý các thư viện, giúp tối ưu hóa cơng đoạn biên dịch,
đóng gói .


Để thực hiện build và test một cách tự động ta cần phải thực hiện các thao tác thơng qua
dịng lệnh, Gradle hỗ trợ chạy Build, Unit Test, Compile ứng dụng thơng qua dịng lệnh
với nhiều tùy chỉnh.
Đối với Instrucmentation Test, cần phải có một thiết bị để thực hiện chạy các test liên
quan đến thư viện. Android Studio cũng hỗ trợ chạy máy ảo android với emulator và avd.

CHƯƠNG 4 KẾT QUẢ CÔNG VIỆC
Dưới đây là bảng thể hiện công việc được giao và tự đánh giá hiệu quả công việc.
Tuần

Thời gian

18/10/2021

19/10/2021
20/10/2021
1


21/10/2021

22/10/2021

25/10/2021

2

26/10/2021

27/10/2021

Nội dung công việc
Meeting Welcome Internship
Internship Kick off – 1st Sprint Planning
[Training] [General Orientation] GIT & GERRIT
Company Policy Training

Tự đánh giá hiệu
quả
Tham dự

Tham dự

ICT Policy Training

Tham dự

Tìm hiểu khái quát về IMS network


Thực hiện

Agile Way of Working Training

Tham dự

Tiếp tục tìm hiểu khái quát về IMS network

Thực hiện

C.I Overview Training

Tham dự

Tìm hiểu về kiến trúc IMS và VoIP

Thực hiện

Tìm hiểu về Sesion Description Protocol,
Realtime Control Protocol, H248
Tìm hiểu về Enum System
Tìm hiểu về Diameter.
Tạo slide để chuẩn bị cho phần thuyết trình cuối

Thực hiện
Thực hiện

Thực hiện



sprint.

Hoàn thành slide + họp team để chia sẻ kiến thức
28/10/2021

với nhau, thuyết trình thử (bằng tiếng Việt).
All Staff Meeting
Team thuyết trình với Project Owner để báo cáo

29/10/2021

kiến thức vừa tìm hiểu được (bằng tiếng Anh),
Q&A

01/11/2021

02/11/2021

3

03/11/2021

04/11/2021

05/11/2021

08/11/2021

4


09/11/2021

10/11/2021

Tìm hiểu về Kamailio – The Open-Source SIP
server
Tìm hiểu và triển khai IMS core nodes với
kamailio trên server linux (P-CSCF)
Tìm hiểu và triển khai kamailio – IMS core nodes
trên server linux (I-CSCF)
Tìm hiểu và triển khai kamailio – IMS core nodes
trên server linux (S-CSCF)
Tìm hiểu và triển khai kamailio – IMS core nodes
trên server linux (HSS, DNS)
Sử dụng App Chat Client cũ của công ty để kết
nối đến Server IMS đã triển khai
Kiểm tra kết nối, phân tích gói tin Wireshark để
tìm hiểu q trình Register đến server
Thực hiện các thao tác cơ bản của app với server
như chat, call video và phân tích chúng

Thực hiện
Tham dự
Đảm bảo được nội
dung nhưng tiếng
Anh chưa được
tốt.
Thực hiện

Thực hiện


Thực hiện

Thực hiện

Hoàn thành

Hoàn thành

Thực hiện

Thực hiện


11/11/2021

12/11/2021

5

7

8

9

cuối sprint

19/11/2021


Jenkins
Tìm hiểu về Automation test trong Android

29/11/2021-

Viết một số Unit test case cơ bản cho ứng dụng,

03/12/2021

và Instrucment test đơn giản.

06/12/2021-

Viết Jenkinsfile, setup pipeline, implement

10/12/2021

Jenkins và Gitlab

13/12/2021-

Setup môi trường tại Jenkins Server (gradle, java,

17/12/2021

android virtual device)

20/12/202110

Tìm hiểu lý thuyết về Register IMS và báo cáo


Tìm hiểu về Continuous Integration và công cụ

26/11/2021

24/12/2021

Thực hiện

Chat Client với server

15/11/2021-

22/11/20216

Sửa một số lỗi phát sinh khi thực hiện kết nối App

Hoàn thiện hệ thống CI, báo cáo.

Hoàn thành

Hoàn thành

Hoàn thành

Hoàn thành

Hoàn thành

Hoàn thành


Hoàn thành

Ngồi ra, các kết quả cơng việc được thể hiện thông qua các file document, source code,
powerpoint được lưu tại link: Document, PPT, Source Code

CHƯƠNG 5 TỔNG KẾT, KHÓ KHĂN VÀ HẠN CHẾ
5.1 Tổng kết
Mặc dù phải thực tập online, tuy nhiên sau khi trải qua 10 tuần thực tập đầy bổ ích, ngồi
nhưng kiến thức chun mơn mà em trình bày ở trên, em cũng học được nhiều kĩ năng
làm việc trong môi trường doanh nghiệp mà em sẽ phải sử dụng nhiều sau này.


Em còn được làm việc chung với các anh mentor, những người bạn mới từ các trường
khác; được học hỏi những kĩ năng và cách làm việc của mọi người.
Tất cả sẽ là những kiến thức hữu ích giúp em vững bước hơn trong con đường làm việc
sau này.
5.2 Khó khăn và hạn chế
Chính vì phải thực tập online nên việc giao tiếp giữa các thành viên trong team cũng như
với mọi người trong cơng ty khá khó khăn và mất thời gian. Các nền tảng làm việc trực
tuyến cũng chưa hỗ trợ hết những tính năng và hiệu quả trong quá trình trình bày sản
phẩm.
Trong quá trình làm việc tại nhà cũng gặp phải nhiều tác nhân khiến hiệu quả làm việc
không được tập trung tối đa.
Công ty cũng hỗ trợ nhiều cơ sở vật chất nhưng thực tập online khiến việc sử dụng trở
nên hạn chế.

CHƯƠNG 6 TÀI LIỆU THAM KHẢO
[1] IMS là gì ? Tìm hiểu về IMS - Hỗ Trợ Kỹ Thuật Trực Tuyến (sunocean.com.vn)
[2] CI/CD là gì? Những lợi ích mà mơ hình CI/CD mang lại (itnavi.com.vn)

[3] Tìm hiểu về jenkins - Tổng quan và cài đặt (viblo.asia)
[4] Phát hiện, xử lý các lỗi và kiểm thử (testing) trong Android Studio (3.6 trở lên) – Trần
Ngọc Minh Notes (ngocminhtran.com)


×