báo cáo thực tập backend developer

24 0 0
Tài liệu đã được kiểm tra trùng lặp
báo cáo thực tập backend developer

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 1

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

Trang 2

2

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 3

3

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 5

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

Trang 8

8

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 9

9

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 10

10

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 11

11 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 12

12

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 13

13

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 - Distributed transaction

Trang 14

14 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 15

15

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 16

16 Kết quả:

- Hiểu được cách sử dụng Mapstruct để áp dụng vào trong dự án

2.3 Tham gia dự án thực tế

Sau 2 tháng được training và thực hiện các demo project, thực tập sinh đã nắm được các kiến thức cần thiết về Java, Spring, sử dụng tốt các công cụ cần thiết cho dự án và được đưa vào dự án Affina Core

Chi tiết dự án sẽ được nói ở phần sau

2.4 Lịch làm việc

Bảng 2.1 Lịch làm việc

thành Nhận xét của người hướng dẫn 1 - 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

- Tìm hiểu SnowFlakeId và tạo Custom Identifier trong Hibernate

Anh Phan Thành

Trang 17

17 8 - Tìm hiểu thư viện JDBI

- Tìm hiểu thư viện Mapstruct

JDBI cho nhiều datasource

Anh Phan Thành

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 product service

Anh Phan Thành

13 - 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 product service

- 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 18

18 - 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

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 19

19

2.5 Giới thiệu về dự án Affina Core

Dự án Affina Core là dự án Microservice được triển khai lại dựa trên hệ thống hiện tại của công ty – đã đi vào hoạt động chính thức một năm trước, do gặp khó khăn trong quá trình mở rộng khi số lượng đối tác, nhà cung cấp bảo hiểm và khách hàng tăng lên Người thực hiện báo cáo được mentor phân công thực hiện triển khai các API cho các chức năng của hệ thống và nghiên cứu triển khai các pattern trong hệ thống Microservice

Cô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 20

20

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

Ngày đăng: 15/05/2024, 09:22

Tài liệu cùng người dùng

Tài liệu liên quan