Webinar số 11 của chuỗi Chân chất kể tất là lần đầu tiên tất cả các thành viên của 1 team tại Magestore cùng nhau lên sóng để chia sẻ về trải nghiệm của mình khi triển khai giải pháp POS của Magestore cho 1 khách hàng lớn ở trên thế giới. Ở công ty, team có một cái tên rất dễ thương là Noodle, và hiện đang đảm nhiệm phần phát triển và triển khai giải pháp, support khách hàng sau khi mua hàng.
Tổng quan về dự án triển khai Magestore POS cho chuỗi 62 cửa hàng của Trulieve
Phần tổng quan dự án được BA của team - Andrew chia sẻ giúp mọi người hiểu về bức tranh tổng thể.
Khách hàng mà team Noodle có cơ hội hợp tác trong đợt vừa rồi là Trulieve - là một trong những đơn vị bán dược phẩm và cần sa lớn nhất thế giới. Hiện Trulieve đang kinh doanh tại bang Florida Mỹ.
Hiện họ có 62 cửa hàng trong bang đó, và mỗi cửa hàng có trung bình 10 máy thu ngân và có từ 2-4 máy tính bảng cho đội vận chuyển. Ngoài ra công ty này tự sản xuất sản phẩm của họ, có cả mảng bán lẻ tới người dùng cuối và bán buôn tới các đơn vị khác.

Dự án triển khai cho Trulieve có cơ cấu hệ thống vận hành như sau:

Trulieve sử dụng Magento làm platform cho website thương mại điện tử, dùng SAP làm hệ thống ERP và dùng POS system của Magestore tại cửa hàng offline, kết nối trực tiếp với Magento, và từ Magento sẽ đồng bộ dữ liệu lên hệ thống ERP.
Các thách thức chính trong dự án:
- Cần đảm bảo bảo mật thông tin khách hàng,
- Cần POS có khả năng tùy chỉnh theo yêu cầu của doanh nghiệp
- POS đáp ứng được lượng đơn hàng lớn từ 60,000 - 70,000/ngày mà không xảy ra trục trặc.
- Chuyển đổi cùng một lúc từ hệ thống ERP cũ sang hệ thống ERP của SAP luôn, cùng với việc set up hệ thống POS tại các cửa hàng.
Các đối tác tham gia vào dự án

- Bộ phận IT của Trulieve
- ToolsStudio - đơn vị triển khai ERP SAP cho Trulieve, phát triển integrator giữa Magento và SAP.
- Binary Anvil - một đơn vị làm deployment process
Cùng với Magestore, 3 bên này sẽ triển khai và dự kiến hoàn tất và go live trước tháng 11/2020.
Chia sẻ plan giữa khách hàng và team Magestore
Dưới đây là những yêu cầu chính của Trulieve được Magestore tiếp nhận từ tháng 8/2020 và những yêu cầu này phải lên live vào tháng 11.

- Dual Screen: màn hình lớn hiển thị cho khách mua hàng.
- Customer Management: quản lý thông tin đơn thuốc và lịch sử chữa bệnh, mua hàng của khách
- Reward Point: áp dụng điểm thưởng cho khách hàng
- Redemption: đổi quà cho khách mua hàng
- Call Center: nơi bộ phận trực để tiếp nhận yêu cầu của khách, điều phối đơn hàng
- Batch Assign: quản lý và cập nhật thông tin trạng thái các lô hàng.
Một tính chất của các yêu cầu từ Trulieve là thường xuyên cập nhật, thậm chí đến từng ngày. Nhiều yêu cầu mang tính tạm thời vì deadline dự án quá gấp. Và nhiều yêu cầu có thể bị thay đổi hoặc on hold.
Sau nhiều lần thay đổi, các bên tổ chức họp để chốt được bản MVP, và khóa lại các tính năng phục vụ go live.
Tổng quan quá trình development và giao tiếp sâu sát - yếu tố quyết định thành công của dự án với nhiều đối tác góp mặt
Anh Edward, một Solution Specialist trong team chia sẻ về tổng quan quá trình hợp tác development với nhiều bên.
Dự án lần này có sự góp mặt của nhiều partner trong đó có Tinashop và Shark team.
- Tinasoft là một công ty chuyên về outsource phần mềm, và tổ chức khóa đào tạo về IoT
- Shark là một team phát triển sản phẩm trong Magestore
Khi làm việc với nhiều partner thì thách thức lớn nhất là thống nhất cách hiểu giữa các bên về các yếu tố
- Yêu cầu
- Giải pháp
- Phương thức giao tiếp, kênh giao tiếp, thời gian họp
- Phương thức transfer source code
- Review code
- Development flow


Ban đầu, tháng 8 team Noodle nhận dự án. Lúc đó, team chưa có nguồn lực cho dự án, khách hàng Trulieve cũng chưa chia sẻ chi tiết về deadline của dự án. Đến đầu tháng 9, team bắt đầu thấy overload với nhiều dự án và có hướng tiếp cận tìm thêm partner. Sau vài buổi họp, team đã chọn được partner đầu tiên cùng hợp tác là Tinasoft.
Trong quá trình làm việc, team Noodle cùng partner Tinasoft cũng chưa hiểu nhau ngay. Khi có vấn đề, team đã cùng lên tiếng để có những buổi họp giải quyết ngay cùng Tinasoft.
Đến tháng 10, Trulieve có plan go live vào ngày 11/11 và đưa ra những yêu cầu mới và khá lớn. Lúc đó, team lên giải pháp và estimate thì thấy phải cần ít nhất 2 tháng mới hoàn thành được. Nên team đã quyết định nhờ sự trợ giúp các đội ngũ ngoài team. Do việc triển khai giải pháp Magestore POS cần sự thấu hiểu về sản phẩm, do đó, team đã mời team Shark - team phát triển sản phẩm trong công ty tham gia cùng vào dự án để kịp tiến độ bàn giao cho Trulieve.
Do dự án cũng gấp nên team cùng các partner cũng đề ra 1 vài biện pháp giúp đảm bảo đúng nhịp độ:
- OT
- Nghiệm thu nội bộ hàng ngày
- Meeting hàng ngày với khách

Tích hợp các thiết bị với hệ thống POS tại cửa hàng - thách thức và giải pháp
Rooney, 1 Technical Expert của team tiếp nối bằng việc chia sẻ về khâu tích hợp thiết bị phần cứng (terminal, cash drawer, máy in) với hệ thống POS.

Trong dự án này, Trulieve đã lựa chọn 2 giải pháp thanh toán là Dejavoo và SPln.

Team đã dùng hình thức semi-integrated, cả 2 POS và terminal đều ‘nói chuyện’ với gateway của Dejavoo. Luồng thanh toán là khi khách hàng đến quầy check out, có thể dùng thẻ để quẹt, các thông tin đơn hàng thanh toán sẽ được đồng bộ giữa POS và máy quẹt thẻ nhờ Dejavoo.

Ngoài ra, team còn thiết lập 1 phương thức thanh toán bằng app, Canpay - hình thức thanh toán bằng app đầu tiên trên thế giới dành cho giao dịch cần sa.

Thay vì thanh toán bằng quẹt thẻ thì khách hàng đến cửa hàng thì sẽ mở app CanPay, dùng QR code để quét và thanh toán.

Trong quá trình tích hợp các thiết bị, team cũng gặp những thách thức nhất định, ví dụ như:
- Tài liệu về các phương thức payment hạn chế
- Các bên payment chưa chia sẻ trước test case từ đầu dự án
- Chưa có dịch vụ chuẩn bị dữ liệu trước khi go live (data mapping)
Kiểm thử hiệu năng của giải pháp POS cho chuỗi hơn 6000 POS đồng loạt chạy - đâu là hướng tiếp cận đúng?
Oliver, Technical Expert, phụ trách phần DevOps trong dự án này.
Khách hàng hàng đặt ra một câu hỏi chung chung cho team trước khi go live. Vì Trulieve sử dụng POS là chủ yếu nên họ quan ngại về hệ thống phần cứng hiện tại có đáp đứng được mức sử dụng của nhân viên cửa hàng hay không. Nếu không đủ, thì team cần đưa ra gợi ý cho khách hàng để nâng cấp hoặc sử dụng một nhà cung cấp khác để có thể đáp ứng được yêu cầu.
Đây là thách thức cần bộ não của cả team để đánh giá và tìm ra giải pháp. Lúc này cần sự trợ giúp của các chuyên gia ngoài team. Lúc này, một team mới mang tính chất tạm thời đã được lập ra để giải quyết vấn đề.
Team này gồm 1 Sysadmin, 1 Chuyên gia về Product, 1 Project Manager, và 1 người triển khai.

Sau khi team mới được lập, các bước tiếp theo là
- Lấy yêu cầu cụ thể của khách hàng
- Team cùng bão não với nhau để tìm ra giải pháp
- Cùng lên kế hoạch chi tiết
- Triển khai kế hoạch
- Review và báo cáo lại khách hàng.
Ở bước đầu tiên, sau khi khách hàng đưa ra câu hỏi trên thì team lại hỏi sâu đào thêm về yêu cầu chi tiết của khách. Đó là khi go live, khách hàng sẽ cho chạy 1980 POS cùng lúc ở 62 cửa hàng. Hệ thống của khách có khoảng 600 sản phẩm. Về Cơ sở hạ tầng thì khách hàng sử dụng SaaS từ 1 nhà cung cấp lớn khác có high availability và có auto scaling.

Sau đó thì team cùng brainstorm, bỏ qua cơ sở hạ tầng vì khách sử dụng dịch vụ từ một nhà cung cấp tin tưởng và chỉ tập trung test hiệu năng của POS xem mức độ chịu tải đến đâu.
Tiếp theo team lên kế hoạch. Tái tạo được môi trường của khách hàng là bước quan trọng nhất, vì không tái tạo được thì làm giảm độ chính xác của performance test
Tiếp đó, tạo data mock trên POS. Rồi tìm các Tool API testing và tạo các kịch bản test. Rồi thực hiện test và monitor.

Về phần testing tool của dự án, team tìm được tool tên là Locust.

Về kịch bản test, team đã làm các bước như sau:

Sau vài lần test thì team đã ra được kết quả


Xem chi tiết hơn phần giải thích của Oliver về quá trình đo lường test hiệu năng ở phút 54:18
Deployment Flow của dự án
Khi Trulieve go live lần thứ 2 thì bị thất bại. Lúc này đội ngũ Trulieve phải review lại git flow và các deployment flow.
Ban đầu, khách hàng chỉ giải thích cho team là Magestore làm trên nhánh Magestore Develop. Sau đó sẽ merge lên nhánh Staging.

Nhưng thực tế không phải vậy. Thực tế sau khi team test nhánh feature ok và merge vào nhánh Magestore Develop rồi; khách hàng lại tách nhánh Feature ra để merge vào nhánh Staging.
Điều này dẫn đến vấn đề

Khi các partner khác thực hiện sửa đổi trên nhánh staging mà Magestore lại làm trên nhánh Magestore develop. Có một số tính năng mà partner đã bỏ đi nhưng khi team Magestore merge lên nhánh staging thì các feature đó lại xuất hiện lại. Việc merge này do 1 partner khác thực hiện

Cuối cùng, các bên đã phải thống nhất lại với nhau về deployment flow. Nhánh Magestore Develop chỉ dành để team Magestore test. Sau khi test xong thì bên Trulieve sẽ thực hiện merge nhánh feature vào Staging. Và việc deploy sau đó trở nên mượt mà hơn.

3 bài học quý báu đúc kết sau 3 tháng support remote thần tốc để go live thành công cho Trulieve.
Amber, PM của dự án này cũng chia sẻ những bài học đáng nhớ trong thời gian 3 tháng triển khai.
- Trong 14 ngày quan trọng nhất của khách hàng, team đã thay đổi thời gian để khớp với giờ làm việc của khách, đổi sang 9 giờ tới đến 6h sáng


Trong quá trình go live với hơn 1000 khách hàng, team nhận ra rằng nếu có vấn đề xảy ra khi go live thì khách sẽ yêu cầu support gấp, dẫn tới quyết định dùng tiếp/refund để chuyển sang 1 giải pháp khác.

Bài học đầu tiên mà team học được là về có được sự đồng thuận về việc hợp tác.

Bài học thứ hai là thống nhất về môi trường UAT - môi trường nghiệm thu cuối cùng.

Bài học thứ ba về việc training khách hàng trong những khâu cuối cùng

Khoảnh khắc Go live đáng nhớ - chia sẻ các cung bậc cảm xúc từ thành viên dự án
Trải qua 14 ngày go live cùng khách hàng, team Noodle đã có những trải nghiệm không thể nào quên với khách
Andrew, BA của team nói về khoảnh khắc chia sẻ với toàn công ty về thời điểm go live thành công


Eren, Software Engineer, thành viên team Noodle chia sẻ thêm về quá trình tham gia dự án Trulieve đã cải thiện trình code Magento hơn rất nhiều.

Anh Oliver khép lại màn chia sẻ bằng 1 kỷ niệm đáng nhớ trong quá tình go live phải vào bệnh viên vài ngày nhưng vẫn chuẩn bị đủ đầy để có thể teamview, deploy remote và daily call cùng đồng đội của mình để giúp khách go live thành công

Xem chi tiết về màn chia sẻ của 3 thành viên dự án tại phút 1:18:31
Phần QnA giữa team Magestore với người tham gia webinar, mời bạn xem tại phút 1:21:45
Xem lại video webinar tại đây