Nguyễn Quang Gia Bảo 19521251 `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 WEBSITE Công ty thực tập TMA SOLUTIONS Người phụ trách Trần Ngọc Nhã Thực[.]
Trang 1`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 WEBSITE
Công ty thực tập : TMA SOLUTIONS Người phụ trách : Trần Ngọc Nhã Thực tập sinh : Nguyễn Quang Gia Bảo
TP Hồ Chí Minh, tháng 12 năm 2022
Trang 2Mục lục
Mục lục 2
Chương I: Giới thiệu công ty 5
1 Giới thiệu công ty TMA Solutions 5
2 Sản phẩm của công ty 6
Chương II: Nội dung thực tập 7
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 7
2 Giới thiệu, làm quen với các thành viên trong nhóm dự án 7
3 Kế hoạch thực tập 8
4 Lịch thực tập và làm việc 9
Chương III: Những kiến thức được học trong quá trình thực tập 10
1 Kiến thức về ASP.NET 10
Cấu trúc của Net framework dựa trên các thành phần cơ bản sau: 10
2 Kiến thức về RESTful Web Service 11
3 Kiến thức về Entity Framework 12
4 Kiến thức về Microservices 13
5 Kiến thức về Git Technology 14
Chương IV: Chi tiết về project 15
1 Giới thiệu về TechAlliance Fleet 15
2 Quá trình làm việc 15
Chương V: Đánh giá và nhận xét 17
1 Kết quả đạt được: 17
Trang 33 Định hướng tương lai: 17
Chương VI: Tổng kết 18
Trang 4LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại trường Đại học công nghệ thông tin để trau dồi kiến thức và kỹ năng, em đã nhận được rất nhiều sự quan tâm và giúp đỡ của quý thầy cô, gia đình và bạn bè Với lòng biết ơn sâu sắc nhất, em xin gửi lời cảm ơn đến trường và quý thầy cô khoa Công nghệ phần mềm đã truyền đạt vốn kiến thức làm nền tảng cho em trong quá trình thực tập
Em xin cảm ơn các thầy cô và Công ty cổ phần giải pháp công nghệ TMA Solutions đã tạo điều kiện cho em có cơ hội tham gia thực tập tại công ty
Trong quá trình thực tập tại Công ty TMA Solutions, em đã trang bị được những kiến thức và kinh nghiệm về việc làm việc làm việc nhóm, làm việc với người nước ngoài, hiểu về cách vận hành và phát triển ứng dụng trên thiết bị di động và các nghiệp vụ khác trong công ty, giúp em mở mang khai sáng các kiến thức mới và
có nhiều kinh nghiệm mà em chưa bao giờ biết tới
Em xin cảm ơn anh Trần Ngọc Nhã và các anh chị trong cùng dự án trong công ty đã đặc biệt giúp đỡ em, chỉ bảo em tận tình qua từng dự án khác nhau trong quá trình thực tập Những kiến thức và kinh nghiệm đó giúp em có thể hoàn thiện mình và có thêm kinh nghiệm trong quy trình phát triển phần mềm Tuy nhiên, do kinh nghiệm thực tiễn còn hạn chế, bài báo cáo không thể tránh những sai sót Chính
vì vậy, em rất mong nhận được những ý kiến đóng góp của Thầy, Cô để em hoàn thiện bản thân tốt hơn
Xin chân thành cảm ơn thầy và các anh chị trong công ty
Nguyễn Quang Gia Bảo
Trang 5Chương I: Giới thiệu công ty
1 Giới thiệu công ty TMA Solutions
• Tên công ty: Công Ty TNHH Giải Pháp Phần Mềm Tường Minh – TMA
Solutions
• Website công ty: https://www.tma.vn/
• Địa chỉ công ty: 84A/5 Trần Hữu Trang, Phường 10, Phú Nhuận, Thành phố
Hồ Chí Minh
• Điện Thoại : 028 3990 3848
• Năm thành lập : 1997
• Mục tiêu và sứ mệnh của công ty :
TMA Solutions được thành lập năm 1997, với sự phát triển vững mạnh trong suốt 25 năm qua, chúng tôi tự hào là công ty phần mềm hàng đầu Việt Nam hiện nay với 15 năm liên tiếp (2004-2019) đạt huy chương vàng xuất khẩu phần mềm, có
Trang 62700 kỹ sư tài năng đang làm việc, cùng nhau xây dựng hình ảnh TMA năng động
và chuyên nghiệp trên bản đồ công nghệ thông tin toàn cầu
Trải qua 25 năm hoạt động, TMA tự hào nhận được rất nhiều bằng khen, giải thưởng và liên tục được báo chí, truyền thông trong và ngoài nước đưa tin
2 Sản phẩm của công ty
TMA Solutions chuyên cung cấp các sản phẩm phần mềm phục vụ nhiều loại hình dịch vụ khác nhau, đem lại trải nghiệm tốt nhất cho người dùng
Các dịch vụ công ty chuyên cung cấp:
• Visual Design
• Software Testing
• Porting & Migration
• Production Support
• IT Managed Services
• Software Development
Cung cấp giải pháp cho nhiều lĩnh vực:
• Telecom
• Finance & Insurance
• E-Commerce, Retail & Distribution
• Media & Publishing
• Logistics & Transportation
Trang 7Chương II: Nội dung thực tậ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, 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 (như đã nhắc đến ở trê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
Ngoài ra, thực tập sinh còn được giới thiệu về cách thức làm việc trong công ty như thời gian đi làm, các quy định cần phải tuân thủ, cách sử dụng email trong công việc…
Kết quả : Hiểu 7hem về công ty TMA và một số dự án, quá trình thành lập và
phát triển Có 7hem 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 Giới thiệu, làm quen với các thành viên trong nhóm dự án
Thời gian : 1 ngày
Nội dung : Giới thiệu về TechAlliance, do anh Trần Ngọc Nhã làm manager
Giới thiệu về các thành viên trong team, các sản phẩm và dự án team đang triển khai
Kết quả : Làm quen được các thành viên trong team và hiểu được về các sản
phẩm, dự án team đang làm
Trang 83 Kế hoạch thực tập
1-2 • Setup công cụ cần thiết (Git, Azure,
MongoDB, SQL Server, …)
• Training NET, Entity Framework
Trần Ngọc Nhã
3 • Tìm hiểu về RESTful Web Service
• Tìm hiểu về Domain Driven Design pattern
Trần Ngọc Nhã
4 • Học 8hem về Microservices
• Đọc source code và tài liệu hướng dẫn
Trần Ngọc Nhã
5 • Tìm hiểu về Apache Kafka
• Sửa lỗi quyền truy cập người dùng
Trần Ngọc Nhã
6 • Sửa lỗi thông tin không được thay đổi
khi update hợp đồng
• Viết API cho task: Create rule for Manual settings for Approval ID
Trần Ngọc Nhã
7 • Nâng cấp NET Core 3.1 lên 6.0 cho
các service WorkshopImportService
và BoschService
• Investigate cho task: Fleet checks job
in status Approval Missing
• Viết API cho task: Reopen invoice
Trần Ngọc Nhã
Trang 98 • Fix bugs, sửa lỗi
• Báo cáo cuối đợt thực tập
• Meeting tổng kết và đánh giá
Trần Ngọc Nhã
4 Lịch thực tập và làm việc
Thời gian thực tập:
• Ngày bắt đầu: 15/08/2022
• Ngày kết thúc: 15/10/2022
Thời gian làm việc:
• Ca sáng : 8h30 -> 12h
• Ca chiều 13h30 -> 18h
• Số ca thực tập trong tuần : từ thứ 2 -> thứ 6
Trang 10Chương III: Những kiến thức được học trong quá trình thực tập
1 Kiến thức về ASP.NET
ASP.NET là một nền tảng dành cho phát triển web, được Microsoft phát hành và cung cấp lần đầu tiên vào năm 2002 Nền tảng được sử dụng để tạo ra các ứng dụng web-based ASP viết đầy đủ là Active Server Pages, và NET là viết tắt của Network Enabled Technologies
Cấu trúc của Net framework dựa trên các thành phần cơ bản sau:
1 Language/Ngôn ngữ: Có rất nhiều ngôn ngữ lập trình khác nhau tồn tại trong net
framework Các ngôn ngữ này là VB.net và C #, có thể được sử dụng để phát triển các ứng dụng web
2 Library/Thư viện: NET Framework gồm có một bộ các lớp library chuẩn Library
phổ biến nhất được sử dụng cho các ứng dụng web trong net là Web library Web library bao gồm tất cả các thành phần cần thiết sử dụng trong phát triển các ứng dụng web-based
Trang 113 Common Language Runtime/Thời gian chạy ngôn ngữ lập trình thông thường hay CLR: Common Language Infrastructure - Cơ sở hạ tầng ngôn ngữ lập trình phổ thông
hay CLI là một nền tảng dùng để chạy các chương trình Net Trong đó, CLR sẽ thực hiện các tác vụ chính bao gồm xử lý các trường hợp cá biệt và thu gom rác
2 Kiến thức về RESTful Web Service
API (Application Programming Interface) là một tập các quy tắc và cơ chế mà theo
đó, một ứng dụng hay một thành phần sẽ tương tác với một ứng dụng hay thành phần khác API có thể trả về dữ liệu mà bạn cần cho ứng dụng của mình ở những kiểu dữ liệu phổ biến như JSON hay XML.
REST (Representational State Transfer) là một dạng chuyển đổi cấu trúc dữ liệu, một
kiểu kiến trúc để viết API Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người 11hem, REST gửi một yêu cầu HTTP như GET, POST, DELETE, vv đến một URL để xử
lý dữ liệu.
RESTful API là một tiêu chuẩn 11hem trong việc thiết kế các API cho các ứng dụng
web để quản lý các resource RESTful là một trong những kiểu thiết kế API được sử dụng phổ biến ngày nay để cho các ứng dụng (web, mobile…) khác nhau giao tiếp với nhau REST hoạt động chủ yếu dựa vào giao thức HTTP Các hoạt động cơ bản nêu trên sẽ sử dụng những phương thức HTTP riêng.
Trang 12• GET (SELECT): Trả về một Resource hoặc một danh sách Resource
• POST (CREATE): Tạo mới một Resource
• PUT (UPDATE): Cập nhật thông tin cho Resource
• DELETE (DELETE): Xoá một Resource
Những phương thức hay hoạt động này thường được gọi là CRUD tương ứng với Create,
Read, Update, Delete – Tạo, Đọc, Sửa, Xóa
3 Kiến thức về Entity Framework
Entity Framework ra đời nhằm hỗ trợ sự tương tác giữa các ứng dụng trên nền tảng NET với các cơ sở dữ liệu quan hệ Hay, Entity Frmework chính là công cụ giúp ánh xạ giữa các đối tượng trong ứng dựng, phần mềm của bạn với các bảng của một cơ sở dữ liệu quan hệ
Trang 13• Entity framework hỗ trợ stored procedure
4 Kiến thức về Microservices
Trong tiếng anh, micro có nghĩa là nhỏ, vi mô Vậy Microservice, như tên của
nó, đó chính là chia một khối phần mềm thành các service nhỏ hơn, có thể triển khai trên các server khác nhau Mỗi service sẽ xử lý từng phần công việc và được kết nối
Trang 14với nhau thông qua các các giao thức khác nhau, như http, SOA, socket, Message queue (Active MQ, Kafka)… để truyền tải dữ liệu
Trước khi Microservices xuất hiện, các ứng dụng thường phát triển theo mô hình Monolithic architecture (Kiến trúc một khối) Có nghĩa là tất cả các module (view, business, database) đều được gộp trong một project, một ứng dụng được phát triển theo mô hình kiến trúc một khối thường được phân chia làm nhiều module Nhưng khi được đóng gói và cài đặt sẽ thành một khối (monolithic) Lợi ích của mô hình kiến trúc một khối đó là dễ dàng phát triển và triển khai Nhưng bên cạnh đó
nó cũng có nhiều hạn chế ví dụ như khó khăn trong việc bảo trì, tính linh hoạt và khả năng mở rộng kém, đặc biệt với những ứng dụng doanh nghiệp có quy mô lớn
Đó chính là lí do ra đời của kiến trúc Microservices
5 Kiến thức về Git Technology
Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System – DVCS), nó là một trong những hệ thống quản lý phiên bản phân tán phổ biến nhất hiện nay Git cung cấp cho mỗi lập trình viên kho lưu trữ (repository) riêng chứa toàn bộ lịch sử thay đổi
Command quen thuộc : git add, git push, git commit,…
Trang 15Chương IV: Chi tiết về project
1 Giới thiệu về TechAlliance Fleet
TechAlliance Fleet là một ứng dụng web hỗ trợ quản lý đội xe (Fleet Management) thuộc sở hữu của công ty TechAlliance TechAlliance Fleet cung cấp các tính năng về quản
lý đội xe và công việc tại các workshop bảo trì, sửa chữa xe và các trang thiết bị liên quan TechAlliance
Fleet cho phép thực hiện tính toán nhanh chóng và thông minh các hóa đơn dịch vụ liên quan cũng như dự đoán trước được kinh phí cho trang thiết, bảo trì và sửa chữa cho xe
và đội xe
Công nghệ áp dụng:
- Kiến trúc: Kết hợp giữa các mẫu thiết kế Repository pattern, Domain Driven Design
và Microservice
- Front-end: Ứng dụng Angular cùng RxJS xử lý sự kiện bất đồng bộ và NgSX quản
lý trạng thái, phối hợp với Boostrap để thiết kế giao diện người dùng; áp dụng Oauth2.0 và OpenID Connect cho Authentication và Authorization
- Back-end: Sử dụng ASP.NET Core, Entity Framework với cơ sở dữ liệu MongoDB, SQLServer; áp dụng Apache Kafka; áp dụng IdentityServer4 cho Authentication và Authorization
2 Quá trình làm việc
Dự án áp dụng mô hình Scrum để quản lý công việc Trong đó, cả quá trình phát triển được chia thành các sprint kéo dài 2 tuần
Một sprint bao gồm các buổi họp sau:
- 2 buổi Sprint Planning: Diễn ra vào đầu Sprint, nội dung chính là phân chia và nhận task để thực thi trong Sprint mới
Trang 16- Các buổi Daily Meeting: Diễn ra hàng ngày trong Sprint, báo cáo công việc ngày hôm đó và các khó khăn gặp phải (nếu có)
- 1 buổi Sprint Refinement: Diễn ra vào giữa Sprint, nội dung chính là chuẩn bị, thông qua các task mới cho Sprint kế tiếp, đánh giá độ phức tạp, và khả thi của các task này
- 1 buổi Sprint Review: Diễn ra vào cuối Sprint, nội dung chính gồm demo thành các tính năng mới đã được hoàn thành, cũng như các lỗi đã được phát hiện và sửa chữa trong Sprint; tiếp nhận góp ý của khách hàng
- 1 buổi Sprint Retrospective: Diễn ra vào cuối Sprint, sau Sprint Review, nội dung chính là điểm qua các task tồn đọng của Sprint vừa qua, góp ý, giải pháp để hoàn thiện chúng vào thời gian tới
Trang 17Chương V: Đánh giá và nhận xét
1 Kết quả đạt được:
• Có thêm nhiều kinh nghiệm về chuyên môn : NET, Entity Framework, Microservices
• Kỹ năng làm việc nhóm, phân chia công việc, thời gian
• Kỹ năng sử dụng và review code của các member trong team,
• Cơ bản được quá trình hoạt động của project trong thực tế,
• Nhìn nhận được vấn đề và đưa ra giải pháp cho dự án
• Biết được cơ bản về cách xây dựng Server quản lý source bằng git
technology
2 Những hạn chế :
• Vì kĩ thuật còn yếu nên một số task chưa hoàn thành đúng deadline
3 Định hướng tương lai:
• Cải thiện kĩ năng về ngoại ngữ để đọc tài liệu và phân tích yêu cầu liên quan
Trang 18Chương VI: Tổng kết
Như vậy, chỉ trong vòng vài tháng ngắn ngủi, em đã được tham gia vào project của TMA Solutions Hoàn thành các task và yêu cầu do cấp trên đề ra
Hoàn thành 2 tháng thử việc và trở thành nhân viên chính thức của TMA Solutions
Chân thành cảm ơn các anh, chị trong công ty đã hỗ trợ em hoàn thành kỳ thực tập, cũng như giúp đỡ em rất nhiều trong đời sống