Đặc biệt cảm ơn anh Phạm Hoàng Tuấn Kiệt, đã training các kiến thức cơ bản để xây dựng API với Golang cũng như các bước xây dựng 1 plugin web, hướng dẫn, giúp đỡ cho chúng em tận tình cả
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 XÂY DỰNG API CHO HỆ THỐNG
PIPELINE SECURITY VÀ PLUGIN URL
Trang 2LỜI MỞ ĐẦU
Ngày nay, chúng ta chứng kiến sự phát triển chóng mặt của ngành công nghệ thông tin và mạng internet, hàng loạt ứng dụng của internet đã được ra đời, kéo theo đó là trào lưu chuyển đổi các nghiệp vụ cũ sang nền tảng này Điều đó có nghĩa là không loại trừ nghiệp vụ quản lí Cần thừa nhận việc bảo mật trên internet không cao, nhưng khi tích hợp bán hàng và quản lí cùng lúc, các thông tin lưu trữ không quá nhạy cảm thì website lại trờ thành lợi thế và nhu cầu thiết yếu của mọi doanh nghiệp
Ngành lập trình web gần như được sinh ra cùng với internet, ngay cả môi trường internet cũng đang phát triển và hoàn thiện, người dùng mới vẫn liên tục gia tăng Điều đó chứng minh rằng lĩnh vực này vẫn chưa bao giờ là lỗi thời Được tiếp cận từ sớm và lớn lên với chúng, giới trẻ sẽ là nguồn nhân lực quan trọng cho sự phát triển của ngành lập trình web sau này Vì lý do này, em quyết định chọn lập trình web làm định hướng cho việc học tập của mình
Để có thêm trải nghiệm thực tế môi trường làm việc công ty, em đã quyết định chọn TMA – Solutions một trong những công ty lớn hàng đầu Việt Nam để thực tập, học hỏi, tích lũy thêm kinh nghiệm
Trang 3Đặc biệt cảm ơn anh Phạm Hoàng Tuấn Kiệt, đã training các kiến thức cơ bản để
xây dựng API với Golang cũng như các bước xây dựng 1 plugin web, hướng dẫn, giúp đỡ cho chúng em tận tình cả những khó khăn trong công việc, đến những khó khăn việc làm quen với môi trường mới
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ài báo cáo này
Em xin chân thành cảm ơn
Sinh viên thực hiện
Lộc Đức Thắng TpHCM, ngày 13 tháng 1 năm 2021
Trang 4Mục lục
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP 6
1 Giới thiệu Công ty TMA Solutions 6
2 Sản phẩm của công ty 6
CHƯƠNG 2: NỘI DUNG THỰC TẬP 8
1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 8
2 Nghiên cứu kỹ thuật 8
3 Thực hiện project 11
4 Lịch làm việc 11
CHƯƠNG 3: CHI TIẾT VỀ PROJECT 13
1 Giới thiệu về dự án 13
1.1 Nội dung 15
1.2 Một số hình ảnh trong hệ thống 17
2 Thực hiện 24
TỔNG KẾT 25
TÀI LIỆU THAM KHẢO 26
Trang 5NHẬN XÉT CỦA KHOA
Trang 6
CHƯƠNG 1: GIỚI THIỆU CÔNG TY THỰC TẬP
1 Giới thiệu Công ty TMA Solutions
TMA Solutions (gọi tắt TMA, tiếng Việt: Công ty TNHH Giải Pháp Phần Mềm Tường Minh) là một công ty Việt Nam, kinh doanh các dịch vụ liên quan đến phát triển phần mềm TMA được thành lập từ năm 1997, hiện đang là công ty phần mềm hàng đầu Việt Nam với 2500 kỹ sư
Khách hàng là những tập đoàn công nghệ cao hàng đầu thế giới đến từ 27 nước TMA hiện có 8 chi nhánh tại Việt Nam (7 tại thành phố HCM và 1 ở thành phố Quy Nhơn) và 6 chi nhánh ở nước ngoài (Mỹ, Canada, Châu Âu, Nhật, Úc, Singapore) Phòng Trung tâm Đào Tạo TMA, Phòng Trung tâm Phát triển Sinh Viên, Phòng Trung tâm sáng tạo TMA
2 Sản phẩm của công ty
- Lĩnh vực hoạt động:
Tích hợp hệ thống Xuất khẩu phần mềm Giải pháp phần mềm Cung cấp các giải pháp, dịch vụ viễn thông Đào tạo sinh viên và nhân viên về kiến thức phần mềm và kỹ năng mềm Dịch vụ đánh giá an toàn thông tin Kiểm tra toàn diện sự an toàn thông tin và năng lực bảo mật của doành nghiệp, tìm ra những rủi ro, đề ra giải pháp khắc phục 9 Dịch vụ
cơ sở hạ tầng thông tin Tư vấn, lựa chọn giải pháp cho hệ thống thông tin và mạng máy tính Thiết kế và cài đặt hệt thống mạng máy, mạng Wifi, WAN, WPN, và điện thoại nội
bộ, Tư vấn, triển khai và đào tạo về sử dụng phần mềm mã nguồn mở
- Công nghệ chính
Trang 7Java, NET, C++, Mobile, AI Maching learning, PHP/Ruby, Cloud, Embedded & IoT, Telecom/Network, Big data & analytics, Angular, Nodejs, Reactjs, blockchain,
Automation test, Network/Cloud Administration,…
Trang 8CHƯƠNG 2: NỘI DUNG THỰC TẬP
Tham gia vào dự án Pipeline Security giúp sinh viên thực tập được đào tạo kiến
thức về xây dựng một hệ thống quản lí phía admin và kiến thức về mạng máy tính để filter network đồ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, 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 thêm về công ty TMA, quá trình thà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 Nghiên cứu kỹ thuật
a 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
Trong thời gian này, mentor đã hướng dẫn thực tập sinh tìm hiểu về các công
cụ sẽ giúp ích cho trong công việc sau này
Một số phần mềm trong số đó như
- Jira - sử dụng trong làm việc nhóm quản lí task,
- GitLab/GitHub – quản lí mã nguốn source code
- Figma – thiết kế các wireframe design,
- Zimbra- mail trao đổi trong công ty
- GoLand – trình biên dịch ngôn ngữ Golang
- Devtool – Debug web plugin
Thực hiện : Thực hành sử dụng các phần mềm đã nêu trên
Trang 9Kết quả : Lập trình sử dụng các công cụ miễn phí trừ Goland, giúp dễ dàng kết
hợp các công cụ với nhau
b Tìm hiểu ngôn ngữ Golang
Thời gian : 5 ngày (1 tuần)
Nội dung : Được tìm hiểu các kiến thức cơ bản và nâng cao về Goland ứng dụng
trong phát triển hệ thống Back-end
- Các cú pháp cơ bản , cấu trúc chương trình cơ bản, các nội dung gồm:
o Variables, Types and Constants
o Functions and Packages
o Conditional Statements and Loops
o Arrays, Slices and Variadic Functions
o Pointers, Structs and Methods
o Interfaces
o Concurrency
o Object Oriented Programming
o Defer and Error Handling
o Reflection
o File Handling
- Tìm hiển các hiện thực OOP trong Golang :
o Structs thay vì Classes
o Composition thay vì Inheritance
o Polymorphism
- Tìm hiểu cách debug với Goland cài các thư viện mã nguồn mở cho dự
án
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 với ngôn ngữ Golang và debug trên Goland
- Có được những kiến thức quan trọng cho việc xây dựng API sau này
- 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, dễ hiểu
Trang 10c Tìm hiểu và sử dụng hệ quản trị cơ sở dữ liệu hướng đối tượng Postgre SQL
Thời gian : 3 ngày
Nội dung : Được tìm hiểu các kiến thức cơ bản và nâng cao về Postgre SQL ứng
dụng quản lí dữ liệu trong hệ thống Back-end
- Cách cài đặt và sử dụng Postgre SQL, kết nối tới Database online qua pgAdmin 4
- Tìm hiểu các kiểu dữ liệu cơ bản, các kiểu đối tượng và kiểu tự định nghĩa trong Postgre :
- Viết các truy vấn với database mẫu có sẵn
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Có được những kiến thức quan trọng cho việc xây dựng API sau này
- Ngoài ra còn được biết thêm một số tip cải thiện query với Postgre
d Tìm hiểu và sử dụng Redis
Thời gian : 2 ngày
Nội dung : Cách thức lưu trữ, truy vấn dữ liệu, caching với Redis
- Cách cài đặt và sử dụng Redis, kết nối tới Sẻver online qua Another Redis
- Tìm hiểu cách thêm,xóa,sửa data trên Redis bằng Golang sử dụng thư viện
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Có được những kiến thức quan trọng cho việc xây dựng API sau này
- Cache để giảm tải cho server
e Xây dựng Plugin block Url cho Chrome, Firefox và Safari
Thời gian : 12 ngày
Nội dung : Cách xây dựng một plugin web, cách thức block url trên nền tảng
javascript
- Tổ chức file maniest.js để cấu hình cho plugin
- Xây dựng các tệp html để dựng dao diện plugin, page block
Trang 11- Sử dụng webBlocking để bắt và xử lí các request trên browser
Thực hiện :
- Tìm hiểu và thực hành theo tài liệu mentor cung cấp
- Làm các bài thực hành, kiểm tra về kiến thức đã học
Kết quả :
- Có được những kiến thức quan trọng cho việc xây dựng API sau này
- Biết cách up plugin lên store
- Deploy plugin với Enterprise Policy
3 Thực hiện project
Sau một 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ề Golang,Postgre SQL ,Redis, Trong tháng thứ hai, trainer đã hướng dẫn thực tập sinh áp dụng những kiến thức đã học để tham gia vào project thực tế Chi tiết đồ án sẽ được nói ở phần sau
100%
2
- Tìm hiểu ngôn ngữ lập trình Golang
- Thực hành Golang
- Làm bài test Golang
Phạm Hoàng Tuấn Kiệt
Phạm Hoàng Tuấn Kiệt
100%
4
- Tìm hiểu về Redis
- Thực hành thêm,xóa,sửa key- value trong Redis
Phạm Hoàng Tuấn Kiệt
100%
Trang 12- Kết nới Redis online
5
- Xây dựng Plugin
- Viết html cho UI Plugin
- Build block url feature
Phạm Hoàng Tuấn Kiệt
- Restfull API trong Golang
- Viêt document cho API trên Swagger
Phạm Hoàng Tuấn Kiệt
- Tích họp API url tracking
- Xây dựng chức năng đồng bộ đăng nhập với app desktop
- Xậy dụng chức năng report threat
- Xây dựng Block Page
- Fix lỗi khi token hết hạn
Phạm Hoàng Tuấn Kiệt
100%
8,9 - Convernt chỉnh sửa UI và chức
năng cho Firefox và Safari
Phạm Hoàng Tuấn Kiệt
100%
Trang 13CHƯƠNG 3: CHI TIẾT VỀ PROJECT
1 Giới thiệu về dự án
Dự án “Pipeline Security” là một dự án outsource cho khách hàng Mỹ Dự án hơn
30 tham gia phát triển theo quy trình chuẩn, hiện đại và chuyên nghiệp Dự án gồm 2 phần chính là quản lí tổ chức phía admin và ngăn chặn nội dung duyệt web phía end-user Sản phẩm dược tách biệt các giữa các nhóm phát triển Back-end, Front-end, BA, Testing, Mobile …
Sản phẩm tạo ra cho doanh nghiệp tạo ra và bán các gói dịch vụ, khi đã mua có thể chia sẽ sử dụng nội bộ (ngang hàng) hoặc tiếp tục sang nhượng tạo ra phân cấp theo mô hình tam giác Tất nhiên phân chia ở đây có điểm dừng trong 5 cấp Với việc bán lại các gói dịch vụ phải đảm bảo tuân theo các policy của cấp trên, cũng như bị giới hạn một số quyền quản lí
Các công nghệ sử dụng trong dự án:
AGENT Platform Programing
Trang 14Mobile Platform Programing
via VPN SWIFT - Native Code
Control DNS details via VPN Connection and device routing
Android
UI - Program
flow Java - Native Code
DNS controller
via VPN Java - Native Code
Control DNS details via VPN Connection and device routing
VPN Server VPN Server
Open VPN (Commercial License)
Seperate User Traffic and DNS Traffic, only DNS Traffic will hit the VPN Server and Enterprise Agent
Better support and reduce workload for SysAdmin Open Source OpenVPN is possible
Back End APIs Go
Front End Services
Programing language Note Front End Angular 10
Trang 151.1 Nội dung
Phân câp người ùng trong Pipeine
dự án Pipeline, chịu trách nhiệm kiểm soát tất cả sản phẩm, ở mọi
cấp bậc trong mô hình
bật ngang hàng và khách hàng của mình sau khi sang nhượng dịch vụ
bật ngang hàng và khách hàng của mình sau khi sang nhượng dịch vụ
bật ngang hàng và khách hàng của mình sau khi sang nhượng dịch vụ
Các chức năng của hệ thống quản lí
khoản
Cho phép người dùng truy cập vào
hệ thống Sửa đổi mật khẩu hoặc thông tin cá nhân cũng như ngôn
ngữ phù hợp
Trang 162 Roles and Permission Phân quyền cho tài khoản đi kèm
với các mức độ truy cập, quản lí
của tài khoản đó
Chức năng phía end user
khoản
Cho phép người dùng truy cập vào
hệ thống Sửa đổi mật khẩu hoặc
Trang 17thông tin cá nhân cũng như ngôn
ngữ phù hợp
2 Block url theo category Chặn người dùng truy cập các url
trong từ điển theo danh mục
cập
1.2 Một số hình ảnh trong hệ thống
Hình 1: Một số API trong hệ thống:
Trang 18Hình 2: Code và Debug trên Goland
Hình 3: Caching trên Redis Server
Trang 19Hình 4: FollowChart hoạt động Plugin
Hình 5: Design Plugin trên Figma
Trang 20Hình 6: Tổ chức thư mục và xây dựng file manifest cho Plugin
Trang 21Hình 7: Giao diện và chức năng plugin trên Chrome và Firefox
Trang 22Hình 8: Giao diện và chức năng plugin trên Safari
Hình 9: Người dùng bị chặn trang web không được truy cập
Trang 23Hình 10: Plugin được đưa lên trên Store
Trang 24Giai đoạn Thảo luận
o Trao đổi với mentor để thống nhất về công nghệ sử dụng
o Tìm hiểu về công nghệ
Giai đọn phát triển:
o Dưới sự chỉ dẫn của leader và mentor xây dựng các chức năng được giao
o Meeting hằng ngày để báo cáo tiến độ Giai đoạn kiểm thử và fix bug
o Sau khi Developer hoàn thành phần cài đặt dịch vụ, QC sẽ thực hiện test dịch vụ Lúc này PM sẽ liên hệ đối tác để lấy các thông tin test, giải đáp
thắc mắc cho QC nếu có
o Sau khi QC hoàn thành test, sẽ gửi ngược lại cho PM nghiệm thu Sau khi
PM xác nhận nghiệm thu thành công sẽ quay về giai đoạn thảo luận cho
Sprint tiếp theo
2.3 Kết quả
Hoàn thành công việc được giao đúng tiến độ
Trang 26TÀI LIỆU THAM KHẢO