요즘 클라우드 서비스가 대세(?) 처럼 떠오른지 꽤 되었다.


나 역시 2000년대 중반에 지금의 클라우드와 유사한 형태의 저사양 PC기반 그리드컴퓨팅 사업 등을 했던 바 (지금에서 돌아보면 지금의 클라우드 컴퓨팅 서비스와 구조가 거의 동일하다.) 이에 대한 언급을 할만한 자격이 있을 듯 하여 언급을 해본다.



요즘 흔히 "시스템 엔지니어가 할 일이 없어지고 시스템 관리가 프로그래밍 영역으로 들어간다" 는 둥의 이야기가 나돌기도 하고, DevOps 라는 둥(네 그거 저도 참 좋아는 하는데요.) 클라우드가 득세하고 일반적인 시스템 운영은 없어진다는 둥 뭐라는 둥 시스템 엔지니어가 없이 개발자만 있어도 시스템이 돌아간다는 이상한 환상? 같은것을 심어주는 세상이 되고 있다.



아 그런데..내가 할 일을 남에게 맡기면 반드시 탈이 난다.




육아는 참 고된 일이다. 미성숙한 개체를 하나의 온전한 성인으로 길러낸다는 것이 말이 쉽지 참 뭐라고 표현하기 어려울 정도로 골치가 아픈 일인 법이다. 그런데 요즘 세상에는 이 문제를 완전 초창기가 아닌 바에야 어린이집이니 유치원이니 학교니 학원이니 하면서 남에게 위탁할 수 있는 세상이 되었다는 말이다.




그런데 말입니다.




세상이 그렇게 호락호락하기만 하면 얼마나 좋겠느냐마는..




나에게도 힘든 미숙한 존재인 내 애를




남에게 맡긴다는 것은




절대로 간단한 일이 아니다.




내가 낳은 내 자식을 내가 길러도 힘든데, 그 미성숙하고 난장판인 그것을 남이 기른다는게 과연 쉬울까?


결국엔 사단이 난다.





세상은 절대로 호락호락하지가 않다.


그렇게 간단하게 세상이 나에게 호의를 베풀어주겠는가?



남에게 맡기고 가만히 있으면 내가 호구가 된다.






가만히 두면 님들이 준 세금으로 성인용품 산다고.





내가 할 일은 내가 해야한다.


그러나 사람이 사는게 그렇듯이 100% 다 내가 하기에는 벅차기도 한 노릇이니 무조건 남을 안 믿을수는 없는 노릇.


그럼 어쩌냐? 하는 수 없이 해야하는 일정 부분은 위탁하되 꾸준히 지켜보고 감시해야 한다. 그리고 스스로 충분히 할 줄 알면서 약간의 도움을 받는다고 생각해야 한다. 전부 다 맡기는게 아니라, 내가 주도하고 상대가 내가 주도하는 것을 돕도록 해야한다.



사업하던 시절, 사용자들이 내가 제안하는 서비스를 써보고 하는 말 중 가장 많이 들었던 말은


"아니 이렇게 저렴하게도 이렇게 고성능으로 운영할 수 있었네."


"우리 서비스 전부를 이렇게 운영하고 싶네."


"우리 서비스를 다 맡길테니 서비스 구조를 전환하고 서비스를 맡아주게."



그러나 내가 사용자들에게 제안한 것은


기본 서비스는 기존처럼 직접 운영하시되 급하게 확장이 필요한 부분만 우리 서비스를 이용하시라 였다.



클라우드는 그렇게 써야한다. 모든 서비스를 클라우드로 이전하지 말고 말이다.


사용자가 엄청 몰리는 이벤트를 하거나, 사용자가 과도하게 몰리는 시간과 그렇지 않은 시간의 패턴이 존재하는 경우에 한해서 일부 동적 확장이 필요한 경우에 그 중 아주 일부에 한정하여 클라우드를 쓰는것이 가장 이상적이다.



모든 서비스를 클라우드로 이관한다고? 서비스 메인 DNS가 클라우드에 있다고? Main Frontend Web 서버가 전부 클라우드에 있다고? Main DB를 클라우드로 운영한다고?


이건 나로서는 전혀 이해가 안가는 일이다. Private Cloud로 운영을 한다고 해도 기겁할 일인데 심지어 Public Cloud에 메인 서비스를 의존하고 클라우드 서비스가 장애가 나면 특별한 이벤트 시점도 아닌 평일 아침부터 서비스에 장애가 발생하고 전면 중단이 된다?



이건 호구나 하는 짓이다.




제발 직접 해라.


특히 자신들의 Main Business 부분이라면, 그게 진짜 중요하다면 제발 직접 해라.




클라우드는 돈을 아껴준다. 이건 반은 맞고 반은 틀리다. 잘 쓰면 싸고 아니면 일반 서버 박아넣는것보다 비싸다. 그럼에도 아낄 자신이 있었으니까 클라우드를 쓰겠지?(부디 엑셀 한번 돌려보고 쓰는것이기를 빈다.)


그런데 이렇게 계산을 하고 쓴다 쳐도 결국 직접 하지 못해 발생하는 장애로 인한 손실은 기업의 자금난을 가속화시킨다. 시스템에 투자할 돈이 없어 클라우드를 쓰고 클라우드 장애로 돈을 못벌고 돈이 없으니 계속 클라우드를 쓰고 계속 클라우드를 쓰니 계속 장애가 나고 또 돈을 잃고....


이건 가난한 기업이 가지는 악순환이다.


물론 직접 운영한다고 장애 안나는 거 아니다. 특히 한국처럼 시스템 운영 인력의 퀄리티가 평균적으로 낮은 시장에서는 뭐 클라우드가 그렇게 나쁜 방법은 아닐지도 모른다.(어쩌면 참 한국에 잘 맞는 서비스 아닌가 싶기도 하다.) 그러나 운영을 못하는 것은 익히고 배우고 하다못해 인력이라도 바꾸면 중장기적으로 문제들을 스스로 제어할 수 있게 된다. 시스템 초기의 장애들은 초반 문제만 "잘" 잡아나가면 중장기적으로 큰 트러블이 발생하지 않는다. 그러나 클라우드는? 내가 운영하는 서비스가 특정 클라우드 서비스에 종속성이 생기면?


물론 AWS도 안정화가 된다. 갈수록 나아질 것이다. 그러나 한번 트러블이 생기면 일이 커진다. 장애가 내 통제를 벗어나는 범주로 발생한다. 대체도 안된다. 내가 직접 운영하면 불안한 서비스는 이중화 삼중화 하면 된다. 클라우드는? 한번 장애가 나면 전대역 장애가 발생하기 시작한다. 다른 리전에 옮기기도 어렵고, 클라우드 서비스를 2개 이상 사용하면 되겠으나 그렇게 운영하기 까다롭다. 비용은 늘어나고, 처음에는 싸다고 시작하지만 갈수록 들어가는 비용이 기업의 자본을 잠식해 목을 조인다. 싼 것 같아 보이지만 실제로는 더 비싸다. 클라우드에 전적으로 의존하는 서비스가 목을 조이는 비용을 줄일 수 있는 방법은 사업규모의 축소밖에는 없다. 결국 아무것도 하지 않고 하루하루 버티며 담배나 팔고 사는 구멍가게의 신세와 다름이 없게 된다.


클라우드는 간단한 테스팅용 VM으로 쓰거나 단기간에 많은 시스템 파워가 필요할 때 잠깐만 써라. 나머지는 전부 직접 해야한다. 시스템 운영에 대해서 제발 개발자를 믿지마라. 시스템 엔지니어(OP가 아니다)는 중요하다. OS를 이해하고 어플리케이션을 이해하고 네트워크, 커널, 기업의 비즈니스, 전체 시스템 아키텍쳐 등을 이해하는 사람이 있어야 한다.


직접, 주도적으로 운영해야 호구가 되지 않는다.


제발 직접 운영해라.

+ Recent posts