대한민국 병.
앞에 DBA 에 대한 비판글을 쓴적이 있다. 실제로 겪은 일이기도 하고 실제로 일어나는 일이기도 하다. 혹자는 “너의 경험이 전부가 아닐 진데, 전체로 매도하고 있다” 라고 항변하겠지만 전체적인 흐름을 모르고 하는 소리다.
환경의 변화 = 안해도되는 것들.
DBA 들도 환경의 변화를 겪고 있다. 적어도 내가 있는 분야, 그러니까 구체적으로 말하면 AWS 클라우드 시스템을 다루다보면 이러한 현상을 자주 목격한다.
AWS 클라우드에는 관리형 데이터베이스인 RDS 서비스가 존재한다. 데이터베이스 서버를 설치하거나 백업을 직접 구축하는 것이 없이 이러한 것들을 웹 인터페이스를 통해서 손쉽게 할 수 있다. 서버 설치는 아예 없고 그것을 관리하라고도 안한다.
문제는 DBA 들이 이것을 자신들의 직업적인 업무의 축소, 그러면서 단가는 그대로이면서 하는일을 떨궈버리는데 적극 활용한다는 것이다.
이들의 사고 방식은 간단하다. AWS 클라우드에서 제공하는 RDS 서비스이다 보니 그건 AWS 를 다루는 사람이 해줘야 한다는 것이다. 자신들은 이제 SQL 만 짜고 데이터만 만지면 된다는 사고방식을 고수한다.
더 웃긴건 그것이 이제 업계 표준인냥 떠들어 댄다는 것이다. RDS 백업 설정은 더 이상 DBA 가 하는 일이 아닌것이고 그것에 대한 업무 일채를 AWS를 다루는 사람이 해야 한다는 입장인 것이다. 그것이 자신의 주장일 뿐이라고 생각하는게 아니라 이제는 DBA 업계가 그렇게 하고 있다라고 주장한다.
AWS 클라우드 환경에서는 이게 DA나 DBA 들이 작정하고 주장하고 있는게 현실이다. 100이면 100 전부다. 자신들은 AWS 를 모른다고 강변하고 그것을 자신들이 알아야 할 이유가 없다고 강변하면서 SQL 만 잘 다루면서 단가는 그대로 가지고 갈려는 입장인 것이다.
자신이 해야할 일의 영역을 축소하고 적게 일하면서 돈을 많이 받는 계기로 삼게다는 심리가 아니고서야 이렇게까지 할 이유는 없다. 만일 자신이 진정으로 직업적 마인드나 윤리 의식이라도 가지고 있다고 한다면 적어도 AWS 클라우드에서의 데이터베이스를 공부라도 할 텐데, 그래서 RDS 가 무엇이고 S3 나 혹은 Dynamo DB 등과 같은 것들도 공부를 해야할 텐데 AWS 클라우드의 자원이니 자신들은 안해도 되는 거다라는 사고방식.
이쯤되면 이건 병이다.
개발자 = 코딩만 하고 결과만 나오면 그거까지.
DBA 만 깐거 같으니 DBA가 만고의 역적인 되는 느낌인데, 개발자들도 만찬가지다.
논의에 앞서 간단하게 내 경력을 말하면 거의 풀스택에 가깝다. DBA 로서 SQL 을 깊게 섭렵하지는 않았지만 데이터베이스 시스템을 꽤 다뤘었다. 개발자… 자바, 파이썬, Golang, Javascript.. C. 이래저래 할거는 다 해봤다. 특히나 프리랜서로 일을 하면서 요새는 자바를 자주 쓰는 거 같다. 한국에 SI 에서는 죄다 스프링기반으로 제작되고 있다보니 어쩔 수 없는 노릇이다.
이런 개발자적인 경력외에도 시스템 및 클라우드 경력도 가지고 있기에 어느 프로젝트에라도 가게되면 개발자로 지원해서 일을하다가도 어느샌가 시스템 인프라과 개발자들 사이에 뭔가를 중재하는 역할을 하는 경우로 바뀌게 되기도 한다.
이런 상황에 서 있다보면 개발자들을 아주 혐오하게 되는 경우가 아주 많다. 대표적인것이 자신이 만든, 자신이 작성한 코드로 작동하는 기능 혹은 결과물에 대한 성능지표를 계산하지 않는 것이다.
AWS 클라우드에 자바로 제작한 서버를 올린다고 가정해보자. 그러면 AWS 클라우드에서 이 서버를 운영하기 위한 자원이 필요할 것이다. EC2 Instance 를 생성해 그곳에서 자바 서버를 운영할거라면 어떤 타입이 적절한지에 대한 성능지표가 중요해진다.
그러한 성능지표는 누가 제공해야 할까?
당연히 개발자가 제공해야 한다. 성능이란 결국에는 그것을 만든 사람이 제일 잘 알 수밖에 없다. 굳이 코드를 눈으로 보지 않는다고 하더라도 머리속에서 대충 돌려보고 어디에서 병목구간이 생길수 있는지를 알수 있는 사람은 그것을 만든 사람이 제일 잘지 않겠나.
거기다 서버를 제작했다고 한다면 당연히 기획했던대로 성능이 나오도록 제작을 해야할 의무 또한 개발자에게 있다.
하지만 개발자가 자신이 제작한 서버에 대해서 성능지표를 제공하지 않는다. 적어도 한국의 SI 업계에서는 말이지.
이들의 사고방식은 어짜피 서버를 세팅하는 것은 인프라를 담당하는 사람이 하는 거니까 알아서 하라는 사고방식이다.
경력이 얼만데 서버 세팅하는데 감도 못잡아요?
개발자가 인프라 담당자에게 한 말이다. 인프라 담당자는 서버를 세팅해야하니 개발한 서버가 필요로하는 스펙을 알려달라고 했다고 한다.
용어에 혼동은 있었던 것 같다. 인프라 담당자는 “서버 스펙” 이라고 말을 했으니.. 개발자들이 그런 용어를 사용할 이유는 없는 것이였다. 그렇다고 해서 개발자가 그것을 경력 운운하면서 감도 못잡냐고 핀잔을 줄 권한은 어디에 있나.
그래서 내가 말을 바꿔 개발자 당신이 개발한 서버가 프로덕트 환경에서 동작하는데 필요로하는 메모리, CPU 사용량등의 대한 성능지표를 알려달라고 했다.
모르겠는데요. 테스트를 해봐야 하는데 성능 테스트는 제가 안해요.
단 1초의 망설임도 없이 나온 말이다.
적어도 자신이 개발한 결과물에 대해 어느정도의 성능을 가지고 있는지 정도는 파악하고 있어야 하는게 예의 아닌가? 아무나 개발자라는 딱지를 붙이지 않는다. 내가 볼때 개발자라면 최소한 성능지표정도는 자신있게 말할 수 있어야 하는 것이며 그것은 개발자라면 당연히 가져야할 책임이자 의무라고 생각한다.
하지만 성능을 알려면 테스트를 해야하고 그래서 테스트는 개발자가 하는게 아니라는 의식때문인지 그것은 개발자가 해야할 일이 아니라고 강변하는게 개발자들의 현실이다.
책임과 의무를 회피하기에 급급한 한국사회
프리랜서를 하다보면 다양한 사람들을 만나게 된다. 개발자, 기획자, 회사의 임원등등 다양하다. 개발자들의 경우에 대부분 자신들의 환경에 대한 불만을 많이 토로한다. 야근에다가 주말에까지 나와서 일을 해야하는 현실을 못마땅해하는 것이다. 거기다 경력 뻥튀기에 대해 비양심적인 행위라며 비난하기도 한다.
그들이 야근을 많이하고 일을 많이하는 것은 안타까운 일이다. 하지만 내가 여태까지 만나본 개발자들 중에 책임감을 가지고 일을 하는 사람은 단연코 단 한 사람도 없었다. 거기다 개발을 하는데 있어서도 이런 부분은 이런 기술을 적용하는 것이 낫겠다라는 고민을 하는 개발자도 단 한명도 없었다.
저마다 벽을 만들어서 그 벽을 넘어서려고 하지 않는다. 문제는 그 벽이라는 것이 개발자는 코딩만 하면 장땡, DBA 는 쿼리만 날리면 장땡이라는 벽이다. 나머지는 신경을 써야할 이유도 없고 그것이 내가 책임을 가지고 있어야 하는 이유도 없다는 인식이 팽배하다 못해 그것이 법처럼 여기지고 있다는데 있다.
개발자들의 잘못된 코드로 인해서 발생되어지는 시스템 장애를 인프라 담당자가 독박쓰면서 막고 있는 현실을 그들은 나몰라라 한다.
거기다 프로젝트를 수행하는 업체도 개발에서 발생한 문제를 인프라적인 요소로 땜빵할려는 마인드가 거의 지배적이다. 그렇게 하는 것이 정식인냥 떠들어대고 있으니…
한국 병이다. 개발자들이나 DBA 들을 보고 있노라면 이런 생각이 든다. 어디 SI, IT 분야만 이러겠나. 뭐든 일을 적게하면서 돈은 많이 받고 싶고, 뭐든 문제가 복잡해보이고 귀찮은 것은 남에게 떠넘기는 것이 능력으로 치부되는 사회.
뭐든 안하고 돈 받는게 능력으로 인정되는 사회… 양심, 책임, 의무.. 그런걸 주장하는 사람은 능력이 없는 사람이건 뭘 없어보이는 사람정도 평가 절하되는 사회.