Tại Ting, chúng tôi không mua một giải pháp sẵn có mà thay vào đó, chúng tôi chọn xây dựng hệ thống từ đầu để đảm bảo được tính linh động và mở rộng về sau. Hệ thống của Ting cần hoạt động ổn định 24/7, đáp ứng được hàng triệu giao dịch mỗi ngày và dễ mở rộng. Trong bài viết này, chúng tôi sẽ giới thiệu cách chúng tôi đã xây dựng nên hệ thống Ting để đáp ứng được những yêu cầu này, sử dụng các công nghệ mã nguồn mở tiên tiến nhất hiện nay.
Với tính chất của một hệ thống ví điện tử, hệ thống Ting cần tích hợp với rất nhiều hệ thống ngân hàng, hệ thống đối tác, hệ thống thanh toán khác. Hệ thống Ting cũng cần đáp ứng được lượng giao dịch rất lớn tại mỗi thời điểm để đảm bảo các giao dịch của khách hàng và đối tác được hoạt động ổn định và xuyên suốt. Do đó, ngay từ những ngày đầu tiên, chúng tôi dành rất nhiều thời gian để phân tích, so sánh và lựa chọn các công nghệ để sử dụng trong quá trình phát triển phần mềm.
Cơ sở dữ liệu
Đối với chúng tôi, việc lựa chọn cơ sở dữ liệu là một trong những lựa chọn quan trọng nhất ảnh hưởng đến toàn bộ hệ thống và việc phát triển, mở rộng hệ thống về sau.
Với tinh thần mang lại một giải pháp tối ưu về chi phí cho người dùng bằng cách tối ưu chi phí vận hành của chính bản thân Ting, tiêu chí đầu tiên của chúng tôi là giải pháp cơ sở dữ liệu phải là một giải pháp mã nguồn mở.
Bên cạnh chi phí, cơ sở dữ liệu cần đáp ứng khả năng chịu tải và mở rộng cho khối lượng giao dịch cực lớn, trong khi vẫn đảm bảo hoạt động chính xác và ổn định. Cơ sở dữ liệu còn cần đáp ứng được khả năng chuyển đổi hệ thống dự phòng, sao lưu và phục hồi dữ liệu trong trường hợp xảy ra các rủi ro về sự cố thảm họa.
Sau quá trình phân tích, so sánh và tham khảo các hệ thống lớn trên thế giới, chúng tôi chọn MySQL làm cơ sở dữ liệu chính cho hệ thống. MySQL là một cơ sở dữ liệu có lịch sử lâu đời, đã được chứng minh năng lực qua hàng trăm ngàn hệ thống lớn trên thế giới về tính ổn định, bền bỉ và khả năng chịu tải lớn. MySQL cũng có cơ chế sao lưu và khôi phục dữ liệu hiệu quả và ổn định, cũng như cơ chế mã hóa dữ liệu an toàn, vốn rất quan trọng đối với một hệ thống thiên về xử lý giao dịch tài chính và lưu giữ thông tin của người dùng.
Bên cạnh MySQL, chúng tôi cũng sử dụng các giải pháp lưu trữ phù hợp khác cho các loại dữ liệu khác trong quá trình hệ thống vận hành, chẳng hạn như Redis. Ở Ting, chúng tôi không gò bó bản thân bởi một số ít công nghệ quen thuộc, thay vào đó, chúng tôi luôn linh động trong việc áp dụng các công nghệ mới, các công nghệ tiên tiến, các thư viện sẵn có phù hợp để giải quyết từng bài toán mà chúng tôi gặp phải trong quá trình xây dựng.
Flutter
Cho phần phát triển ứng dụng mobile, chúng tôi lựa chọn Flutter làm công nghệ chính. Flutter là một bộ phát triển phần mềm mã nguồn mở chuyên dùng cho việc xây dựng giao diện trên ứng dụng mobile, được tạo ra bởi Google.
Flutter hỗ trợ xây dựng ứng dụng trên Android và iOS sử dụng chung một mã nguồn, nhờ đó chúng tôi có thể đẩy nhanh gấp đôi việc phát triển ứng dụng, đưa tính năng mới đến người dùng nhanh hơn và nhất quán hơn. Khác với một số công nghệ khác sử dụng một mã nguồn cho hai hệ điều hành, ứng dụng được biên dịch từ Flutter là ứng dụng native, qua đó đảm bảo được khả năng hoạt động nhanh và mượt mà.
Trải qua 2 năm, Flutter ngày càng mạnh mẽ và ổn định nhờ vào sự phát triển tâm huyết của cộng đồng mã nguồn mở và Google. Chúng tôi cũng đã có những trải nghiệm rất tốt trong suốt quá trình sử dụng Flutter cho việc phát triển ứng dụng mobile của Ting.
Các công nghệ khác
Chúng tôi sử dụng Angular, một framework phát triển giao diện web mạnh mẽ cũng do Google phát triển. Angular giúp việc phát triển giao diện web nhanh và ổn định, rất phù hợp với việc phát triển các giao diện quản lý hệ thống và vận hành nội bộ của Ting.
Ngoài ra, chúng tôi cũng sử dụng rất nhiều công cụ mã nguồn mở khác trong toàn bộ hệ thống như Redis, Kafka, RabbitMQ, v.v..
Chúng tôi không tự giới hạn bản thân bởi một ngôn ngữ lập trình nào, mà chúng tôi luôn sẵn sàng áp dụng tất cả ngôn ngữ lập trình cũng như các framework và thư viện, nếu framework hay thư viện đó phù hợp để giải quyết bài toán của chúng tôi và đã được chứng minh bởi các hệ thống lớn khác trước đó.
Bảo mật
Chúng tôi rất tôn trọng quyền riêng tư dữ liệu của người dùng và chúng tôi nghiêm túc thực hiện điều này ngay từ ngày đầu tiên. Trong tất cả thiết kế hệ thống, chúng tôi đều nghiêm túc thực hiện việc mã hóa dữ liệu, đặc biệt là các dữ liệu riêng tư của người dùng. Chúng tôi cũng thường xuyên rà soát và kiểm định các máy chủ để đảm bảo không có dữ liệu ở dạng chưa mã hóa được lưu trữ ở bất kỳ đâu, dù là dữ liệu trong database hay dữ liệu file log. Hệ thống của Ting cũng đảm bảo tuân thủ các tiêu chuẩn cao nhất về an toàn bảo mật theo tiêu chuẩn PCI-DSS (viết tắt cho Payment Card Industry Data Security Standard) và cũng đã được cấp chứng chỉ PCI-DSS. Bạn có thể tìm hiểu thêm về tiêu chuẩn bảo mật này tại bài blog tiếp theo của chúng tôi nhé.
Chúng tôi hiểu rằng không có hệ thống nào là hoàn hảo và công tác bảo mật là một công tác trường kỳ, nhưng chúng tôi luôn đặt yếu tố bảo mật lên hàng đầu trong mọi quy trình và hệ thống, với mong muốn đem lại sự an toàn tối đa cho dữ liệu và tài khoản của người dùng.
Hy vọng bài viết này giúp bạn hình dung được phần nào cách chúng tôi xây dựng hệ thống. Bài viết này chỉ mới giới thiệu một cách rất tổng quan về hệ thống của chúng tôi và chúng tôi còn rất nhiều thứ muốn kể cho bạn trong những bài viết tiếp theo, như cách chúng tôi lưu trữ dữ liệu, cách chúng tôi quản lý an ninh hạ tầng, cách chúng tôi pha trộn giải pháp giữa điện toán đám mây và máy chủ vật lý trong quá trình triển khai hệ thống cũng như kết nối với các đối tác. Nếu bạn cảm thấy hứng thú với việc xây dựng những hệ thống như chúng tôi vừa kể ở trên, hãy cân nhắc nhập đội cùng với chúng tôi nhé!