TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TINKHOA 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 Thực tập sinh : Nguyễn Duy Tân T
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
LẬP TRÌNH BACK-END VỚI JAVA Công ty thực tập : Công ty Inspire Lab Technology
Thực tập sinh : Nguyễn Duy Tân
TP Hồ Chí Minh, 04 tháng 06 năm 2020
Trang 2LỜ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 chuyên 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
Trang 3LỜ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 hoà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 hoà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
Trang 4NHẬN XÉT CỦA KHOA
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
……….………
Trang 5………
MỤC LỤC
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
1 Tìm hiểu công ty và các kĩ năng cơ bản trong công ty 6
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
Chương 3: Chi tiết về project 11
Trang 6Chươ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
Trang 7Chươ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 chuyên
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
hoá 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 quá 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
Trang 8- 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
- Ngoà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
Trang 9- 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
- Nắm được cách triển khai ứng dụng với Docker
2.4 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
Trang 102.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ả:
- Sử dụng tốt GRPC trong dự án
- Xây dựng được demo nhỏ sử dụng GRPC
2.6 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ả:
- Sử dụng tốt Kafka, ActiveMQ trong dự án
- Xây dựng được demo nhỏ sử dụng Kafka, ActiveMQ
2.7 Tìm hiểu Zookeeper
Thời gian: 5 ngày (1 tuần)
Nội dung:
Trang 11- 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
dẫn
Mức độ hoàn thành
1
- Giới thiệu về công ty, nhân sự và các quy định đối với nhân viên
- Tìm hiểu về các công cụ
sẽ được sử dụng trong quá trình làm việc
- Lên kế hoạch training
Bùi Thanh Sang 10 / 10
2 Tìm hiểu các kiến thức cơ bản Bùi Thanh Sang 10 / 10
Trang 12và nâng cao của Java
3, 4 Các kiến thức và kinh nghiệm
lập trình back-end với Spring
Bùi Thanh Sang 10 / 10
5 Quy trình phát triển phần mềm
và business của project
Bùi Thanh Sang Minh Nhựt
10 / 10
6,7,8
Nghiên cứu các kiến thức nâng cao về technical của project
- Spring Cloud Data Flow
- Elastic Search
- MinIO
Bùi Thanh Sang 10 / 10
9 Bắt đầu tham gia dự án
với những task đơn giản
Bùi Thanh Sang 10 / 10
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
Trang 13Đă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
Trang 14API 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
Trang 152 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.
Trang 16Giai đ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ả: Hoàn thành 80% các yêu cầu đã được giao.
Trang 17TÀI LIỆU THAM KHẢO
https://spring.io/guides/tutorials/rest/
https://www.docker.com/
https://spring.io/projects/spring-security
https://spring.io/guides/topicals/spring-security-architecture
https://jwt.io/
TỔNG KẾT
Trang 18Như 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