TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI KHOA CÔNG NGHỆ BÁO CÁO THỰC TẬP TỐT NGHIỆP CHUYÊN NGÀNH CÔNG NGHỆ THÔNG TIN CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ H2A VIỆT NAM Giảng viên hướng dẫn ThS Nguyễn Tài Tiệp.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
KHOA CÔNG NGHỆ
BÁO CÁO THỰC TẬP TỐT NGHIỆP CHUYÊN NGÀNH : CÔNG NGHỆ THÔNG TIN
CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG
NGHỆ H2A VIỆT NAM
Giảng viên hướng dẫn: ThS Nguyễn Tài Tiệp Lớp: 17DTH2
Khóa: 2017 Sinh viên thực hiện: Nguyễn Thành Luân MSV: 131700345
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ ĐỒNG NAI
KHOA CÔNG NGHỆ
BÁO CÁO THỰC TẬP TỐT NGHIỆP CHUYÊN NGÀNH: CÔNG NGHỆ THÔNG TIN
ĐỀ TÀI: LẬP TRÌNH BACKEND – API
CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ H2A
VIỆT NAM
Giảng viên hướng dẫn: ThS Nguyễn Tài Tiệp Lớp: 17DTH2
Khóa: 2017 Sinh viên thực hiện: Nguyễn Thành Luân MSV: 131700345
Đồng Nai, tháng 5 năm 2021
Trang 3LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp lần thứ tư được gọi là công nghiệp 4.0 tập trung vào công nghệ kỹ thuật số từ những thập kỷ gần đây lên một cấp độ hoàn toàn mới với sự trợ giúp của kết nối thông qua internet vạn vật, truy cập dữ liệu thời gian thực và giới thiệu các hệ thống vật lý không gian mạng Công nghệ thông tin là một trong những ngành được xem là tiên phong và phát triển nhất trong việc chuyển đổi
số và được ứng dụng trên nhiều lĩnh vực Nhằm đáp ứng nhu cầu tìm kiếm thông tin, giải trí, quảng bá sản phẩm… website được ra đời và phát triển mạnh mẽ Khi truy cập vào một trang web hoặc một ứng dụng, những gì cảm nhận ngay được là những hình ảnh, âm thành sinh động của nó Đẹp hay không, bắt mắt hay không là do sự sáng tạo của các lập trình viên Frontend những người được gọi là "kỹ sư mặt tiền" Tuy nhiên khi thao tác, truy cập và tương tác trên đó, thì tức là đang đi sâu vào sản phẩm đó, và để có thể giúp mọi người có thể tương tác được như thế nhờ vào máy chủ, cơ sở dữ liệu và tất cả thành phần đó được tạo nên bởi lập trình viên Backend Không có Backend thì web/ứng dụng trên không thể hoạt động được
Từ việc vận dụng những kiến thức đã học và tìm hiểu thực tế tại Công ty H2A ITS
em đã nghiên cứu, xây dựng và triển khai web api trên để phục vụ cho các lập trình viên Frontend Từ đó rút ra những kinh nghiệm làm việc và kỹ năng cho dự án thực
tế
Nội dung báo cáo gồm có:
Chương 1: Giới thiệu chung đơn vị thực tập
Chương 2: Phân tích thực trạng và nhu cầu lập trình Backend
Chương 3: Nhật ký thực tập
Trang 4LỜI CẢM ƠN
Em xin cảm ơn đến quý thầy cô Trường Đại học Công nghệ Đồng Nai và quý thầy
cô khoa Công nghệ đặc biệt là ngành Công nghệ thông tin đã quan tâm, giảng dạy, tạo điều kiện và truyền đạt kiến thức nền tảng
Em xin chân thành cảm ơn ban lãnh đạo Công ty Cổ Phần Giải Pháp Công Nghệ H2A Việt Nam đã tận tình hỗ trợ và hướng dẫn em trong quá trình thực tập tại công
ty
Cảm ơn thầy ThS Nguyễn Tài Tiệp đã tận tình hướng dẫn và có những góp ý quan trọng để em hoàn thành báo cáo thực tập tốt nghiệp này
Trân trọng
Đồng Nai, ngày 15 tháng 5 năm 2021
Sinh viên thực hiện
Nguyễn Thành Luân
Trang 5NHẬN XÉT CỦA CƠ QUAN THỰC TẬP
CƠ QUAN THỰC TẬP
Trang 6NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
GIẢNG VIÊN HƯỚNG DẪN
Trang 7MỤC LỤC
LỜI MỞ ĐẦU i
LỜI CẢM ƠN ii
MỤC LỤC v
DANH MỤC CÁC TỪ VIẾT TẮT vi
DANH MỤC HÌNH ẢNH vii
DANH MỤC BẢNG vii
CHƯƠNG 1: GIỚI THIỆU ĐƠN VỊ THỰC TẬP 1
1.1 Thông tin về đơn vị thực tập 1
1.1.1 Sơ lược về sự hình thành và phát triển 1
1.1.2 Tổ chức và các lĩnh vực hoạt động 2
1.1.3 Cơ cấu tổ chức 2
1.2 Thông tin về vị trí thực tập 3
1.2.1 Giới thiệu về vị trí công tác 3
1.2.2 Đặc điểm, yêu cầu 3
CHƯƠNG 2: PHÂN TÍCH THỰC TRẠNG VÀ NHU CẦU CỦA LẬP TRÌNH BACKEND 4
2.1 Phân tích đánh giá tình hình thực tế 4
2.2 Ưu điểm và nhược điểm 4
2.2.1 Ưu điểm 4
2.2.2 Nhược điểm 4
2.3 Tiến độ thực hiện công việc 5
2.3.1 Nội dung yêu cầu đề ra 5
2.3.2 Nội dung cơ bản nghiên cứu 5
CHƯƠNG 3: NHẬT KÝ THỰC TẬP 8
KẾT LUẬN 10
TÀI LIỆU THAM KHẢO 11
Trang 8DANH MỤC CÁC TỪ VIẾT TẮT
STT Ký hiệu, các từ viết tắt Ký tự, chữ viết đầy đủ
Bảng 0.1 Danh mục các từ viết tắt
Trang 9DANH MỤC HÌNH ẢNH
Hình 1.1 Logo công ty H2A ITS 1
Hình 1.2 Sơ đồ cơ cấu tổ chức công ty H2A ITS 2
Hình 2.1 Thực nghiệm LinQ 6
Hình 2.2 Thực nghiệm LinQ tiếp theo 6
Hình 2.3 Thực nghiệm EntityFramework 6
Hình 2.4 Mô tả API 7
DANH MỤC BẢNG Bảng 0.1 Danh mục các từ viết tắt vi
Bảng 3.1 Nhật ký thực tập tại H2A ITS 9
Trang 10CHƯƠNG 1: GIỚI THIỆU ĐƠN VỊ THỰC TẬP
1.1 Thông tin về đơn vị thực tập
Tên đơn vị thực tập: H2A ITS
Mã số doanh nghiệp: 3603767587
Website: https://h2aits.vn/ - https://h2aits.com/
Trụ sở: 93B Hưng Đạo Vương – Biên Hòa - Đồng Nai
Văn phòng:128/55/1/22 Lý Văn Sâm – Biên Hòa – Đồng Nai
Email: info@h2aits.com – info@h2aits.vn
Điện thoại: 0982 068 806 – 0902 703 008
Hình 1.1 Logo công ty H2A ITS
1.1.1 Sơ lược về sự hình thành và phát triển
Xuất phát từ nhu cầu phát triển nền tảng ứng dụng phục vụ nông nghiệp và qua nhiều buổi gặp gỡ giữa các lập trình viên có chuyên môn, thâm niên lâu năm để thuyết phục về ý tưởng và sự cống hiến cho nông dân và nông nghiệp Việt Nam Nhóm thành viên đã có sự khởi lập ban đầu vào trung tuần tháng 10 năm 2020
Xã hội vừa trải qua một đợt dịch bệnh và giãn cách đã làm nên ý thức sử dụng công nghệ thông tin được nâng lên rất cao Nhu cầu cuộc sống hằng ngày xoay quanh các ứng dụng và giải pháp công nghệ thông tin đã góp phần làm cho động lực của nhóm thành viên thêm yếu tố gắn kết và sớm bắt tay vào việc lập trình ứng dụng
Sự khởi đầu thành lập doanh nghiệp được sự đồng thuận từ 03 thành viên:
✓ Ông Nguyễn Công Ấn
✓ Ông Đoàn Minh Hoàng
✓ Ông Vũ Tuấn Hiền
Sau một tháng chuẩn bị vào ngày 16/11/2020, Doanh nghiệp được chứng nhận với tên:
CÔNG TY CỔ PHẦN GIẢI PHÁP CÔNG NGHỆ H2A VIỆT NAM
H2A IT SOLUTION
H2A ITS
Mã số doanh nghiệp: 3603767587
Website: https://h2aits.vn/ - https://h2aits.com/
Trang 11Trải qua 06 tháng hoạt động, Công ty H2A ITS đã có được những kết quả được ghi nhận:
• Ứng dụng quản lý vùng trồng
• Ứng dụng quản lý trang trại
• Ứng dụng quản lý cửa hàng và bán sản phẩm
• Ứng dụng quản lý văn bản Luật
• Ứng dụng quản lý thông tin sản phẩm và truy xuất nguồn gốc
• Ứng dụng kết nối đa điểm cửa hàng và đơn hàng
• Ứng dụng đặt vé và kiểm soát
• Và nhiều bộ công cụ hỗ trợ, kiểm soát
• Đặc biệt là hỗ trợ sinh viên trường Đại học công nghệ Đồng Nai thực tập
và học việc nâng cao về lập trình ứng dụng tại công ty với số lượng 11 sinh viên
1.1.2.Tổ chức và các lĩnh vực hoạt động
H2A ITS là công ty hoạt động với vai trò là đơn vị cung cấp các sản phẩm công nghệ phần mềm trong các lĩnh vực: Y tế, giáo dục, nông nghiệp… với sản phẩm chủ đạo là Order-sell Core
Với tiêu chí xây dựng nền tảng cốt lõi, cung cấp các sản phẩm tối ưu, hiện đại, chất lượng nhất đến khách hàng
Công ty có đội ngũ chuyên nghiệp, năng động, sáng tạo, phản ứng nhanh để đáp ứng các yêu cầu của khách hàng một cách hoàn hảo nhất
1.1.3.Cơ cấu tổ chức
CEO
Nguyễn Công Ấn
CTO
Nguyễn Tấn Nhân
Leader UI
Lê Nhật Nam
Leader API
Dep Vũ Tuấn Hiền
Acc Trần Quốc Hưng
Backend
Đoàn Minh Hoàng Ban giám
sát
Trang 121.2 Thông tin về vị trí thực tập
Vị trí thực tập tại đơn vị: Lập trình Backend (API)
Thời gian thực tập: 10/12/2020 – 30/05/2021
1.2.1 Giới thiệu về vị trí công tác
Lập trình Backend là việc xử lý các nghiệp vụ phức tạp, ẩn phía sau một website, ứng dụng, hệ thống… Tương tác với phần máy chủ (server), và dữ liệu (data) với mục đích giúp cho hệ thống hoạt động một cách trơn tru nhất có thể
API là một phương thức trung gian để cung cấp khả năng truy kết nối và trao đổi
dữ liệu cho các ứng dụng API có tính ứng dụng cao đối với webapi, hệ thống, phần mềm hay Framework
1.2.2 Đặc điểm, yêu cầu
Đối với một lập trình viên Backend cần nắm được các ngôn ngữ lập trình phía server và thao tác đối với cơ sở dữ liệu
Có nhiều ngôn ngữ để lập trình Backend như: C#, Java, Python, Ruby…
Với các Farmework đi cùng như: ASP.Net (MVC – Core), Spring, Django, Rails…
Kiến thức về Database: MS SQL Server, MySQL, MariaDB, MongoDB… Có kiến thức nền tảng với cơ sở dữ liệu quan hệ SQL và không quan hệ NoSQL
Đối với công ty H2A ITS yêu cầu: ngôn ngữ lập trình là C# và một số Framework
liên quan như EntityFramework, ASP.Net Core, ASP.Net MVC, WebAPI, SQL và NoSQL
Trang 13CHƯƠNG 2: PHÂN TÍCH THỰC TRẠNG VÀ NHU CẦU CỦA
LẬP TRÌNH BACKEND
2.1 Phân tích đánh giá tình hình thực tế
Nguồn nhân lực về công nghệ thông tin tại Việt Nam trong năm 2021 cần khoảng hơn 500.000 nhân lực Tuy nhiên số lượng đáp ứng chỉ khoảng 70-75% Vì thế nhu cầu sử dụng nhân lực công nghệ thông tin khá cao
Theo khảo sát về thị trường nhân lực công nghệ thông tin hiện có gần 60% người trả lời mình là lập trình viên Backend trong số hơn 75.000 người tham gia khảo sát
và nhu cầu của các nhà tuyển dụng là hơn 65% đối với hơn 1.300 doanh nghiệp Cho thấy nhu cầu về ngành lập trình Backend rất cao so với mặt bằng chung
Đối với công ty H2A ITS thì nhu cầu về lập trình viên Backend cũng tương tự
Thực tế hiện nay hầu hết các website, hệ thống hay ứng dụng đều sử dụng Backend
Có thể nói Backend là một phần quan trọng trong vòng đời của một ứng dụng giúp kết nối, và phục vụ việc trao đổi dữ liệu, tối ưu hóa, giảm tải cho vcác ứng dụng Frontend Vì vậy việc sử dụng Backend là lựa chọn phù hợp và tối ưu cho các ứng dụng và hệ thổng, cũng phản ánh đúng tình hình nhu cầu sử dụng nhân lực của ngành công nghệ thông tin nói chung cũng như Backend nói riêng
2.2 Ưu điểm và nhược điểm
2.2.1 Ưu điểm
- Được sử dụng hầu hết trên các nền tảng ứng dụng desktop, website, mobile
- Linh hoạt chuyển đổi dữ liệu
- Mã nguồn mở, nhiều tài liệu tham khảo
- Độ sẵn sàng cao, khả năng mở rộng tốt
- Hỗ trợ đầy đủ các thành phần MVC như: routing, controller, action result, filter, model binder, IoC container, dependency injection, unit test…
- Hỗ trợ tối đa cho Frontend
2.2.2 Nhược điểm
Để đánh giá về nhược điểm của Backend cần dựa vào nhiều yếu tố Tuy nhiên bên cạnh nhiều ưu điểm cũng có những nhược điểm cơ bản dễ nhận thấy của ngành lập trình Backend điển hình như:
- Để ứng dụng được thì phải có kiến thức chuyên môn cao
- Vì là phần tương tác với server và dữ liệu nên vẫn đề về bảo mật cũng là một
Trang 142.3 Tiến độ thực hiện công việc
2.3.1.Nội dung yêu cầu đề ra
- Nghiên cứu NoSQL
- Nghiên cứu ASP.NET Core
- Nghiên cứu MVC
- Nghiên cứu Route
- Nghiên cứu và thực nghiệm Linq
- Nghiên cứu và thực nghiệm EF
- Nghiên cứu thực nghiệm RESTFul API
2.3.2 Nội dung cơ bản nghiên cứu
• NoSQL
NoSQL Hệ cơ sở dữ liệu phân tán không ràng buộc dữ liệu có thể nằm ở nhiều server
Không dùng mô hình quan hệ (khóa chính khóa phụ)
Sử dụng mô hình key-value gần giống với Json
Tốc độ truy xuất nhanh
• ASP.NET Core
ASP.NET Core là một open-source mới và framework đa nền tảng (cross-platform) cho việc xây dựng những ứng dụng hiện tại dựa trên kết nối đám mây, giống như Web Apps, IoT và Backend cho Mobile
Ứng dụng ASP.NET Core có thể chạy trên NET Core hoặc trên phiên bản đầy đủ của NET Framework Nó được thiết kế để cung cấp và tối ưu development framework cho những dụng cái mà được triển khai trên đám mây (cloud) hoặc chạy on-promise
• MVC
MVC (viết tắt của Model – View – Controller) là một mẫu kiến trúc phần mềm để tạo lập giao diện người dùng trên máy tính MVC chia một ứng dụng thành ba phần tương tác được với nhau để tách biệt giữa cách thức mà thông tin được xử lý nội hàm và phần thông tin được trình bày và tiếp nhận từ phía người dùng Route
• Route
Tạo đường chỉ đường dến các controller action
VD: [Route("[controller]/[action]"), ApiController]
Trang 15• LinQ
LINQ (Language Integrated Query) - ngôn ngữ truy vấn tích hợp - nó tích hợp cú pháp truy vấn vào bên trong ngôn ngữ lập trình C#, cho nó khả năng truy cập các nguồn dữ liệu khác nhau (SQL Db, XML, List) với cùng cú pháp
Hình 2.1 Thực nghiệm LinQ
Hình 2.2 Thực nghiệm LinQ tiếp theo
• EntityFramework
Entity Framework dùng để ánh xạ các đơn vị dữ liệu mô tả bằng lớp (đối tượng) vào cơ sở dữ liệu
Nó cho phép ánh xạ vào các bảng CSDL, tạo CSDL, truy vấn với LINQ, tạo
và cập nhật vào database
Trang 16• RESTful API
RESTful API là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng web (thiết kế web services) để tiện cho việc quản lý các resource Nó chú trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái tài nguyên được định dạng và được truyền tải qua HTTP
Hình 2.4 Mô tả API
Trang 17CHƯƠNG 3: NHẬT KÝ THỰC TẬP
1 10/12/2020 - 19/12/2020
Nghiên cứu chủ đề document Cài đặt các phần mềm, framework cơ bản
2 21/12/2020 - 23/12/2020
Nghiên cứu tài liệu kết hợp thực hiện vẽ và xây dựng tài liệu cho một số dự án tại công
ty
3 24/12/2020 - 03/01/2021 Nghỉ lễ noel và tết dương lịch
4 04/01/2021 - 09/01/2021 Nghiên cứu tài liệu về
Backend
5 11/01/2021 - 16/01/2021
Tham gia dự án Backend, thực hiện viết API thuộc helper class và controller
6 18/01/2021 - 20/01/2021 Tiếp tục viết API cho web
app
7 21/01/2021 - 23/01/2021
Hoàn thiện báo cáo seminar
và thực hiện báo cáo chủ đề seminar tại công ty
8 25/01/2021 - 29/01/2021 Tiếp tục viết API cho web
app
9 01/02/2021-05/02/2021
Viết API web portal Nghiên cứu lại các project cũ, chờ chỉ đạo mới
10 07/02/2021- 17/02/2021 Nghỉ tết âm lịch
11 18/02/2021- 27/02/2021 Viết và nghiên cứu API cho
dự án Greenfarm
12 01/03/2021- 06/03/2021 Kiểm tra các API
13 08/03/2021- 13/03/2021
Trong thời gian chờ phân công mới Nghiên cứu computer vision phục vụ cho khóa luận tốt nghiệp
14 15/03/2021- 20/03/2021 Kiểm tra các chức năng
UI/UX của dự án Greenfarm
Trang 1818 05/04/2021-10/04/2021
Nhận dự án SupplyChain
Viết API, kiểm tra, sửa lỗi các API của dự án
19 12/04/2021-15/05/2021
Nhận dự án FarmFun Kết nối database, viết API, kiểm tra, sửa lỗi các API dự án Hỗ trợ kiểm tra UI/UX web app
và web portal Trong thời gian chờ nghiên cứu nghiệp
vụ dự án
Bảng 3.1 Nhật ký thực tập tại H2A ITS
Trang 19KẾT LUẬN
Về cơ bản các công việc đã được hoàn thành, tuy nhiên chắc chắn không tránh được những thiếu sót do bản thân chưa có kinh nghiệm
Những kết quả đạt được:
- Khảo sát thực tế hệ thống ở một số trang web Tìm hiểu được cách thức, nghiệp
vụ trong xây dựng API, được làm việc trong môi trường chuyên nghiệp
- Đánh giá tính chính xác, khoa học trong cách thức xây dựng API phát huy những
ưu điểm, khắc phục những nhược điểm còn tồn tại để xác định hướng đi và xây dựng các chức năng cho chương trình sao cho phù hợp
- Phân tích, tìm hiểu và thiết kế cơ sở dữ liệu hợp lý, dựa trên yêu cầu của khách hàng
- Qua đó nâng cao được kỹ năng chuyên môn
Thời gian thực tập vừa qua em đã tích lũy được những kinh nghiệm nhất định và
có những suy nghĩ đóng góp sau:
- Cải tiến và hoàn thiện một số chức năng trong chương trình hơn nữa
- Phát triển và tối ưu API để phục vụ cho việc sử dụng chúng để phát triển giao diện website Qua đó thúc đẩy doanh nghiệp phát triển và tiếp cận được nhiều khách hàng
Một lần nữa em xin chân thành cảm ơn