Phía sau hệ thống E-commerce của Tiki từ góc nhìn của một architect
Với mức độ tăng trưởng từ gấp 2 đến 3 lần mỗi năm, làm thế nào để xây dựng một hệ thống chịu tải cao, đặc biệt trong giai đoạn chuyển từ mô hình B2C sang Marketplace tại Tiki?
Bài viết sẽ cung cấp những khó khăn trong quá trình xây dựng một trang web Thương mại điện tử qua góc nhìn của một người chuyên xây dựng hệ thống – Solution Architect tại Tiki.
Theo chia sẻ của Anh Lê Minh Nghĩa, gia nhập team Tiki Engineering từ cuối 2016 với vai trò là Solution Architect và hiện nay giữ chức vụ Senior Technical Architect.
Solution Architect là làm gì?
Khi là một Architecture, bạn có thể nhìn thấy toàn bộ hệ thống phát triển như thế nào, mở rộng làm sao và mình có thể có tầm nhìn đáp ứng nhu cầu phát triển của công ty bằng cách nào. Phần này khá thú vị, song cũng khá thách thức. Thách thức ở đây ở việc vừa phải tổng thể vừa phải chi tiết.
Architect không giống như nhiều bạn nghĩ vì không nhiều người từng trải qua công việc này. Architect thực chất là người “master builder”, là người phải hiểu rõ công việc xây dựng hệ thống đến mức nhìn thấy những thành phần nhỏ nhất, và biết rõ những thành phần ấy được cấu tạo ra sao. Đó không phải là công việc đơn thuần kiểu làm từ trên xuống (top-down), mà là công việc khá chi tiết và vất vả. Vì khi bạn vừa phải nhìn tổng thể vừa phải nhìn chi tiết, đồng nghĩa với việc bạn xử lý một lượng vấn đề rất lớn, và phải ra quyết định phù hợp tại từng thời điểm với từng hoàn cảnh, kết hợp với nguồn lực mình đang có.
Khó khăn về kỹ thuật khi mở rộng mô hình B2C sang mô hình marketplace tại Tiki
Khi chuyển từ B2C to marketplace về phía công nghệ thì có 2 khó khăn lớn.
Thứ nhất, B2C là mô hình mua hàng về và bán, nhưng hiện nay Tiki đã trở thành một sàn giao dịch để các seller vận hành trên đó và có đến hàng chục, hàng trăm ngàn seller vận hành. Như vậy, tính phức tạp nghiệp vụ cũng tăng lên gấp bội, từ đó đòi hỏi kỹ năng thiết kế hệ thống phần mềm (software) phải linh hoạt, dễ dàng hoạt động cho các nghiệp vụ mới, phát sinh liên tục.
Khó khăn thứ hai, đương nhiên là về mặt hiệu năng. Khi bạn có một lượng lớn giao dịch diễn ra trên hệ thống trong 3 năm marketplace, Tiki tăng trưởng trung bình 2 đến 3 lần mỗi năm, thì lượng giao dịch, đơn hàng và sản phẩm đều tăng gấp bội. Từ vài trăm nghìn sản phẩm lên đến hàng triệu sản phẩm, và như vậy lượng xử lý trở nên vô cùng khó khăn và phức tạp. Hạ tầng cũng phải mở rộng lên gấp nhiều lần.
Vì vậy, để có thể xây dựng hệ thống đáp ứng nhu cầu về hiệu năng là một thách thức lớn về mặt kỹ thuật. Người engineer tại Tiki cùng lúc sẽ phải giải quyết 2 việc:
- Xây dựng nên một phần mềm thật linh hoạt, mềm dẻo, thay đổi nhanh tương ứng với tăng trưởng vài ba lần mỗi năm.
- Xây dựng một hệ thống chi tiết để có thể xử lý hàng trăm ngàn giao dịch mỗi ngày và xử lý lượng dữ liệu lên đến hàng triệu sản phẩm.
Vai trò của người làm về Data & DevOps trong mô hình E-commerce
Data và DevOps là 2 khái niệm khác nhau, nhưng cả 2 đều rất quan trọng. Đối với data thì quá hiển nhiên, tất cả doanh nghiệp khi mở rộng thì mọi quyết định đều dựa trên dữ liệu. Mà dữ liệu là thứ quan trọng bậc nhất để mọi cấp bậc từ người nhân viên lấy hàng cho tới một manager C-level có thể ra quyết định. Vì vậy, data ở Tiki cũng như tất cả các công ty E-commerce khác là vàng, là thứ quan trọng nhất để đưa ra quyết định kinh doanh hiệu quả.
Còn DevOps liên quan đến quá trình phát triển hệ thống, development và triển khai hệ thống. DevOps rất quan trọng với những công ty có scale quy mô lớn, như Tiki có đến hơn 400 dịch vụ và ứng dụng khác nhau theo mô hình microservice và hàng ngàn backgroundworker để chạy của hàng trăm engineer để phát triển. Với lượng mã nguồn triển khai lớn như vậy mà nền tảng DevOps không tốt thì sẽ rất khó để scale và mở rộng. Vì vậy DevOps cực kỳ quan trọng khi quá trình phát triển phần mềm trở nên phức tạp với quy mô lớn. Bất kỳ công ty công nghệ nào muốn scale lên thì cần DevOps rất tốt, bạn không thể triển khai manual khi bạn chỉ có 1-2 project.
Tiki đã làm như thế nào để xây dựng một đội ngũ Engineer vững mạnh?
Process tuyển dụng của Tiki khá chặt chẽ vì Tiki mong muốn rằng mình có những ứng viên thật sự chất lượng và họ phải hiểu rằng chúng tôi rất nghiêm túc trước tài năng của họ. Nếu không tính vòng lọc hồ sơ thì sẽ có 4 vòng phỏng vấn chính, trong đó:
- 2 vòng phỏng vấn về problem-solving (xử lý vấn đề) dựa trên kiến thức về cấu trúc dữ liệu và giải thuật.
- 1 vòng về system design (thiết kế hệ thống).
- 1 vòng về culture fit văn hoá doanh nghiệp.
Đây là 4 vòng cơ bản, nếu 1 bạn pass được 4 vòng đó thì đủ tiêu chuẩn để làm việc tại Tiki. Phía Tiki quan tâm đến những ứng viên, đầu tiên là có background tốt (1) về những kiến thức về cấu trúc dữ liệu và giải thuật tốt – là những thứ quan trọng để có thể giải quyết những vấn đề của Tiki; (2) có khả năng xử lý vấn đề tốt, tức là bạn phải có những đề xuất giải pháp nhanh chóng khi có vấn đề phát sinh; (3) có những kỹ năng cơ bản của những engineer về lập trình và thiết kế hệ thống. Trong thực tiễn những điều này rất quan trọng và cũng rất hữu ích, khi bạn đối mặt với những công nghệ mới, nếu bạn học nhanh thì sẽ có nhiều thời gian để làm hơn.
Trong vòng 1 năm qua kể từ khi ứng dụng những quy trình hoạt động mới, Tiki có sự tăng trưởng kinh doanh cực kỳ nhanh và vượt trội – 2 đến 3 lần mỗi năm. Thế nhưng, Tiki có một hệ thống không tốt!
Gọi là “hấp dẫn” là vì, đó là 2 điều kiện mà tôi nghĩ rằng nó rất cần thiết đối với một bạn engineer trẻ, khao khát được học, được làm và chứng minh bản thân mình. Bởi vì khi bạn có một hệ thống không tốt mà hệ thống ấy lại tăng trưởng rất nhanh tức là bạn có cơ hội để làm rất nhiều thứ. Với mình thì đây là những điều hấp dẫn nhất đối với một bạn engineer. Và những ai đã vượt qua giai đoạn thử thách thì đều cảm thấy rất xứng đáng, vì các bạn có thể làm rất nhiều thứ, có thể cống hiến và góp sức cho những thứ mà có tầm ảnh hưởng rất lớn đến hệ thống và bộ máy Tiki.
Nỗi sợ của một người làm Architect tại một hệ thống lớn và tăng trưởng nhanh
Tùy vị trí mà mỗi người sẽ có những nỗi sợ khác nhau. Mình nghĩ rằng đối với những bạn engineer tại Tiki, các bạn cũng có áp lực giống như nhiều công ty khác – phải làm sao để hệ thống không chết. Khi các bạn engineer submit mã nguồn thì sẽ phải thận trọng, bảo đảm rằng nó không bị ảnh hưởng tiêu cực.
Áp lực thứ hai, cụ thể hơn là với cấp quản lý, công ty tăng trưởng rất nhanh, bạn cũng cần đưa ra những giải pháp nhanh chóng để làm sao không tạo ra những tình thế buộc bụng cho doanh nghiệp. Bạn cần giải quyết những vấn đề về kinh doanh một cách tốt nhất có thể để công ty tăng trưởng và mang lại doanh thu cho khách hàng.
TopDev TV là một kênh YouTube chuyên phỏng vấn các chuyên gia trong nhiều lĩnh vực khác nhau, chia sẻ về những kinh nghiệm, va vấp và những góc nhìn về việc ứng dụng công nghệ trong doanh nghiệp cùng nhiều nội dung hữu ích khác.
* Nguồn: TopDev Blog