1 Phạm Văn Lượng Phạm Xuân Bách 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 FASTAPI CHO MARK PLATFORM Công ty thực tập Công ty TNHH Giải pháp Phầ[.]
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 VỚI FASTAPI CHO MARK PLATFORM Công ty thực tập : Công ty TNHH Giải pháp Phần mềm TISOHA Người phụ trách : Phạm Văn Lượng Thực tập sinh : Phạm Xuân Bách TP Hồ Chí Minh, tháng 12 năm 2022 Phạm Văn Lượng Phạm Xuân Bách LỜI MỞ ĐẦU Trong cách mạng công nghiệp 4.0, công nghệ thông tin nói chung ngành Cơng nghệ phần mềm nói riêng ln nhân tố đóng vai trị quan trọng q trình phát triển xã hội Cơng nghệ Web, hay công nghệ sản xuất trang web phục vụ hầu hết nhu cầu người từ bán hàng, dạy học đến thông tin liên lạc, Hiện có đến 1.7 tỷ trang web, nhu cầu tạo trang web chưa có dấu hiệu giảm Do đó, trang web muốn nhiều người sử dụng phải đáp ứng yếu tố hình thức nội dung Làm để sản phẩm tạo đạt chất lượng cao hai yếu tố làm đội ngũ phát triển website cần phải suy nghĩ đau đầu Để thử thách thân ngành công nghiệp web, em lựa chọn thực tập với vị trí Back-end định hướng cho việc học tập nghiên cứu sâu quy trình sản xuất web FastAPI framework web đại, nhanh (hiệu suất cao) để xây dựng API với Python 3.6+ Tuy phát hành năm framework tạo tiếng vang lớn có cộng đồng phát triển đảo Bên cạnh thời gian học tập trường, mong muốn có thêm kinh nghiệm thực tế, muốn tham gia làm việc môi trường chuyên nghiệp, em có dự định thực tập kì Vì vậy, em định chọn cơng ty TISOHA nơi giúp em thực dự định Phạm Văn Lượng Phạm Xuân Bách LỜI CẢM ƠN Trân trọng gửi lời cảm ơn Công ty TNHH Giải pháp Phần mềm TISOHA tạo điều kiện cho em có hội thực tập cơng ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình anh trainer, nhóm thực tập chúng em tiếp thu kiến thức quan trọng để thành thạo việc lập trình Web Back-end với FastAPI Đặc biệt cảm ơn anh Phạm Văn Lượng, training FastAPI, hướng dẫn, hỗ trợ em nhiều từ vấn đề kỹ thuật đến khó khăn cơng việc; cảm ơn anh Nguyễn Văn Dũng anh Võ Hoàng Đức Khoa, giúp đỡ cho em tận tình khó khăn việc làm quen với môi trường Cảm ơn anh Đỗ Công Bá tạo văn hóa cơng ty lành mạnh, chun nghiệp, đầy động giúp em hoàn thành thực tập có thêm niềm đam mê, nhiệt huyết với lập trình Web Cũng xin cảm ơn thầy cô khoa Công nghệ phần mềm nhiệt tình hỗ trợ, tạo điều kiện em làm báo cáo Phạm Xuân Bách TpHCM, ngày 17 tháng 12 năm 2022 Phạm Văn Lượng Phạm Xuân Bách NHẬN XÉT CỦA KHOA Phạm Văn Lượng Phạm Xuân Bách MỤC LỤC MỤC LỤC CHƯƠNG GIỚI THIỆU CÔNG TY THỰC TẬP GIỚI THIỆU CÔNG TY TNHH GIẢI PHÁP PHẦN MỀM TISOHA SẢN PHẨM CỦA CÔNG TY CHƯƠNG NỘI DUNG THỰC TẬP TÌM HIỂU CƠNG TY VÀ CÁC KỸ NĂNG CƠ BẢN TRONG CÔNG TY NGHIÊN CỨU KỸ THUẬT 2.1 Các công cụ làm việc 2.2 Tìm hiểu ngơn ngữ Python 2.3 Nghiên cứu tài liệu kỹ thuật FastAPI 10 2.4 Nghiên cứu tài liệu kỹ thuật Docker 12 2.5 Thực hành xây dựng máy chủ API cho dự án Mark Platform 13 THỰC HIỆN PROJECT 13 LỊCH LÀM VIỆC 14 CHƯƠNG CHI TIẾT VỀ PROJECT 16 GIỚI THIỆU VỀ PROJECT 16 CÁC CÔNG VIỆC ĐÃ LÀM 16 2.1 Cài đặt, chạy thử dự án 16 2.2 Tạo API task Permission 17 2.3 Xử lý gửi email template email 18 2.4 Một số công việc khác 19 KẾT QUẢ 19 TÀI LIỆU THAM KHẢO 20 TỔNG KẾT 21 Phạm Văn Lượng Phạm Xuân Bách Chương Giới thiệu công ty thực tập Giới thiệu Công ty TNHH Giải pháp Phần mềm TISOHA Công ty TNHH Giải pháp phần mềm TISOHA doanh nghiệp thành lập vào 10/2020 đến hoạt động gần năm Trong thời gian hoạt động, công ty nhận cung cấp dịch vụ cho nhiều khách hàng Mỹ, Malta, Úc Singapore nơi tập trung phát triển ứng dụng web lập trình ứng dụng cho điện thoại thông minh TISOHA đem lại cho khách hàng dịch vụ lập trình, gia cơng phần mềm uy tín chất lượng với độ an tồn cao, khả mở rộng tiết kiệm chi phí cho khách hàng Sản phẩm công ty Sản phẩm công ty chủ yếu dự án outsource giáo dục, giải trí, thương mại Phạm Văn Lượng Phạm Xuân Bách Công ty mang đến cho khách hàng dịch vụ phát triển, gia cơng phần mềm hồn hảo từ hỗ trợ, tư vấn, bảo trì đến phát triển ứng dụng, phần mềm cách toàn diện Các sản phẩm giải pháp công ty triển khai đảm bảo mức độ an tồn cao, có khả mở rộng, mang lại hài lòng chất lượng thỏa mãn chi phí Phạm Văn Lượng Phạm Xuân Bách Chương Nội dung thực tập Đợt thực tập với chủ đề “Lập trình Web Back-end với FastAPI cho Mark Platform” nhằm mục đích giúp sinh viên thực tập đào tạo toàn diện lập trình Back-end, đồng thời rèn luyện kỹ mềm làm việc nhóm, thuyết trình, giao tiếp Tại cơng ty, sinh viên có hội học tập, khám phá làm việc môi trường phát triển web chun nghiệp Tìm hiểu cơng ty kỹ công ty Thời gian: ngày Nội dung: Giới thiệu công ty, cách tổ chức công ty Được nghe người phụ trách giới thiệu cơng ty, q trình thành lập 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ơng ty Ngồi ra, thực tập sinh cịn giới thiệu cách thức làm việc công ty thời gian làm, quy định cần phải tuân thủ, cách sử dụng email công việc, cách ước tính thời gian hồn thành cơng việc, sử dụng phần mềm chuyên nghiệp cho công việc,… Kết quả: Hiểu thêm cơng ty TISOHA, q trình thành lập phát triển Có thêm kỹ việc sử dụng email, phần mềm công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm Nghiên cứu kỹ thuật 2.1 Các công cụ làm việc Thời gian: ngày Nội dung: Tìm hiểu công cụ sử dụng trình làm việc Trong thời gian này, người phụ trách hướng dẫn thực tập sinh tìm hiểu cơng cụ giúp ích cho cơng việc sau Một số phần mềm số Phạm Văn Lượng Phạm Xuân Bách Slack – Phần mềm chat, report công việc hàng ngày công ty, Jira – Ứng dụng theo dõi quản lý quy trình phát triển phần mềm, Redmine – Công cụ quản lý theo dõi, kiểm soát vấn đề dự án, Visual Studio Code – Trình chỉnh sửa mã nguồn, Git – Hệ thống quản lý phiên mã nguồn phân tán, Gitlab – Phần mềm quản lý kho mã nguồn Git,… Thực hiện: Thực hành sử dụng phần mềm nêu Kết quả: Làm quen sử dụng phần mềm nêu 2.2 Tìm hiểu ngơn ngữ Python Thời gian: ngày (1 tuần) Nội dung: Được training Python - Python ngôn ngữ cấp cao, thông dịch, tương tác hướng đối tượng Python thiết kế để dễ đọc Nó sử dụng từ khóa tiếng Anh thường xuyên ngôn ngữ khác sử dụng dấu chấm câu có cấu trúc cú pháp ngôn ngữ khác - Kiểu liệu khai báo biến Python - Các toán tử Python - Các cấu trúc điều kiện vòng lặp Python - Hàm, Class Mô-đun Python - Lập trình hướng đối tượng Python - Ngồi cịn có case-study nâng cao để sinh viên thực tập tìm hiểu thêm Decorators, Error Handling, Generators, Testing,… Thực hiện: - Tham gia đầy đủ buổi training công ty - Nghiên cứu, kết hợp thực hành tài liệu mà công ty cung cấp Kết quả: - Nắm kiến thức Python Phạm Văn Lượng Phạm Xuân Bách 10 - Có thể tạo ứng dụng nhỏ Python 2.3 Nghiên cứu tài liệu kỹ thuật FastAPI Thời gian: ngày (2 tuần) Nội dung: Các kiến thức FastAPI framework - REST APIs Là tiêu chuẩn dùng việc thiết kế API cho ứng dụng web (thiết kế Web services) để tiện cho việc quản lý resource Nó trọng vào tài nguyên hệ thống (tệp văn bản, ảnh, âm thanh, video, liệu động…), bao gồm trạng thái tài nguyên định dạng truyền tải qua HTTP - Pydantic Pydantic thư viện để xác định xác thực liệu, hóa tài liệu (sử dụng JSON Schema) dựa kiểu liệu Python FastAPI sử dụng để: - Xử lý tất xác thực liệu, hóa liệu tài liệu mơ hình tự động (dựa JSON Schema) - FastAPI lấy liệu JSON Schema đặt vào OpenAPI Starlette Starlette framework/bộ công cụ ASGI (Asynchronous Server Gateway Interface) nhẹ, lý tưởng để xây dựng dịch vụ khơng đồng hiệu suất cao Nó đơn giản trực quan Nó thiết kế để mở rộng dễ dàng có thành phần mơ-đun FastAPI sử dụng để: - Xử lý tất phần web cốt lõi Thêm tính hàng đầu Phạm Văn Lượng Phạm Xuân Bách 11 - Bản thân lớp FastAPI kế thừa trực tiếp từ lớp Starlette Uvicorn Uvicorn máy chủ ASGI nhanh (như chớp), xây dựng uvloop httptools Nó khơng phải web framework, mà máy chủ Ví dụ: khơng cung cấp cơng cụ để định tuyến theo đường dẫn Đó thứ mà framework Starlette (hoặc FastAPI) cung cấp Đây máy chủ đề xuất cho Starlette FastAPI FastAPI sử dụng để: - - Máy chủ web để chạy ứng dụng FastAPI - Có thể kết hợp với Gunicorn để có máy chủ đa xử lý không đồng FastAPI Là web framework đại, nhanh (hiệu suất cao) để xây dựng API với Python 3.6+ dựa kiểu liệu Python tiêu chuẩn Đứng vai hai người khổng lồ Starlette Pydantic FastAPI có tất tính mà hai người khổng lồ có Ngồi tính bậc như: - Tự động tạo giao diện tài liệu đặc tả API từ mã - Hệ thống định tuyến đơn giản, sử dụng trực tiếp tên phương thức HTTP - Có giá trị mặc định hợp lý, tùy chỉnh cách mạnh mẽ (Path/Query parameters, Body, Form Data, Request Files,…) - Có hệ thống dependency injection mạnh mẽ Tìm cách giảm thiểu việc lặp lại mã Phạm Văn Lượng Phạm Xuân Bách 12 Thực hiện: - Tham gia đầy đủ buổi trainning - Làm tập thực hành từ hướng dẫn tài liệu - Tìm kiếm tài liệu mạng để tìm hiểu thêm Kết quả: - Hiểu khái niệm API - Xây dựng máy chủ có API đơn giản với FastAPI - Hiểu lập trình Web Back-end 2.4 Nghiên cứu tài liệu kỹ thuật Docker Thời gian: ngày Nội dung: Các kiến thức Docker - Docker container Là quy trình sandboxed máy chủ, quy trình tách biệt khỏi tất quy trình khác máy chủ - - Là thể image - Có thể chạy máy cục bộ, máy ảo triển khai cloud - Có thể triển khai hệ điều hành - Được tách biệt khỏi container khác thực thi mơi trường riêng Container image Khi tạo container, sử dụng hệ thống tệp bị cô lập Hệ thống tệp tùy chỉnh container image Vì image chứa hệ thống tệp container nên phải chứa thứ cần thiết để thực thi ứng dụng - tất phụ thuộc, cấu hình, tập lệnh, Phạm Văn Lượng Phạm Xuân Bách 13 tệp nhị phân, Image chứa cấu hình khác cho container, chẳng hạn biến môi trường, lệnh mặc định để chạy, siêu liệu khác - Docker Compose - Là công cụ phát triển để giúp xác định chia sẻ ứng dụng đa container Với Compose, tạo tệp YAML để xác định service với lệnh nhất, xoay chuyển thứ phá bỏ tất Thực hiện: - Tham gia đầy đủ buổi training - Containerize máy chủ với FastAPI tạo trước - Quản lý container tạo Docker Compose Kết quả: - Nắm kiến thức Docker - Biết cách tạo container image quản lý chúng Docker Compose 2.5 Thực hành xây dựng máy chủ API cho dự án Mark Platform Thời gian: tháng Nội dung: Thực hành kiến thức học tìm hiểu để xây dụng máy chủ API theo yêu cầu người hướng dẫn Kết quả: Xây dựng máy chủ API đáp ứng yêu cầu đặt Thực project Sau tháng training thực hành, thực tập sinh nắm kiến thực API, Python, FastAPI, Docker Trong tháng thứ hai, trainer hướng dẫn Phạm Văn Lượng Phạm Xuân Bách 14 thực tập sinh áp dụng kiến thức học để tham gia thực chiến dự án công ty Chi tiết thực dự án nói phần sau Lịch làm việc Tuần Công việc Người hướng dẫn Tìm hiểu cơng ty, cách tổ chức công ty - Làm quen với công cụ làm việc công ty - Học cách trao đổi, làm việc qua email, Slack, Jira - Tìm hiểu ngơn ngữ lập trình Python nâng cao - Thực hành Python - Làm ứng dụng demo - Tìm hiểu FastAPI - Tìm hiểu FastAPI - Làm ứng dụng demo với FastAPI - Tìm hiểu Docker Mark Platform spring 1: - Đọc tài liệu, đọc mã nguồn dự án Anh Võ Hoàng Đức Khoa, Nguyễn Văn Dũng - Phạm Văn Lượng Anh Phạm Lượng Văn Anh Phạm Lượng Anh Phạm Lượng Văn Anh Phạm Lượng Văn Mức độ hoàn thành Nhận xét người hướng dẫn Văn Phạm Xuân Bách 15 - Tham gia Meeting Chạy thử dự án Tạo API task Permission Mark Platform spring 1(tiếp): - Viết hàm xử lý gửi email - Xử lý pagination, filter cho API - Testing API Mark Platform spring 1(tiếp): - Viết hàm xử lý business logic - Migrate database - Tạo API task Designer profile - Testing API Mark Platform spring 1(tiếp): - Bắt kiện cần gửi email theo tài liệu chỉnh sửa template mail tương ứng - Testing gửi email - Báo cáo cuối đợt thực tập Phạm Văn Lượng Anh Phạm Lượng Văn Anh Phạm Lượng Văn Anh Phạm Lượng Văn Phạm Xuân Bách 16 Chương Chi tiết project Giới thiệu project Mark Platform tảng đánh giá khám phá dành cho nhà thiết kế nội thất Singapore Mark Platform bao gồm tảng ứng dụng mobile (Android/IOS) web Các công việc làm 2.1 Cài đặt, chạy thử dự án Nội dung: Clone source code chạy thử dự án Thực hiện: - Cài đặt Docker, Git đăng nhập Gitlab - Đọc tài liệu dự án tài liệu hướng dẫn - Cài đặt pre-commit Phạm Văn Lượng Phạm Xuân Bách 17 2.2 Tạo API task Permission Nội dung: Tạo API task Permission Thực hiện: - Đọc tài liệu yêu cầu task - Tạo model, schema, router - Migrate database - Testing API Phạm Văn Lượng Phạm Xuân Bách 18 2.3 Xử lý gửi email template email Nội dung: Viết hàm gửi email bắt kiện gửi email máy chủ theo yêu cầu tài liệu Tạo template tương ứng với kiện Thực hiện: - Đọc tài liệu yêu cầu task - Viết hàm xử lý gửi email Phạm Văn Lượng Phạm Xuân Bách 19 - Đọc code thêm hàm gửi email vào kiện gửi email mà tài liệu yêu cầu - Tạo template email tương ứng với kiện 2.4 Một số công việc khác - Testing API - Xử lý pagination, filter cho API Kết Xây dựng thành công API theo yêu cầu người hướng dẫn Phạm Văn Lượng Phạm Xuân Bách 20 TÀI LIỆU THAM KHẢO - Python Tutorial – https://www.tutorialspoint.com/python/index.htm [Lần truy cập cuối: 17/12/2022] - FastAPI Documentation – https://fastapi.tiangolo.com/ [Lần truy cập cuối: 17/12/2022] - Pydantic Documentation – https://docs.pydantic.dev/ [Lần truy cập cuối: 17/12/2022] - Starlette Documentation – https://www.starlette.io/ [Lần truy cập cuối: 17/12/2022] - Awesome FastAPI, A curated list of awesome things related to FastAPI – https://github.com/mjhea0/awesome-fastapi [Lần truy cập cuối: 17/12/2022] - FastAPI Best Practices – https://github.com/zhanymkanov/fastapi-best- practices [Truy cập lần cuối: 17/12/2022] - Docker Guides – https://docs.docker.com/get-started/ [Lần truy cập cuối: 17/12/2022] - Python-emails Documentation – https://python-emails.readthedocs.io/en/latest/ [Lần truy cập cuối: 17/12/2022] Phạm Văn Lượng Phạm Xuân Bách ... Chương Nội dung thực tập Đợt thực tập với chủ đề ? ?Lập trình Web Back- end với FastAPI cho Mark Platform? ?? nhằm mục đích giúp sinh viên thực tập đào tạo tồn diện lập trình Back- end, đồng thời rèn... kiện cho em có hội thực tập công ty Chỉ thời gian ngắn, nhờ dẫn nhiệt tình anh trainer, nhóm thực tập chúng em tiếp thu kiến thức quan trọng để thành thạo việc lập trình Web Back- end với FastAPI. .. web, em lựa chọn thực tập với vị trí Back- end định hướng cho việc học tập nghiên cứu sâu quy trình sản xuất web FastAPI framework web đại, nhanh (hiệu suất cao) để xây dựng API với Python 3.6+