그린 테크와 지속 가능한 개발
코드 한 줄이 탄소를 배출한다는 사실, 개발자로서 뭘 할 수 있을까
코드도 탄소를 배출한다
구글 검색 한 번에 한 0.2g의 CO2가 배출된다. ChatGPT 질의 한 번은 그 한 4~5배. AI 학습은 자동차 5대의 평생 배출량과 맞먹는다는 연구도 있다.
소프트웨어 산업 전체의 탄소 배출이 항공 산업과 비슷한 수준이라는 추정이 있다. 전 세계 전력 소비의 한 2~3%가 데이터센터에서 쓰이고, 이 비율이 AI 때문에 빠르게 늘고 있다.
솔직히 코딩하면서 탄소 배출 생각하는 개발자는 거의 없을 거다. 나도 그랬다. (서버 비용은 신경 쓰면서 탄소 비용은 신경 안 쓰는 게 좀 아이러니하긴 하다.)
그린 코딩이라는 개념
코드 효율성이 곧 에너지 효율성이다. 불필요한 API 호출을 줄이고, 캐싱을 잘 하고, 이미지를 최적화하고. 이런 게 결국 서버 자원을 덜 쓰는 거고, 전력을 덜 쓰는 거다.
구체적으로 보면 이런 거다. 이미지를 WebP로 바꾸면 JPEG 대비 한 25~35% 용량이 줄어든다. CDN으로 전 세계에 캐시하면 오리진 서버 요청이 한 85% 감소한다. 이런 최적화가 모이면 서버 대수가 줄고 전력 소비가 준다.
라고들 하는데 내가 보기엔, 개별 개발자 수준에서 할 수 있는 건 한계가 있다. 진짜 임팩트가 큰 건 인프라 차원의 결정이다.
클라우드 업체들은 뭘 하고 있나
구글은 2030년까지 전 데이터센터를 24/7 탄소 제로로 운영하겠다고 했다. 현재 한 64% 달성했다고 한다. AWS는 2025년까지 100% 재생에너지를 쓰겠다고 했는데, "구매한" 재생에너지와 "직접 쓰는" 재생에너지의 차이가 좀 있다.
데이터센터 냉각에 물을 엄청나게 쓴다는 것도 문제다. 마이크로소프트 한 곳이 2022년에 물을 한 64억 리터 썼다. 수영장 2,500개 정도 채울 양이다. AI 수요가 늘면서 이 수치도 같이 올라가고 있다.
사실은 클라우드 업체들의 "탄소 중립" 선언에 좀 회의적이다. 탄소 상쇄 크레딧을 사서 숫자를 맞추는 경우가 많은데, 이게 실질적 감축인지는 논란이 있다.
개발자가 할 수 있는 것
현실적으로 가능한 것들을 정리해봤다.
서버리스 아키텍처를 쓰면 유휴 자원이 0에 가까워진다. 항상 켜져 있는 서버 대비 에너지 효율이 높다. 물론 콜드 스타트 이슈가 있지만 대부분의 서비스에서는 감수할 만하다.
프론트엔드에서 번들 사이즈를 줄이면 사용자 기기의 전력 소비가 준다. 글로벌 서비스에서 번들을 100KB 줄이면 일간 전력 절감량이 꽤 된다고 한다.
다크 모드도 OLED 기기에서는 한 30~60% 전력 절감 효과가 있다. (다크 모드가 눈 건강뿐 아니라 환경에도 좋다니.)
현실적인 한계
솔직히 이런 걸 비즈니스 우선순위에서 밀리지 않게 하는 건 어렵다. PM한테 "이 최적화하면 탄소 배출이 줄어요"라고 말하면 "ROI가 뭐예요?"라는 질문이 돌아온다.
비용 절감으로 연결되면 설득이 되는데, 순수하게 환경적 이유로는 아직 설득하기 어렵다. ESG가 중요하다는 말은 많이 하면서 실제 개발 의사결정에 반영되는 경우는 드물다.
그래도 효율적인 코드가 결국 비용도 줄이고 환경에도 좋다는 걸 조금씩 인식시키는 수밖에 없는 것 같다. 혁명적 변화보다는 점진적 개선이 현실적이라는 게 좀 답답하긴 하다.