Chân thành cảm ơn các anh chị trong team Backend đã bỏ ra nhiều thời gian, công sức để hướng dẫn, hướng dẫn, giúp đỡ em tận tình trong khi làm quen môi trường mới cũng như trong việc tiế
Trang 1TP Hồ Chí Minh, tháng 12 năm 2023
Trang 22
LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp 4.0, công nghệ thông tin nói chung và ngành Công nghệ phần mềm nói riêng luôn là nhân tố đóng vai trò quan trọng trong quá trình phát triển của xã hội
Công nghệ Web, hay công nghệ sản xuất các trang web đã phục vụ hầu hết các nhu cầu của con người từ bán hàng, cung cấp kiến thức đến thông tin liên lạc, Hiện nay đã có đến hơn 1.5 tỷ trang web, nhưng nhu cầu tạo ra những trang web mới vẫn chưa có dấu hiệu giảm
Do đó, một trang web muốn được nhiều người sử dụng phải đáp ứng được yếu tố hình thức và nội dung Làm thế nào để sản phẩm tạo ra đạt chất lượng cao ở hai yếu tố trên luôn làm bất kì một đội ngũ phát triển website nào cũng cần phải suy nghĩ đau đầu Để thử thách bản thân trong ngành công nghiệp web, em đã lựa chọn Backend developer là định hướng cho việc học cũng như nghề nghiệp trong tương lai
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng những kiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết định tham gia vào Công ty TNHH Affina Việt Nam – một môi trường lý tưởng và chuyên nghiệp để thực hiện dự định
Trang 33
LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn Công ty TNHH Affina Việt Nam đã tạo điều kiện cho em cơ hội được thực tập tại công ty Dù trong thời gian ngắn nhưng nhờ sự chỉ dẫn nhiệt tình của anh Phan Thành Đăng, em đã tiếp thu những kiến thức quan trọng để có thể tham gia một dự án thực tế
Chân thành cảm ơn các anh chị trong team Backend đã bỏ ra nhiều thời gian, công sức để hướng dẫn, hướng dẫn, giúp đỡ em tận tình trong khi làm quen môi trường mới cũng như trong việc tiếp cận kiến thức công nghệ, kỹ năng lập trình và tư duy sản phẩm để có thể thực hiện tốt
dự án thực tế trong thời gian qua
Em 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áo cáo này
TP HCM, ngày 26 tháng 12 năm 2023
Đinh Quang Dương
Trang 44
NHẬN XÉT CỦA KHOA
Trang 5
5
MỤC LỤC
LỜI MỞ ĐẦU 2
LỜI CẢM ƠN 3
NHẬN XÉT CỦA KHOA 4
MỤC LỤC 5
DANH MỤC HÌNH ẢNH 7
DANH MỤC CÁC BẢNG 8
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 9
1.1 Giới thiệu công ty TNHH Affina Việt Nam 9
1.2 Sản phẩm công ty 10
1.2.1 Affina Landing Page 10
1.2.2 Affina App 10
1.2.3 Affina Pro 11
1.3 Lịch làm việc khi thực tập tại công ty 11
CHƯƠNG 2: NỘI DUNG THỰC TẬP 12
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 12
2.2 Nghiên cứu kỹ thuật 12
2.2.1 Các công cụ làm việc 12
2.2.2 Ôn tập Java 12
2.2.3 Ôn tập Spring Boot 13
2.2.4 Tìm hiểu về kiến trúc Microservices 13
2.2.5 Tìm hiểu về RabbitMQ 13
2.2.8 Tìm hiểu Oauth2 và Spring Authorization Server 14
2.2.9 Tìm hiểu SnowFlakeId và tạo Custom Identifier trong Hibernate 15
2.2.10 Tìm hiểu ELK 15
2.2.11 Tìm hiểu thư viện JDBI 15
2.2.12 Tìm hiểu thư viện Mapstruct 15
2.3 Tham gia dự án thực tế 16
2.4 Lịch làm việc 16
2.5 Giới thiệu về dự án 19
2.6 Thực hiện 19
2.7 Kết quả 20
CHƯƠNG 3: TỔNG KẾT 22
Trang 66
3.1 Điểm mạnh 22
3.2 Điểm yếu 23
3.3 Chuẩn đạt được 23
TÀI LIỆU THAM KHẢO 24
Trang 77
DANH MỤC HÌNH ẢNH
Hình 1.1 Affina Logo 9
Hình 1.2 Affina Landing Page 10
Hình 1.3 Affina App 10
Hình 1.4 Affina Pro 11
Hình 2.1 Mô tả task 19
Hình 2.2 Gantt chart 20
Hình 2.3 Màn hình danh sách bệnh viện bảo lãnh trên môi trường UAT 20
Hình 2.4 Màn hình quản lý bình luận 21
Trang 88
DANH MỤC CÁC BẢNG
Bảng 2.1 Lịch làm việc 16Bảng 3.1 Chuẩn đầu ra môn học 23
Trang 99
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu công ty TNHH Affina Việt Nam
Hình 1.1 Affina Logo
Affina được thành lập vào tháng 1 năm 2022, là startup công nghệ hàng đầu về bảo hiểm và giải pháp tài chính cho doanh nghiệp phục vụ nhân viên và khách hàng cá nhân do doanh nghiệp sở hữu Là một công ty công nghệ bảo hiểm đa năng, cung cấp các sản phẩm đa dạng
và linh hoạt cho cá nhân, doanh nghiệp vừa và nhỏ, tiểu thương và hộ kinh doanh Với sự tận tâm và chuyên nghiệp, Affina đảm bảo tối ưu và đơn giản hóa quá trình cấp đơn, quản lý dịch
vụ và bồi thường nhanh chóng, giúp khách hàng tiết kiệm thời gian và công sức trong việc mua bảo hiểm Affina luôn nỗ lực để tìm ra các giải pháp bảo hiểm phù hợp với nhu cầu của từng khách hàng, đảm bảo sự an tâm và tin tưởng tuyệt đối trong quá trình sử dụng dịch vụ của công
ty
Affina ghi dấu ấn sau 6 tháng ra mắt với sự tăng trưởng QoQ với 200% và lượng khách hàng đến từ 12 tỉnh thành trong cả nước, hơn 2 triệu lượt tìm kiếm trên các nền tảng mạng xã hội cùng với hơn 22 sản phẩm bảo hiểm phù hợp với khách hàng tại Việt Nam
Affina chuyển đổi kỹ thuật số và triển khai sản phẩm đáp ứng sự đa dạng về thiết kế và trả nghiệm người dùng theo yêu cầu của khách hàng (đa dạng trong các công ty Bank, Fintech, Insurtech) Affina đã hợp tác với hơn 14 nhà bảo hiểm lớn (PTI, Bảo Việt, Bảo Minh, BSH …)
và có 15 dối tác chiến lược (Payoo, VNG Cloud…)
Nguồn nhân lực về kỹ thuật có kinh nghiệm và thế mạnh về chuyển đổi số (chủ yếu trong lĩnh vực fintech, ngân hàng, ví điện tử, bảo hiểm nhân thọ, bảo hiểm phi nhân thọ) Kiến thức vững chắc về hệ thống core của bảo hiểm nhân thọ (Ingenium, Omniflow) Công ty còn hướng tới việc áp dụng các công nghệ AI, KYC, OCR, BigData vào sản phẩm của mình trong tương lai
Trang 1010
1.2 Sản phẩm công ty
1.2.1 Affina Landing Page
Đây là trang giới thiệu của công ty về các mục tiêu, giá trị mà Affina hướng tới với người dùng Ngoài mục đích giới thiệu, người dùng cũng có thể đăng nhập vào trang web là thực hiện một
số thao tác như mua bảo hiểm xe máy, bảo hiểm sức khỏe, bảo hiểm xe hơi
Hình 1.2 Affina Landing Page
Đường dẫn tới trang web của công ty: https://affina.com.vn/
1.2.2 Affina App
Hình 1.3 Affina App
Trang 1111
Hay còn gọi là User app, đây là sản phẩm chính của Affina nơi mà người dùng thực hiện các hoạt động như:
1 Đăng ký bảo hiểm qua hình thức trực tuyến
2 Đa dạng gói quyền lợi phù hợp với khả năng tài chính và lứa tuổi
3 Phương thức thanh toán dễ dàng, tiện lợi bằng thẻ ATM, VISA…
4 Cấp thẻ bảo hiểm sức khỏe điện tử
5 Quản lý, cập nhật hồ sơ hợp đồng bảo hiểm, gửi yêu cầu trực tuyến mọi lúc mọi nơi
6 Theo dõi quá trình tham gia, lịch sử bồi thường và cập nhật tin tức về bảo hiểm
1.2.3 Affina Pro
Hình 1.4 Affina Pro
Hay còn gọi là Agency App Đây là app dành cho các cộng tác viên của Affina dùng để quản
lý những đơn hàng mà họ đã bán được cho khách hàng
1.3 Lịch làm việc khi thực tập tại công ty
Em tham gia làm việc tại công ty bắt đầu từ ngày 24/7/2023 tới 22/12/2023, tối thiểu 5 buổi trên tuần Công việc hằng ngày bắt đầu từ lúc 8h30 đến 17h30 Thời gian nghỉ trưa khoảng 1 tiếng Sau mỗi ngày làm việc em sẽ báo cáo tiến độ công việc trong ngày, đặt câu hỏi và nhận chia sẻ, giải đáp từ anh hướng dẫn, đặt mục tiêu cho ngày làm việc tiếp theo Mỗi tuần sẽ họp tiến độ tuần 1 lần vào chiều thứ 6, mọi người sẽ cùng họp và bàn bạc về các vấn đề đã giải quyết, tồn đọng, bài học, giải pháp và mục tiêu cho tuần tiếp theo
Trang 1212
CHƯƠNG 2: NỘI DUNG THỰC TẬP
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty
Thời gian: 1 ngày
Nội dung: Giới thiệu về công ty, cách tổ chức của công ty, được nghe người phụ trách giới thiệu về công ty, quá trình thành lập và phát triển, quy trình làm việc từ cao xuống thấp, cách thức tổ chức của công ty, các phòng ban về IT, HR… Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làm việc trong công ty như thời gian đi làm, các quy định, cách sử dụng email trong công việc…
Kết quả: Hiểu thêm về công ty TNHH Affina Việt Nam, quá trình thành lập và phát triển Có thêm các kỹ năng về việc sử dụng email trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn
2.2 Nghiên cứu kỹ thuật
2.2.1 Các công cụ làm việc
Thời gian: 2 ngày
Nội dung: Tìm hiểu các công cụ sẽ sử dụng trong quá trình làm việc
- Email công ty
- YouTrack để quản lý dự án và ghi chú
- Eclipse để lập trình Java
- Git để quản lý mã nguồn
- OpenVPN
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên
Kết quả: Hiểu được về quy trình làm việc và các công cụ dùng trong quá trình làm việc
2.2.2 Ôn tập Java
Thời gian: 3 ngày
Nội dung: Được ôn tập lại ngôn ngữ lập trình Java, OOP, một số design pattern từ tài liệu được anh mentor cung cấp
Thực hiện:
- Tham gia đầy đủ các buổi training của công ty
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả:
- Nâng cao kỹ năng lập trình Java
- Có được những kiến thức nền tảng cho việc lập trình Backend Java sau này
Trang 1313
2.2.3 Ôn tập Spring Boot
Thời gian: 5 ngày
Nội dung: Ôn tập các khái niệm cơ bản trong Spring Framework từ tài liệu được anh mentor cung cấp
Thực hiện:
- Đọc hiểu tài liệu Modern API Development with Spring and Spring Boot: Design highly scalable and maintainable APIs with REST, gRPC, GraphQL, and the reactive paradigm - Sourabh Sharma
Kết quả:
- Ôn tập lại các khái niệm nền tảng của Spring Framework
- Thực hiện dự án API CRUD cơ bản với Spring Boot
2.2.4 Tìm hiểu về kiến trúc Microservices
Thời gian: 5 ngày
Nội dung: Hiểu khái niệm Microservices, ưu và nhược điểm, một số pattern phổ biến trong kiến trúc Microservices, các vấn đề trong hệ thống phân tán
Thực hiện:
- Đọc hiểu tài liệu Microservices Patterns: With examples in Java - Chris Richardson Kết quả:
- Hiểu được khái niệm Microservices, hệ thống phân tán
- Các pattern trong kiến trúc Microservices: API Gateway, Service Discovery, Saga, CQRS
- Cách các service giao tiếp với nhau trong hệ thống phân tán
- Tìm hiều qua nội dung hướng dẫn của mentor
- Tự tìm hiểu các tài liệu liên quan
Trang 1414
Kết quả:
- Hiểu được các khái niệm trong RabbitMQ
2.2.6 Tìm hiểu các công cụ để phát triển hệ thống phân tán với Spring
Thời gian: 5 ngày
Nội dung: Tìm hiểu thư viện Spring Cloud, cách cài đặt và cấu hình các thư viện liên quan Thực hiện:
- Đọc hiểu tài liệu Spring Microservices in Action - John Carnell
- Thực hiện một dự án nhỏ demo với Spring Cloud
Kết quả:
- Biết được cách sử dụng Spring Cloud để triển khai một hệ thống phân tán cơ bản
2.2.7 Tìm hiểu chuẩn RFC 7870 – Problem Details for HTTP APIs
Thời gian: 2 ngày
Nội dung: Tìm hiểu chuẩn RFC 7870 – Problem Details for HTTP APIs và áp dụng vào trong Exception Handling của Spring
Thực hiện:
- Đọc tài liệu Internet Engineering Task Force (IETF)
- Thử nghiệm tích hợp vào một module của công ty
Kết quả:
- Hiểu được chuẩn RFC 7870 – Problem Details for HTTP APIs và áp dụng vào được một module nhỏ của công ty
2.2.8 Tìm hiểu Oauth2 và Spring Authorization Server
Thời gian: 3 ngày
Nội dung: Tìm hiểu Oauth2 và thư viện Spring Authorization Server để bảo mật cho hệ thống Microservices
Thực hiện:
- Tìm đọc cái tài liệu liên quan
- Demo trên project cá nhân
Kết quả:
- Sử dụng thành công Spring Authorization server để làm auth server cho hệ thống microservices
Trang 1515
2.2.9 Tìm hiểu SnowFlakeId và tạo Custom Identifier trong Hibernate
Thời gian: 2 ngày
Nội dung: Tìm hiểu SnowFlakeId của Twitter, ưu nhược điểm so với các Identifier thường dùng vào tạo Annotation để sử dụng cho Hibernate
Thực hiện:
- Tìm đọc cái tài liệu liên quan
- Demo trên project cá nhân
Kết quả:
- Sử dụng thành công SnowFlakeId
2.2.10 Tìm hiểu ELK
Thời gian: 5 ngày
Nội dung: Tìm hiểu ELK stack, chạy ELK với docker ở local
Thực hiện:
- Tìm đọc cái tài liệu liên quan
- Thử nghiệm tích hợp vào một module của công ty
Kết quả:
- Sử dụng thành công ELK cho việc ghi log
- Hiểu sâu hơn về docker và docker compose
2.2.11 Tìm hiểu thư viện JDBI
Thời gian: 2 ngày
Nội dung: Tìm hiểu thư viện JDBI
Thực hiện:
- Tìm đọc cái tài liệu liên quan
- Demo trên project cá nhân
Kết quả:
- Hiểu được cách sử dụng JDBI để áp dụng vào trong dự án
2.2.12 Tìm hiểu thư viện Mapstruct
Thời gian: 3 ngày
Nội dung: Tìm hiểu thư viện Mapstruct
Thực hiện:
- Tìm đọc cái tài liệu liên quan
- Demo trên project cá nhân
Trang 161 - Tìm hiểu về công ty
- Tìm hiểu các công cụ sẽ
sử dụng trong quá trình làm việc
- Ôn tập Java
Anh Nguyễn Minh Trí
Anh Phan Thành Đăng
Anh Phan Thành
5 - Tiếp tục tìm hiểu các
công cụ để phát triển hệ thống phân tán với Spring
- Tìm hiểu chuẩn RFC
7870 – Problem Details for HTTP APIs
Anh Phan Thành
Spring Authorization Server
Trang 1717
8 - Tìm hiểu thư viện JDBI
- Tìm hiểu thư viện
10 - Triển khai các API còn
lại của post service
11 - Tìm hiểu các thư viện hỗ
trợ triển khai Saga Pattern
- Thảo luận hướng chặn
khi đăng nhập thất bại quá 5 lần
- Khảo sát schema cũ và
viết tài liệu về hướng chuyển dữ liệu sang schema mới của post service
Anh Phan Thành
12 - Thực hiện chuyển các dữ
liệu liên quan tới tin tức
từ schema cũ trong môi trường UAT sang schema mới của post service với Spring Batch
- Triển khai các API cho
- Thực hiện chuyển các dữ
liệu liên quan tới tin tức
từ schema cũ trong môi trường UAT sang schema mới của product service với Spring Batch
Anh Phan Thành
14 - Tìm hiểu GraalVM và
cách build ứng dụng Spring Boot thành native image
- Viết file python bash
script để deploy lên cloud
Anh Phan Thành
Trang 1818
- Triển khai các API liên
quan tới upload và delete file trên Minio
15 - Triển khai các API lấy
các hợp đồng các nhân và doanh nghiệp cho Mobile App và Backoffice Portal
Anh Phan Thành
16 - Triển khai các API
import/export file excel cho Backofficer trong stakeholder service
Anh Phan Thành
17 - Triển khai API push
thông báo tới người dùng qua Firebase SDK
- Triển khai API cập nhật
- Đọc tài liệu của Payoo và
thực hiện kết nối tới Payoo
Anh Phan Thành
20 - Thảo luận và triển khai
luồng mua bảo hiểm sức khỏe
Anh Phan Thành
21 - Kết nối tới nhà bảo hiểm
22 - Sứ dụng Spring Schedule
thiết kế API tạo các cron job push thông báo cho Backoffice Portal
- Tích hợp ELK
Anh Phan Thành
23 - Triển khai các API
import/export file excel cho PersonalCustomer trong stakeholder service
- Gộp log cho các log
xuống dòng trong ELK, đánh tag cho các lệnh SQL được log ra
Anh Phan Thành
Trang 19Công nghệ sử dụng: Spring Boot 3, ELK, Prometheus, Grafana, Consul, Zipkin
Integrity Service
Dự án Integrity Service là một dự án dùng để di cư dữ liệu từ hệ thống cũ sang hệ thống mới
Do Affina Core được thiết kế cơ sở dữ liệu lại mới hoàn toàn để khắc phục những nhược điểm của hệ thống hiện tại, muốn giữ lại những dữ liệu của hệ thống cũ để phục vụ cho quá trình kinh doanh của công ty cần phải di cư dữ liệu từ hệ thống cũ sang dự án Affina Core Anh mentor đã phân công cho người thực hiện báo cáo viết mã triển khai di cư một số dữ liệu từ hệ thống cũ sang hệ thống mới
Trang 2020
Hình 2.2 Gantt chart
2.7 Kết quả
• Thực hiện tốt các task được mentor giao
• Đã release được 2 phiên bản alpha 1 và alpha 2 của Affina Core và được web client và mobile client kết nối thành công và đang trong quá trình sửa lỗi và hoàn thiện
• Dự kiến sẽ release phiên bản v1 vào giữa tháng 1 năm 2024
Hình 2.3 Màn hình danh sách bệnh viện bảo lãnh trên môi trường UAT