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
LẬP TRÌNH BACK-END VỚI JAVA
Cơng ty thực tập
: Công ty Inspire Lab Technology
Người phụ trách
: Bùi Thanh Sang
Thực tập sinh
: Nguyễn Duy Tân
TP. Hồ Chí Minh, 04 tháng 06 năm 2020
LỜI MỞ ĐẦU
Ngày nay, ngành công nghiệp web 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ẽ, công nghệ web đã 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.
Bản thân là một người đam mê công nghệ và mong muốn áp dụng công nghệ
để làm cho cuộc sống tốt hơn, em luôn luôn học hỏi, trau dồi thêm các kiến thức, kỹ
năng cuộc sống và một vốn công nghệ cần thiết để phục vụ nhu cầu của bản thân.
Sau khi thử sức với nhiều lĩnh vực khác nhau của ngành công nghệ phần mềm, em
quyết định chọn lập trình web với hướng chuyên sâu về back-end để làm định hướng
cho sự nghiệp của mình
Thời điểm học kỳ hai của năm tư đại học, nhận thấy đây là thời điểm thích hợp
để bản thân tìm kiếm một cơ hội làm việc, trau dồi kinh nghiệm thực tế trong một môi
trường chuyên nghiệp, nên em đã lên kế hoạch để đi thực tập. Bản thân em sau một
thời gian chuẩn bị kiến thức và ứng tuyển, đã nhận được cơ hội làm việc tại công ty
Inspire Lab Technology. Đây là cơng ty có mơi trường chun nghiệp, hiện đại, phù
hợp cho em trau dồi kiến thức, kinh nghiệm và phát triển các kĩ năng của bản thân.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
1
LỜI CẢM ƠN
Em xin trân trọng gửi lời cảm ơn sâu sắc đến quý Công ty Inspire Lab
Technology đã tạo điều kiện cho em có cơ hội được thực tập và học hỏi trong môi
trường chuyên nghiệp tại công ty.
Chỉ trong một thời gian ngắn, nhưng nhờ sự chỉ dẫn nhiệt tình của các anh
mentor, bản thân em đã tiếp thu được những kiến thức quan trọng để có thể phát triển
một ứng dụng phần mềm thực tế. Chân thành cảm ơn các anh chị mentor đã bỏ ra
nhiều thời gian, cơng sức để hướng dẫn chúng em hồn thành đợt thực tập này. Đặc
biệt em xin gửi lời cảm ơn đặc biệt đến anh Bùi Thanh Sang – Leader của công ty đã
chân thành chia sẻ cho những kiến thức, kinh nghiệm trong công việc và cuộc sống,
những lời khuyên bổ ích để em tiến bộ, phát triển hơn.
Cuối cùng em xin gửi lòng biết ơn đến các thầy cô khoa Công nghệ Phần mềm,
trường Đại học Công nghệ Thơng tin, Đại học Quốc gia Thành phố Hồ Chí Minh đã
nhiệt tình hỗ trợ, tạo điều kiện để em hồn thành tốt mơn thực tập doanh nghiệp này.
Nguyễn Duy Tân
TP. Hồ Chí Minh, ngày 04 tháng 06 năm 2020
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
2
NHẬN XÉT CỦA KHOA
……………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
……………………………………………….……………………………………………….
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
3
……………………………………………………………………………………………………
……………………………………………………..
MỤC LỤC
LỜI MỞ ĐẦU
1
LỜI CẢM ƠN
2
NHẬN XÉT CỦA KHOA
3
MỤC LỤC
4
Chương 1: Giới thiệu về công ty thực tập
5
1.
Giới thiệu công ty Inspire Lab Technology
5
2.
Sản phẩm của công ty
5
Chương 2: Nội dung thực tập
6
1.
Tìm hiểu cơng ty và các kĩ năng cơ bản trong công ty
6
2.
Nghiên cứu kỹ thuật
6
2.1.
Các công cụ làm việc
6
2.2.
Tìm hiểu ngơn ngữ Java
7
2.3.
Lập trình Web Service với Spring Framework
7
2.4.
Quy trình phát triển phần mềm và Business của project
8
3.
Thực hiện project
9
4.
Lịch làm việc
9
Chương 3: Chi tiết về project
11
1.
Giới thiệu về dự án:
11
1.1.
Business Requirement
11
1.2.
Các API chính
11
2.
Thực hiện
17
3.
Kế hoạch
17
TÀI LIỆU THAM KHẢO
19
TỔNG KẾT
20
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
4
Chương 1: Giới thiệu về công ty thực tập
1. Giới thiệu công ty Inspire Lab Technology
Inspire Lab Technology là công ty startup ở Việt Nam chuyên về lĩnh vực phát
triển sản phẩm và gia công phần mềm. Sau 2 năm hoạt động, cơng ty đã có hơn
50 thành viên và đã đạt được nhiều thành tựu trong kinh doanh, đứng vững trên
thị trường phần mềm có tính cạnh tranh cao ở Việt Nam.
2. Sản phẩm của công ty
Inspire Lab Technology cung cấp dịch vụ và giải pháp tối ưu phần mềm khách
hàng với các dịch vụ: phát triển phần mềm theo yêu cầu, bảo trì hệ thống sản
phẩm phần mềm, quản lý ứng dụng; kiểm thử và bảo đảm chất lượng phần
mềm.
Bên cạnh đó, cơng ty cũng phát triển mạnh mẽ ở lĩnh vực Product với các sản
phẩm chuyên về blockchain và payment.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
5
Chương 2: Nội dung thực tập
Đợt thực tập với chủ đề “Lập trình back-end với Java” nhằm mục đích giúp sinh
viên thực tập được đào tạo toàn diện về lập trình web sử dụng ngơn ngữ Java
và Spring Framework, đồng thời rèn luyện những kỹ năng mềm như làm việc
nhóm, thuyết trình, giao tiếp. Tại cơng ty, sinh viên có cơ hội được học tập,
khám phá và làm việc trong một mơi trường phát triển phần mềm chun
nghiệp.
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, nhân sự và các quy định đối với nhân viên
- Được bộ phận nhân sự giới thiệu về công ty, quá trình thành lập và phát triển,
các sản phẩm, thành quả đạt được và hướng đi của công ty trong tương lai.
- Ngoài ra được giới thiệu về nhân sự của công ty, nắm được các quy định đối
với nhân viên, hiểu được văn hoá và tham gia vào các hoạt động, phong trào
hàng ngày, hàng tuần trong công ty.
Kết quả: Hiểu hơn về công ty Inspire Lab Technology, các đồng nghiệp, văn hố
và mơi trường làm việc. Từ đó dễ dàng thích nghi hơn với mơi trường mới để
đạt được năng suất cao trong công việc.
2. Nghiên cứu kỹ thuật
2.1.
Các cơng cụ làm việc
Thời gian: 2 ngày
Nội dung: Tìm hiểu về các công cụ sẽ được sử dụng trong q trình làm
việc.
-
Cơng cụ trao đổi, giao tiếp: Telegram, Gmail, Google Calendar.
-
Công cụ quản lý dự án: OpenProject.
-
Công cụ quản lý phiên bản phần mềm: Git, GitLab.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
6
-
Cơng cụ liên quan lập trình: IntelliJ IDEA.
Thực hiện: Thực hành sử dụng các phần mềm đã nêu trên.
Kết quả: Làm quen, biết được công dụng và cách sử dụng các cơng cụ phục
vụ cơng việc.
2.2.
Tìm hiểu ngơn ngữ Java
Thời gian: 5 ngày (1 tuần)
Nội dung: Tìm hiểu các kiến thức cơ bản và nâng cao của Java
-
Lập trình hướng đối tượng.
-
Các kiến thức Java cơ bản về Web Service, data type, bean, annotation,
JVM, …
-
Database, JPA, transaction handling, exception handling
-
Tìm hiểu về Java convention và coding best practice.
Thực hiện:
-
Tham gia đầy đủ các buổi training của công ty.
-
Nghiên cứu, ứng dụng lý thuyết để xây dựng một sản phẩm đơn giản.
-
Báo cáo hàng ngày với Mentor về kiến thức đã nghiên cứu được
Kết quả:
-
Nâng cao kỹ năng lập trình với ngơn ngữ Java.
-
Có được những kiến thức quan trọng về thiết kế kiến trúc cho project.
-
Ngồi ra cịn được biết thêm một số quy tắc trong việc viết code sao cho
đúng chuẩn, dễ đọc và dễ hiểu.
2.3.
Lập trình Web Service với Spring Framework
Thời gian: 8 ngày (2 tuần)
Nội dung: Các kiến trong lập trình back-end với Spring Framework
-
Microservice với Spring / Spring Boot.
-
Spring data JPA
-
Spring Security
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
7
-
Spring Cloud
-
Spring Batch
-
Viết unit testing với Junit
Thực hiện:
-
Tham gia đầy đủ các buổi training.
-
Làm các bài thực hành, kiểm tra về kiến thức đã học.
-
Thực hiện thuyết trình về kết quả đã nghiên cứu được.
Kết quả:
-
Hiểu được những khái niệm cơ bản trong lập trình back-end với Java.
-
Biết cách sử dụng các component của Spring Framework như Spring
security, Spring Cloud, Spring Batch.
2.4.
Nắm được cách triển khai ứng dụng với Docker
Quy trình phát triển phần mềm và Business của project
Thời gian: 5 ngày (1 tuần)
Nội dung:
-
Quy trình phát triển phần mềm với Scrum.
-
Business của project.
Thực hiện:
-
Tham gia đầy đủ các buổi training.
-
Nghiên cứu tài liệu và source code của project.
Kết quả:
-
Nắm được quy trình và các khái niệm trong phát triển phần mềm với
Scrum.
-
Hiểu được business của project ở mức đơn giản.
-
Nắm được cách tổ chức, quy tắc viết code trong source code của project.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
8
2.5.
Tìm hiểu GRPC
Thời gian: 5 ngày (1 tuần)
Nội dung:
-
Tìm hiểu về GRPC.
-
Hiện thực phương thức giao tiếp của 2 server thông qua GRPC.
Thực hiện:
-
Tham gia đầy đủ các buổi training.
-
Nghiên cứu tài liệu và source code của project.
Kết quả:
2.6.
-
Sử dụng tốt GRPC trong dự án.
-
Xây dựng được demo nhỏ sử dụng GRPC.
Tìm hiểu Kafka, ActiveMQ
Thời gian: 5 ngày (1 tuần)
Nội dung:
-
Tìm hiểu về Kafka, ActiveMQ.
-
Hiện thực phương thức giao tiếp của 2 server thông qua Kafka, ActiveMQ.
Thực hiện:
-
Tham gia đầy đủ các buổi training.
-
Nghiên cứu tài liệu và source code của project.
Kết quả:
2.7.
-
Sử dụng tốt Kafka, ActiveMQ trong dự án.
-
Xây dựng được demo nhỏ sử dụng Kafka, ActiveMQ.
Tìm hiểu Zookeeper
Thời gian: 5 ngày (1 tuần)
Nội dung:
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
9
-
Tìm hiểu Zookeeper.
-
Ứng dụng của Zookeeper trong dự án thực tế.
Thực hiện:
-
Tham gia đầy đủ các buổi training.
-
Nghiên cứu tài liệu và source code của project.
Kết quả:
-
Sử dụng tốt Zookeeper trong dự án.
-
Xây dựng được demo nhỏ sử dụng Zookeeper.
3. Thực hiện project
Sau hơn 1 tháng được training và thực hành, thực tập sinh đã nắm được những
kiến thức cơ bản về Java, Spring. Đồng thời đã ứng dựng kiến thức để xây
dựng một project để demo và thuyết trình.
Chi tiết đồ án sẽ được nói ở phần sau.
4. Lịch làm việc
Tuần
Cơng việc
-
Giới thiệu về cơng ty,
Người hướng
Mức độ hồn
dẫn
Bùi Thanh Sang
thành
10 / 10
Bùi Thanh Sang
10 / 10
nhân sự và các quy định
đối với nhân viên
1
-
Tìm hiểu về các cơng cụ
sẽ được sử dụng trong
quá trình làm việc.
2
- Lên kế hoạch training
Tìm hiểu các kiến thức cơ bản
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
10
3, 4
5
và nâng cao của Java
Các kiến thức và kinh nghiệm
Bùi Thanh Sang
10 / 10
lập trình back-end với Spring
Quy trình phát triển phần mềm
Bùi Thanh Sang
10 / 10
và business của project
Nghiên cứu các kiến thức nâng
Minh Nhựt
Bùi Thanh Sang
10 / 10
Bùi Thanh Sang
10 / 10
cao về technical của project.
6,7,8
9
-
Spring Cloud Data Flow
-
Elastic Search
-
MinIO
Bắt đầu tham gia dự án
với những task đơn giản
Chương 3: Chi tiết về project
1. Giới thiệu về dự án:
Tên dự án: Quản lý User Profile.
1.1.
Business Requirement
Áp dụng các kiến thức đã được training để xây dựng project quản lý User Profile
đáp ứng các yêu cầu phần mềm sau:
- Quản lý thông tin user
- Phân quyền cho user
- Authentication với Json Web Token
Project được triển khai dưới dạng 1 web service với các RESTful API.
1.2.
Các API chính
1.2.1. Đăng ký user mới
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
11
Đăng ký user mới với các thông tin cơ bản. Hệ thống tiến hành xác thực các
thông tin nhập vào, sau đó tạo user mới trong hệ thống. Nếu tạo thành công, hệ
thống trả về token cho user.
API register user
1.2.2. Đăng nhập
Đăng nhập với username và password. Nếu thành công, hệ thống trả về token
phục vụ cho việc truy cập vào hệ thống của user.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
12
API login
1.2.3. Phân quyền cho user
Cung cấp quyền cho user truy cập vào tập dữ liệu nhất định.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
13
2. Thực hiện
Project được thực hiện cá nhân bởi 1 thực tập sinh:
-
Nguyễn Duy Tân
1 thành viên mentor:
-
Anh Bùi Thanh Sang
3. Kế hoạch
Giai đoạn alpha:
-
Lên kế hoạch
-
Tìm hiểu về cơng nghệ sử dụng: Spring Boot, Spring Security, Json Web
Token, Docker, Jacoco, …
Kết quả: Hoàn thành 100% các yêu cầu đã được giao.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
14
Giai đoạn beta:
-
Cài đặt các API phục vụ cho business requirement
-
Viết unit testing cho các API bên back-end.
-
Xây dựng hệ thống Authentication với Json Web Token
-
Triển khai ứng dụng với Docker.
-
Chuẩn bị thuyết trình
Kết quả: Hồn thành 80% các u cầu đã được giao.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
15
TÀI LIỆU THAM KHẢO
/> /> /> /> />
TỔNG KẾT
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
16
Như vậy, chỉ trong vòng một khoảng thời gian ngắn khoảng 2 tháng, em đã được trải
nghiệm và học hỏi rất nhiều kỹ năng, kiến thức quan trọng về ngôn ngữ Java, Spring
Framework, quy trình phát triển phần mềm chuyên nghiệp. Đây sẽ là nền tảng để em
tiếp tục học hỏi, phát triển để trở thành một kĩ sư phần mềm chuyên nghiệp.
Em xin chân thành cảm ơn anh Bùi Thanh Sang, và công ty Inspire Lab Technology đã
tạo điều kiện và giúp đỡ em hoàn thành kỳ thực tập này.
Người phụ trách: Bùi Thanh Sang
Thực tập sinh: Nguyễn Duy Tân
17