Measuring Code Level Determinants of Software Sustainability: A Systematic Literature Review
137개의 연구를 대상으로 한 이 체계적 문헌 고찰은 소프트웨어 지속 가능성을 위한 코드 수준의 결정 요인과 지표를 합성하여 에너지에 비해 탄소 측정 분야의 상당한 연구 공백을 드러내며, 개발자들이 더 친환경적인 소프트웨어를 구축할 수 있도록 돕는 근거 기반의 의사결정 프레임워크와 실행 가능한 가이드라인을 제안한다.
원본 논문은 CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
스마트폰의 앱부터 글로벌 클라우드 서비스를 관리하는 거대한 시스템에 이르기까지, 소프트웨어 프로그램이 실행될 때마다 이는 전력망으로부터 전력을 끌어다 씁니다. 이러한 소비는 단순히 비용의 문제가 아니라, 지구를 뜨겁게 만드는 탄소 배출의 직접적인 원인이 됩니다. 이러한 시스템을 수용하는 데이터 센터가 에너지 수요가 높다는 사실은 잘 알려져 있지만, 소프트웨어 그 자체, 즉 개발자가 작성한 코드 한 줄 한 줄이 전력이 얼마나 사용되는지에 결정적인 역할을 한다는 사실은 숨겨져 있습니다. 자동차의 엔진 설계가 연료 효율을 결정하는 것과 마찬가지로, 코드를 작성할 때 내리는 구체적인 선택들이 프로그램이 작동하는 데 필요한 전력량을 결정합니다. 어떤 선택은 효율적이지만, 어떤 선택은 사용자가 전혀 모르는 사이에 전력을 낭비하게 만듭니다.
수년간 연구자들은 어떻게 하면 소프트웨어를 더 친환경적으로 만들 수 있을지 연구해 왔지만, 그 증거들은 서로 다른 방식으로 동일한 것을 측정하는 수천 편의 논문 속에 파편화되어 있었습니다. 파키스탄 국립 컴퓨터 및 신흥 과학 기술 대학교(National University of Computer and Emerging Sciences)의 연구진이 발표한 새로운 체계적 문헌 고찰은 이 흩어진 지식들을 하나로 모았습니다. 2015년 말부터 2026년 초 사이에 발표된 137편의 피어 리뷰(peer-reviewed) 논문을 분석함으로써, 연구팀은 정확히 어떤 코딩 결정이 지속 가능성에 가장 중요한지를 보여주는 명확한 지도를 만들었습니다. 그들은 이 분야가 급격히 성장했음에도 불구하고, 주로 에너지 소비량을 측정하는 데 치중되어 있으며, 규제가 탄소 회계(carbon accounting)를 요구하기 시작함에도 불구하고 그 결과로 발생하는 탄소 배출량을 측정하는 데에는 상당한 공백이 있다는 것을 발견했습니다.
연구진은 먼저 기존의 방대한 문헌을 구조화된 시스템으로 분류하는 작업부터 시작했습니다. 그들은 두 가지 주요 정보 범주를 식별했는데, 바로 개발자가 내리는 구체적인 선택인 '결정 요인(determinants)'과 이러한 선택을 측정하는 방법인 '영향 지표(impact metrics)'입니다. 결정 요인은 프로그래밍 언어의 선택이나 문제를 해결하기 위해 사용하는 알고리즘과 같은 광범위한 것부터, 메모리에 데이터를 저장하는 방식이나 루프(loop)를 작성하는 방식과 같은 세밀한 것에 이르기까지 다양합니다. 지표는 이러한 선택의 효과를 확인하기 위한 도구로, 주로 얼마나 많은 에너지가 사용되는지 또는 작업에 시간이 얼마나 걸리는지를 측정합니다. 연구팀은 이러한 발견들을 소프트웨어 개발 과정 중 언제 이러한 결정이 내려지고, 그 효과가 실제로 언제 관찰되는지를 보여주도록 정리했습니다.
가장 눈에 띄는 발견 중 하나는 상위 수준의 결정이 미칠 수 있는 영향의 규모에 관한 것입니다. 이번 검토는 프로그래밍 언어의 선택이 지배적인 요인임을 확인해 줍니다. 연구들에 따르면, 기계어로 직접 번역되는 컴파일 언어는 실행 중에 한 줄씩 처리되는 인터프리터 언어보다 최대 20배 더 에너지 효율적일 수 있습니다. 마찬가지로, 프로그램이 따르는 수학적 레시피인 알고리즘의 선택 또한 에너지 사용량에서 엄청난 차이를 만들어낼 수 있습니다. 더 효율적인 알고리즘은 에너지 소비를 몇 자릿수(orders of magnitude)만큼 줄일 수 있는데, 이는 사소한 코드 수정으로는 결코 따라잡을 수 없는 차이입니다. 그럼에도 불구하고, 이번 검토는 이러한 고영향 결정들이 문헌에서 가장 자주 연구되는 주제는 아니라는 점을 지적합니다. 연구자들은 특정 코딩 스타일이나 미세한 최적화와 같이 영향력이 작은 세부 사항들을 조사하는 데 더 많은 시간을 할애해 왔습니다.
연구는 또한 이러한 결정이 언제 일어나는지도 지도화했습니다. 대다수의 연구는 코드가 처음 작성되는 구현 단계(implementation phase)와 소프트웨어가 실제로 실행되는 런타임 단계(runtime phase)에 집중되어 있습니다. 그러나 테스트 단계(testing phase)에서는 중요한 공백이 발견되었습니다. 소프트웨어를 테스트하는 과정이나 테스트 코드 자체가 어떻게 에너지 낭비를 초래하는지를 조사한 연구는 매우 적습니다. 이는 현대 소프트웨어 개발이 하루에도 수천 번씩 실행되는 자동화된 테스트 시스템에 크게 의존하고 있으며, 이 시스템이 최종 제품보다 더 많은 에너지를 소비할 잠재력이 있다는 점을 고려할 때 중대한 간과입니다. 연구진은 이 영역이 여전히 미개척 상태로 남아 있음을 강조하며, 향후 개선을 위한 주요 기회가 될 수 있음을 시사했습니다.
아마도 가장 시급한 발견은 무엇을 측정하고 있는가와 관련될 것입니다. 검토 결과, 137편의 연구 중 131편은 특수 하드웨어 카운터를 사용하여 전력 사용량을 줄 단위(joule)까지 추적하며 에너지 소비량을 측정했습니다. 반면, 탄소 배출량을 직접 측정한 연구는 단 3편뿐이었습니다. 이러한 불균형은 문제가 될 수 있는데, 왜냐하면 글로벌 규제가 에너지 추적에서 탄소 추적으로 점점 이동하고 있기 때문입니다. 연구진은 이 격차를 쉽게 메울 수 있다고 지적합니다. 탄소 배출량은 에너지 사용량에 지역 전력망의 탄소 집약도를 곱하여 계산되므로, 전력원의 맥락 정보만 기록한다면 에너지에 대한 풍부한 데이터를 탄소 데이터로 변환할 수 있기 때문입니다. 현재 이 분야는 에너지 수치는 가지고 있지만, 현대적인 환경 보고에 필요한 탄소 맥락은 부족한 상태입니다.
개발자들이 이러한 연구 결과를 적용할 수 있도록, 연구팀은 실질적인 결정 프레임워크를 만들었습니다. 이는 지속 가능성 문제를 해결하기 위한 가이드 역할을 합니다. 만약 어떤 소프트웨어 서비스의 운영 비용이 너무 많이 든다면, 프레임워크는 미세한 코드 수정을 고민하기 전에 프로그래밍 언어와 알고리즘을 먼저 살펴보라고 제안합니다. 만약 모바일 앱이 배터리를 빠르게 소모한다면, 전력을 낭비하는 것으로 알려진 특정 코딩 패턴을 지목합니다. 가이드라인은 프로그램이 얼마나 빨리 실행되는지에 근거하여 추측하기보다는 에너지를 직접 측정해야 한다고 강조하는데, 프로그램이 빠르다고 해서 반드시 더 효율적인 것은 아니기 때문입니다. 또한 소프트웨어 기능에 대해 명시적인 에너지 예산을 설정하고, 에너지 낭비를 소프트웨어 버그와 동일한 심각성으로 다룰 것을 권장합니다.
이 검토는 지속 가능한 소프트웨어 공학 분야가 국제적인 커뮤니티를 형성하고 확립된 방법론을 갖추며 성숙해 가고 있다고 결론짓습니다. 그러나 연구의 초점을 전환할 것을 촉구합니다. 연구자들은 테스트 단계를 더 깊이 연구하고, 언어 선택과 같은 고영향 결정에 대한 연구 결과를 재현하며, 에너지 데이터와 함께 탄소 배출량을 보고하기 시작해야 합니다. 산업 전문가들에게 전달하는 메시지는 명확합니다. 소프트웨어의 환경 발자국을 줄이는 가장 효과적인 방법은 미세한 조정을 통해서가 아니라, 개발 프로세스의 아주 초기 단계에서 내리는 근본적인 선택을 통해서라는 것입니다. 효율적인 언어, 알고리즘, 데이터 구조를 선택하고 그 결과를 정확하게 측정함으로써, 개발자들은 디지털 세계의 에너지와 탄소 비용을 획기적으로 줄일 수 있습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.