[논문 리뷰] The Impact of Auto-Refactoring Code Smells on the Resource Utilization of Cloud Software
이 연구는 오픈스택에 배포된 여섯 개의 오픈소스 SaaS 애플리케이션에서 고도의 자동 리팩터링이 CPU 및 메모리 사용량에 미치는 영향을 평가한다. 고전적인 일곱 가지 코드 냄새(하나의 클래스, 기능에 대한 과도한 관심, 형식 확인, 사이클릭 종속성, 총알 수술, 하나의 메서드, 스파aghetti 코드)를 대상으로 JDeodrant와 JSparrow 등의 도구를 사용하여 분석한 결과, 하나의 클래스, 기능에 대한 과도한 관심, 하나의 메서드 냄새의 리팩터링은 CPU 사용량(+14.8%)과 메모리 사용량(OneDataShare에서 최대 88.1%)을 크게 증가시키는 것으로 나타났다. 반면 다른 냄새들은 자원 소비를 감소시키며, 이는 일부 자동 리팩터링이 클라우드 자원 효율성에 오히려 악영향을 줄 수 있음을 시사한다.
Cloud-based software-as-a-service (SaaS) have gained popularity due to their low cost and elasticity. However, like other software, SaaS applications suffer from code smells, which can drastically affect functionality and resource usage. Code smell is any design in the source code that indicates a deeper problem. The software community deploys automated refactoring to eliminate smells which can improve performance and also decrease the usage of critical resources. However, studies that analyze the impact of automatic refactoring smells in SaaS on resources such as CPU and memory have been conducted to a limited extent. Here, we aim to fill that gap and study the impact on resource usage of SaaS applications due to automatic refactoring of seven classic code smells: god class, feature envy, type checking, cyclic dependency, shotgun surgery, god method, and spaghetti code. We specified six real-life SaaS applications from Github called Zimbra, OneDataShare, GraphHopper, Hadoop, JENA, and JAMES which ran on Openstack cloud. Results show that refactoring smells by tools like JDeodrant and JSparrow have widely varying impacts on the CPU and memory consumption of the tested applications based on the type of smell refactored. We present the resource utilization impact of each smell and also discuss the potential reasons leading to that effect.
연구 동기 및 목표
- 클라우드 기반 SaaS 애플리케이션에서 코드 냄새의 자동 리팩터링이 CPU 및 메모리 사용량에 미치는 영향을 조사하는 것.
- 클라우드 환경에서 리팩터링 시 자원 소비가 증가하거나 감소하는 특정 코드 냄새를 특정하는 것.
- JDeodrant 및 JSparrow와 같은 기존 리팩터링 도구가 클라우드 자원 효율성 향상에 얼마나 효과적인지 평가하는 것.
- 다중 테넌트 클라우드 플랫폼에서 자원이 청구되는 환경에서 자동 리팩터링으로 인한 의도하지 않은 성능 저하 위험을 부각하는 것.
- 불필요한 클라우드 비용을 피하기 위해 SaaS 제공업체가 코드 냄새를 선택적으로 리팩터링할 수 있도록 안내하는 것.
제안 방법
- GitHub에서 실제 사용 사례로 활용 가능한 여섯 개의 SaaS 애플리케이션(Zimbra, OneDataShare, GraphHopper, Hadoop, JENA, JAMES)을 선정하여 분석 대상으로 선정.
- JDeodrant을 사용해 하나의 클래스, 기능에 대한 과도한 관심, 형식 확인 냄새를 탐지하고, JSparrow를 사용해 사이클릭 종속성, 총알 수술, 하나의 메서드, 스파aghetti 코드 냄새를 탐지.
- 선정된 SaaS 애플리케이션의 탐지된 냄새에 대해 JDeodrant 및 JSparrow를 활용해 자동 리팩터링을 적용.
- 리팩터링된 애플리케이션을 오픈스택 클라우드 인프라에 배포하여 리팩터링 전후의 CPU 및 메모리 사용량을 측정.
- 다양한 리팩터링된 코드 냄새 간 자원 소비 지표를 비교하기 위해 통제된 실험을 수행.
- 특정 리팩터링 기법과 CPU 및 메모리 사용량 변화 간의 상관관계를 분석하기 위해 결과를 분석.
실험 결과
연구 질문
- RQ1코드 냄새의 자동 리팩터링은 클라우드 기반 SaaS 애플리케이션의 CPU 사용량에 어떤 영향을 미치는가?
- RQ2OpenStack에서 실행되는 SaaS 애플리케이션에서 특정 코드 냄새 리팩터링이 메모리 소비에 어떤 영향을 미치는가?
- RQ3어떤 리팩터링 기법이 코드 품질 향상에도 불구하고 자원 사용량을 증가시키는가?
- RQ4왜 일부 리팩터링된 냄새(예: 하나의 클래스, 하나의 메서드)가 클라우드 환경에서 더 높은 CPU 및 메모리 사용량을 유발하는가?
- RQ5JDeodrant 및 JSparrow와 같은 기존 리팩터링 도구가 클라우드 자원 효율성에 얼마나 기여하거나 악영향을 미치는가?
주요 결과
- 하나의 클래스 냄새 리팩터링은 OneDataShare에서 CPU 사용량 14.8% 증가와 최대 88.1% 증가한 메모리 사용량을 초래하여 뚜렷한 자원 오버헤드를 나타낸다.
- 기능에 대한 과도한 관심 냄새는 모든 여섯 개의 SaaS 애플리케이션에서 CPU 사용량 11.00% 증가와 함께 상당한 메모리 증가를 유발했다.
- 하나의 메서드 냄새 리팩터링은 CPU 사용량 3.5% 증가와 함께 뚜렷한 메모리 소비 증가를 초래했으며, 주로 메서드 추출과 증가한 함수 호출 빈도 때문이었다.
- 반면, 사이클릭 종속성, 총알 수술, 스파aghetti 코드, 형식 확인 리팩터링은 CPU 사용량 감소를 유도하여 이는 효율성 향상을 시사한다.
- 하나의 클래스 리팩터링 후 메모리 소비는 급격히 증가했으며, GraphHopper에서는 54.8%, OneDataShare에서는 88.1% 증가했는데, 이는 클래스 분해와 증가한 메서드 호출 빈도 때문일 가능성이 높다.
- 이 연구는 현재 자동 리팩터링 도구가 하나의 클래스, 기능에 대한 과도한 관심, 하나의 메서드 냄새에 대해 의도치 않게 클라우드 자원 비용을 증가시킬 수 있음을 드러내며, 코드 구조 향상에도 불구하고 자원 효율성 저하의 위험이 있음을 시사한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.