Để thử thách bản thân trong ngành công nghiệp này, em đã lựa chọn JavaBack-end developer là định hướng cho việc học cũng như nghề nghiệp trong tươnglai.Sau những năm tháng trong môi trườ
Trang 1TRƯỜ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
JAVA BACK-END DEVELOPER
Công ty thực tập: Resources Software Solution
Người phụ trách: Trần Anh Tuân
Thực tập sinh: Lê Đức Vinh
Trang 2TRƯỜ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
JAVA BACK-END DEVELOPER
TP Hồ Chí Minh, tháng 12 năm 2023
Công ty thực tập: Resources Software Solution
Người phụ trách: Trần Anh Tuân
Thực tập sinh: Lê Đức Vinh
Trang 3LỜ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ànhCô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ìnhphát triển của xã hội
Do đó, một trang ứng dụng muốn được nhiều người sử dụng phải đáp ứng đượcyế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 ở haiyế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 này, em đã lựa chọn JavaBack-end developer là định hướng cho việc học cũng như nghề nghiệp trong tươnglai
Sau những năm tháng trong môi trường đại học, với mong muốn áp dụng nhữngkiến thức đã học và có được trải nghiệm trong môi trường thực tế, em đã quyết địnhtham gia vào Công ty Resource Software Solution – một môi trường lý tưởng vàchuyên nghiệp để thực hiện dự định
Trang 4LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn Resource Sofware Solution đã 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ẫnnhiệt tình của anh Tuân, em đã tiếp thu những kiến thức quan trọng để có thể tham giamột dự án thực tế
Chân thành cảm ơn anh Mentor Tuân và các anh trong team đã bỏ ra nhiều thờigian, 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ôitrườ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 cá nhân và dự án thực tế trong thời gianqua
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 28 tháng 12 năm
2023
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
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
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1.1 Giới thiệu Resource Software Solution 6
1.2 Sản phẩm nổi bật của công ty 6
1.3 Lịch làm việc khi thực tập tại công ty 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2.2 Nghiên cứu kỹ thuật 8
2.2.1 Các công cụ làm việc 8
2.2.2 Ôn tập Java 9
2.2.3 Ôn tập, học thêm về Spring Boot 9
2.2.4 Tìm hiểu các công cụ để phát triển hệ thống phân tán với Spring 10
2.2.5 Tìm hiểu Oauth2 và Spring Authorization Server 10
2.2.6 Tìm hiểu thư viện JDBI 10
2.2.7 Tìm hiểu chuẩn RFC 7870 – Problem Details for HTTP APIs 11
2.2.8 Tìm hiểu SnowFlakeId và tạo Custom Identifier trong Hibernate 11
2.4 Tham gia dự án thực tế 12
2.5 Giới thiệu về dự án 12
2.6 Quá trình thực hiện 17
2.7 Thực hiện 18
2.8 Kết quả 20
CHƯƠNG 3: TỔNG KẾT 21
3.2 Điểm yếu 22
3.3 Chuẩn đạt được 22
TÀI LIỆU THAM KHẢO 23
Trang 7CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1.1 Giới thiệu Resource Software Solution
R2S ra đời vào ngày một tháng tám năm 2019 với nhiệm vụ đào tạo nhân sựCNTT cho doanh nghiệp, phát triển phần mềm và tư vấn giải pháp CNTT
Đội ngũ sáng lập có anh Lê Hồng Kỳ và hiện tại anh là Giám đốc R2S
1.2 Sản phẩm nổi bật của công ty
Đào tạo nhân sự làm được việc ngay cho doanh nghiệp (Resource)
Phát triển phần mềm (Software)
Tư vấn giải pháp CNTT cho các doanh nghiệp thực hiện chuyển đổi số
(Solution)
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 3/7/2023 tới 25/9/2023, từ thứ 2đến thứ 6
Công việc hằng ngày bắt đầu từ lúc sáng 9h30 đến 12h và chiều 1h30 đến 18h.Thời gian nghỉ trưa khoảng 1 tiếng rưỡi 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ụctiêu cho ngày làm việc tiếp theo
Trang 8Mỗ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ànbạ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ếptheo.
Trang 9CHƯƠNG 2: NỘI DUNG THỰC TẬP2.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ừ caoxuố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 đilà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 cổ phần Resource Software Solution, quá trìnhthà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
Trello để quản lý dự án và ghi chú
IntelliJ Idea để lập trình Java
Git để quản lý mã nguồn
OpenVPN
PostgreSQL
Postman…
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àmviệc
Trang 102.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 saunày.2.3 Thực hiện dự án cá nhân
2.2.3 Ôn tập, học thêm về 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àiliệu được anh mentor cung cấp
Thực hiện:
Đọc hiểu tài liệu Modern API Development with Spring and SpringBoot: 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 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
Trang 11Nộ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ệnliê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ântán cơ bản
2.2.5 Tìm hiểu Oauth2 và Spring Authorization Server
Thời gian: 5 ngày
Nội dung: Tìm hiểu Oauth2 và thư viện Spring Authorization Server để bảo mậtcho hệ thống
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
2.2.6 Tìm hiểu thư viện JDBI
Thời gian: 5 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
Trang 12 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.7 Tìm hiểu chuẩn RFC 7870 – Problem Details for HTTP APIs
Thời gian: 5 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
2.2.8 Tìm hiểu SnowFlakeId và tạo Custom Identifier trong Hibernate
Thời gian: 5 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
Trang 132.4 Tham gia dự án thực tế
Sau gần 2 tháng được training và thực hiện các demo project, em đã nắm được cáckiế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
2.5 Giới thiệu về dự án
De Heus Mobile App
Dự án De Heus Mobile App là một dự án out-sourcing được thực hiện theo yêucầu của một công ty chuyên cung cấp thức ăn gia súc, gia cầm
Mục tiêu của ứng dụng này để giúp cho khách hàng của công ty có thể thực hiệnviệc đặt hàng cũng như biết cách thức thanh toán, xem tin tức khuyến mãi, chiết khấucủa công ty,… một cách nhanh chóng, tiện lợi
Đối tượng sử dụng của ứng dụng này là các khách hàng ở vị trí đại lý cấp 1 Cáctệp khách hàng này là những khách hàng lấy hàng số lượng lớn để phân phối cho cácđại lý nhỏ hơn bên dưới (đại lý cấp 2, cấp 3, người dùng cuối,…) Với số lượng lấyhàng lớn, phía công ty cung cấp thức ăn gia súc, gia càm cần tạo sự tiện lợi cho kháchhàng cần đặt hàng, xem mức chiết khấu, khuyến mãi, mặt hàng mới, tổng lượng hàng
đã đặt, sản lượng tổng đã lấy hàng của từng năm,……
Nhóm của em gồm 6 người bao gồm:
Trần Anh Tuân (Leader)
Nguyễn Ngọc Công
Bùi Ngọc Dũng
Nguyễn Hạo Nhiên
Phạm Nguyễn Minh Quang
Lê Đức Vinh
Nhóm em có nhiệm vụ phát triển, bảo trì cho ứng dụng này
Một số hình ảnh về ứng dụng:
Trang 14Giao diện đăng nhập
Trang 15Giao diện đặt hàng
Trang 16Giao diện thông tin sản phẩm
Trang 17Giao diện tin tức
Trang 182.6 Quá trình thực hiện
Tuầ
n Công việc
Người hướng dẫn
Mức độ hoàn thành
Nhận xét của người hướng dẫn
1
Tìm hiểu về công ty, cách tổ chức
của công ty
Làm quen với các công cụ làm
việc trong công ty
Học cách trao đổi, làm việc qua
anh Trần Anh Tuân
100%
2 Tìm hiểu các công cụ làm việc anh Trần Anh Tuân 100%
100%
5 Tìm hiểu Oauth2 và Spring
Authorization Server
anh Trần Anh Tuân
100%
8
Tìm hiểu SnowFlakeId và tạo
Custom Identifier trong
Hibernate
anh Trần Anh Tuân
100%
9 Tìm hiểu, cấu hình Spring
Security, viết tài liệu báo cáo
anh Trần Anh Tuân
100%
10
Thử nghiệm các API, fix một
số lỗi nhỏ theo yêu cầu của
mentor Tuân
anh Trần Anh Tuân
100%
Trang 20 Cấu hình Spring Security
Trang 21 Sử dụng Postman để test API:
2.8 Kết quả
Thực hiện tốt các task được mentor giao
Hiểu được cách thức hoạt động của Spring Authorization Server
Biết được cách sử dụng Postman để thử nghiệm một số API
Trang 22CHƯƠNG 3: TỔNG KẾT
Quãng thời gian thực tập tại công ty cổ phần Resource Software Solution đã giúp
em cải thiện bản thân rất nhiều trong quy trình làm việc thực tế, tác phong của người
kỹ sư phần mềm Được làm việc tại đây, em đã học thêm được kỹ năng mềm sử dụngmail, quản lý công việc, làm việc nhóm, giao tiếp với cấp trên
Chỉ trong thời gian hạn chế, em đã hoàn thành dự án cá nhân trong quá trìnhtraining với các tính năng, yêu cầu đặt ra ban đầu Ở giai đoạn ban đầu khi mới thamgia dự án, em thường có những sai sót về báo cáo cũng như quy trình làm việc Cácthiếu sót ấy cũng đã được anh chị tận tình hướng dẫn từng chút để em có thể hoànthành tốt công việc
Khi tham gia vào dự án thực tế, em cũng hoàn thành tốt các công việc đúng hạn
và đạt chất lượng tốt Được thực tập tại công ty là một cơ hội may mắn đối với em.Đây là một môi trường năng động, có cơ hội thăng tiến rõ ràng, thời gian làm việc linhhoạt Công ty quan tâm về mảng đào tạo nguồn nhân lực mới, sức khỏe tinh thần chonhân viên với các hoạt động thể thao như đá bóng, cầu lông được tổ chức hàng tuần
3.1 Điểm mạnh
Nâng cao khả năng làm việc nhóm, quản lý dự án, tư duy phản biện, kỹ năng quản
lý thời gian
Học được cách làm việc trong môi trường doanh nghiệp
Học được cách một dự án thực tế được triển khai và hoạt động như thế nào và biết được cách làm sao để áp dụng các kiến thức đã học để đưa ra các giải pháp với các vấn đề ở thực tế
Học được cách nghiên cứu và làm việc độc lập
Nâng cao khả năng đọc hiểu tài liệu tiếng anh
Trang 233.2 Điểm yếu
Quy trình merge code ban đầu còn nhiều sai sót
Giai đoạn đầu dự án vẫn cần anh mentor trợ giúp khá nhiều
Còn hay mắc lỗi code convention, các lỗi conflict
Kiến thức về hệ thống phân tán còn khá mới đối với em đòi hỏi phải tự tìm đọc,nghiên cứu tài liệu nhiều
Cần rèn luyện thêm về kỹ năng viết tài liệu
3.3 Chuẩn đạt được
Goal Mục tiêu môn học
G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh nghiệpG2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ thống
trong dự án
G3 Nắm được quy trình, phương pháp và công nghệ phát triển sản phẩm phần
mềm tại doanh nghiệp
G4 Có khả năng tìm hiểu vấn đề, mô hình hóa vấn đề và tham gia giải quyết vấn
đề
G5 Phát triển kỹ năng tư duy, kỹ năng làm việc nhóm và kỹ năng trình bày
G6 Đọc, hiểu các tài liệu và giao tiếp bằng tiếng Anh
TÀI LIỆU THAM KHẢO
Spring Framework Documentation
Trang 24Spring Boot Documentation
https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/
Java Documentation https://docs.oracle.com/en/java/
[1] Carnell, J (2021) Spring Microservices in Action (2nd ed.) Manning