Đăng ký Đăng nhập
Trang chủ Giáo dục - Đào tạo Cao đẳ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...

Tài liệu Báo cáo thực tập doanh nghiệp se501.m21.pcml công ty thực tập dek technologies

.PDF
25
1
144

Mô tả:

ĐẠ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à hoàn thành tốt được quá 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 quá trình thực tập. Ngoài ra, để quá trình thực tập được hoà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 quá 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ó hoà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 toà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 chuyên 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 quát 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 quá 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 Tuyên 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 hoàn vốn đầu tư (ROI) • Tăng mức độ hài lòng của khách hàng • Kiểm soá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 hoàn toà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 soá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, hoà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 thuê 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 yê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 toà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 quá 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 quá 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 quá 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à quá 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
- Xem thêm -

Tài liệu liên quan