thanhtv50 đã đăng lúc 09:41 - 02.10.2024
Ngày 7/10 vừa qua, Tổng công ty đã tổng kết kết quả hoạt động phong trào SKYT tại VDS trong giai đoạn từ tháng 08/2023 - hết sự kiện ngày 1/6/2024. Tại mỗi lĩnh vực Quản lý, Kĩ thuật và Kinh doanh, Hội đồng đã chọn ra 3 sáng kiến/ý tưởng xuất sắc nhất của từng lĩnh vực, và sáng kiến/ý tưởng xuất sắc của cả Tổng công ty trong giai đoạn vừa rồi.
1. Ý tưởng "Tích hợp công cụ tracking network request ngay trên ứng dụng di động để tối ưu việc debug, tái hiện lỗi, sửa lỗi, tối ưu hiệu năng" - Tác giả: danglv4, longth1
Tình trạng trước đây:
Hiện tại nếu khi ứng dụng thực hiện tính năng gặp lỗi (Có thể do mạng, sai tham số, sai định dạng trả về...) thì trên app sẽ show các lỗi chung chung. (Ví dụ: Đã có lỗi xảy ra. Vui lòng thử lại sau). Vậy nên muốn biết chính xác nguyên nhân lỗi cần thực hiện một số cách như : Check log trên server production (Có thể phải gửi sang VTNet xin log) -> Đợi 2-8h mới có kết quả. Nếu PO có account để tái hiện lỗi -> Cần sang team app -> Chuyển nhánh code tương ứng bản build bị lỗi -> Cắm thiết bị vào IDE, chạy lại theo test case lỗi và phân tích log để tìm hiểu nguyên nhân chính xác. Vì vậy mất nhiều thời gian và công sức, nguồn lực các đơn vị mới có thể điều tra chính xác lỗi.
Nội dung ý tưởng:
Triển khai công cụ theo dõi network request ngay trên ứng dụng giúp tối ưu quá trình tìm nguyên nhân lỗi, giảm bớt các bước, thời gian và nguồn lực cần thiết. Cụ thể: Có thể xem toàn bộ thông tin của 1 request như endpoint, params, http code, response, response time... ngay trên ứng dụng chỉ bằng 1 thao tác lắc giúp nhanh chóng khoanh vùng nguyên nhân lỗi; Có thể export thông tin request và chia sẻ dưới dạng CURL để dễ dàng tái hiện request; Có thể cấu hình môi trường, device trong danh sách được show log , tránh việc mất ATTT; Giúp so sánh thông tin request trên 2 hệ điều hành dễ dàng phát hiện lỗi không đồng nhất; Thao tác dễ dàng: Để xem log trên iOS chỉ cần lắc điện thoại, Android xem thông tin trên thanh thông báo của hệ thống; Hữu ích trong việc điều tra tính năng xử lý chậm (Kiểm tra gọi những API nào, thời gian trả về từng API...)
Khả năng áp dụng của ý tưởng: Có thể dễ dàng triển khai cho các ứng dụng di động trong tập đoàn.
Hiệu quả thu được:
Tối ưu giảm bớt các bước trong quá trình debug trên ứng dụng di động, tăng hiệu quả sản xuất phát triển phần mềm: Thay vì cần nhiều bước, nhiều đơn vị phối hợp, tốn nhiều thời gian (1-4h) thì chỉ cần 5 - 10 phút để biết nguyên nhân lỗi tại đâu. Giúp nhanh chóng khoanh vùng, phát hiện lỗi sai khác giữa 2 hệ điều hành khi compare thông tin request. Tối ưu việc điều tra hiệu năng ứng dụng, nhanh chóng khoanh vùng nguyên nhân.
2. Ý tưởng "Giải pháp quản lý lưu lượng truy cập ứng dụng, cân bằng tải trong Kubernetes với Istio mesh" - Tác giả: cuonghv24, phuochc
Tình trạng trước đây:
Nội dung ý tưởng:
Giải pháp sử dụng giải pháp Istio được phát triển bởi Google, IBM và Lyft, etc. và là một dự án của Cloud Native Computing Foundation (CNCF) cung cấp nền tảng cho phép: Giám sát các thông số về network, traffic của ứng dụng bao gồm số lượng request, lưu lượng, tỷ lệ mã lỗi đến và đi. Tính năng Tracing cho phép lan truyền header giữa các bản tin theo chuẩn OpenTelemetry, cho phép theo dõi, giám sát luồng dịch vụ. Hiển thị Topology toàn dịch vụ realtime. Cho phép sử dụng các protocol như GRPC/HTTP2, HTTP3 với đầy đủ tính năng cân bằng tải mà không cần thay đổi ứng dụng. Khai báo ứng dụng liên kết (MariaDB, S3, external services) vào mesh, enable tính năng cân bằng tải và thay đổi luồng traffic khi có lỗi xảy ra với backends.
Khả năng áp dụng của ý tưởng: Có khả năng áp dụng trên tất cả các hệ thống build trên nên tảng k8s.
Hiệu quả thu được:
Với việc áp dụng Istio mesh vào hệ thống đã xử lý được các rủi ro cấp thiết mà hệ thống VDS đang gặp phải trong quá trình phát triển và vận hành như sau: 1. Giúp áp dụng Gateway Cho phép kiểm soát chi tiết về cách thức lưu lượng truy cập vào và ra khỏi mesh, bao gồm cả HTTP, HTTPS, TCP, và gRPC. Góp phần giảm tỷ lệ lỗi timeout trong hệ thống 2. Giúp tăng khả năng Thu thập các số liệu chi tiết, log và trace từ data plane, cung cấp cái nhìn sâu sắc về hành vi của dịch vụ,Tích hợp với các công cụ tracing như Jaeger và Zipkin để hình dung luồng yêu cầu và xác định các nút thắt cổ chai hiệu suất. Tích hợp và cung cấp số liệu cho các công cụ giám sát như Prometheus, cho phép giám sát và cảnh báo hiệu quả. 3. Bảo mật giao tiếp giữa các dịch vụ bằng mTLS, đảm bảo tính toàn vẹn và bảo mật dữ liệu. 4. Cung cấp cơ chết kết nối GRPC cân bằng tải trực tiếp giữa các service trong cụm. loại bỏ việc phải lên ingress 1 node như hệ thống cũ.tránh gây down time hệ thống khi gặp sự cố với 1 node . Đồng thời cung cấp cơ chế bảo mật đường truyền mà không phải code thêm 5. Giải quyết vấn đề kết nối 1 chân, cung cấp thêm cơ chế cân bằng, tải tự động healthcheck cách ly khi 1 instance gặp vấn đề đồng thời giới hạn số lượng truy cập đến các hệ thống ngoài như haproxy, proxy, minio,các hệ thống service trên môi trường hạ tầng cũ,... đặc biệt không phải đưa việc xử lý trên về phía ứng dụng.
3. Ý tưởng "Giải pháp tự động hóa kiểm tra và bảo vệ tác động cho database với các tập lệnh DML (update, insert, delete) đảm bảo an toàn dữ liệu. (Undo SQL Statements)" - Tác giả: cuongth2, huynv60
Tình trạng trước đây:
Viettel đã từng gặp trường hợp khi thực thi tác động database update toàn bộ một trường về một giá trị làm sai lệch dữ liệu, xóa một phần dữ liệu sau một thời gian mới phát hiện. Nguyên nhân lỗi chủ quan là do nhân sự viết tập lệnh tác động viết sai hoặc thiếu điều kiện ràng buộc giới hạn dữ liệu cần tác động. Việc khôi phục thực hiện rất vất vả khi DBA phải đọc lại từ binlog (mariadb) hoặc archivelog (oracle db) thậm chí phải dựng lại DB khác từ bản backup vài ngày trước đó để lấy lại dữ liệu.
Nội dung ý tưởng:
Tạo ra các API Undo SQL Statement tích hợp vào công cụ tác động WebAdmin để sinh ra các tập lệnh rollback tự động, đảm bảo tính chính xác và bảo vệ an toàn dữ liệu cho database. Tạo ra các lệnh kiểm tra tự động đảm bảo các lệnh tác động đủ điều kiện thực thi. Công cụ sử dụng framework Flask (python) + docker để chạy: Khi thực hiện câu lệnh update --> tool sẽ tự động genrate những câu lệnh rollback insert lại data origin của những records đó. Khi thực hiện câu lệnh delete --> tool sẽ tự động generate ra những câu lệnh rollback cho phép insert lại những records đã bị xóa trước đó. Khi thực hiện câu lệnh insert --> tool sẽ sự động generate ra những câu lệnh delete all các bản ghi với được insert vào db Sau khi gen ra rollback SQL thì sẽ hiển thị và lưu lại. khi cần thiết sẽ thực hiện câu lệnh rollback cho tác động DB.
Khả năng áp dụng của ý tưởng: Áp dụng nâng cấp cho toàn bộ các công cụ thực hiện tác động database trong Tập đoàn.
Hiệu quả thu được:
Bảo vệ an toàn dữ liệu database tự động trước khi thực thi tác động. Việc rollback dữ liệu tác động khi có yêu cầu sẽ được thực hiện nhanh và chính xác vì giảm tính phụ thuộc vào con người. Giảm 50% khối lượng công việc của nhân sự PTSP khi tạo yêu cầu tác động DB mà không cần tạo lệnh rollback thủ công.