끄적끄적

클라우드 시대, 인프라 엔지니어의 역할에 대해 생각하다.

Aaron's papa 2021. 12. 15. 18:12
반응형

요즘 제가 가장 많이 하고 있는 고민 혹은 생각 중 하나가 과연 인프라 엔지니어의 역할은 무엇인가입니다. 제가 인프라 엔지니어로 일을 시작한 지 벌써 10년이 넘었고, 10년이면 강산도 변한다는 시간인데 과연 나는 변화하는 시대에 맞추어 나의 역할을 잘해나가고 있는가 라는 생각을 하고 있습니다. 그리고 그 생각은 인프라 엔지니어라는 직무의 역할에 대한 생각으로 이어져 나갔습니다. 조금 민감한 주제일 수 있고 아마 제 생각에 동의하지 않는 분들도 많겠지만 역할에 대해 생각해 본다는 것 자체가 중요한 일이라고 생각합니다. 민감하고 무거운 주제이지만 가볍게 한 번 이야기를 시작해 보려고 합니다.


이 글을 쓰게 된 이유

사실 이 글을 쓰게 된 계기는 같은 팀 동료인 병진님과의 가벼운 티타임에서 나눴던 이야기가 시작 이었습니다. 여느 때와 다름없이 티타임을 하며 이런저런 이야기를 나누던 중 누가 먼저 시작이었는지 잘 기억나진 않지만 우리 팀의 역할에 대한 이야기로 이어졌습니다. 그리고 여기서 병진님과 제가 전혀 다른 생각을 가지고 일을 하고 있었음을 알게 되었습니다. 그동안 각자 일이 바빠서 업무에만 집중하다 보니 본질적인 것에 대한 이야기를 나눌 기회가 없었는데, 이제라도 이야기를 하게 되어서 다행이라고 생각했습니다. (6개월 동안 당근 페이 인프라를 둘이서 만들어 왔으니.. 일을 처리하기만도 바빴다는 게 핑계 아닌 핑계가 되네요.)

먼저 제가 생각하고 있던 팀의 방향, 그리고 인프라 엔지니어의 역할에 대해 이야기를 시작 했습니다.

"개발자들이 개발에만 집중할 수 있는 환경을 만들어 주는 역할을 해야 한다고 생각해요."

하지만 병진님은 저와는 다른 생각을 가지고 있었죠.

"개발자들이 개발뿐만 아니라 운영에도 참여할 수 있어야 한다고 생각해요. 그리고 데브옵스 조직에서는 이를 위한 플랫폼과 도구를 개발 및 운영하고, 가이드를 제공하는 역할을 해야 한다고 생각해요."

어쩌면 다른 경험을 해 왔기 때문에 엔지니어의 역할에 대한 생각도 달랐다고 생각되었습니다. 어쨌든 그날의 티타임 이후로 저는 인프라 엔지니어는 어떤 역할을 해야 할 것인가 라는 질문에 대해 계속 생각하게 되었습니다. 


온프레미스에서의 경험

아마도 제가 인프라 엔지니어의 역할을 "개발자들이 개발에만 집중할 수 있는 환경을 만들어 주는 것"이라고 생각하게 된 것은 제가 걸어왔던 길이 온프레미스 환경이었기 때문이라고 생각합니다. 온프레미스 환경은 클라우드 환경과는 다르게 인프라를 구성하는 게 어렵고 복잡합니다. 서버를 구매해야 하고, 구매한 서버를 어느 데이터센터의 어느 위치에 설치해야 할 것인지 결정해야 하고 서버가 입고되면 OS를 설치하고 하드웨어들이 잘 동작하는지 모니터링도 해야 합니다. API를 기반으로 소프트웨어 적인 방법으로 인프라를 구성하고 운영할 수 있는 클라우드 와는 다르게 온프레미스 환경은 사람이 개입해야 하는 수작업이 동반됩니다. 그리고 데이터센터 엔지니어와 함께 진행해야 하는 물리적인 작업도 수반하죠. 그래서 개발자들이 인프라 작업을 하기가 어렵습니다. 그렇다 보니 업무 자체가 성격이 달라지고 각자의 영역이 생기게 됩니다. 그래서 개발 업무, 운영 업무가 나눠지게 되고 운영하는 입장에서는 개발자들이 최대한 인프라에 신경 쓰지 않게 하려는 노력을 하게 됩니다. 어떻게 보면 너무 다른 영역이라서 서로의 영역을 존중하고 서로의 영역에 대해 이야기하는 것이 조심스러워지기도 합니다. 그러다 보니 자연스럽게 개발자들이 개발에 집중할 수 있도록 만드는 것이 좋은 운영 능력을 가지고 있는 엔지니어의 척도가 되기도 합니다. 하지만 클라우드 환경으로 넘어오게 되면 환경 자체가 달라지기 때문에 바라보는 관점도 달라지게 됩니다.


클라우드에서의 경험

10년 정도 온프레미스 환경에서 엔지니어로서 일을 해오다가 2년쯤 전인 2019년 초에 저는 비엔엑스(지금의 위버스 컴퍼니)로 이직을 하면서 자연스럽게 AWS 클라우드 환경으로 넘어오게 됩니다. 그때 당시 제가 겪었던 경험들을 여기에 정리하기도 했죠. 하지만 이 때도 사실 업무 환경이 온프레미스에서 클라우드로 넘어왔을 뿐, 제가 하던 업무 스타일은 그대로였죠. 개발자들이 인프라에 대해 신경 쓰지 않고 개발에 집중할 수 있도록 모든 인프라 업무를 처리하는 것, 그게 제가 해왔던 업무 스타일이었고 제가 가장 잘할 수 있는 방식이었습니다. 지금 생각해 보면 그게 과연 옳았는지는 잘 모르겠습니다. 아마 함께 했던 개발자분들은 AWS에 좀 더 친숙해지고 이것저것 사용해 보고 싶으셨는데 저의 업무 스타일 때문에 그걸 못해서 아쉬워하셨을 수도 있습니다. 

아무튼 클라우드는 온프레미스 환경과 달랐습니다. 이제는 서버를 구매해야 할 필요도 없고, 구매한 서버를 어떤 데이터센터에 설치해야 할지, 하드웨어는 잘 동작하는지 등등을 모니터링하지 않아도 됩니다. 모든 리소스를 API를 통해서 소프트웨어 적인 방법으로 만들어 내고 사용할 수 있습니다. 그러니까 상대적으로 자동화, 표준화를 구현하기 더 쉬운 환경이라고 볼 수 있습니다.


게이트키퍼와 가드레일

위에서 언급했던 두 가지 역할에 대한 관점의 차이를 가장 확실하게 표현할 수 있는 단어는 게이트키퍼가드레일입니다.

당근마켓 SRE 밋업 2회 - 당근마켓은 왜 배포 시스템을 만드는 가에서 발췌 (변정훈님 발표)

저에게 큰 울림을 주었던 변정훈 님의 발표 자료에서 가져왔습니다. (https://daangn.notion.site/SRE-ca64e762e18e492fa449f8e43f0114d5#60796d369e93493989a2a3d1d1320345)

게이트키퍼 접근 방식은 인프라 작업 요청을 인프라 엔지니어가 직접 처리하는 방식입니다. 인프라 구성이 표준화 되는 장점이 있지만 인프라 엔지니어의 업무량이 과도하게 올라갈 수 있고 단순 반복 작업들에 의해 업무 효율이 낮아질 수 있습니다.

가드레일 접근 방식은 서비스를 구성하기 위해 필요한 인프라 작업을 개발자들이 직접 처리하는 방식 입니다. 이때의 직접이란 AWS 콘솔을 통해서 직접 인프라를 구성하는 형태의 작업을 의미하는 게 아니고 미리 만들어진 도구 혹은 플랫폼을 이용해서 작업을 진행하는 것을 의미합니다. 가드레일 접근 방식은 인프라 구성을 직접 할 수 있는 도구 혹은 플랫폼을 만들어야 하기 때문에 수많은 케이스에 대한 연구와 표준화, 자동화가 필요하지만 상대적으로 인프라 엔지니어의 단순 반복 작업이 줄어들게 됩니다. 어떻게 보면 초기 비용이 많이 들어가지만 잘만 구축된다면 이후로는 개발자들의 자유로운 참여와 인프라 엔지니어의 업무 효율화를 함께 가져갈 수 있습니다. 그리고 가드레일 접근 방식을 기반으로 한다면 인프라 엔지니어의 가장 큰 업무 중 하나가 자동화 플랫폼 혹은 도구를 만들고 관리하는 것이 됩니다.  

사실 두 관점 중 어떤 게 더 우월하다 좋다 라고 말할 수는 없습니다. 각자 처한 환경과 회사의 문화에 따라 다르기 때문입니다. 결국 어떤 방향으로 가는 것이 모두에게 유리한가에 대해 개발자와 엔지니어가 함께 이야기하고 맞춰 나갈 수 있어야 합니다.

제 개인적인 생각은..

지금부터가 조심스러운 부분 입니다만.. 저는 클라우드 환경에서는 가드레일 접근 방식으로 나아가야 하지 않을까 생각해 봅니다. 클라우드 환경은 온프레미스에 비해 자동화 하기에 훨씬 좋은 조건이기 때문에 인프라 엔지니어가 자동화를 잘해 놓고 개발자들이 자유롭게 사용할 수 있는 환경을 만들면 되지 않을까 생각합니다. 인프라 엔지니어는 단순 반복 작업에서 해방되어서 좋고 개발자들은 직접 인프라를 구성하면서 인프라 구축 및 운영에 대한 경험이 늘어나서 좋고 양쪽 모두에서 좋은 방향이 아닐까 생각 합니다. 그리고 이렇게 서로 볼 수 있는 관점의 폭이 늘어나면 자연스럽게 사고의 확장이 되고 이를 통해 질적 발전을 추구할 수 있게 된다고 생각 합니다. 장애 처리 과정만 생각해 봐도 그렇습니다. 개발자들이 AWS 인프라 구성에 대해 이해하면 장애가 발생했을 때 어디서 문제가 되는 건지 인프라 엔지니어와 함께 살펴볼 수 있고, 이를 통해 더 빠르게 장애를 파악하고 조치할 수 있게 됩니다. 


마치며

앞에서 이야기한 것처럼 저는 클라우드 시대의 인프라 엔지니어의 역할은 가드레일 접근 방식으로 나아가야 한다고 생각합니다. 물론 저도 10년 동안 몸에 익숙해져 있는 게이트키퍼 접근 방식을 하루아침에 버리진 못하고 아직도 시행착오를 겪고 있습니다. 하지만 분명하게 방향은 가드레일 접근 방식이 맞다고 생각하고 그 방향으로 나아가기 위해 매일매일 노력하고 있습니다. 

참고로 저는 이 말이 정말 싫습니다.

"인프라 엔지니어는 그냥 서버 주는 사람 아닌가요?"

이제 그런 시대는 가고 없어지고 있습니다. 이 글을 시작으로 인프라 엔지니어의 역할에 대해 더 많이 이야기 나누고 더 좋은 방향성을 찾아갈 수 있는 계기가 되었으면 좋겠습니다.

반응형