모터사이클을 오래 탄 사람이라면, 이른바 “순정” 바이크가 그리 오래 가지 않는다는 것을 안다. 보통은 부품 시장에서 더 시끄러운 관으로 배기 시스템을 교체한다. 안장도 좀 더 편하고 맵시 있는 것으로 바꾼다. 윈드실드와 연료 관리 시스템, 업그레이드된 핸들바도 마찬가지다.
모터사이클의 핵심 기능에는 아무런 도움이 되지 않는 이런 것들에 모터사이클값의 1/4 정도를 들인다. 할 수 있으니까 하는 것이지 해야만 해서 하는 것은 아니다.
똑같은 이야기를 많은 기업의 클라우드 애플리케이션에 관해서도 할 수 있다. 모터사이클처럼 클라우드 애플리케이션도 복잡해지기만 하고 애플리케이션의 핵심 목적에는 아무런 도움이 되지 않는 온갖 기능들로 치장하고 있다.
문제의 핵심은 이렇다. 퍼블릭 클라우드 상에 애플리케이션을 구축하는 기업은 아주 짧은 시간에 아주 적은 비용으로 애플리케이션에 통합할 수 있는 수많은 클라우드 서비스를 이용할 수 있다. 딥러닝이나 머신러닝 같은 AI 서비스는 흔히 애플리케이션을 강화하는 데 이용하는데, 이유는 쉽게 이용할 수 있기 때문이다. 많은 경우, 특정 애플리케이션 내의 AI 활용은 실제로 금기 사항이다.
다른 유혹적인 서비스로는 컨테이너와 컨테이너 오케스트레이션 시스템이 있다. 물론 많은 애플리케이션에는 아주 훌륭한 추가 기능이지만, 요즘에는 억지로 끼워 맞추는 경우가 자주 일어난다. 개발자가 이들의 과대포장에 넘어가고 있다.
이렇게 오버엔지니어링(Overengineering)된 클라우드 애플리케이션은 대부분 구축하는 데 비용이 더 들고 매우 복잡하며, 따라서 시간이 지날수록 운영하기도 더 힘들다. 실제로 이런 애플리케이션은 배치 후의 클라우드옵스 비용이 두 배에 달하기도 하며, 매월 받는 클라우드 요금 고지서도 두 배이다.
클라우드 애플리케이션 설계자와 개발자는 애플리케이션이 핵심 문제를 해결하는 데 필요한 최소한의 실행 가능한 기능에 중점을 두어야 한다. 재고 관리 애플리케이션이라면 머신러닝 시스템을 내장할 필요가 없지만, 사기 탐지 시스템이라면 필요하다. 요구사항을 만족하는 것과 멋진 것 간의 차이를 분명히 해야 한다. 그렇게 한다면, 애플리케이션이 운영 환경에 배치된 다음에 한결 편안한 시간을 보낼 수 있을 것이다. editor@itworld.co.kr