Để 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
GIỚI THIỆU CÔNG TY THỰC TẬP
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
Con 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.
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ò
12 thiế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
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
• 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.
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ệ
• 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
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
Reporter 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
• 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
• 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:
Tiêu chí Dapper 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
Sử 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
Tham gia dự án thực tế
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
Tổng quan nhiệm vụ ở dự án CDxP: o Nghiên cứu các dịch vụ của AWS (Personalize, S3, SES) và GCP (GA4) o Đưa ra những nhiệm vụ cần thực hiện để tích hợp các dịch vụ từ AWS, GCP Làm việc với anh Lê Hoài Vũ (DBA) để giải quyết về ý tưởng những bảng nào cần, với anh Nguyễn Vũ Trọng Giang để giải quyết về vấn đề phát triển API, tạo job tự động đồng bộ dữ liệu từ AWS về hệ thống của mình và giải quyết các vấn đề về kỹ thuật, anh Phan Nguyễn Hoàng Long và anh Nguyễn Văn Quang để phân tích tính năng, phân tích tính khả thi, tính hiệu quả, nguồn lực phát triển, thời gian phát triển
19 o Lên giao diện để cho người dùng thao tác với các tính năng phát triển
Do có nhiều task nhỏ nên em chỉ mô tả quá trình thực hiện dự án CDxP
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
• Những mục tiêu của phát triển tính năng mới trên CDxP:
Thứ tự Mục tiêu Cách thực hiện
Phân tập người dùng dựa trên lịch sử tương tác của người dùng
Sử dụng AWS Personalize, đẩy lên 3 bộ dataset về thông tin người dùng (users dataset), thông tin sản phẩm (items dataset), thông tin tương tác (interaction dataset) Sau đó build 1 solution (tương tự build 1 model) và sử dụng BatchSegmentJob để phân tập người dùng theo sản phẩm hoặc tính chất của sản phẩm
Gửi email hàng loạt cho khách hàng với mục tiêu khi muốn truyền thông marketing về chương trình khuyến mãi, v.v
Tạo một chức năng để quản lý mẫu email để dùng đó để gửi hàng loạt, với những phần giữ chỗ để sau khi chạy chương trình khuyến mãi sẽ có những thông tin như người dùng, sản phẩm nào khuyễn mãi, khuyến mãi như nào và thay để vào mẫu email để tạo ra email hoàn chỉnh Sau đó dùng AWS SES để gửi email (SendBulkEmail)
3 Đo đạt hiệu suất của chương trình khuyến mãi qua email
Khi gửi email sẽ có đính kèm EmailTags để đánh nhãn cho các email Lúc này sử dụng AWS CloudWatch để bên SES đo đạt và đưa qua CloudWatch để trả về số liệu về số email đã gửi, số email đã đến được inbox, số email đã được mở Ngoài ra các email được thêm
20 với các UTM Parameters và sử dụng GCP GA4 để đo đạt về số lượng nhấp chuột, doanh thu từ chương trình
Tự động quá trình lấy tập người dùng từ AWS và từ lịch sử mua hàng của người dùng từ database DWH
Việc chạy BatchSegmentJob cần có thời gian để hoàn thành Lúc này sẽ tạo một WindowsService và đặt gọi tự động một endpoint để kiểm tra xem đã chạy ra kết quả chưa Khi đã chạy xong kết quả sẽ kết nối với S3 để lấy dữ liệu về và lưu lại phục vụ cho mục đích chạy chương trình
Ngoài ra khi chạy chương trình ngoài dữ liệu trong tương lai còn sử dụng dữ liệu mua hàng trong quá khứ Trước phải chạy tay thì lúc này tạo chức năng để người dùng có thể tự quản lý
Bảng 2.3.1: Mục tiêu phát triển trên dự án CDxP
• Những thành phần cần thiết cho CDxP: o Phân tập người dùng:
Hình 2.4: API chức năng nhóm tập dữ liệu
Hình 2.5: API chức năng tập dữ liệu
Hình 2.6: API chức năng bổ sung dữ liệu cho tập dữ liệu
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
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
Hình 2.9: API phân tập người dùng
Hình 2.10: Giao diện cấu hình nhóm tập dữ liệu
Hình 2.11: Giao diện cấu hình tập dữ liệu
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
Hình 2.13: Giao diện cấu hình EventTracker – Thiết lập TrackingID
Hình 2.14: Giao diện quản trị Solution
Hình 2.15: Giao diện quản trị Solution – Thêm mới mô hình
Hình 2.16: Giao diện quản trị Solution – Chi tiết các phiên bản model
Hình 2.17: Giao diện quản trị phân tập người dùng bằng AWS Personalize
Hình 2.18: Giao diện quản trị phân tập người dùng – Thêm mới
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)
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
Hình 2.21 Quy trình thực hiện phân tập người dùng bằng AWS Personalize
• Kết quả: Phân tập được 25 người dùng (do lúc tạo phân tập đã xác định) thích các sản phẩm được đưa vào
Hình 2.24: Transform để ánh xạ kết quả trả về với dữ liệu ở local o Gửi email hàng loạt & đo đạt hiệu suất:
Hình 2.25: API chức năng các tham số nội dung động (placerholder)
Hình 2.26: API chức năng mẫu email
Hình 2.27: API chức năng gửi email
Hình 2.28: API chức năng gửi email hàng loạt
Hình 2.29: API chức năng lấy số liệu thống kê email bằng AWS CloudWatch
Hình 2.30 API chức năng lấy số liệu thống kê email bằng GCP GA4
Hình 2.31: Giao diện quản trị các tham số nội dung động
Hình 2.32: Giao diện quản trị mẫu email
Hình 2.33: Giao diện quản trị mẫu email – Thêm mới mẫu
Hình 2.34: Giao diện thống kê hiệu suất của chương trình bằng email
Hình 2.35 Quy trình thực hiện gửi email hàng loạt
• Kết quả: Gửi email hàng loạt thành công Đo đạt được lượng gửi thành công, lượt mở email, click email Ngoài ra việc sử dụng UTM Parameters giúp phân tích được doanh thu từ hoạt động truyền thông này:
Hình 2.36: Lấy số liệu từ AWS CloudWatch bằng Swagger
Hình 2.37: Số liệu khi xem trực tiếp trên console của AWS CloudWatch
Hình 2.38: Lấy số liệu từ GCP GA4 bằng Swagger
Hình 2.39 Số liệu khi xem trực tiếp trên console của GCP GA4
TỔNG KẾT
Điểm mạnh
• Có tính sáng tạo cao và chủ động tìm hiểu giải quyết công việc
• Hoàn thành đầy đủ công tác được giao phó
• Khả năng tiếp thu, lắng nghe và truyền đạt tốt
• Giao tiếp tương đối tốt và hòa đồng với các bạn trong team
• Kỹ năng làm việc nhóm được cải thiện và tăng kĩ năng làm việc độc lập.
Điểm yếu
• Kiến thức chuyên môn còn nhiều điểm cần học tập và cải thiện
• Vài lúc làm việc quá độc lập nên chưa có góc nhìn đa chiều.
Chuẩn đạt được
Thứ tự Mục tiêu môn học
G1 Nắm bắt được xu hướng, nhu cầu xã hội và tính đặc thù của doanh nghiệp
G2 Hiểu và giải thích được các khái niệm cơ bản, thuật ngữ và sơ đồ hệ thống trong dự án
G3 Nắm được quy trình, phương pháp và công nghệ phát triển sản phẩm phần mềm tại doanh nghiệp
G4 Có khả năng tìm hiểu vấn đề, mô hình hóa vấn đề và tham gia giải quyết vấn đề
G5 Phát triển kỹ năng tư duy, kỹ năng làm việc nhóm và kỹ năng thuyết trình
G6 Đọc, hiểu các tài liệu và giao tiếp bằng tiếng Anh