ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 마이크로서비스를 어떻게 평가할 것인가?(문헌 연구를 기반으로) (1편)
    Application/[Modernization] 2024. 5. 7. 01:29

    마이크로서비스 개발이 증가함에 따라 품질 평가에 대한 관심이 높아졌다. 국내에서도 마이크로서비스 개발이 보편적이지만, 마이크로서비스로 개발 이후 이에 대한 평가는 아직 미흡한 것이 현실이다. 이 글에서는 마이크로서비스 품질을 평가하기 위해 어떤 연구들이 있었는지 검토한  " Research Opportunities in Microservices Quality Assessment: A Systematic Literature Review" 논문을 통해 알아본다.

    이 논문의 저자는 ‘Tapia V.C’, ‘Gaona C.M.’이며 ‘Journal of Advances in Information Technology’에 2023년 게재되었다.  https://www.scopus.com/inward/record.uri?eid=2-s2.0-85175422540&doi=10.12720%2fjait.14.5.991-1002&partnerID=40&md5=ff58f786e939166769b9ae93be39129a

    에서 확인할 수 있다.

     

    이 논문에서는 2017년 이후 발표된 논문중에서 의미있는 논문을 조사하여 정리했다.

    체계적인 문헌 검토(LRS)를 통해 5가지 연구 질문을 정의하고 이 대한 답을 제시하였다.

    • RQ1: 마이크로서비스에 적용할 수 있는 품질 속성은 무엇인가?
    • RQ2: 마이크로서비스에 적용할 수 있는 품질 지표에는 어떤 것이 있나?
    • RQ3: 마이크로서비스 품질 평가에서 어떤 문제가 확인되었나?
    • RQ4: 가장 많이 사용되는 마이크로서비스 평가 도구는 무엇인가? 
    • RQ5: 그 도구에서는 어떤 메트릭을 사용하나?

     

    본격적으로 들어가기 전에 개념에 대해 정리한다.

     

    마이크로서비스 기반 애플리케이션

    마이크로서비스 기반 애플리케이션은 소프트웨어 개발에 대한 아키텍처와 조직적 접근 방식으로, 애플리케이션이 RESTful 또는 RPC 기반 API와 경량 프로토콜을 통해 통신하는 소규모 독립 서비스로 구성된다.

    마이크로서비스는 기능을 제공하기 위해 함께 작동하는 독립된 서비스들의 모음이다. 현재 마이크로서비스를 구축하는 데는 여러 가지 옵션이 있으며, 그 중 일부는 패턴을 기반으로 한다. 마이크로서비스 아키텍처는 독립적으로 작동하고 이상적으로는 낮은 결합 (마이크로서비스 간의 독립성, 즉 서로의 기능을 변경하지 않고 자율적으로 작동할 수 있는)을 가지며 가벼운 서비스를 제공하는 상호 관련된 애플리케이션을 만들기 위한 소프트웨어 개발 기법이다. 이런 애플리케이션 구성 방법은 각 서비스가 서로 다른 물리적 인프라에 속하는 서로 다른 실행 환경에서 구현되기 때문에 클라우드의 분산 아키텍처에 이상적으로 적합하다. 마이크로서비스 개념의 근거는 복잡성을 줄이기 위해 작은 작업을 수행하는 것입니다. 이 아키텍처에서는 여러 서비스가 서로 상호 작용한다. 마이크로서비스의 주요 특징으로는 유지보수성, 진화 가능성, 독립적인 배포, 단일 서비스로서의 저렴한 비용, 개선 및 시장 출시 시간 단축 등이 있다.

    소프트웨어 품질

    소프트웨어 품질은 제품 기능의 성능과 사용자의 명시적, 그리고 암묵적 요구를 충족하는 능력을 결정한다. 효과적인 개발 프로세스를 통해 유용한 제품을 얻을 수 있으며, 제품을 생산하고 관리하는 사람들에게 측정 가능한 가치를 제공한다.

    품질 측정에는 SQuaRE(시스템 및 소프트웨어 품질 요구사항 및 평가)로 알려진 ISO/IEC 25000 표준 제품군이 사용된다. SQuaRE는 소프트웨어 제품의 품질을 평가하기 위한 공통 프레임워크를 만드는 것을 목표로 하는 일련의 규칙으로, 이전 표준, 특히 ISO/IEC 9126 및 ISO/IEC 14598의 발전에서 비롯된 것이다.

    품질은 지속성을 평가하는 메트릭을 사용하여 품질 속성(성능, 테스트 가능성, 보안 및 가용성)으로 정의된다. 

    품질 속성

    이는 시스템의 런타임 동작, 디자인 및 사용자 경험에 영향을 미치는 일반적인 요소이다. 이런 속성은 시스템이 구축된 환경에서 시스템의 목적을 설명한다. 기술적 관점에서 품질 속성은 중요한 아키텍처 및 디자인 결정을 내리는 데 영향을 미친다. 품질 속성은 두 가지 유형으로 분류되는데, 첫 번째 유형에서는 품질 속성이 몇 가지 특정 요구 사항에 매핑되고, 두 번째 유형에서는 품질 속성이 특정 기능 요구 사항에는 매핑되지 않지만 모든 기능 요구 사항에 영향을 준다. 

    ISO 25000은 기능성, 성능 효율성, 호환성, 사용성, 신뢰성, 보안성, 유지보수성, 이식성 등의 품질 속성을 의미한다.

    품질 속성은 기능을 결정하지 않는 시스템의 속성을 나타낸다. 그렇지 않으면 시스템이 지원해야 하는 품질과 특성을 정의한다. 일반적으로 측정을 용이하게 하기 위해 하위 속성으로 나뉜다. 예를 들어, 접근성은 이해관계자의 요구 만족도와 시스템의 성공 정도를 파악하는 사용성의 하위 속성이다.

    소프트웨어 엔지니어링에서 측정(measurement)은 품질 특성을 평가하고 목표를 설정하는 데 매우 중요하다. 측정은 특정 척도로 특성을 정량화하는 논리적 순서로 정의되며, 측정 함수 또는 알고리즘은 품질 측정 요소를 결합할 수 있다. 그러나 아키텍처 측정 프로세스에서는 몇 가지 중요한 설계 방법이 생략되어 왔다. 

    소프트웨어 품질 측정의 주요 목적은 경영진의 개발 및 유지 관리 모니터링 및 제어를 지원하고, 요구사항 준수 여부를 관찰하며, 개선을 위한 데이터 소스로 활용하는 것이다. 일부 품질 속성은 크기, 복잡성, 결합 및 응집력과 같은 아키텍처 특성을 사용하여 측정할 수 있다. 이러한 측정은 IEC 25023과 같은 표준에 의해 정의된다.

    마이크로서비스의 품질 속성

    아키텍처 패턴을 연구한 Valdivia 에 따르면, 문헌에서 확인된 마이크로서비스의 품질 속성은 유지보수성, 신뢰성, 보안, 성능, 호환성 및 이식성이다. 이는 측정 가능한 비기능적 요구 사항으로, 사용자 만족 수준을 결정하는 데 목적이 있다. 마찬가지로 Richardson은 마이크로서비스는 유지보수가 가능하고, 테스트가 가능하며, 결합이 가능하고, 독립적으로 구현할 수 있어야 하며, 소규모 팀에서 개발할 수 있어야 한다고 말했다. 마지막으로 Osses 은 체계적인 문헌 검토를 바탕으로 44개의 아키텍처 패턴과 5가지 품질 속성(확장성, 유연성, 테스트 가능성, 성능, 탄력성)을 도출한 탐색적 연구를 설명했는데, 이는 마이크로서비스의 아키텍처 패턴 및 전술(tactics) 대부분과 관련되어 있다.

     

    품질 메트릭

    메트릭은 품질 속성의 존재 정도를 평가하는 것으로, 소프트웨어 실행에 의존하지 않는 경우 내부(정적) 또는 실행 중인 소프트웨어에 적용되는 경우 외부(동적)일 수 있으며, 측정값으로 수치를 제공하여 속성을 정량화할 수 있다.

    Selmadji 와 Seriai 은 표 I에 제시된 정적 및 동적 분석에 따라 분류된 일련의 품질 평가 기준을 결정했다.

     

    정적 분석 동적 분석
    세분성 실행 비용
    LOC 응답 시간
    개방형 인터페이스 가용성
    높은 응집력 Succ. Exec. Rate
    느슨한 커플링
     
     
     
     
     
     
     
     
     
     
      
    사용 빈도
    확장성
    독립성
    유지 관리 가능성
    배포
    Health 관리
    모듈화
    관리 용이성
    성능
    재사용 가능성
    기술. 이질성
    민첩성
    보안
    로드 밸런싱
    Org. 정렬

    표 I. 분석 유형별 품질 평가 지표 [5]

     

    다음 편에서는 위의 5가지 질문에 대한 답을 어떻게 했는지 정리해 본다.

     

    댓글