머리말
최근 들어 서버를 운영하면서 소모되는 에너지가 제대로 된 조절 없이 오직 소프트웨어 성능만을 중요한 요소로 두고 만들어지고 운용되고 있는 문제를 지적하는 목소리가 조금씩 나오고 있는 것 같습니다. 이에 대해 IEEE Spectrum에 괜찮은 글이 올라와서 이 내용을 공유해 봅니다.
개요
소프트웨어는 세상을 바꾸고 있을지도 모르지만, 동시에 환경 문제를 만드는 일도 있습니다. 2023년 12월, 거의 200개국의 대표들이 두바이에서 열린 COP28, 즉 유엔 기후변화 회의에 참석했습니다. 이들은 배출량을 줄이는 것이 얼마나 시급한지에 대해 의논했습니다. 한편, COP28 웹사이트는 Ecograder라는 웹사이트 지속성 점수 도구에 따르면 페이지 당 약 3.69 그램의 이산화탄소를 발생시켰습니다. 별거 아닌 것 처럼 보이는 수치로 보일 수 있지만, 해당 사이트가 매월 1만 번 이상 조회되면 연간 배출량이 샌프란시스코에서 토론토로 가는 편도 비행기의 배출량과 비슷해질 수 있다는 것입니다.
하지만 이런 현상을 아예 피할 수 없는 것은 아닙니다. Ecograder의 분석에 따르면, COP28 웹사이트의 배출량에는 사용되지 않는 코드, 적절하지 않은 이미지 크기, 제3자 스크립트 등이 영향을 미칩니다. 이들은 데이터 전송, 로딩, 처리에 필요한 에너지를 증가시키며 사용자의 장치에서 많은 전력을 소모합니다. 이 문제를 해결하고 최적화하면 웹사이트의 페이지 로딩 당 배출량을 93% 가량 줄일 수 있다고 Ecograder는 밝힙니다.
소프트웨어 자체는 배출량을 발생시키지 않지만, 데이터 센터의 하드웨어에서 실행되며 데이터를 전송 네트워크를 통해 이동시킵니다. 이러한 과정은 에너지 관련 온실가스 배출의 약 1%를 차지합니다. 정보 및 통신 기술 분야 전체는 전 세계적인 온실가스 배출의 약 2 ~ 4%를 책임지고 있습니다. 2040년까지 이 수치는 공기, 땅, 해상 교통에서 발생하는 배출량과 비슷한 양의 탄소, 약 14%로 치솟을 것으로 예상됩니다.
소프트웨어 영역 내에서 인공지능은 자체의 지속 가능성 문제를 안고 있습니다. Hugging Face라는 AI 기업은 BLOOM 대형 언어 모델의 수명 주기 전체에 걸친 탄소 발자국을 평가했습니다. 그 결과, BLOOM의 최종 훈련만으로도 약 50톤의 CO2를 배출했습니다. 이는 뉴욕에서 시드니까지의 약 한 더치 비행과 같습니다.
친환경 소프트웨어 엔지니어링은 탄소 배출을 줄이는 애플리케이션을 만들기 위한 최상의 실천 방법으로 구성된 신흥 분야입니다. 이 친환경 소프트웨어 운동은 빠르게 성장하고 있습니다. Salesforce와 같은 기업들은 자체 소프트웨어의 지속 가능성 계획을 시작했으며, Green Software Foundation은 현재 Google, Intel, Microsoft 등을 포함한 64개 회원 기관으로 구성되어 있습니다. 그러나 소프트웨어 개발 및 사용으로 인한 배출을 악화시키지 않으려면 이러한 실천 방법을 보다 넓게 채택해야 할 것입니다.
친환경 소프트웨어 엔지니어링이란 무엇인가
친환경 소프트웨어의 길은 10년 전 이상 시작되었습니다. 월드 와이드 웹 컨소시엄(W3C)의 지속 가능한 웹 디자인 커뮤니티 그룹은 2013년에 설립되었으며, Green Web Foundation은 2006년에 인터넷을 구동하는 에너지 종류를 이해하기 위한 방법으로 시작되었습니다. 현재 Green Web Foundation은 2030년까지 화석 연료 없는 인터넷을 향한 야심찬 목표를 향해 노력하고 있습니다.
인텔 친환경 소프트웨어 담당자인 후세인은 “소프트웨어 개발 생태계의 이미 큰 부분이 이 분야에 관심을 가지고 있지만, 그들은 무엇을 해야 할지 몰랐습니다” 라는 말을 하기도 했습니다.
후세인에 따르면, 해야 할 일은 주로 세 가지 주축 아래에 속합니다:
- 에너지 효율성 또는 더 적은 에너지 사용
- 하드웨어 효율성 또는 더 적은 물리적 자원 사용
- 탄소 인식 컴퓨팅 또는 에너지를 더 지능적으로 사용
후세인은 탄소 인식 컴퓨팅은 전기가 깨끗하거나 저탄소 원천에서 올 때 – 예를 들어 바람과 태양열 발전소에서 사용 가능한 때 – 애플리케이션을 더 많이 활용하고, 그렇지 않을 때는 덜 활용하는 것에 관한 것이라고 합니다.
친환경 소프트웨어의 사례
친환경 소프트웨어를 만드는 이유는 무엇일까요? 먼저, 친환경 소프트웨어는 효율적인 소프트웨어입니다. 이는 프로그래머들이 빠르고 높은 품질의 시스템을 개발할 수 있도록 도와줍니다. Helmes 소프트웨어 개발 회사의 팀 리드이자 친환경 소프트웨어 전문가인 카스파르 킨시비르가 남긴 말 입니다.
또한, 이러한 효율적인 시스템은 기업에게 낮은 비용을 의미할 수 있습니다. 킨시바르는 “친환경 소프트웨어에 대한 주요 오해 중 하나는 뭔가 추가로 해야 하고, 그로 인해 추가 비용이 든다는 것입니다” 라는 말을 덧붙였습니다.
소프트웨어 업계에서 특히 비즈니스 측면에서 다른 동기 부여 요인으로는 지속 가능성과 관련된 예정된 법률 및 규정이 있습니다. 예를 들어, 유럽 연합에서는 기업 지속가능성 보고 지침이 기업들에게 환경흔적, 에너지 사용 및 배출량 등에 대한 더 많은 보고를 요구합니다. 이에는 제품 사용과 관련된 배출물도 포함됩니다.
또한 다른 개발자들은 기후 위기 자체에 의해 동기부여를 받을 수 있으며, 다가오는 세대를 위해 살기 좋은 행성을 조성하기 위해 자신의 역할을 하고 싶어합니다. 그리고 소프트웨어 엔지니어들은 그들이 만드는 것의 실제 목적과 배출에 엄청난 영향을 미칩니다.
네덜란드의 Delft 대학교에서 지속 가능한 소프트웨어 엔지니어링을 전문으로 하는 박사 후 연구원인 준 살루는 “이것은 단순한 코드 줄이 아닙니다. 이러한 코드 줄은 인간에게 영향을 미칩니다,”라고 말합니다. 특히 인공 지능의 사회적 영향 때문에, 그녀는 개발자들이 자신이 만들고 있는 것이 환경에 해를 끼치지 않도록 보장하는 책임이 있다고 덧붙입니다.
웹사이트와 어플을 친환경적으로 만들기
COP28 웹사이트 제작자들은 Lowwwcarbon과 같은 디렉터리에서 배울 점이 있었을 것입니다. Lowwwcarbon은 이미 존재하는 저탄소 웹사이트의 사례를 강조합니다. 예를 들어 네덜란드에 본사를 둔 웹 디자인 및 브랜딩 회사인 Tijgerbrood의 웹사이트는 페이지 조회 당 0.1 그램 미만의 탄소를 배출합니다.
Tijgerbrood와 같은 지속 가능한 웹사이트를 만드는 것은 역할이 다양한 팀 노력이 필요합니다. 이에는 소프트웨어 요구 사항을 정의하는 비즈니스 분석가부터 디자이너, 아키텍트, 운영을 담당하는 사람까지 다양한 역할이 포함됩니다. 또한 소프트웨어 개발 프로세스의 각 단계에서 적용할 수 있는 친환경적인 실천 방법이 포함됩니다.
먼저, 개발자들은 설계하려는 기능, 앱 또는 소프트웨어가 처음부터 개발되어야 하는지를 고려해야 합니다. 기술은 종종 다음 새로운 것을 만드는 것과 관련되지만, 소프트웨어를 지속 가능하게 만드는 것은 무엇을 만들지 않을지에 대한 결정도 포함되며, 이는 사고방식의 변화가 필요할 수 있습니다.
설계 단계에서는 효율적인 알고리즘과 아키텍처를 선택하는 것입니다. 바르셀로나의 Centre Tecnològic de Telecomunicacions de Catalunya의 지속 가능한 AI 부서 연구원인 치아라 란자는 “해결책에 들어가기 전에 지속 가능성에 대해 생각하십시오 – 그리고 이후가 아니라”라고 말합니다.
개발 단계에서는 프로그래머들이 코드를 최적화하는 데 초점을 맞추어야 합니다. 지속 가능한 디지털 기술 컨설턴트이자 Green Web Foundation의 운영 담당자인 한나 스미스는 “소프트웨어를 실행하는 데 사용하는 총 에너지 양을 줄여야 합니다. 이 중 일부는 효율적으로 쓰여진 코드에서 나올 것입니다”라고 말합니다.
Tijgerbrood의 웹사이트는 낮은 해상도 이미지와 현대적인 이미지 형식을 사용하여 회사의 코드를 최적화했습니다. 사용자가 스크롤하여 뷰에 로드 애니메이션을 보게 될 때에만 로드하고, 불필요한 코드를 제거했습니다. 이러한 기술은 사용자 장치에서 데이터 전송, 로딩 및 처리 속도를 높여줍니다. 또한 웹사이트는 최소한의 JavaScript를 사용합니다. 스미스는 “사용자가 JavaScript가 많은 웹사이트를 로드하면, 자신의 장치에서 많은 에너지를 사용하게 됩니다. 왜냐하면 자신의 장치가 JavaScript를 읽고 실행하는 모든 작업을 해야하기 때문입니다”라고 설명합니다.
운영 측면에서 가장 중요한 조치 중 하나는 지속 가능한 웹 호스팅 또는 클라우드 컴퓨팅 공급자를 선택하는 것입니다. Green Web Foundation은 웹사이트가 친환경 에너지에서 실행되는지 확인하는 도구와 재생 가능 에너지로 구동되는 호스팅 제공 업체 디렉토리를 보유하고 있습니다. 또한 클라우드에서 소프트웨어가 실행되는 방식을 확장하여 고비용 사용량이 친환경 에너지로 공급되거나 비 고비용 시간 동안 특정 서비스를 일시 중단하거나 꺼둘 수 있는지 호스팅 제공 업체에 문의할 수 있습니다.
마무리
친환경 소프트웨어 엔지니어링은 성장하고 발전하고 있지만, 이 분야가 보다 널리 퍼지도록 돕기 위해 더 많은 인식이 필요합니다. 이것이 Green Software Foundation이 실무자를 위한 친환경 소프트웨어 코스 외에도 더 많은 교육 과정을 개설하려는 이유입니다. 이 중 일부는 자격증 획득을 이끌 수도 있습니다. 마찬가지로, 살루는 지속 가능한 소프트웨어 엔지니어링 대학원 과정을 공동으로 가르치고 있으며, 이 과정의 교육과정은 공개되어 있으며 비슷한 과정을 개설하려는 사람들에게 기반이 될 수 있습니다. 그녀는 이러한 지식을 학생들에게 조기에 제공함으로써, 미래의 소프트웨어 엔지니어로서 그들이 이를 직장에 가져갈 수 있도록 하는 것이 중요하다고 말합니다.
인공지능 분야에서는 Google Cloud Certified Fellow이자 Green Software Foundation의 스티어링 위원회에서 활동하는 인공지능 전문가인 나브빈 발라니는 인공지능이 앞으로 몇 년 안에 기본적으로 친환경 인공지능 원칙을 포함할 수 있다고 언급했습니다. 이것은 현재 보안 고려사항이 소프트웨어 개발의 중요한 부분이 되는 것과 비슷한 방식입니다. 그는 “이러한 변화는 인공지능 혁신을 환경 지속 가능성과 일치시켜 친환경 인공지능을 단순히 특별한 영역이 아니라 분야의 내재적인 표준으로 만들 것입니다”라고 말했습니다.
웹 분야에서는 스미스가 2030년까지 Green Web Foundation이 존재하지 않기를 희망합니다. “우리의 꿈은 조직이 필요 없어지고, 우리의 목표를 달성하고, 인터넷이 기본적으로 친환경이 되는 것입니다”라고 그녀는 말합니다.
킨시비르는 과거에는 하드웨어가 부족했기 때문에 소프트웨어가 최적화되고 잘 만들어져야 했다고 관찰했습니다. 하드웨어 성능과 혁신이 높아짐에 따라 “프로그래밍의 품질 자체가 떨어졌다”고 말합니다. 그러나 지금은 산업이 원래의 효율성 뿌리로 돌아가 친환경성을 추가하고 있다고 말합니다.