2020 State of Performance Engineering report: (5) Outlook on performance engineering

Updated:

Chapter 5: Outlook on performance engineering

몇달 전 또는 몇년 전 시작된 일부 트렌드들은 더욱 더 가속화될 전망입니다. 예를 들어, 구성원들이 집에서 효율적으로 일하는 것을 가능하게 하는 환경, 즉 Cloud 환경으로의 Migration 관점을 예로 들 수 있습니다. 우리는 설문 참여자들에게 향후 12개월 동안의 계획과 비전에 대한 그들의 관점에 대해 질의했습니다.

최소 50%는 3가지 핵심 영역 즉, 1) Cloud Testing Infrastructure, 2) the Integration of Performance and Functional Testing, 3) Automation of the Performance Testing Practice에 투자할 계획이 있다고 응답했습니다.

Sogeti

아직 Performance Testing에 집중할 준비가 되어있지 않은 일부 팀들은, 우선적으로 Functional Testing Practice의 개선과 같은 기본적인 과제부터 해결할 필요가 있습니다. 그럼에도 불구하고, 조직들은 Cloud로의 Migration과 Digital Migration의 속도를 동시에 높이고 있는 현실을 보여주고 있습니다. 이들은 책임(Responsibilities)과 실천(Practices)이라는 이질적인 것을 떠안고 가기 보다는, Transformation을 완료하기만을 원하고 있습니다. 여기에는 Engineering Teams과 연계된 두가지 요구가 있는 것으로 보입니다. 짧은 Agile Sprints에 적합하게 Performance Testing을 맞추는 것과, Performance Testing을 이들의 Build와 DevOps Pipelines으로 통합하는 것에 대한 요구입니다. 좋지 않은 상황에 놓여 있을 때, 이러한 요구는 팀이 비즈니스의 장애물로 간주될 위험에 놓여 있다는 것을 의미하기도 합니다.

Testing을 Cloud 환경으로 Migration하는 과정에서, 팀들은 자신의 프로젝트가 실패할 가능성이 있는 많은 경로들에 대해 인지하고 이해해야 할 필요가 있습니다. 예를 들어, Cloud Services에 대한 비용은 예상보다 10배 또는 100배까지도 초과될 수 있습니다. 한편, 환경 구성에 제한이 생긴다면, 이러한 상황은 테스트가 대표적이거나 신뢰할만하지 못하다는 것을 의미하게 될지도 모릅니다.

기존의 경험과 설문 인터뷰에 근거해볼 때, 우리는 Performance Testing이 새로운 Timescales(of hours and days)와 Practices(continuous builds and deployments) 내에서 적합하게 맞추어질 필요가 있다고 믿고 있습니다. 응답자의 37%는 Performance Testing 자동화 도구들의 보다 긴밀한 통합에 투자할 계획이라고 답변했습니다. 응답자의 29%는 Agile과 DevOps팀에 Performance Engineering Practices를 배포하는데 투자할 예정이라고 답변했습니다.

Are your tools still fit for purpose?

팀들과 조직은 현재와 미래의 요구에 적합한 소프트웨어 자동화도구가 어떤 것인지에 대해 다시 생각해보는 과정이 필요할지도 모릅니다. 이러한 요구들은 Cloud 환경에서의 소프트웨어의 실행, Performance와 Functional Testing의 통합, Performance Testing Practices의 자동화, 그리고 Agile과 DevOps팀에서의 Practices 배포 등을 포함합니다.

역사적으로, Performance Testing은 On-premises에서 이루어졌으며, 종종 개별 사용자 또는 특정 장비에 Lock이 걸린 상태로 자동화 도구를 사용해왔습니다. 이러한 형태의 자동화 도구들을 통해서는, 업무의 요구에 적합하게 맞추기가 점점 더 어려워지고 있습니다. 또한, Performance Testing을 자동화한다는 것은, 테스트의 설계와 수행, 자동화된 테스트 데이터 및 테스트 환경관리, Go/No Go 의사결정을 위한 분석, 그리고 Pipelines 및 Monitoring과의 통합하는 것 등을 훨씬 더 뛰어넘는 작업입니다.

기능 및 성능 테스트의 통합 관점에서, ‘mabl(https://www.mabl.com/)’과 같은 소프트웨어는 자동화된 CI/CD Pipeline의 일부로서 Performance Regression Testing에 도움을 줄 수 있습니다. 여기에서는, Performance Testing이 대규모 볼륨과 장기간 테스트로 진행되기 보다는, 보다 작은 규모에 대해 즉각적으로 수행될 가능성이 높습니다.

오늘날, Agile로 향하면서 DevOps를 적용하고 있는 조직의 맥락에서, Performance Engieering Tools에 대한 요구사항은 세가지의 주요 방향으로 이동하고 있습니다.

  • Performance가 모두의 책임이 되어감에 따라, 자동화 도구는 Performance Engineering에 참여하는 모든 구성원에게 적합할 필요가 있습니다. 개발자들은 API 또는 Microservice Level에서 ‘Test as Code’를 구현하는 것이 권장되고 있습니다. QA팀은 복잡한 End-to-end Performance Tests 조차도 Low Code Testing Tools을 사용할 수 있습니다.
  • Modern Tools는 협업적인 구조일 필요가 있으며, Performance Engineering의 Global Approach를 지원할 수 있어야 합니다. 팀들은 테스트 자산, 결과 및 인프라를 공유할 수 있어야 합니다.
  • Automation은 Delivery를 가속화하기 위한 핵심 요소입니다. Modern Tooling과 함께, Automation은 Performance Testing Process의 모든 단계에서 발생할 수 있습니다. 현재, 테스트 설계와 유지보수의 일부는 자동화될 수 있으며, 우리는 이러한 작업들이 미래에는 보다 더 자동화될 것이라고 기대하고 있습니다. 테스트 실행시간은 CI/CD Integration과 함께 완전히 자동화될 수 있습니다. Test Analysis와 Go/No-go Decisions의 일부 측면은 현재 자동화되고 있습니다. AI(Artificial Intelligence)와 ML(Machine Learning)은 엔지니어들이 Performance Testing을 이들의 소프트웨어 개발 체인으로 포함시키기 위해 더 큰 자동화 역량을 제공해야 합니다.

현재, 상용전후 환경은 완전히 일치할 필요가 없습니다. 이들은 서로 다른 팀들이 실행하고 관리할 수도 있습니다. 기술이 많은 것들을 약속하지만, 여기에는 많은 교육, 새로운 프로세스, 그리고 Good Practices들이 구축될 필요가 있습니다.

우리는 구성원들에게 슬라이드와 이론만을 가지고 교육할 수는 없습니다. 구성원들은 관련된 경험을 획득해오면서 생존하고 있는 실무전문가(Practitioners)들로부터 직접 이야기를 들을 필요가 있습니다. Top-down Support와 Leadership은 학습과 교육을 촉진시키는데 도움을 줄 수 있습니다. 참가자들은 Performance Engineering에서 어떤 업무적인 책임을 가지고 있는지, 그리고 KPI(Key Performance Indicators)는 무엇인지에 대해 식별할 필요가 있습니다.

What limits your team’s abilities to improve practices?

우리의 경험상, Performance Testing은 통합적으로 그리고 완전히 자동화된 상태로 수행되기 보다는, 주로 독립적으로 그리고 수작업으로 수행되고 있으며, 많은 팀들이 여러 활동면에서 여전히 초기 또는 중간단계에 머물러 있음을 알 수 있습니다. Automation은 진행중이지만 아직 주류(Mainstream)는 아닙니다. 또한, 점점 더 비전문가가 작업을 수행할 것으로 예상되기 때문에, System Performance에 대한 책임이 희석되고 소멸될 실제적인 위험이 존재합니다. 함께 일하는 동료들(Colleagues and Peers)이 Performance Testing의 관점으로 수행한 작업 결과에 대해서, 팀에서는 얼마나 많이 신뢰할 수 있을까요?

많은 팀들이 현재 과도기에 있으며, 팀과 팀 구성원들이 집에서 원격으로 작업을 수행하는 방법에 대해 여전히 배우고 있는 중입니다. Distributed Working Practices을 가진 Hybrid Model에서 작업이 가능하도록 구성원의 역량을 가속화하는 것은, 팀 차원에서 기법과 그 성과를 개선하는 능력을 확보할 수 있도록 도와줍니다.

일부 회사에서 잘 작동하고 있는 접근방법 중 하나는, 혁신적이고 전략적인 실험을 수행하는 소규모 팀(a Small Team Champions Innovative and Strategic Experiments)을 운영하는 것입니다. 이들은 작고, 독립적이며, 의사결정과 평가를 빠르게 수행할 수 있고, 학습을 극대화할 수 있습니다. 이들의 역할은 개척자(Pathfinders)가 되는 것입니다. 이들은 부적합한 경로들을 많이 발견할 지도 모르지만, 빠르게 평가하고 폐기할 수 있습니다. 일단 이들이 생산적인 경로를 발견하고 나면, 조직 내의 구성원들이 이를 사용할 수 있도록 도울 수 있습니다. 요약하면, 이들은 Performance Testing Practices의 긍정적인 개선을 입증하기 위한 실험의 관점에서, 어떤 것들이 가능한 것인지 볼 수 있습니다.

Being effective during a crisis

혁신적이고 적응력있는 기업들은 다양한 계획을 가속화하고 있으며, 일부는 그들의 비즈니스 자체를 변화시키고 있습니다. 예를 들어, 많은 회사들이 고객에게 서비스를 제공하기 위해, ‘Streamlined and Optimised Online Digital Channel’을 구축해왔습니다. 이들의 비즈니스에 있어 이러한 채널의 ‘Excellent Performances’는 필수적이기 때문에, 이들은 Performance Testing에 적극적으로 참여하면서 그들의 Practices를 개선하고 있습니다. 주요 아시아 항공사를 포함한 다른 회사들은, 테스트를 가속화하는데 따른 ROI(return on investment)를 검토했습니다. 많은 항공기들의 발이 공항에 묶여있는 동안, 이들은 핵심 비즈니스에 부정적인 영향을 미칠 위험을 최소화하는 작업을 가속화함으로써, 매우 강력한 투자 회수를 실현하였습니다. 이들은 현재 Transformation Projects를 진행하지 않고 유예중인 경쟁사들보다 더 성장할 수 있는 훨씬 더 좋은 위치로 이동한 상태입니다.

수백만명의 사람들이 COVID-19 Pandemic에 의해 집에 갇혀 지내고 있으며, 이들 중 일부는 일상 소득의 대부분을 잃었습니다. 하지만, 이들은 은행, 보험 그리고 전기와 같은 유틸리티 등이 여전히 필요합니다. 이들은 또한, 여러 측면에서 전통적인 공급자만큼이나 중요한 네트워크 연결 및 스트리밍 서비스에 의존적입니다. 이러한 비즈니스의 경우, 디지털 관계의 품질(the Quality of Digital Relationships)이 무엇보다 중요합니다. 이들이 구축하는 브랜드 경험은 전략적이어야 하는데, 만약 그렇지 않다면 고객들은 가능한 빠르게 경쟁사 서비스로 옮기게 될 것이고, 이들이 다시 돌아올 가능성은 거의 없기 때문입니다.

기업은 자신들이 사용하는 네트워크와 Cloud 서비스의 성능과 신뢰성에 대해, 공급자들이 잘 관리해 줄 것을 점점 더 기대하게 될 것입니다. Cloud 인프라 공급자는 특정 수준의 지원을 제공하는 반면, 비즈니스의 특정 요구사항이나 성능 우선순위에 대해서는 잘 모릅니다. 우리는 Cloud 및 Connectivity Services에 대해, 그리고 팀들이 원하는대로 제품의 다양한 기능들을 구성하여 사용할 수 있게 하는 자동화 도구에 대해, Mix-and-match Approach를 보게 될 가능성이 큽니다. Performance Testing은 시스템과 자동화 도구를 빠르고 효과적으로 구성하고, 그 조합을 테스트할 수 있도록 적절하게 조정될 필요가 있습니다.

Sogeti

Question 16에서 다루고 있는, Application Performance를 비즈니스 성과와 연계하는 것에 대한 첫번째 주제는 이미 앞서 다룬바 있으며, 기업들은 향후 12개월 안에 투자를 계속할 것을 약속하고 있습니다. 여기에는 개선을 위한 많은 영역들이 있는데, 예를 들어, 비즈니스 성과와 연관된 핵심 지표를 상용환경으로부터 식별하는 것 등과 같은 영역에 있어서는, AI(Artificial Intelligence)가 도움을 줄 수 있습니다.

자동 완성이 가능한 테스트 선정 및 최적화는, 우선순위를 가지는 몇가지 기반들에 의존적입니다. 여기에는, 상용환경, 핵심 거래, 그리고 사용자 여정에서의 실 사용자 행동의 식별과 분석이 포함되어야 합니다. 또한, 어떤 테스트를 우선할지 결정하기 위해서는, 상용환경과 이전에 수행한 테스트 관점에서의 데이터가 필요합니다. 다음 문제로는, 이러한 테스트를 어떻게 실행할지에 대한 것입니다. 전체적인 End-to-end Testing Process가 자동화되고, 기능화되고, 유연성을 가질수록, 테스트의 최적화 및 튜닝 잠재력은 더욱 커지게 됩니다. 이것은 Zero-touch Performance Testing의 개념으로 이어집니다.

Zero-touch는, 현재 Performance Testing이 일반적으로 수행되는 방식과 커다란 차이를 보이는 것으로, 테스트에 있어 사람의 필요를 제거하는 것을 이상적인 목표로 합니다. 중간 단계(Intermediate Step)는 수작업으로 수행되는 핵심 작업들의 빈도와 기간을 줄이기 위한 방법을 찾는 것입니다. 이러한 작업은 보통 테스트 스크립트를 수작업으로 개정하고 시행착오를 거치는 과정에 필요합니다. Zero-touch Performance Testing은 많고 다양한 Human Interfaces를 다룰 필요가 없는, APIs 및 Machine-to-machine Applications에서 처음 나타날 가능성이 있습니다.

해당 분야의 전문가들과 논의하는 동안 확인된 핵심 관찰사항 중 하나는, Performance Testing에서의 발전을 고려하는 기업들의 의욕과, 현재 이들이 처한 현실간의 격차입니다. 교육은 이러한 개념을 적용하기 위한 기업의 Commitment가 구체적인 이해로 전환되도록 돕는데 필수적인 것으로, 실용적이고 생산적으로 만드는데 깊게 관여합니다.

자동화 도구 업체와 기업들은 Zero-touch와 Predictive Test Selection and Optimisation과 같은 보다 진보된 몇가지 주제들에 대해, 여전히 연구하고 PoC(proof-of-concept)를 수행하는 단계에 있습니다. 이러한 트렌드와 커다란 잠재력이 성공하기 위해서는, 기업들이 Shiftleft,커뮤니케이션 개선, 팀과 데이터의 사일로 해체 등과 같은 기본적인 것을 수행하는 데 집중해야 합니다.

Sogeti

51% believe centres of excellence will disappear.

확실히, Performance Testing이 고도로 중앙 집중화되어 있는 경우에는, 더 빠르게 나아가기는 어렵습니다. 그러나, Performance Engineering의 깊이와 너비(Depth and Breadth)에 집중하는 핵심 조직 내 구성원들의 위치와 역할은 여전히 존재하고 있습니다.

Microservices와 Cloud Elastic Computing으로 이동하는 것이, 마치 Performance Testing은 더 이상 필요가 없다라는 의미처럼 오해하는 경우가 있는 것 같습니다. 이에 대해 한 전문가는 다음과 같이 이야기했습니다. “둘 다 영향력이 큽니다. 그런데, 당신의 월말 청구서는 확인해 보셨나요?” 우리는 Monolithic Systems에서 분산화된, 종종 여러 회사가 혼재되어 제공하는 느슨하게 결합된 아키텍처(loosely coupled architectures)로 이동하고 있습니다. Performance Engineering은 그 어느때보다 더 필요성이 커지고 있습니다. 예를들어, Third-party Services를 사용하는 경우에 스스로 모든 것을 테스트할 수 없을 때, 성능 문제를 해결하는 방법을 배우는 것이 실제적인 첫번째 과제가 될 수 있습니다. Performance Testing과 Performance Engineering의 미래는, 전통적인 스크립팅 및 분석으로부터 Network, Cloud Architecture 및 AI를 이해하는 것으로 변화될 것입니다.

AI를 어떻게 테스트 하는지에 대해 궁금해할 수 도 있는데, 우리는 수행하는 방법에 대해 찾게 될 것입니다. 몇년 전만 해도 모바일은 Alien과 유사하게 보였지만, 현재에는 업계에서 잘 이해하고 있습니다. 하지만, 모바일과 AI를 테스트하는 데에는 중요한 차이점이 있습니다. 예를 들어, AI가 올바른지 그리고 편파적이지 않은지를 결정하는 능력은 훨씬 더 미묘하고 복잡합니다. 답변이 참/거짓만으로 이루어질 수는 없습니다.

아마도 가장 큰 도전 중 하나는, Performance Engineering에 대한 현재와 미래의 요구를 만족시키기 위해 학습하고 교육하는 것일 지도 모릅니다. 이용 가능한 대학교 과정이 별로 없는 편이고, 특정 소프트웨어 자동화 도구를 배우는 수준을 넘어서는, 상업적인 또는 실무적인 교육 과정을 제공하는 곳도 부족합니다. Netflix의 Chaos Engineering과 같은 Industry Practice와 Opensource Projects들이 이러한 방향성을 현재 이끌어가고 있습니다.

그동안 우리가 살펴본 바와 같이, 응답자들은 COVID-19 Pandemic과 위기 상황이 가지는 광범위한 영향에 대해 주목했습니다. 대다수는 배포, 채용, 성능개선 활동, 그리고 대외 지출을 멈췄습니다. 그렇다 하더라도, 제공하는 서비스의 변화를 빠르고 효과적으로 검증하고, 새로운 Digital Services의 성능을 평가하고자 하는 수요는 대단히 큽니다. 우리 그룹 내 전문가들의 경험을 통해 볼 때, 이러한 수치들은 산업 부문별로 다르게 나타나고 있는데, 호텔과 항공을 포함한 일부 부문은 대부분 중단되었지만, Healthcare, Delivery Services 그리고 Telecoms을 포함한 다른 부문들은 소프트웨어 배포의 빈도가 보다 가속화되었습니다. 아마도 이들의 제품과 서비스에 대한 수요가 증가된 것에 대처하기 위한 것으로 보입니다.

Pandemic 이후로 우리의 업무 방식들이 어디서 어떻게 변화해왔는지에 대해서는, 대다수의 구성원들이 직접 경험을 통해 알고 있는 바와 같이, 우리들 중 많은 이들이 집에서 일하면서 인터넷을 통해 온라인으로 작업을 완료하고 있습니다. 실제로, 이번 전체 보고서는 대면 회의 없이 원격으로만 작성되었습니다. 커뮤니케이션 및 협업 자동화 도구의 Performance는 조직(및 참여자)에게 점점 더 중요해지고 있으며, 새로운 요구사항과 함께 추가적인 제약도 가져오고 있습니다. 우리가 앞으로 수행하는 작업의 일부는, 이러한 자동화 도구들의 Performance를 확인하고, 새로운 팀의 Distributions과 Working Practices를 지원하는 것을 돕기위한 방향을 찾아가는 것이 될 수도 있습니다.

[끝]

Source: https://www.us.sogeti.com/explore/research/reports/state-of-performance-engineering/