2020년 및 향후 Performance관련 6가지 주요 트렌드

Updated:

아래 글은 테스트 자동화 전문 블로그인 Test Guild(https://testguild.com/)에 2020년 5월 21일에 게재된 “Six Top Trends for Performance in 2020 and Beyond”라는 글에 대해, 주요 키워드 중심으로 요약한 것입니다. 이 글의 저자인 Joe Colantonio는 Test Guild를 운영하고 있는 인기있는 테스트 전문 블로거로서, 상용 테스트 도구 및 오픈소스 도구에 대해 특화된 가이드를 제공하고 있습니다.

아래에 나열된 여러 트렌드들은, 기능테스트 자동화와 같이 다른 S/W 개발 활동에서부터 시작된 것이지만, 현재는 Performance Tesing 활동에서도 점차 따라잡기 시작하고 있습니다.

1. Shift from Performance Testing to Performance Engineering

지난 몇 년 동안 우리가 보아온 Quality Trends 중 가장 중요한 것은, 기존에는 단순히 Performance Testing만 수행해오던 것에서, 이제는 완전한 SDLC Performance Engineering Practice를 포괄하는 형태로 팀이 이동해가고 있다는 것입니다.

그러면, Performance Engineering이란 무엇일까요?

Performance Engineering은 조직이 ‘필수적인 프로세스’를 바라보는 방식에 있어서의 ‘Cultural Shift’를 말합니다. Performance Engineering은 조직 전체에서 품질과 성능을 구축하기 위한 수행 및 역량 모두를 포괄하고 있습니다.

“Effective Performance Engineering”의 저자인 Todd DeCapua는, Performance Engineering은 시스템의 모든 부분들이 어떻게 결합되는지 이해하고, 어떤 Metrics이 중요한지 파악하며, 첫 설계 단계부터 Performance Quality를 구축하는 것을 의미한다고 설명하고 있습니다.

Performance Testing Consultant이자 2020 PerfGuild 강연자인 Scott Moore는, “The days of testing performance into a product are over”라고 언급함으로써, 위에서 언급한 것과 유사한 신념을 표현한 바 있습니다. 뒤늦게 수행하고나서 다시 이전으로 되돌려 처리하려고 하는 것은 너무 많은 기술적 부채를 발생시키기 때문에 그 위험도가 너무나 큰 행위인 것입니다.

이것은 몇 년 전 기능 자동화에서 발생했던 것과 동일한 유형의 변화입니다. 한 사람이 자동화에 대한 책임을 지기 보다는, Sprint Team의 모든 사람들이 책임을 함께 지는 것입니다.

그러면, 회사가 Performance Engineering Culture로 전환하기 위해, 우리는 어떻게 도울 수 있을까요? 첫번째 단계가 기술적인 것이라고 생각할 수 도 있지만, 당장 실행 가능한 수많은 비기술적 조언들 중 하나는 MIP입니다. 성능이나 기타 품질 문제로 언제 어디서나 구현할 수 있는 한가지가 바로 “MIP(Mention in Passing, 지나가며 하는 말)”인 것입니다.

테스트 전문가인 Scott Barber는 그의 사무실을 지나가는 누구에게나 지나가는 말로(MIP) “How’s performance today?”라고 할 때가 있었다고 설명했습니다. 그 대상은 그의 프로젝트에 직접적으로 참여했든 아니든 누구든 될 수 있습니다. 사실상, 그는 건물에 있는 누구에게나 지나가는 말로 “How’s performance today?”라며 MIP를 했습니다. 그리고, 첫 주가 끝날 무렵, 그는 성능이 눈에띄게 향상되었다고 말했습니다.

물론, 이것은 시작에 불과합니다. 진정한 추진력은 Agile Team이 가능한 빠른 시점에 성능에 대해 생각하도록 하는 것입니다.

2. Shift Left Performance

기능테스트 자동화에 더 많이 참여하도록 유도하기 위한 목적으로, 개발자들이 일상적인 작업 흐름에서 사용하는것과 동일한 개발언어 및 도구를 기능 테스트에서 사용하도록 하는 것과 유사한 방법으로, Performance Testing 또한 SDLC의 초기 위치로 옮길 수 있습니다.

이러한 목적을 달성하기 위해, 개발자 친화적인 도구 및 언어를 사용하여 Performance Tests를 생성하는 트렌드가 생겼습니다.

이를 통해, Performance Tasks가 개발자의 현재 생태계에 적합하도록 지원할 수 있습니다. 또한, 개발환경에 친화적인 상용도구들은 개발자가 애플리케이션 코드를 다루는 것과 마찬가지로, Performance Testing 시나리오 및 테스트 케이스들을 다룰 수 있도록 도와줍니다. 이를 통해 Automated Performance Testing 작업을 SDLC 초기 단계로 전환할 수 있습니다.

3. Browser-Based Performance Testing

왜 Non-UI-based Protocol을 사용해서는 안되는지 그 이유가 궁금할지도 모르겠습니다. Angular 및 React와 같은 Modern JavaScript Front-End Frameworks은 프로토콜 레벨에서 성능 스크립트를 생성하는 것이 매우 어렵습니다. 이것은 90년대 중반부터 테스트 엔지니어들이 성능 테스트를 개발해온 전통적인 방식과 같은 형태입니다.

이러한 경우에는, 오래된 Client-Server Application Architecture에서 전형적으로 볼 수 있는 것처럼, UI와 서버간에 상호작용이 없습니다. 프로토콜 도구를 가지고, 트랜잭션을 캡쳐하기 위해 추가적인 스크립팅 및 프로그래밍을 수행해야만 합니다. 따라서, 스크립트를 설정하는 과정이 점점 더 까다로워질 수 밖에 없습니다.

Browser 기반으로 성능 스크립트 생성하는 것에 초점을 맞추게 되면, Protocol-based Recording Tool을 가지고 수작업 편집, Correlation 및 프로그래밍을 수행하는데 소모되던 시간들을 줄일 수 있게 됩니다.

또한, Browser를 사용하는 이러한 접근 방식은, 대부분의 사람들이 프로토콜이 아닌 Real Browser와 상호작용하는데 친숙하기 때문에, 더 많은 팀들이 Performance Activity에 참여하게 함으로써 ‘Shift-Left’하는데 도움을 줄 수 있게 됩니다.

4. Shift-Right AI Performance Engineering

AiOps라는 용어는 Jonathon Wright로부터 처음 들었습니다.

AiOps는 Functional Testing을 AI(Artificial Intelligence)로 확장하고, Performance Testing을 포함한 모든 Software Development Shift-Right Activities에 AI를 적용하는 것입니다.

비록 많은 회사들이 ‘Shift-Right’을 수행하기 시작했지만, 여전히 단순 분석에만 집중하는 경향을 보이고 있습니다 Jonathon Wright는 디지털 경험 분석이 매우 중요하다고 믿고 있지만, 우리는 웹페이지나 모바일 앱에만 초점을 맞추는 것을 멈출 필요가 있습니다. 우리는 전체적인 고객 여정에 대해 생각하기 시작할 필요가 있습니다.

Jonathon Wright는 2020 PerfGuild의 ‘Shift-Right Digital Experience Analytics’ 강연에서, 모든 오픈소스 도구를 사용한 Real-World Scenario에 대해 발표할 예정입니다.

이것은 상용환경에서 모니터링하는 업무를 예로 들 수 있는데, 모니터링한 정보를 가져온 후 상용환경에서 실제로 발생한 것에 대해 Performance Test Model을 자동적으로 생성하게 됩니다. 그런 다음, 모델에 기반하여 Performance Tests를 자동 생성하고, SDLC Pipeline에서 생산된 모든 정보들을 처음부터 끝까지 활용할 수 있게 됩니다.

또한, Pipeline에서는 인지하지 못할 수 있는 Key Insights를 얻기 위해 Machine Learning을 사용함으로써, 의사결정 정보를 제공받는데 도움을 줄 수 있습니다.

Performance Engineering 전문가인 James Pulley 또한 성능테스트에서 AI 및 Machine Learning Intelligence에 대한 탁월한 용도가 있다고 믿고 있습니다.

일반적으로, Performance Testing과 Performance Engineering 내부에서 수행하는 작업을 살펴보면, 그것은 Pattern-Based 입니다. 그리고, 오늘날 사용되는 Conventional AI는 Expert-System-Based라기 보다는 AI-based에 더 가깝습니다. 이 유형의 AI는 질문을 하지않고, 가중치를 할당합니다. 대신, 패턴을 보고 일치조건을 관찰하는 것처럼 행동합니다. 이것이 정상 컨디션인지 아니면 예외 상황인지, 그리고 예외 상황이라면, 다른 예외 패턴과 일치하는지를 살펴봅니다.

한편, Resource Utilization과 그 성격에 대해 논의할 때, AI는 매우 유용할 수 있습니다. AI가 로그를 통해 시스템의 동작을 살펴보고, “Hey, 우리 직원의 90%가 하는 일이 여기에 있었어!”라고 말하기에도 좋습니다.

AI는 실사용자가 상용환경에서 실제로 어떻게 행동하는지에 기반하여 Performance Scripts를 생성할 수 있습니다. 또한, 사용할 테스트 데이터를 생성하는데도 도움을 줄 수 있습니다. 이를 통해, 보다 현실적인 Performance Scenarios와 트랜잭션을 포함한 테스트를 생성하는데 도움을 얻을 수 있습니다.

5. Chaos Engineering

상용환경에서 모니터링하는 것도 훌륭하지만, 시스템이 오픈되고나서 발생하게 되는 예상치못한 상황에 대해서는 어떻게 계획해야 할까요?

COVID-19 pandemic이 우리에게 가르쳐준 것이 있다면, 그것은 우리의 S/W가 보다 탄력적인지 확인할 필요가 있다는 것입니다.

우리는 상용환경에서 대부분의 팀들이 예상하지 못했던 시나리오들이 발생하는 것을 종종 보아왔습니다. 그러면, 이러한 ‘Unknown Behavior’에 대해서는 어떻게 계획해야 할까요?

이러한 Chaos를 해결하는 가장 좋은 접근은, 선제적으로 스트레스 상황에서 시스템이 어떻게 반응하는지 테스트해보는 것입니다. 그렇게 되면, 장애가 고객에게 영향을 미치거나 시스템 중단으로 인해 발생할 수 있는 평판에 대한 손상 등이 발생하기 전에, 장애를 먼저 식별하고 수정할 수 있게 됩니다.

Chaos Engineering의 아이디어는 분산시스템에서 발생할 것으로 예상되었던 것들과, 실제로 발생하는 현실을 비교해보는 것입니다. Resilient Business Software Systems을 구축하는 방법을 배우기 위해서는, Chaos Test Tool을 사용함으로써 의도적으로 환경의 문제를 발생시켜 본 후, 예상한 바와 같이 실제로도 장애가 발생하는지 확인해보면 됩니다.

Chaos Engineering은 성장하는 영역이며, 시스템의 약점을 드러내는데 도움이 되는 사려깊고, 잘 계획된 실험을 사용함으로써 달성될 수 있습니다.

Gremlin의 Principal Site Reliability Engineer인 Tammy Butow는 Chaos Engineering은 시스템이 중단되기 전에 장애를 식별하는 체계적인 접근방식이라는 점에서, 예방의학(Preventative Medicine)과 같다고 이야기하고 있습니다.

6. Performance in CI/CD

Performance는 DevOps pipeline에 적합한 것일까요?

Nouvola에서 Co-Founder 및 CTO로 재직중인 Paola Rossaro는 성능테스트가 인수테스트의 일부가 되는 트렌드가 진행중이라고 믿고 있습니다.

자동화를 통해 상용환경을 안정적으로 재현해 놓는 것은 매우 중요합니다. 이를 통해, 우리는 이슈가 사용자에게 전달되기 전에, 신속한 피드백을 통해 문제가 해결할 수 있도록 지원할 수 있게 됩니다. 이것이 우리가 Continuous Testing이라고 부르는 것입니다.

Continuous Testing은 실제로 Continuous Integration 및 Continuous Delivery의 핵심요소이며 빠르게 테스트를 생성합니다. Testing과 Continuous Integration은 실제로 함께 진행됩니다. Continuous Delivery Process의 각 단계에는 그것과 관련된 Testing이 존재합니다. 이를 통해, 개발환경, 통합, 테스트 환경, 기능테스트, 성능테스트와 인수테스트가 수행되는 pre-Production 환경 및 상용환경에 이르기까지, 성능이 잘 작동되는지를 확인하기 위한 종합 모니터링, 실사용자 모니터링 및 일반 모니터링을 수행할 수 있습니다.

이상으로, Joe Colantonio가 자신의 블로그를 통해 공유한 ‘2020년과 그 이후의 Performance 관련 6가지 트렌드’에 대해 살펴 보았습니다. 블로그의 특성상, 상세한 내용이 기술되기 보다는, Global Market에서 현재 활발히 논의되고 있는 주요 주제들에 대한 가시성을 제공하는데 초점이 맞추어져 있는 글인 것 같습니다. 위에서 다루어진 6개의 키워드들 중 5개는 그래도 우리가 어느정도 들어왔던 내용이지만, 나머지 1개인 ‘Chaos Engineering’은 기존 성능테스트 영역에서는 잘 다루지 않았던 주제인 관계로, 다음 글에서는 해당 내용에 대한 기술동향 개요에 대해 한번 정리해 보도록 하겠습니다.

[END]