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

báo cáo thực tập data engineer, big data AI team momo e wallet

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 (3.88 MB, 34 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

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

Data Engineer, Big Data & AI Team Momo E-Wallet

Công ty thực tập : Công ty Cổ phần
Di động Trực tuyến (M_Service)
Người phụ trách : Nguyễn Thanh Hải
Thực tập sinh
: Nguyễn Phi Hùng

TP. Hồ Chí Minh, tháng 12 năm 2020


LỜI MỞ ĐẦU
Ngày nay, ngành Kỹ thuật phần mềm là một bộ phận không thể thiếu của ngành Công
nghiệp phần mềm. Với tốc độ phát triển vô cùng mạnh mẽ, ngành Kỹ thuật phần mềm đã và đang
là nhân tố kích thích sự phát triển của Cơng nghệ thơng tin thế giới, cả về phần cứng và phần mềm.
Cùng với xu thế phát triển của thế giới, Việt Nam cũng không phải ngoại lệ. Hiện nay, việc
ra quyết định tại doanh nghiệp đều dựa trên dữ liệu, vì thế việc lấy được dữ liệu, hiểu được dữ liệu
rất quan trọng, giúp một doanh nghiệp có phát triển bền vững và lớn mạnh hơn. Vì xu hướng đó,
nhu cầu tuyển dụng nhân sự về ngành Data nói chung và Data Engineer nói riêng là rất cao.
Sau ba năm học tập trên trường, với mong muốn có thêm kinh nghiệm thực tế, cũng như
muốn được tìm hiểu, bổ sung kiến thức trong một môi trường chuyên nghiệp, xuất phát điểm là
một sinh viên ngành Kỹ thuật phần mềm, có nền tảng về lập trình và tinh thần tiếp thu thêm ngơn
ngữ, kinh nghiệm làm việc mới, em đã thử sức mình bằng việc thực tập ở Phịng BigData&AI Trung tâm Cơng nghệ thơng tin tại Ví điện tử MoMo - một mơi trường lý tưởng, hiện đại, chuyên
nghiệp - là nơi sẽ giúp em thực hiện được dự định này.

2




LỜI CẢM ƠN
Trân trọng gửi lời cảm ơn Phòng ban BigData&AI -Trung tâm Cơng nghệ thơng tin tại Ví
điện tử MoMo - Trung tâm Cơng nghệ thơng tin tại Ví điện tử MoMo đã tạo điều kiện cho em có
cơ hội được thực tập tại công ty.
Trong suốt thời gian thực tập và làm việc, em đã được tiếp xúc với các công cụ, ngôn ngữ
thực tế, cũng như được bắt tay vào các công việc thực tế mà em đang hướng đến. Với sự chỉ bảo
tận tình của mentor đã giúp em có được một thời gian thực tập rất hiệu quả, em đã có cơ hội được
trải nghiệm và áp dụng tư duy lập trình và cải tiến của mình tại trường học vào cơng việc thực tế.
Đặc biệt cảm ơn anh Nguyễn Thanh Hải đã hướng dẫn, tạo điều kiện cho em được trau dồi,
học tập và chỉ dẫn em trong quá trình thực tập
Trân trọng gửi lời cảm ơn Công ty M_service đã tạo điều kiện cho em có cơ hội được thực
tập tại cơng ty. Cũng xin cảm ơn thầy cô trong khoa Công nghệ phần mềm đã nhiệt tình hỗ trợ, tạo
điều kiện em làm bài báo cáo này.

Nguyễn Phi Hùng
TP. Hồ Chí Minh, tháng 12 năm 2020

3


NHẬN XÉT CỦA KHOA
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....

……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....
……………………………………………………………………………………………....

4


MỤC LỤC
Chương 1: Giới thiệu công ty thực tập

6

1.

Giới thiệu về Công ty M_Service

6

2.


Sản phẩm của công ty

6

3.

Giới thiệu về phịng ban BigData&AI

8

4.

Văn hố cơng ty

9

5.

Một số hình ảnh cơng ty

9

Chương 2: Nội dung thực tập

11

1.

2.


Công nghệ, giải pháp và quy trình áp dụng

11

Dự án Cornerstone – Nền tảng Quảng cáo trên ứng dụng MoMo

21

1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
1.10
2.1
2.2
2.3
2.4
2.5
2.6

Giới thiệu về Git
Giới thiệu về Gerrit và Jenkins
Giới thiệu về IntelliJ IDEA
Giới thiệu về quy trình làm việc Agile – Scrum
Giới thiệu về Google Cloud Platform

Giới thiệu về Kotlin
Giới thiệu về Kubernetes
Giới thiệu về Dependency Injection và Dagger 2
Giới thiệu về Vert.x
Giới thiệu về Prometheus và Grafana
Giới thiệu về dự án
Nhiệm vụ của sinh viên được giao
Chức năng chính của dự án
Kiến trúc tổng quan hệ thống
Một số hình ảnh của dự án
Thành quả mà dự án đạt được

11
12
13
15
17
18
18
19
20
20
21
23
23
23
24
27

Chương 3: Nhật ký quá trình thực tập


29

Chương 4: Kết quả đạt được qua đợt thực tập

32

1.

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

32

2.

Cảm nhận về công ty

32

5


Chương 1: Giới thiệu công ty thực tập
1. Giới thiệu về Công ty M_Service
Công ty Cổ phần dịch vụ Di Động Trực Tuyến (viết tắt M_Service) hoạt động
chính trong lĩnh vực thanh toán trên di động (mobile payment) dưới thương hiệu MoMo.
Công ty đã được Ngân hàng Nhà nước Việt Nam cấp phép cung cấp dịch vụ Ví điện tử và
dịch vụ chuyển tiền, thu hộ/chi hộ…
Với niềm tin dịch vụ tài chính, thanh tốn sẽ góp phần thay đổi cuộc sống và gia
tăng thu nhập cho người dân Việt Nam, công ty đã xây dựng thành công một cơ sở hạ tầng

thanh tốn độc đáo và sáng tạo có thể phục vụ cho mọi đối tượng khách hàng. MoMo là
đơn vị hàng đầu tại Việt Nam về cung cấp dịch vụ ứng dụng Ví điện tử trên di động, dịch
vụ chuyển tiền mặt tại điểm giao dịch (OTC) và nền tảng thanh tốn (payment platform).
Thơng qua việc hợp tác chiến lược với các ngân hàng và tổ chức tài chính, MoMo hoạt
động như một cánh tay nối dài mang dịch vụ tài chính, thanh tốn đến cho người dân Việt
Nam, đặc biệt tại các khu vực vùng sâu, vùng xa. Đến nay, công ty đã thực hiện hàng chục
triệu lượt giao dịch cho khách hàng và cộng đồng này đang ngày càng phát triển.
Đặc biệt, MoMo sở hữu mạng lưới điểm giao dịch tài chính trải rộng khắp các tỉnh
thành trên cả nước, cho phép hàng triệu khách hàng tại các vùng sâu vùng xa, nơi dịch vụ
ngân hàng và điện thoại thông minh vẫn chưa phổ biến, được tiếp cận với các dịch vụ tài
chính.
MoMo là ứng dụng Ví điện tử trên điện thoại thơng minh đã có mặt trên 2 hệ điều
hành iOS và Android với gần 20 triệu người tin dùng. Là nền tảng thanh toán di động, Ví
MoMo thúc đẩy nền kinh tế khơng tiền mặt và cung cấp cho khách hàng trải nghiệm thanh
toán một chạm (One Touch Payment) với hơn hàng trăm tiện ích dịch vụ, bao gồm Chuyển
tiền, Thanh tốn hóa đơn, Mua vé máy bay, Mua vé xe lửa, Vé xem phim, Thu-Chi hộ và
Thương mại trên di động.
Ví MoMo hiện đã liên kết trực tiếp với hơn 25 ngân hàng. Người dùng Ví MoMo
có thể thanh tốn mọi tiện ích hàng ngày như Điện/Nước/Internet/Truyền hình cáp; Mua
vé Máy bay/vé xe/vé tàu hỏa; Thanh toán taxi Vinasun; Mua vé xem phim tất cả rạp; Đặt
dịch vụ giúp việc; Mua hoa tươi…; Đóng vay trả góp của tất cả các cơng ty tài chính hoặc
sử dụng MoMo để thanh tốn tại các điểm chấp nhận thanh toán MoMo như Gongcha, The
Coffee House, Al Fresco’s, Món Huế, Hồng Yến, Co.opMart, Circle K, Ministop,…
Người dùng Ví MoMo hồn tồn an tâm vì MoMo hiện đang đáp ứng bộ tiêu chuẩn
khắt khe nhất trong ngành tài chính ngân hàng quốc tế: Chứng chỉ bảo mật quốc tế PCI
DSS (Payment Card Industry Data Security Standard) - là tiêu chuẩn bảo mật xác lập bởi
Hội đồng Tiêu chuẩn Bảo mật (PCI Security Standards Council) gồm các thành viên: Visa,
MasterCard, American Express, Discover Financial Services, JCB International. Tại Việt
Nam, MoMo là đơn vị ví điện tử đầu tiên có chứng chỉ mức độ cao nhất là PCI DSS - Level
1.

Đồng thời, Ví MoMo áp dụng các cơng nghệ xác thực tiên tiến, vượt trội như: Xác
thực hai lớp; Xác thực bằng vân tay hay nhận diện khuôn mặt; Tự động khóa ứng dụng khi
quá thời gian sử dụng; Bảo vệ đường truyền chuẩn SSL/TLS; Tính năng mã hóa số thẻ
quốc tế (Tokenization).

2. Sản phẩm của cơng ty
Ví điện tử MoMo là một ứng dụng tài chính cho phép chuyển nhận tiền Siêu
nhanh, dễ dùng, an toàn tuyệt đối! Ví MoMo giúp bạn thanh tốn mọi nhu cầu, mọi lúc
mọi nơi và HỒN TỒN MIỄN PHÍ như nạp tiền điện thoại tất cả nhà mạng, thanh toán
6


các hóa đơn điện nước - internet - vay tiêu dùng, vé xem phim, vé máy bay và hàng trăm
dịch vụ khác.
Các chức năng chính:
- NẠP TIỀN ĐIỆN THOẠI SIÊU NHANH, SIÊU DỄ, CHIẾT KHẤU SIÊU
CAO
● Nạp tiền điện thoại, mua mã thẻ tất cả các nhà mạng nhanh chóng và dễ
dàng.
● Hưởng chiết khấu đến 5% khi nạp tiền điện thoại, mua mã thẻ.
- THANH TỐN HĨA ĐƠN SIÊU TIỆN LỢI
● Thanh tốn các loại hóa đơn điện, hóa đơn nước, hóa đơn internet, truyền
hình cáp, tiền bảo hiểm...
● Thanh tốn dễ dàng các khoản vay tài chính, vay tiêu dùng, vay trả góp
của Home Credit, Fe Credit, HD Saison, Doctor Đồng, ACS, Prudential
Finance.
● Tự động nhắc nhở bạn thanh tốn hóa đơn mỗi khi tới kỳ thanh tốn.
- CHUYỂN TIỀN, NHẬN TIỀN TỨC THÌ
● Chuyển tiền ngay tức thì, 24/7 với mức phí rẻ nhất thị trường.
● Người nhận nhận tiền ngay lập tức.

- NẠP VÀ RÚT TIỀN DỄ DÀNG TỪ TẤT CẢ CÁC NGÂN HÀNG NỘI ĐỊA
● Nạp tiền vào Ví MoMo dễ dàng thơng qua hơn 29 ngân hàng nội địa.
● Rút tiền ngay lập tức về tài khoản của hơn 15 ngân hàng liên kết trực tiếp
với Ví MoMo như Vietcombank, VPBank, TPBank, OCB, ACB,
VietinBank, Eximbank, Sacombank, VIB, ShinhanBank, SCB, VRB,
BIDV, Agribank...
● Nạp và rút tiền tại hơn 4000 điểm giao dịch trên toàn quốc.
- CÁC DỊCH VỤ, TIỆN ÍCH NỔI BẬT KHÁC
● Thanh tốn tại các siêu thị, cửa hàng, nhà hàng: Lotte Mart, The Coffee
House, Gogi, Kichi Kichi,...
● Thanh toán, mua vé máy bay Vietnam Airlines, Vietjet Air, vé Jetstar, vé
xe…
● Mua và thanh toán vé xem phim của các hệ thống rạp chiếu phim lớn như
CGV Cinemas, GALAXY Cinemas, BHD Cinemas, CINESTAR, MEGA
GS…
● Thanh toán, mua sắm trên Tiki, nhommua.com, Gotit.vn, mua hoa trên
hoayeuthuong...
- AN TOÀN TUYỆT ĐỐI
● MoMo được Ngân Hàng Nhà Nước cấp giấy phép và quản lý hoạt động.
Tiền trong Ví MoMo được bảo chứng bởi Vietcombank. Đồng thời,
MoMo là đối tác chiến lược của nhiều ngân hàng hàng đầu Việt Nam.
● MoMo đạt chứng chỉ bảo mật toàn cầu PCI DSS cấp độ cao nhất. MoMo
áp dụng các công nghệ bảo mật vượt trội như 2FA, SSL/TLS,
Tokenization, xác thực vân tay, tự động khóa ứng dụng và tự động ngăn
chặn giao dịch bất thường, v.v.
● Trung tâm Chăm Sóc Khách hàng hoạt động 24/7, sẵn sàng hỗ trợ kịp thời
các vấn đề liên quan tới bảo mật tài khoản và rủi ro giao dịch.

7



3. Giới thiệu về phịng ban BigData&AI
Phịng ban BigData&AI có nhiệm vụ giải quyết các vấn đề quan trọng và phát
triển các ứng dụng trong đời thực, khai thác công nghệ để trích xuất thơng tin chi tiết và
sử dụng dữ liệu theo cách hiệu quả hơn - hỗ trợ việc ra quyết định trong cơng ty - theo
cách có thể thực hiện được những tiến bộ vượt bậc trong cơng nghệ điện tốn, lưu trữ kỹ
thuật số, mạng và cảm biến.
Với chun mơn trong ngành tài chính các lĩnh vực trọng tâm nghiên cứu bao gồm:
- Artificial Intelligence
- Text data
- Data mining
- Knowledge management
- Natural language processing
- Deep learning
Chức năng chính của phịng ban:
- Xác định giá trị gia tăng cho cơng ty dựa vào việc phân tích dữ liệu
- Tổ chức và quản lý, định hướng quyền truy cập thơng tin trong mơ hình và
chiến lược kinh doanh của cơng ty
- Phân tích các bên liên quan trong ngành và các đối tác của công ty
- Thử nghiệm với các quyết định khác nhau dựa trên luồng dữ liệu có sẵn
- Phân tích dữ liệu để hiểu cách quản lý thông tin và thu hút sự ủng hộ của người
dùng
- Tìm hiểu lý do tại sao dữ liệu thường được cấu trúc theo cách khơng tương thích
với các nguồn khác và cách truy cập thông tin này để tạo ra nhiều lợi ích hơn
nữa cho cơng ty
- Nghiên cứu và ứng dụng các thuật toán hàng đầu dành cho học máy và trí tuệ
nhân tạo, cách chúng hoạt động và cách diễn giải kết quả của chúng vào dữ liệu
công ty

8



4. Văn hố cơng ty

Hình 1. Giá trị cốt lõi Ví điện tử MoMo - Cơng ty M_Service

5. Một số hình ảnh cơng ty

Hình 2. Hình ảnh hoạt động trong Ví điện tử MoMo – Hiến máu nhân đạo
Giáng sinh 2020

9


Hình 3. Hình ảnh hoạt động trong Ví điện tử MoMo – Ngày Quốc tế Nam giới –
19/11/2020

Hình 4. Hình ảnh hoạt động trong Ví điện tử MoMo –
Sự kiện MoMo AI - 6/11/2020

10


Chương 2: Nội dung thực tập
1. Công nghệ, giải pháp và quy trình áp dụng
1.1

Giới thiệu về Git
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System
– DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất

hiện nay. Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository) riêng chứa tồn
bộ lịch sử thay đổi.

Hình 5. Hình ảnh mơ tả làm việc nhóm với sự hỗ trợ của Git
VCS là viết tắt của Version Control System là hệ thống kiểm soát các phiên bản
phân tán mã nguồn mở. Các VCS sẽ lưu trữ tất cả các file trong toàn bộ dự án và ghi
lại toàn bộ lịch sử thay đổi của file. Mỗi sự thay đổi được lưu lại sẽ được và thành một
version (phiên bản). VCS nghĩa là hệ thống giúp lập trình viên có thể lưu trữ nhiều
phiên bản khác nhau của một mã nguồn được nhân bản (clone) từ một kho chứa mã
nguồn (repository), mỗi thay đổi vào mã nguồn trên local sẽ có thể ủy thác (commit)
rồi đưa lên server nơi đặt kho chứa chính.

11


Hình 6. Hình ảnh mơ tả thay đổi các phiên bản trên Git

1.2

Và một máy tính khác nếu họ có quyền truy cập cũng có thể clone lại mã nguồn từ
kho chứa hoặc clone lại một tập hợp các thay đổi mới nhất trên máy tính kia. Lập trình
viên có thể xem lại danh sách các sự thay đổi của file như xem một dòng thời gian của
các phiên bản. Mỗi phiên bản bao gồm: nội dung file bị thay đổi, ngày giờ sửa đổi,
người thay đổi là ai, lý do thay đổi hay tên phiên bản…
Giới thiệu về Gerrit và Jenkins
- Gerrit: Gerrit là một công cụ hỗ trợ việc quản lý và review source code dựa trên nền
tảng web, sử dụng git làm version control, được phát triển tại Google bởi Shawn Pearce
trong quá trình phát triển dự án Android. Gerrit không đơn thuần chỉ là công cụ review
mà nó có thể được sử dụng nó để xây dựng một server quản lý source code, giống như
những gì mà github, gitlab... đang làm.


Hình 6. Hình ảnh mơ tả những hoạt động của nhóm lập trình viên trên Gerrit
12


- Jenkins: Jenkins là một web application chạy trên nền J2EE, đóng vai trị là một máy
chủ build & test hệ thống tích hợp liên tục (Continuous Integration). Jenkins được viết
bởi Kosuke Kawaguchi tại Sun và tiền thân có tên là Hudson, kể từ khi Oracle mua lại
Sun vào năm 2010 thì bộ phận phát triển Hudson đã tách ra phát triển riêng và đặt tên
là Jenkins như ngày nay.

Hình 7. Hình ảnh mơ tả luồng tích hợp Gerrit và Jenkins
1.3

Giới thiệu về IntelliJ IDEA
Phần mềm IntelliJ IDEA, sản phẩm nổi tiếng của JetBrains đã nhận được rất nhiều
giải thưởng. Phần mềm được thiết kế để cải tiến năng suất cho các nhà phát triển. IntelliJ
IDEA cung cấp trình soạn thảo thơng minh, trình phân tích mã và tập hợp mạnh mẽ
của refactorings hỗ trợ một loạt các ngôn ngữ lập trình, các khn khổ và cơng nghệ,
và đã sẵn sàng để sử dụng.

13


Hình 8. Hình ảnh mơ tả phần mềm IntelliJ IDEA
Lợi ích chính của phần mềm IntelliJ IDEA:
-

Cho phép các nhà phát triển tập trung phát triển và quản lý tất cả các tác vụ
thông thường.

Cho phép viết, gỡ lỗi, tái cấu trúc, kiểm tra và tìm hiểu mã của bạn mà không
bị ảnh hưởng.
Xử lý liền mạch cơ sở mã hỗn hợp của Java, Kotlin, Ruby, Groovy, Python và
Scala.
Tự động duy trì chất lượng mã.
Theo dõi và sửa lỗi trên tất cả các cấp độ – từ các câu đến kiến trúc tổng thể.
Tạo mã “sạch”, nhanh chóng thực hiện mã trong thời gian ngắn nhất.
Được thiết kế để làm việc trên tất cả các quy mô – từ cá nhân đến doanh nghiệp.
Hỗ trợ tất cả các ngôn ngữ, cơng nghệ và framework chính.
Làm việc với các hệ thống điều khiển phiên bản phổ biến và TeamCity, server
tích hợp liên tục.

14


1.4

Giới thiệu về quy trình làm việc Agile – Scrum

Hình 9. Hình ảnh mơ tả quy trình làm việc Agile
Khái niệm Agile (viết tắt của Agile Software Development) có nghĩa là phương
thức phát triển phần mềm linh hoạt, được ứng dụng trong quy trình phát triển phần
mềm với mục tiêu là đưa sản phẩm đến tay người dùng càng nhanh càng tốt. Ngun
tắc phát triển mơ hình là phân đoạn lặp (iterative) và tăng trưởng (incremental), theo
đó nhu cầu và giải pháp tiến hóa thơng qua sự hợp tác giữa các nhóm tự quản và liên
chức năng.
Rất nhiều nơi định nghĩa Agile như một phương pháp. Thực chất, Agile giống như
một phương pháp luận, một triết lý dựa trên hơn nguyên tắc phân đoạn vòng lặp
(iterative) và tăng trưởng (incremental).
Ngày nay, triết lí Agile đã vượt xa khỏi khu vực truyền thống của mình là phát triển

phần mềm để đóng góp sự thay đổi trong cách thức làm việc, quản lí, sản xuất ở các
ngành khác như sản xuất, dịch vụ, sales, marketing, giáo dục... và trở thành một phương
thức quản lý dự án phổ biến nhất hiện nay với nhiều đại diện được gọi là các phương
pháp “họ Agile”.
Những tơn chỉ trong quy trình Agile:
- Cá nhân và sự tương hỗ quan trọng hơn quy trình và cơng cụ: Trọng tâm đặt lên
con người, xây dựng tương tác và hỗ trợ giữa các thành viên trong nhóm. Những thành
viên có năng lực, chịu tương trợ nhau trong cơng việc sẽ mang đến thành công cho dự
án.
- Sản phẩm dùng được tốt hơn tài liệu đầy đủ: Tập trung thời gian để làm ra phần
mềm hoàn chỉnh đáp ứng hoàn hảo yêu cầu khách hàng.
- Cộng tác với khách hàng quan trọng hơn đàm phán hợp đồng: Hiểu được khách
hàng cần gì để tư vấn và điều chỉnh sản phẩm thay vì chỉ dựa vào các điều khoản trong
hợp đồng.

15


- Phản hồi thay đổi hơn là bám sát kế hoạch: Agile khuyến khích thích nghi với sự
thay đổi, đó có thể là thay đổi về cơng nghệ, nhân sự, deadline, ...
Các bước làm việc theo quy trình Agile – Scrum:
Scrum định nghĩa quy tắc cho bốn sự kiện chủ chốt nhằm tạo môi trường và quy
cách hoạt động và cộng tác cho các thành viên trong dự án. Các sự kiện này diễn ra
trước khi Sprint bắt đầu (là sự kiện lập kế hoạch – Sprint Planning), trong khi Sprint
diễn ra (sự kiện Daily Scrum) và sau khi Sprint kết thúc (sự kiện Sprint Review và
Sprint Retrospective).

Hình 10. Hình ảnh mơ tả quy trình làm việc Agile - Scrum
- Sprint Planning (Họp Kế hoạch Sprint- Iteration): Nhóm phát triển gặp gỡ với
Product Owner để lên kế hoạch làm việc cho một Sprint (xem thêm phần Sprint bên

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

16


1.5

Giới thiệu về Google Cloud Platform
Google Cloud Platform là một sản phẩm của cơng ty Google cịn được viết tắt là
GCP. Đây là nền tảng điện toán đám mây cho phép người dùng có thể sử dụng, tạo lập các
ứng dụng, dữ liệu của mình trên hệ thống này. Hiện nay, một số ứng dụng phổ biến với
người dùng nhất được xây dựng dựa trên nền tảng Google Cloud Platform có thể kể đến
như Youtube, Chrome, Google Maps, Google Search,… Những vấn đề liên quan đến
Mobile, Developer, Management, Networking, Computer Engine, Storage, Big Data,…đều
được Google Cloud Platform giải quyết, từ đó giúp doanh nghiệp thuận lợi hơn trong việc

xây dựng nền tảng công nghệ thông tin mà không cần phải quan tâm đến các hệ thống bên
dưới.
Một trong những ưu điểm tuyệt vời Google Cloud Platform có thể mang đến cho
người dùng chính là hệ thống dịch vụ Data Center. Đây là những dịch vụ được Google đặt
trực tiếp mà người dùng có thể sử dụng dễ dàng với mức độ bảo mật an toàn rất cao. Và
đương nhiên, hệ thống Google Cloud Platform được xây dựng dựa trên những nguyên tắc,
tiêu chuẩn khắt khe mà một hệ thống điện tốn đám mây cần phải có.
Các sản phẩm của nền tảng Google Cloud:

17


1.6

Giới thiệu về Kotlin
Kotlin là ngơn ngữ lập trình được giới thiệu bởi JetBrains, là một công ty phát triển
phần mềm, họ tạo ra một IDE nổi tiếng để lập trình Java có tên là Intellij IDEA. Kotlin là
một ngơn ngữ mạnh mẽ chạy trên JVM.

Hình 10. Hình ảnh mơ tả biểu tượng của Kotlin
Trong năm 2017, Google đã công bố Kotlin là ngơn ngữ chính thức để phát triển
Android. Nó là một ngơn ngữ lập trình nguồn mở hỗ trợ cả hai phương pháp lập trình
hướng đối tượng (object-oriented programming) cũng như lập trình hướng thủ tục
(functional programming).
1.7

Giới thiệu về Kubernetes
Kubernetes, hoặc k8s là một nền tảng mã nguồn mở tự động hóa việc quản lý,
scaling và triển khai ứng dụng dưới dạng container hay còn gọi là Container orchestration
engine. Nó loại bỏ rất nhiều các quy trình thủ công liên quan đến việc triển khai và mở

rộng các containerized applications.

Hình 11. Hình ảnh mơ tả quy trình triển khai Kubernetes real-time với sự hỗ trợ
của Skaffold, Helm
18


Kubernetes orchestration cho phép bạn xây dựng các dịch vụ ứng dụng mở rộng
nhiều containers. Nó lên lịch các containers đó trên một cụm, mở rộng các containers và
quản lý tình trạng của các containers theo thời gian.
Các ứng dụng production thực tế mở rộng nhiều containers. Các containers đó phải
được triển khai trên nhiều server hosts. Kubernetes cung cấp khả năng phối hợp và quản lý
cần thiết để triển khai các containers theo quy mơ cho các workloads đó.
Kubernetes ban đầu được phát triển và thiết kế bởi các kỹ sư tại Google. Đây cũng
là công nghệ đằng sau các dịch vụ đám mây của Google.
1.8

Giới thiệu về Dependency Injection và Dagger 2
- Dependency Injection được xây dựng dựa trên khái niệm Inversion of Control.
Nghĩa là các phụ thuộc của 1 class chỉ nên được cung cấp từ bên ngồi. Hiểu đơn giản là
khơng 1 class nào được khởi tạo đối tượng của class khác (class phụ thuộc) bên trong nó,
mà nên lấy class phụ thuộc đó từ 1 configuration class.
- Dagger 2 có chức năng tạo ra 1 sơ đồ phụ thuộc (dependency graph) thông qua
các Annotation. Các class cung cấp sự phụ thuộc được sinh ra bằng các đoạn code (được
generate bởi Dagger 2) trong quá trình Compile time. Điều này làm giảm khả năng gây ra
các lỗi khơng mong muốn.

Hình 12. Hình ảnh mơ tả việc sử dụng Dependency Injection và Dagger 2 trong
kỹ thuật lập trình hướng đối tượng


19


1.9

Giới thiệu về Vert.x
Vert.X là một web framework, hỗ trợ rất nhiều ngơn ngữ, nhưng cái được tối ưu
hóa nhất là Java. Nếu bạn dùng Ruby, Kotlin, Ceylon, Groovy, hay JavaScript, bạn vẫn
hồn tồn có thể dùng Vert.X. Có rất nhiều loại component trên Vert.X, cho phép bạn dùng
những cần để viết web app và bỏ đi những cái dư thừa.

Hình 13. Hình ảnh mơ tả kiến trúc tổng thể của Vert.x
Một trong những điểm sáng nhất về Vert.X – ngồi sự linh hoạt và đa năng – đó là
bạn có thể dễ dàng dựng và dùng bất kì component hoặc library nào bạn muốn. Nó chạy
trên JVM – Java Virtual Machine – cho phép bạn test code và scale tức thì. Đây là một thứ
bạn ghi nhớ, đặc biệt là khi bạn cần nhiều component mà các framework khác khơng hỗ
trợ hoặc khó tìm ra.
1.10 Giới thiệu về Prometheus và Grafana
- Prometheus là một open-source systems monitoring và alerting ban đầu được xây dựng
tại SoundCloud. Vào năm 2012 nhiều công ty, tổ chức đã đứng ra bảo trợ cho Prometheus,
sau đó project này cực kỳ và phát và có rất nhiều người dùng. Hiện tại nó khơng cịn là một
project độc lập mà được phát triển bởi rất nhiều cơng ty khác nhau. Nó sử dụng mã nguồn
GoLang của Google.
- Grafana là một nền tảng để xây dựng các analytics và monitoring. Có nhiệm vụ chính là
sau khi thu thập metrics từ các thiết bị, grafana sẽ sử dụng metrics đó để phân tích và tạo
ra dashboard mơ tả trực quan các metric cần thiết cho việc monitoring ví dụ như cpu, ram,
dish, network, iops, session.

20



Hình 14. Hình ảnh mơ tả kiến trúc hệ thống theo dõi và cảnh báo sự cố sử dụng
Prometheus và Grafana

2. Dự án Cornerstone – Nền tảng Quảng cáo trên ứng dụng MoMo
2.1

Giới thiệu về dự án
Cornerstone là dự án xây dựng hệ thống quảng cáo trên ứng dụng MoMo. Hiện nay,
quảng cáo trên ứng dụng di động là mô hình quảng cáo phát triển nhanh nhất trong mảng
quảng cáo di động. Theo các báo cáo, người dùng di động đang dành khoảng 89% thời gian
dùng internet để truy cập vào các ứng dụng di động, làm thay đổi hoàn tồn ngành cơng
nghiệp quảng cáo.
Nghiên cứu tồn cầu cho thấy, chi tiêu cho những hình thức quảng cáo trên di động đã
tăng 239% trong vòng 1 năm, từ quý II-2018 đến quý II-2019, chiếm gần 700% tỷ lệ tăng
trưởng hằng năm từ ứng dụng di động. Một số liệu khác cũng tiết lộ tỉ lệ click-through
(CTR) trong ứng dụng đã tăng khoảng 58%. Dựa trên những số liệu này, sự bùng nổ của
quảng cáo trên ứng dụng di động chắc chắn sẽ là xu hướng phát triển chính của năm 2020.
Đây chính là lý do mà MoMo quyết tâm xây dựng hệ thống quảng cáo trên ứng dụng của
mình.
Nhiệm vụ của dự án là xây dựng được cơ chế hiển thị các thông điệp truyền
thông/khuyến mãi đến cho từng tập người dùng tương ứng ở các màn hình được cấu hình
sẵn ở trong ứng dụng, sẽ bao gồm các các vị trí xuất hiện và định dạng quảng cáo được
hiển thị.
Các định dạng của quảng cáo:
- Popup:
21


Hình 15. Hình ảnh mơ tả định dạng quảng cáo Popup

- X-banner:

Hình 16. Hình ảnh mơ tả định dạng quảng cáo X-banner
- Banner:

Hình 17. Hình ảnh mơ tả định dạng quảng cáo Banner
- Recommended Service:

Hình 18. Hình ảnh mơ tả định dạng quảng cáo Recommended Service

22


2.2

Nhiệm vụ của sinh viên được giao
- Nắm được các kiến thức căn bản và các công nghệ được giảng dạy, kiến thức được
training áp dụng để xây dựng một hệ thống giao tiếp dữ liệu được cấu hình sẵn với ứng
dụng MoMo để hiển thị quảng cáo.
- Sử dụng thành thạo kỹ năng lập trình, tư dung logic, kỹ năng phân tích vấn đề và các cơng
nghệ hỗ trợ để hoàn thành hệ thống một cách tối ưu nhất.
- Hoàn thiện những backlog đã được giao, hỗ trợ đội dự án và đảm bảo tiến độ dự án luôn
trong q trình ổn định.
2.3
Chức năng chính của dự án
- Cung cấp thơng tin vị trí và quảng cáo cần hiển thị trong ứng dụng MoMo mỗi lần người
dùng truy cập ứng dụng.
- Theo dõi và ghi nhận dữ liệu từ ứng dụng MoMo để phân tích và cập nhật trạng thái
người dùng nhằm thay đổi quảng cáo phù hợp với người dùng trong thời gian thực.
- Tích hợp hệ thống “Machine Learning” để khuyến nghị những quảng cáo phù hợp với

người dùng.
- Đảm bảo hiển thị quảng cáo theo “business rules” của bộ phận kinh doanh trong MoMo.
- Hiển thị quảng cáo theo thời gian thực với độ trễ thấp nhất, tránh làm ảnh hưởng tới trải
nghiệm người dùng trên ứng dụng MoMo.
2.4
Kiến trúc tổng quan hệ thống

Hình 19. Hình ảnh mô tả kiến trúc tổng quan hệ thống dự án Cornerstone

23


2.5

Một số hình ảnh của dự án

Hình 20. Hình ảnh mơ tả vị trí hiển thị của quảng cáo trên màn hình Home,
ứng dụng MoMo

24


Hình 21. Hình ảnh mơ tả vị trí hiển thị của quảng cáo trên màn hình Chuyển tiền đến ngân
hàng, ứng dụng MoMo

Hình 22. Hình ảnh mơ tả việc “Filter Ads” theo “business rules” từ “Ads Management”

25



×