Tại sao Performance Testing ngày càng trở nên quan trọng? (Phần 2)

III. Performance và sự chuyển mình của “APM”

1. Bắt đầu bằng “Application Performance Monitoring”

  • Băng qua sự phát triển của phần mềm, các nhà phát triển hiểu rõ tầm quan trọng của performance. Dưới thời đại IoT (Internet of Things), end user chưa bao giờ đứng trước nhiều sự lựa chọn như bây giờ. Hàng loạt các dịch vụ cạnh tranh nhau xuất hiện từng ngày thậm chí là từng giờ. Đứng trước hàng loạt sự lựa chọn, việc lựa chọn từ bỏ sử dụng một dịch vụ đã không còn là sự quan tâm lớn nhất của user như thời các ông lớn độc quyền những dịch vụ của mình. Một khách hàng thân thiết của một ngân hàng có thể sẽ từ bỏ sử dụng dịch vụ internet banking của ngân hàng đó chỉ vì sự chậm chạp của hệ thống hay việc khách hàng sẵn sàng từ chối mua hàng của một cửa hàng khi việc đặt hàng online của họ diễn ra chậm chạp.

  • Một hệ thống có nhiều tính năng hay, thiết kế đẹp được ra mắt nhưng bad performance sẽ khiến hệ thống đó bị thất bại hoàn toàn. Việc cải thiện được performance của hệ thống đang là thách thức sống còn của những nhà phát triển. Đứng trước những thách thức đó, yêu cầu của việc giám sát hiệu năng của hệ thống được đẩy lên cao hơn bao giờ hết. Do đó APM ra đời dưới cái tên “Application Performance Monitoring”.

3.jpg

  • Sự ra đời của APM giúp các nhà phát triển nắm rõ hơn được việc performance đang ở mức nào trong hệ thống của mình. APM giúp các nhà phát triển có cái nhìn tổng quan hơn về performance của ứng dụng khi có 1 người, 10 người, 100 người hoặc hàng triệu người cùng truy cập tại cùng một thời điểm sẽ như thế nào. Thông qua APM các nhà phát triển có thể biết được khi nào và tại sao ứng dụng của mình có vấn đề về performance, qua đó có thể đưa ra được giải pháp để giải quyết vấn đề nhức nhối bấy lâu nay.

  • APM ra đời giúp các nhà phát triển trả lời được những câu hỏi quan trọng trong việc duy trì và phát triển một sản phẩm như:

    • Ứng dụng có hoạt động ổn định?

    • Ảnh hưởng của bad performance trong ứng dụng có ảnh hưởng đến business hay không? Qua đó xác định được mức độ nghiêm trọng của bad performance gây ra?

    • Vấn đề về performance có ảnh hưởng nghiêm trọng tới khách hàng của mình hay không?

    • Vấn đề về performance ảnh hưởng đến toàn bộ khách hàng hay chỉ là bộ phận nhỏ?

    • Performance của ứng dụng của họ so với đối thủ là như thế nào?

  • Nhưng việc “Monitoring” chỉ có thể đưa ra được cái nhìn tổng quan về vấn đề chứ chưa thể đưa ra được cái nhìn chi tiết. Với những ứng dụng vừa và nhỏ như three-tier, client/server hoặc đơn giản như request/response web application, việc monitoring hoàn toàn có thể giúp cô lập dễ dàng vấn đề về performance. Như chúng ta đã tìm hiểu ở phần trước, ứng dụng càng ngày càng trở nên phức tạp. Hàng trăm thứ có thể được tích hợp với nhau. Hạ tầng càng ngày càng phát triển thêm nhiều tầng. Vấn đề có thể xảy ra ở bất cứ nơi đâu, từ server, network, firewall hoặc đơn giản là đến từ bên thứ ba. Do đó “Monitoring” không còn đáp ứng đầy đủ yêu cầu về tìm ra chính xác root cause của vấn đề. APM bây giờ trở thành “Application Performance Management”.

4.jpg

2. Tới Application Performance Management

  • Việc chuyển từ “Monitoring” sang “Management” là cả một bước tiến quan trọng của Performance Testing. Performance Testing giờ không còn đơn giản là giám sát xem performance issue xảy ra khi nào mà cần phải biết nó đến từ đâu. Hệ thống càng phức tạp thì việc biết được root cause của vấn đề càng trở nên quan trọng. Hãy thử tưởng tượng rằng developer sẽ không thể fix được hoàn toàn issue khi mà họ không biết được nguyên nhân gốc dẫn đến issue. Viêc chỉ ra mơ hồ rằng vấn đề đến từ việc hàng triệu người đặt mua cùng một thời điểm sẽ dẫn đến performance problem hoàn toàn không thể giúp được developer trong một mớ hỗn độn hàng tỉ thứ mà bất cứ nơi đâu đều có thể xảy ra vấn đề. Rõ ràng là chỉ “Monitoring” thì không đủ!

  • Vậy "Management" là gì và tại sao lại có ích trong trường hợp này? Khái niệm về management:

    • Management có nghĩa là ta phải nắm rõ được thậm chí là từng click chuột của end user. Tất cả các vấn đề nghiêm trọng của hệ thống đều đến từ end user behavior. Việc nắm rõ được chi tiết từng hành động, vị trí end user ở đâu, đang sử dụng mạng WAN, 3G, 4G hay LTE. End user sử dụng thiết bị nào giúp cho việc cô lập vấn đề dễ dàng hơn.

    • Management còn đồng nghĩa với việc trong mỗi cái click chuột của end user sẽ gọi đến bao nhiêu service, những service nào là cần thiết và những service nào là thừa.

    • Management cũng phải giúp chúng ta nắm rõ được vấn đề đến từ source code. Đây là vấn đề phổ biến nhưng lại rất khó nắm bắt và sửa chữa do sự phức tạp của hệ thống, việc sửa chữa một dòng code có thể kéo theo ảnh hưởng đến hàng trăm, thậm chí hàng ngàn dòng code khác.

    • Management là chúng ta phải chủ động tham gia vào quá trình phát triển của ứng dụng. Đưa performance management vào sớm nhất có thể trong SDLC. Việc management giúp chúng ta có thể nhanh chóng tìm được root cause do đó việc fix lỗi cũng như bảo trì trở nên đơn giản hơn bao giờ hết.

5.jpg


All Rights Reserved