Đang tải... (xem toàn văn)
Để thử thách bản thân trong việc phát triển hệ thống mới, đồng thời để tận dụng kỹ năng của bản thân trong lĩnh vực công nghệ phần mềm, kinh nghiệm trong lĩnh vực phát triển tính năng, e
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 Vị trí thực tập: Backend Developer
Công ty thực tập : Công ty cổ phần Con Cưng Người phụ trách : Nguyễn Vũ Trường Giang
Thực tập sinh : Trần Văn Thiệt
Thành phố Hồ Chí Minh, ngày 01 tháng 01 năm 2024
Trang 2LỜI MỞ ĐẦU
Trong cuộc cách mạng công nghiệp 4.0, công nghệ thông tin nói chung và ngành công nghệ phần mềm nói riêng luôn là nhân tố đóng vai trò quan trọng trong quá trình phát triển của xã hội
Ngành hàng dành riêng cho trẻ em là một lĩnh vực có tiềm năng lớn và đòi hỏi sự sáng tạo và đổi mới liên tục Các sản phẩm dành cho trẻ em không chỉ cần đảm bảo an toàn, chất lượng, giá cả hợp lý, mà còn phải phù hợp với nhu cầu, sở thích và xu hướng của trẻ em và phụ huynh Để đáp ứng được những yêu cầu này, cần có một hệ thống quản lý, phân phối và bán hàng hiệu quả, nhanh chóng và linh hoạt Đó là nơi mà vai trò của backend developer được thể hiện rõ nét Backend developer là người chịu trách nhiệm thiết kế, xây dựng và bảo trì các hệ thống phía sau giao diện người dùng, bao gồm cơ sở dữ liệu, máy chủ, API, v.v Backend developer cần có những kỹ năng lập trình, kiến thức về các ngôn ngữ, công nghệ, mô hình và thiết kế phần mềm, cũng như khả năng làm việc nhóm, giao tiếp và giải quyết vấn đề
Để thử thách bản thân trong việc phát triển hệ thống mới, đồng thời để tận dụng kỹ năng của bản thân trong lĩnh vực công nghệ phần mềm, kinh nghiệm trong lĩnh vực phát triển tính năng, em đã lựa chọn backend developer làm định hướng cho việc học cũng như nghề nghiệp trong tương lai
Với mong muốn được trải nghiệm và học hỏi thêm về công việc của một backend developer cũng như mong muốn áp dụng những kiến thức đã học, kinh nghiệm đã có,
em quyết định ứng tuyển thực tập vào vị trí Backend developer tại Công ty cổ phần
Con Cưng – một môi trường lớn và chuyên nghiệp để thực hiện dự định 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 đến Công ty cổ phần Con Cưng đã tạo điều kiện
cho em được thực tập tại công ty Trong thời gian thực tập vừa qua, nhờ sự chỉ dẫn nhiệt tình của anh Nguyễn Vũ Trọng Giang, em đã tiếp thu được nhiều kiến thức và nhiều kỹ năng quan trọng để tham gia những dự án thực tế của công ty và áp dụng vào việc học tại trường
Chân thành cảm ơn các anh chị trong bộ phận CNTT đã dành thời gian, công sức để hướng dẫn và hỗ trợ em tận tình trong khi làm quen môi trường mới cũng như trong việc tiếp cận kiến thức công nghệ về backend developer và tư duy sản phẩm để em có thể thực hiện tốt những dự án của công ty trong thời gian vừa qua
Em cũng xin cảm ơn quý giảng viên 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áo cáo này
Thành phố Hồ Chí Minh, ngày 01 tháng 01 năm 2024
Trang 5CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP 10
1.1 Giới thiệu công ty cổ phần Con Cưng 10
1.2 Lịch làm việc khi thực tập tại công ty 11
CHƯƠNG 2 NỘI DUNG THỰC TẬP 13
2.1 Tìm hiểu công ty và các kỹ năng cơ bản trong công ty 13
2.2 Nghiên cứu kỹ thuật 13
Trang 6Hình 2.4: API chức năng nhóm tập dữ liệu 20
Hình 2.5: API chức năng tập dữ liệu 21
Hình 2.6: API chức năng bổ sung dữ liệu cho tập dữ liệu 21
Hình 2.7: API chức năng lọc trên tập dữ liệu trước khi chạy phân tập người dùng 21
Hình 2.8: API chức năng tạo mô hình tùy chỉnh và các phiên bản 22
Hình 2.9: API phân tập người dùng 22
Hình 2.10: Giao diện cấu hình nhóm tập dữ liệu 23
Hình 2.11: Giao diện cấu hình tập dữ liệu 23
Hình 2.12: Giao diện cấu hình tập dữ liệu – Thêm mới hoặc cập nhật tập dữ liệu với lượng data lớn 23
Hình 2.13: Giao diện cấu hình EventTracker – Thiết lập TrackingID 23
Hình 2.14: Giao diện quản trị Solution 23
Hình 2.15: Giao diện quản trị Solution – Thêm mới mô hình 24
Hình 2.16: Giao diện quản trị Solution – Chi tiết các phiên bản model 24
Hình 2.17: Giao diện quản trị phân tập người dùng bằng AWS Personalize 24
Hình 2.18: Giao diện quản trị phân tập người dùng – Thêm mới 24
Hình 2.19: Giao diện quản trị phân tập người dùng bằng lịch sử mua hàng (local) 25
Hình 2.20: Giao diện quản trị phân tập người dùng – Chi tiết quá trình chạy 25
Hình 2.21 Quy trình thực hiện phân tập người dùng bằng AWS Personalize 25
Hình 2.22: Đầu vào BatchSegmentJob 26
Hình 2.23: Đầu ra BatchSegmentJob 27
Hình 2.24: Transform để ánh xạ kết quả trả về với dữ liệu ở local 28
Hình 2.25: API chức năng các tham số nội dung động (placerholder) 28
Hình 2.26: API chức năng mẫu email 28
Trang 7Hình 2.27: API chức năng gửi email 29
Hình 2.28: API chức năng gửi email hàng loạt 29
Hình 2.29: API chức năng lấy số liệu thống kê email bằng AWS CloudWatch 29
Hình 2.30 API chức năng lấy số liệu thống kê email bằng GCP GA4 29
Hình 2.31: Giao diện quản trị các tham số nội dung động 29
Hình 2.32: Giao diện quản trị mẫu email 29
Hình 2.33: Giao diện quản trị mẫu email – Thêm mới mẫu 30
Hình 2.34: Giao diện thống kê hiệu suất của chương trình bằng email 30
Hình 2.35 Quy trình thực hiện gửi email hàng loạt 31
Hình 2.36: Lấy số liệu từ AWS CloudWatch bằng Swagger 32
Hình 2.37: Số liệu khi xem trực tiếp trên console của AWS CloudWatch 32
Hình 2.38: Lấy số liệu từ GCP GA4 bằng Swagger 32
Hình 2.39 Số liệu khi xem trực tiếp trên console của GCP GA4 33
Trang 8
DANH MỤC BẢNG
Bảng 2.2.1: So sánh Dapper vs Entity Framework 18 Bảng 2.3.1: Mục tiêu phát triển trên dự án CDxP 20
DANH MỤC TỪ VIẾT TẮT
Dịch vụ web của Amazon cung cấp các dịch vụ đám mây đáng tin cậy, có thể mở rộng và chi phí thấp
2 CDxP Customer Data & Experience
Platform
Nền tảng dữ liệu và trải nghiệm khách hàng giúp doanh nghiệp hiểu rõ hơn về khách hàng của mình thông qua dữ liệu
Dịch vụ email của Amazon giúp gửi email quảng cáo, thông báo và các loại email khác một cách dễ dàng và hiệu quả
Dịch vụ lưu trữ đám mây của Amazon cung cấp lưu trữ đối tượng an toàn, bảo mật và hiệu suất cao
Bộ công cụ đám mây của Google cung cấp dịch vụ máy chủ, lưu trữ và mạng trên cùng một cơ sở hạ tầng mà Google sử dụng
6 GA4 Google Analytics 4 Phiên bản mới nhất của Google
Analytics, cung cấp thông tin chi
Trang 9tiết về lưu lượng truy cập và sử dụng trang web
Người phân tích kinh doanh giúp cải thiện hiệu suất kinh doanh thông qua phân tích dữ liệu, hiểu rõ nhu cầu của khách hàng và đề xuất giải pháp
Kỹ thuật lập trình giúp chuyển đổi dữ liệu giữa hệ thống cơ sở dữ liệu quan hệ và các đối tượng trong lập trình hướng đối tượng
Trang 10CHƯƠNG 1 GIỚI THIỆU CÔNG TY THỰC TẬP 1.1 Giới thiệu công ty cổ phần Con Cưng
Hình 1.1 Logo công ty cổ phần Con Cưng
Công ty Cổ phần Con Cưng là một công ty tiên phong tại Việt Nam chuyên về ngành hàng dành riêng cho trẻ em Công ty được thành lập vào năm 2011 và trở thành công ty con của Công ty cổ phần Đầu tư Con Cưng (được thành lập ngày 21/9/2015), với đại diện pháp luật là ông/bà Nguyễn Quốc Minh Trụ sở chính của công ty đặt tại 66 Nguyễn Du, Phường Bến Nghé, Quận 1, TP Hồ Chí Minh
Lĩnh vực hoạt động của công ty bao gồm phát triển các hệ thống chuỗi bán lẻ cho mẹ bầu & em bé như Con Cưng, Toycity, CF (CON CUNG FASHION), nghiên cứu và cho ra đời các sản phẩm an toàn, chất lượng, giá thành hợp lý dành riêng cho trẻ em Công ty luôn lấy sứ mệnh “Mang đến những sản phẩm tốt nhất cho trẻ em Việt Nam" làm kim chỉ nam cho mọi hoạt động kinh doanh
Con Cưng cam kết đưa sản phẩm trực tiếp từ nhà sản xuất đến tay người dùng và kiểm soát được chất lượng để đáp ứng được nhu cầu ngày càng cao của khách hàng Tất cả các sản phẩm tại Con Cưng đều có nguồn gốc xuất xứ rõ ràng, chất lượng, đa dạng chủng loại với giá hợp lý
Công ty đang phát triển mạnh mẽ với mức tăng trưởng 100% hàng năm Hệ thống siêu thị của Con Cưng đang phủ sóng trên 40 tỉnh thành Việt Nam Trong tương lai, Con Cưng có kế hoạch sẽ phủ sóng 64 tỉnh thành với cam kết mang đến sự tiện lợi trong mua sắm tới tất cả phụ huynh khắp cả nước
Trang 11Con Cưng được xây dựng dựa trên nền tảng công nghệ thông tin hiện đại Công ty đầu tư hệ thống phần mềm quản lý, kiểm soát mọi hoạt động kinh doanh, từ điều hành, phân phối sản phẩm đến bán hàng, tối ưu hóa quy trình hoạt động Nhờ đó cắt giảm nhiều chi phí trong quá trình vận hành để có được giá bán phù hợp với số đông người tiêu dùng Việt Nam
Đội ngũ nhân viên chuyên nghiệp, tâm huyết và là niềm tự hào của Công ty Tổng số nhân viên được tuyển dụng và đào tạo chuyên nghiệp hiện tại đã lên đến con số khoảng 1.500 nhân sự Bên cạnh đó, đời sống tinh thần của nhân viên cũng được quan tâm, chăm sóc cùng những chính sách đãi ngộ, nâng cao tinh thần làm việc và truyền cảm hứng để nhân viên cống hiến và mang lại những giá trị cho bản thân và cộng đồng Con Cưng có lợi thế trong việc hợp tác với nhiều tập đoàn đa quốc gia, cũng như việc phân phối độc quyền cho nhiều nhãn hàng Nhật, Hàn Quốc, Thái Lan Bên cạnh đó, Con Cưng còn hợp tác với nhiều nhà máy hàng đầu tại Nhật, Hàn Quốc, Thái Lan để nghiên cứu và cho ra đời những sản phẩm tốt nhất dành cho trẻ em Việt Nam
1.2 Lịch làm việc khi thực tập tại công ty
Em bắt đầu làm việc tại công ty bắt đầu từ 17/07/2023 tới 16/01/2024 (theo hợp đồng hiện tại), thời gian làm việc trong hè từ thứ 2 đến thứ 6 và trong học kỳ sẽ gồm các ngày trong tuần bao gồm buổi chiều thứ hai, thứ tư, thứ năm và thứ sáu Một ngày làm việc bắt đầu từ 08:30 và kết thúc vào lúc 17:30 Thời gian nghỉ trưa khoảng 60 phút (từ 12:00 đến 13:00) Trong giai đoạn đầu (2 tháng), công việc của em hằng ngày là thực hiện các task phát triển chức năng do Lead, BA hoặc các log bug do Tester giao Đầu mỗi ngày làm việc, em sẽ ghi chú lại là hôm qua đã làm được gì (tiến độ như nào), hôm nay sẽ làm gì thông qua công cụ Slack Giai đoạn sau em được làm việc trực tiếp với anh Phan Nguyễn Hoàng Long (Project Manager) để phát triển tính năng mới cho CDxP (Customer Data & Experience Platform) - một loại phần mềm kết hợp nhiều kỹ thuật xử lý dữ liệu và chức năng tự động hóa tiếp thị vào một hệ thống duy nhất Mục tiêu của CDxP là giúp các doanh nghiệp hiểu rõ hơn về khách hàng, từ đó có thể tạo ra các chiến dịch tiếp thị, bán hàng và chăm sóc khách hàng cá nhân hóa, đa kênh và thời gian thực Ở dự án này em nắm vai trò là phát triển chính, thiết kế và xây dựng phần backend của ứng dụng, sử dụng các công nghệ như ASP.NET Core, AWS, Google Cloud Platform, PostgreSQL, SQL Server, Kafka, v.v Ngoài ra em còn nắm vai trò
Trang 12thiết kế giao diện thiết lập và sử dụng cơ bản cho các tính năng của CDxP trên web bằng Angular
Trang 13CHƯƠNG 2 NỘI DUNG THỰC TẬP 2.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ơ cấu, cách tổ chức của công ty cổ phần Con Cưng,
đượ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, 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, các phòng ban nội bộ, hệ thống quản trị nhân sự,… Ngoài ra, thực tập sinh còn được giới thiệu về văn hóa làm việc trong công ty như thời gian đi làm, các quy định, cách sử dụng các công cụ giao tiếp, xử lý trong công việc,… Và trên hết, ở vị trí backend developer thì cần tìm hiểu về các quy chuẩn, nguyên tắc và quy định khi phát triển
• Kết quả: Hiểu thêm về công ty cổ phần cổ phần Con Cưng, bao gồm quá trình
thành lập, phát triển và cơ cấu tổ chức, các công cụ hỗ trợ làm việc ở vị trí backend Có thêm các kỹ năng về việc ghi chú trong công việc, làm việc có kế hoạch, có kỷ luật, có trách nhiệm hơn và hiểu hơn về quy tắc ứng xử để phù hợp với văn hóa công ty
2.2 Nghiên cứu kỹ thuật
Đối với vị trí thực tập của em, bản đầu em sẽ được các Lead, BA giao task xuống thông qua công cụ Jira Trong Jira có mô tả về chức năng, yêu cầu, đầu vào và đầu ra của chức năng đó Nhiệm vụ của em là viết API để đáp ứng chức năng đó Trong khoảng thời gian đầu sẽ được giao cho các nhiệm vụ có mực độ ưu tiên thấp để tập làm quen với các công nghệ
2.2.1 Bộ cung cụ Jira • Thời gian: 1 ngày
• Nội dung: Tìm hiểu hệ thống quản lý dự án Jira
Trong thời gian này, em được memtor hướng dẫn các sử dụng Jira, luồng làm việc khi nhận được task Những việc cần làm trước, trong, sau khi thực hiện task
• Kết quả: Hiểu và vận dụng được
Trang 14Hình 2.1 Logo Jira
Jira là một bộ công cụ quản lý dự án và theo dõi công việc được phát triển bởi Atlassian Nó được sử dụng rộng rãi trong các dự án phần mềm và quản lý công việc để giúp các nhóm làm việc cùng nhau hiệu quả, theo dõi tiến độ và quản lý các tác vụ và vấn đề
Bộ công cụ Jira cung cấp các tính năng và chức năng sau:
• Quản lý dự án: Jira cho phép tạo và quản lý các dự án, các tác vụ và công việc Người dùng có thể tạo danh sách các công việc, gán người thực hiện, thiết lập thời hạn, và theo dõi tiến độ của từng công việc trong dự án
• Theo dõi tiến độ: Jira cho phép người dùng tạo ra bảng kanban hoặc bảng scrum board để theo dõi tiến độ công việc Bằng cách di chuyển các thẻ công việc trên bảng, người dùng có thể xác định công việc đã hoàn thành, đang tiến hành hoặc cần xử lý
• Quản lý vấn đề: Jira cung cấp tính năng quản lý vấn đề (issue tracking), cho phép người dùng tạo, ghi lại và theo dõi các vấn đề và lỗi trong quá trình phát triển phần mềm hoặc quản lý dự án Người dùng có thể gán vấn đề cho các thành viên trong nhóm, theo dõi tiến độ sửa lỗi và quản lý trạng thái của vấn đề
• Báo cáo và phân tích: Jira cung cấp các báo cáo và công cụ phân tích để người dùng có thể đánh giá hiệu suất và tiến độ dự án Người dùng có thể tạo các biểu đồ, báo cáo và dashboard để theo dõi các chỉ số quan trọng và đưa ra quyết định dựa trên dữ liệu
Flow làm việc từ lúc nhận được task đến khi hoàn thành task
1 Khi nhận được task thì cần xác định khi nào task được thực hiện, ước lượng thực hiện trong bao lâu
2 Khi bắt đầu thực hiện: Chuyển trạng thái của task từ ToDo thành In Progress Lúc này xem Components để biết sẽ phát triển trên mã nguồn nào, xem
Trang 15Reporter là ai để biết nếu có vấn đề gì thì sẽ hỏi, xem Labels để biết sẽ phát triển trên nhánh nào
3 Khi hoàn thành: Chuyển trạng thái của task từ In Progress sang Done Note lại endpoint API (nếu làm API) hoặc đường dẫn (nếu làm FE) Note lại sự thay đổi của store vào file Procedure trong mã nguồn để có thể tracking và đưa store lên lúc chuyển sang production
Trang 16Hình 2.2 Task SALE-5676
Trang 172.2.2 Dapper và Stored Procedure • Thời gian: 1 tuần
• Nội dung: Tìm hiểu cơ bản về Dapper và stored procedure để thực hiện các thao tác
truy vấn ở cơ sở dữ liệu
Hình 2.3 Dapper
• Kết quả: Sau khi tìm hiểu thì em thấy được sự thuận tiện của dapper, những điểm
tốt hơn của dapper so với EF (Entity Framework)
− Dapper là một thư viện nhẹ giúp thực hiện các truy vấn SQL trong NET Nó cung cấp một số phương thức mở rộng cho các đối tượng kết nối SQL, cho phép bạn thực hiện các truy vấn và ánh xạ kết quả trở lại các đối tượng một cách dễ dàng
− Stored Procedure (thủ tục lưu trữ) là một đoạn mã SQL được lưu trữ và tối ưu hóa trong cơ sở dữ liệu Nó giúp giảm độ phức tạp khi xử lý nhiều truy vấn, cải thiện hiệu suất bằng cách tối ưu hóa thực thi truy vấn và cung cấp bảo mật tốt hơn do được cô lập khỏi mã ứng dụng
So sánh giữa Dapper và Entity Framework:
Tính nhẹ nhàng và hiệu suất
Hiệu suất cao, sử dụng ít bộ nhớ hơn
Cung cấp nhiều tính năng mạnh mẽ, nhưng có thể làm giảm hiệu suất
Trang 18Sử dụng SQL trực tiếp Cho phép viết và thực hiện trực tiếp câu lệnh SQL
Ẩn đi SQL, cho phép làm việc với dữ liệu thông qua LINQ
Khả năng ánh xạ đối tượng (ORM)
Cung cấp một mức độ ít hơn trong việc ánh xạ đối tượng
Cung cấp một ORM mạnh mẽ, cho phép ánh xạ tự động
Cộng đồng và tài liệu Cộng đồng sáng tạo nhưng không quá lớn
Cộng đồng lớn và mạnh mẽ, tài liệu rộng rãi
Bảng 2.2.1: So sánh Dapper vs Entity Framework
2.3 Tham gia dự án thực tế 2.3.1 Tổng quan
Sau 1 tuần làm quen với môi trường làm việc tại Con Cưng cũng như cách làm việc của riêng Team IT, em được phân công làm việc các công việc do anh BA (Nguyễn Văn Quang) hoặc anh Lead (Nguyễn Vũ Trọng Giang) giao qua Jira Sau 1 tháng em đã quen với hệ thống thì em được phân công hỗ trợ anh PM (Phan Nguyễn Hoàng Long) phát triển tính năng mới cho CDxP Để xem các task mà em đã làm, em đã đính kèm 1 file excel danh sách các task mà em đã và đang làm tại công ty
Tổng quan nhiệm vụ ở các task bình thường:
o Phân tích yêu cầu của task để hiện thực hóa yêu cầu o Thiết kế, phát triển và kiểm thử cho chức năng được làm
o Cùng DBA giải quyết các khúc mắt khi phát triển (bổ sung cột, v.v) o Giải quyết các Log bug do Tester giao