기술 주제

성능 엔지니어링이란 무엇인가요?

전구에 초점을 맞춘 IT 품목의 일러스트레이션

개요

성능 엔지니어링은 사전 예방적이고 지속적인 엔드투엔드 애플리케이션 성능 테스트 및 모니터링입니다. 지속적인 피드백 루프를 통해 팀, 도구 및 프로세스 간의 원활한 협업을 가능하게 합니다. 여기에는 품질 보증을 담당하는 테스터뿐만 아니라 개발자, 성능 엔지니어, 제품 소유자, 비즈니스 분석가도 포함됩니다.

성능 엔지니어링은 개발자부터 성능 엔지니어까지 아우르는 적절한 크기의 도구를 활용하여 교대 좌측 성능 테스트와 교대 우측 애플리케이션 성능 모니터링을 가능하게 합니다. 성능 엔지니어링이 기존 성능 테스트에서 얼마나 크게 벗어났는지는 기존 성능 테스트에 대한 이해 없이는 알기 어렵습니다.

성능 엔지니어링

성능 테스트와 성능 엔지니어링의 차이점은 무엇인가요?

전통적인 성능 테스트는 사실상 성능 엔지니어링의 하위 집합입니다. 일반적으로 개발 후 품질 보증(QA) 주기의 일부로 한 번의 부하 테스트를 실행합니다. 성능 테스트에는 예상 워크로드에서 애플리케이션의 속도, 신뢰성, 확장성, 안정성, 응답 시간 및 리소스 사용량을 확인하는 작업이 포함됩니다. 성능 엔지니어링과 성능 테스트의 차이점을 살펴보기 전에 먼저 성능 테스트를 따로 분리하여 살펴보고 성능 테스트만으로는 더 이상 지속 가능하지 않은 이유에 대해 알아보겠습니다.

  • 첫째, 테스트를 개별적으로 보고 기능 테스트가 끝날 때만 시작되는 사후 고려 사항으로 취급합니다.
  • 둘째, 사일로에서 작업하면 프로젝트 하위 팀 간의 커뮤니케이션 격차가 커지고 고품질의 제품을 제공하는 데 필요한 협업이 이루어지지 않습니다.
  • 셋째, 성능 테스트가 시작될 무렵에는 이미 애플리케이션의 설계, 개발 및 홍보에 상당한 시간과 노력, 재정이 투입된 후입니다.
  • 넷째, 성능 테스트는 종종 사후 고려 사항으로 취급되어 출시 전 '완료' 기준에 포함되지 않습니다. 따라서 이 시점에서 비즈니스는 긴급하게 앱을 프로덕션에 적용해야 하며 지연이 발생하지 않기를 기대합니다. 이러한 상황에서 QA의 피드백은 릴리스 전에 완전히 수정하기에는 너무 늦게 발생합니다. 불가피하게 많은 수의 성능 문제가 일정에 맞추기 위해 불필요하게 프로덕션 환경으로 전달될 수밖에 없습니다. 프로덕션 환경에서 결함을 수정하는 것은 개발 초기에 수정하는 것보다 훨씬 더 많은 비용과 혼란을 초래합니다.
  • 다섯째, 기존의 성능 테스트는 워터폴 모델에는 완벽했을지 모르지만 오늘날의 데브옵스 중심 세계에서는 적합하지 않습니다. 데브옵스는 변경 사항이 시스템에 커밋되는 시점과 변경 사항이 프로덕션에 적용되는 시점 사이의 시간을 단축하여 새 릴리스의 실패율을 줄입니다. 지속적 통합 및 지속적 배포(CI/CD)는 소프트웨어가 수명 주기 내내 항상 릴리스 가능한 상태를 유지하도록 합니다. 또한 데브옵스는 이해관계자, 기능 및 도구 간의 엔드투엔드 협업을 지원하기 위해 조직을 재편하는 데 중점을 둡니다. 데브옵스의 신속한 배포 요구 사항을 충족하려면 소프트웨어 개발에는 보다 진화된 성능 테스트 접근 방식이 필요합니다. 이 새로운 접근 방식이 바로 소프트웨어 성능 엔지니어링입니다.

이제 성능 엔지니어링과 성능 테스트의 주요 차이점에 대해 자세히 알아보겠습니다.

  • 첫째, 성능 테스트는 애플리케이션의 부하 처리 및 응답성에 대한 품질 점검입니다. 시스템이 프로덕션 부하를 얼마나 잘 견디는지 확인하고 부하가 많은 상황에서 발생할 수 있는 문제를 예측합니다. 성능 엔지니어링은 처음부터 성능 메트릭을 염두에 두고 애플리케이션을 설계하고 개발 초기에 문제를 쉽게 발견할 수 있도록 지원합니다.
  • 둘째, 성능 테스트는 일반적으로 소프트웨어 개발이 완료될 때 수행되는 QA 프로세스입니다. 성능 엔지니어링은 설계부터 개발, 최종 사용자 경험에 이르기까지 소프트웨어 개발 주기의 모든 단계에 포함되는 지속적인 프로세스입니다.
  • 셋째, 성능 테스트는 QA 팀에서 수행하며 성능 엔지니어링에는 RND와 QA가 포함됩니다.

성능 엔지니어링 개념

다음 개념을 통해 DevOps와 성능 엔지니어링은 일관된 프로덕션 성능 결과를 제공하여 고객이 더욱 자신 있게 애플리케이션을 효율적으로 배포하고 사용자의 기대를 충족하는 고성능의 안정적인 소프트웨어를 출시할 수 있도록 지원합니다.

엔드투엔드 최적화

성능 엔지니어링은 지속적인 테스트 및 모니터링 프로세스를 통해 엔드투엔드 시스템 최적화를 제공합니다. 이를 통해 성능 및 부하 테스트를 개발 프로세스로 전환합니다. 이는 기능 테스트 가 안정화되고 코드가 릴리스된 후에 테스트를 수행하던 기존의 성능 테스트와는 다릅니다.

코드가 릴리스되면 성능 엔지니어링은 애플리케이션 성능 모니터링(APM) 도구를 활용하여 프로덕션 환경에서 앱을 추적합니다.

성과 이해관계자로 구성된 교차 기능 팀

성능 엔지니어링은 비즈니스 분석가부터 개발자까지 프로젝트 이해관계자 간의 협업을 가능하게 합니다. 고객 경험을 향상시키는 높은 성능 수준을 유지하고, 비즈니스 속도를 따라잡고, 엔드투엔드 성능을 관리하면 QA/성능 엔지니어뿐만 아니라 모든 사람이 제품 성능의 관리자가 될 수 있습니다. 방법은 다음과 같습니다.

우수 테스트 센터

테스트 우수 센터(CoE)는 신뢰할 수 있는 테스트 조언자이자 모범 사례의 관리자로서의 역할을 합니다. CoE는 다양한 비즈니스 단위, 다양한 테스트 방법(예: DevOps 및 애자일)을 지원하며 필요에 따라 성능 테스트 및 테스트 도구를 유연하게 추천할 수 있습니다. 더 나은 테스트 모델을 구축하고 테스트 품질을 개선하기 위해 CoE는 여러 비즈니스 부서에서 생성 및 수집된 테스트 데이터를 통합하고 재사용하는 단일 지점 역할을 합니다.

성능 엔지니어

성능 엔지니어는 개발 중인 모든 코드에 대한 전체적인 관점을 제공하여 성능 테스트 기준이 포괄적이고 큰 그림을 아우르며 개발 중인 모든 개별 코드를 고려할 수 있도록 합니다. 성능 엔지니어는 성능 테스트 도구의 주요 사용자이며 테스트 결과를 스크립팅, 설계, 실행 및 분석하는 데 있어 고도의 전문성을 갖추고 있습니다. 성능 엔지니어링은 성능 엔지니어가 개발 초기 단계에 참여하여 코드가 출시 준비가 된 것으로 간주되는 데 필요한 성능 메트릭과 시나리오를 제공할 수 있습니다. 초기 참여는 성능 엔지니어가 솔루션이 개발 초기에 설정한 성능 기대치를 충족하는지 확인할 수 있음을 의미합니다. 또한 아키텍처와 설계가 개발 전반에 걸쳐 일관성을 유지하고 있는지 확인합니다.

소프트웨어 개발자

개발자는 코딩에는 전문가이지만 기능 및 성능 테스트에는 소홀한 경우가 많습니다. 개발자는 통합 개발 환경(IDE)에서 작업하며 새로운 도구를 배우려는 성향이 거의 없이 선호하는 도구를 사용하는 경향이 있습니다. 성능 엔지니어링은 성능 테스트를 소프트웨어 개발자의 책임 영역으로 가져옵니다. 소프트웨어 개발자는 성능 엔지니어의 도움을 받아 코드를 작성하는 동안 성능 테스트를 실행할 수 있습니다. 개발자는 성능 테스트 기준을 통과하기 전에는 코드를 릴리스하지 않습니다.

개발자 테스터

기존 성능 테스트에서는 소프트웨어 개발자와 성능 엔지니어가 명확하게 구분되어 있기 때문에 개발 테스터는 존재하지 않았습니다. 성능 엔지니어링에서는 성능 엔지니어링 팀과 개발자 팀을 연결하는 이해관계자로 데브테스터가 등장합니다. 개발자 및 성능 엔지니어와 같은 수준의 전문 지식은 아니지만 탄탄한 코딩 및 테스트 기술을 보유함으로써 그 간극을 메웁니다. 테스터는 테스트를 신속하게 실행할 수 있으며 필요에 따라 다양한 도구를 사용할 수 있는 유연성이 개발자보다 훨씬 뛰어납니다.

비즈니스 분석가 및 애플리케이션 엔지니어

성능 엔지니어링은 테스트를 전환함으로써 비즈니스 분석가와 애플리케이션 엔지니어를 참여시킵니다. 이를 통해 사용자 경험의 품질을 정의하는 비즈니스 및 애플리케이션 성능 요구 사항이 성능 기준에 통합되도록 보장합니다. 이 두 역할은 프로덕션 환경에서 앱을 모니터링하여 항상 최고의 애플리케이션 성능을 보장합니다.


적합한 성능 엔지니어링 파트너 찾기

성능 엔지니어링은 소프트웨어 개발 환경과 이에 종사하는 모든 사람의 직무에 변화를 가져오고 있습니다. 그리고 이제 더 많은 역할이 관련되어 있기 때문에 프로세스를 간소화하기 위한 도구와 기술에 대한 필요성이 그 어느 때보다 커졌습니다. 성능 엔지니어링은 실시간 인사이트 및 분석과 함께 좌우, 상하 간 엔드투엔드 통합과 협업을 요구합니다. 기존의 성능 테스트 공급업체는 이러한 혼란스러운 변화의 물결에 적절히 대응하지 못합니다. 하지만 OpenText 은 테스트의 혼란을 엔지니어링된 질서로 전환하는 입증된 경험과 기술 솔루션을 보유하고 있습니다.

OpenText 성능 엔지니어링 개방형 아키텍처는 모든 개발 환경에서 모든 프로토콜과 애플리케이션 유형에 대한 테스트를 지원합니다. 개발자부터 비즈니스 분석가까지 모든 이해관계자가 다양한 공급업체 및 오픈 소스 도구를 사용할 수 있으므로 대규모로 완벽한 CI/CD 통합이 가능합니다. OpenText 도구 통합은 개발 대기 시간과 애플리케이션 제공 속도를 늦추는 테스트를 신속하게 제거할 수 있는 기능을 제공합니다. 이러한 통합을 통해 API, 네트워크 상태, 가상 서비스의 사실적인 시뮬레이션을 신속하게 생성할 수 있습니다. OpenText 성능 엔지니어링 솔루션은 기존 온프레미스 또는 클라우드 인프라를 기반으로 구축되며 자산 재사용을 촉진하여 기존 투자를 활용할 수 있도록 지원합니다. 이를 통해 기업 전반의 여러 애플리케이션에 대한 성능 테스트 수요를 충족하도록 신속하게 확장할 수 있습니다.

기존의 성능 테스트는 기능 테스트가 완료될 때까지 시작하지 않았고 성능 테스트가 끝날 때까지 결함 및 근본 원인을 파악하지 않았습니다. OpenText 성능 엔지니어링은 성능 테스트가 끝나기 전에도 실시간으로 근본 원인을 파악하기 위해 결함에 대한 지속적인 엔드투엔드 측정 및 분석을 수반합니다. OpenText 실시간 분석은 성능 엔지니어가 개발자에게 신속하게 피드백을 제공하여 개발 프로세스 초기에 문제 해결을 시작할 수 있도록 도와줍니다. 프로덕션 환경의 합성 모니터링과 실제 사용자 모니터링은 테스트를 통과하지 못해 다음 릴리스에서 수정해야 하는 성능 문제에 대한 인사이트를 제공합니다. 성능 관점에서 최종 사용자의 감정을 캡처하고 분석하면 개발자에게 보다 구체적인 피드백을 제공하여 더 나은 성능을 위해 애플리케이션을 최적화할 수 있습니다.

어떻게 도와드릴까요?

각주