끄적끄적

12년차 엔지니어의 쿠버네티스 적응기

Aaron's papa 2021. 9. 4. 00:25
반응형

2년 전.. 제가 이런 글을 썼었죠.
https://brunch.co.kr/@alden/55

온프레미스 엔지니어의 퍼블릭 클라우드 정착기

오늘은 기술적인 내용이라기보다는 이직 후 제가 경험했던 내용들에 대해 이야기해보려고 합니다. 제목 그대로 온프레미스 환경에 익숙했던 엔지니어가 퍼블릭 클라우드 환경으로 정착해 가는

brunch.co.kr

호기롭게 새로운 도전을 해보겠다는 마음으로 스타트업의 세상에 발을 내디뎠던 그때, 나름 6개월간 지냈던 이야기를 썼었습니다. 그때는 온프레미스 엔지니어였던 제가 퍼블릭 클라우드에 익숙해 지기 위해 겪었던 것들에 대한 이야기를 적었었는데요, 그로부터 2년이 지난 지금 저는 또 쿠버네티스라는 새로운 친구를 만나 고생을 하고 있습니다.

그래서 이번 글은 쿠버네티스라는 새로운 친구를 만나 어떻게 지내고 있는지 그에 대한 이야기를 한 번 적어 봤습니다. 제가 겪었던 이야기들이 누군가에게 도움이 되길 바라며 글을 시작해 보겠습니다.


애증의 쿠버네티스

사실 쿠버네티스를 처음 만난 건 이번이 아니었습니다. 카카오에 재직하던 시절에도 쿠버네티스를 만났었죠. 굉장한 기술임에 분명했고 뭔가 패러다임을 바꿀 수 있을 정도로 큰 변화를 일으킬 것이라는 것을 직감할 수 있었습니다. 마치 퍼블릭 클라우드가 그랬던 것처럼요. 하지만 저에겐 쿠버네티스가 무척 어려웠습니다. 그동안 새로운 기술을 계속 배워왔고 익혀왔음에도 불구하고 쿠버네티스는 쉽게 익숙해지지 않는 기술이었습니다.
새로운 기술을 학습하고 익히는 과정은 처음 해보는 것도 아니었고 그전까지 다양한 기술들, ElasticSearch나 Redis, Memcached 등등 처음 시작할 때는 아무것도 몰랐던 기술들을 학습을 통해 익혀오고 업무를 진행할 수 있는 수준까지 역량을 키워왔던 경험들이 있었는데도 불구하고 쿠버네티스 같은 경우는 계속 헛바퀴를 도는 느낌이었습니다. 돌이켜 생각해 보면 ElasticSearch나 Redis, Memcached 같은 기술들은 제가 직접 사용해 보고 부딪혀 보면서 익혔던 기술이지만 쿠버네티스는 그렇게 하지 못했던 게 원인이 아니었을까 생각해 봅니다. 역시 뭐든 직접 써보고 부딫혀 봐야 익힐 수 있으니까요.
아무튼 그래서 저는 쿠버네티스라는 기술에 대해 막연한 두려움이 있었습니다. 비엔엑스(지금의 위버스 컴퍼니)로 이직한 후에도 AWS 기반의 퍼블릭 클라우드로 서비스를 하기 때문에 쿠버네티스가 필요하지 않을거라고 생각했고, 실제로도 그랬습니다. 굳이 학습하려고 하지도 않았죠. 하긴 그래도 그 때 생각해 보면 AWS 를 공부하기에도 바쁘고 힘들었으니 쿠버네티스를 학습 해야 겠다는 생각 자체를 하지 못했던 것 같습니다. 이렇게 몇년간 쿠버네티스로부터 도망 다니고 있었는데 결국 돌고 돌아 다시 만나게 되었습니다.


이젠 피할 수 없게 된 쿠버네티스

올해 4월, 저는 핀테크에 대한 새로운 도전을 시작해 보겠다는 부푼 꿈을 안고 당근페이로 자리를 옮겼습니다. 입사한 당근페이는 기반 시스템으로 쿠버네티스를 사용하고 있었습니다. 그때 깨달았습니다. 아.. 이제 더 이상은 피할 수 없겠구나..

멋진 동료를 찾고 있습니다. (https://team.daangn.com/jobs/)

그동안 요리조리 잘 피해 다녔지만 결국 이렇게 만나게 된 쿠버네티스. 더 이상 피할 수 없을 것이라고 생각했습니다. 그리고 그때부터 쿠버네티스를 어떻게 해야 학습할 수 있을까 고민을 하기 시작했습니다.


쿠버네티스 학습 시작

쿠버네티스를 학습하는 것은 여전히 어려웠습니다. 사실 어디서부터 어떻게 시작해야 할지를 몰랐다는 게 더 정확한 표현 일 겁니다. 파드, 레플리카셋, 서비스 등등 쿠버네티스를 구성하는 요소들이 무엇인지는 알았지만 이걸 어떻게 조합해서 서비스를 구현해야 할지 전혀 감이 잡히질 않았습니다. 그리고 무엇보다 컨테이너에 대한 경험이 많지 않은 게 저에게는 가장 큰 어려움이었습니다. 그래서 제일 먼저 시작한 건 컨테이너에 대한 공부였습니다.
컨테이너를 먼저 공부하고 쿠버네티스로 넘어온 게 저에게는 더 좋은 학습의 방향이었던 것 같습니다. 사실 쿠버네티스는 컨테이너를 어디에 띄울 것인지를 저를 대신해서 결정해 주는 시스템이라고 생각합니다. 그래서 컨테이너를 모르고 쿠버네티스를 학습한다는 건 불가능한 일이었죠. 마치 리눅스를 모르면서 EC2 인스턴스를 만들고 서비스를 올리려는 것과 같다고 생각 합니다. 그래서 제일 먼저 시작했어야 하는 공부는 쿠버네티스가 아니라 컨테이너였습니다.
컨테이너를 공부하기 위해 컨테이너 이미지를 만드는 Dockerfile부터 다시 시작했습니다. 그리고 docker-compose 등을 이용해서 컨테이너 이미지를 실행 시키고 애플리케이션을 띄우는 것도 공부 했습니다. 전체적인 흐름으로 보자면 스프링 부트로 hello world 를 찍는 것부터 시작해서 hello world 앱을 컨테이너로 만드는 작업, 그리고 컨테이너 이미지를 로컬에서 docker 명령으로 실행 시키는 작업, 원격 서버에 컨테이너 이미지를 실행 시켜서 브라우저로 붙어 보는 작업의 순서로 학습 했습니다. 여기까지 학습하고 나서 쿠버네티스를 보니 이제야 조금 쿠버네티스가 보이기 시작 했습니다.

docker로 이거 띄우려고 갖은 고생을 했던 기억이..

쿠버네티스를 다시 학습하기 시작할 때는 디플로이먼트를 작성하는 것부터 시작 했습니다. 대부분의 책들이 파드를 단독으로 띄우는 것부터 시작하긴 하는데 사실 그건 실무에서는 사용하지 않는 방식이기도 하고, 그 간 책을 보면서 어느 정도 개념은 익혔기 때문에 생략했습니다. (수학의 정석 1장 집합 부분만 너덜너덜해 진거랑 비슷하죠)
그리고 엉망진창의 디플로이먼트를 바탕으로 컨테이너를 띄워 보면서 수십 번을 반복했더니 비로소 디플로이먼트가 이해가 가기 시작했습니다. kubectl describe deployment, kubectl decribe pod 를 정말 수백 번은 입력했던 것 같습니다. 왜 파드가 안 뜰까? 오히려 엉망진창의 디플로이먼트를 바탕으로 계속해서 안 되는 걸 수정하다보니 그게 더 효과적인 학습이 되었던 것 같습니다. 잘되는 디플로이먼트 보다 잘 안되는 디플로이먼트를 통해 왜 안되지 라는 걸 해소하다 보면 아 이걸 놓쳤구나, 이게 이래서 그렇구나 라는 걸 알게 되었기 때문이라고 생각합니다. 그리고 이건 저의 학습 스타일과도 결이 맞아서 더 효과적이었다고 생각 합니다.
그리고 무엇이든 물어볼 수 있는 최고의 동료가 바로 옆에 있었다는 것도 저에게는 행운 이었습니다. (클로드 베리 생유 ㅋㅋ)

클로드가 진행하는 패스트캠퍼스 강의!

하지만 쿠버네티스 학습 과정에서 제가 깨달은 것, 제가 오늘 진짜로 하고 싶은 이야기는 바로 이다음부터 입니다.


자기 자신의 가능성을 믿는 것

손발이 오그라 드는 느낌이지만 학습에 있어 가장 많이 도움이 되었던 건 바로 자기 자신의 가능성을 믿고 끝까지 하려고 노력했던 것이었습니다. 이번에도 쿠버네티스를 학습할 때 저를 제일 힘들게 했던 건 너무 어렵다. 포기하고 싶다 였습니다. 아무리 해도 잘 안되기도 했고, 제가 연차도 있으니 못하는 모습을 보이면 안 된다, 빨리 나아진 모습을 보여줘야 한다는 나름대로의 압박들이 자꾸 자신감을 잃게 하고 중간에 포기하게 만들었습니다. 하지만 그럴 때마다 결국 다시 일으켜 세워준 것도 나 자신이었습니다. 그간의 작은 성공의 경험들, ElasticSearch를 학습했던 과정, Redis를 학습 했던 과정, 리눅스 커널을 학습했던 과정들이 저에게는 작은 성공의 경험들이었는데, 이것들이 저에게 힘이 되었습니다.
자기 자신을 믿는 것. 사실 이게 가장 중요하지 않을까 생각합니다. AWS 만해도 그렇죠. 2년 전에는 AWS에는 EC2 만 있는 줄 알았던 완전 문외한이었는데 지금은 AWS 기반으로 시스템 구성을 할 줄 아니까 2년 전에 비하면 정말 많이 발전했다는 생각이 듭니다. 2년 전, 저 위에 퍼블릭 클라우드 정착기라는 글을 쓸 때에도 과연 내가 잘할 수 있을까 라는 생각에 휩싸여 힘들어했던 시기였습니다. 이제와 생각해 보면 저 위에 썼던 글이 그때 당시 힘들어했던, 지금과 비슷했던 그 시절을 떠올리게 했고, 결국 그 시기를 잘 버텨내고 이겨낸 저의 모습을 떠올리게 했습니다.

맞아. 나 2년 전에도 AWS 배운다고 개고생 했지. 지금처럼. 그러니까 쿠버네티스도 잘할 수 있을 거야.

이게 저를 버티게 해 준 힘이었습니다. 물론 그렇다고 해서 제가 지금 쿠버네티스를 잘하는 건 아닙니다. ㅎㅎ 처음 시작할 때보다 나아졌을 뿐이죠. 학습은 끝이 없습니다.

쑥스럽지만 저의 이야기를 글로 쓴 이유도 바로 이 이야기를 하고 싶어서였습니다.

무언가 새로운 것을 학습한다는 것은 힘들고 어려운 일입니다. 특히나 저처럼 점점 연차가 높아지면 과거의 기술에 휩싸여 새로운 것을 익히기 어려워하는 게 사실이죠. 익숙하고 잘하는 것만 하고 싶은 건 사람이라면 누구나 느끼는 감정이라고 생각합니다. 저도 그랬으니까요. 왜 굳이 쿠버네티스를 써야해? 그냥 AWS 에서 EC2 만들고 이런 것들 다 API로 되는데 왜 복잡하게 쿠버네티스를 써야해? 라고 생각하면서 애써 피해 왔습니다. 내가 잘하는, 나에게 익숙한 환경을 유지하고 싶은 마음이 가장 컸던 거죠. 물론 모든 IT 회사가 쿠버네티스를 써야 한다고는 지금도 생각하지 않습니다. 각자의 필요성과 환경에 따라서 다르겠죠. 이제 막 창업한 스타트업이 러닝 커브가 높은 쿠버네티스를 사용할 필요는 없다고 생각 합니다. 익숙한 EC2 기반으로 먼저 서비스를 만들고 오픈해서 시장의 반응을 살피고 사업이 안정화 되어서 확장의 시기가 되었을 때 그 때 가서 쿠버네티스를 고려해도 늦지 않다고 생각 합니다.
아무튼 이렇게 새로운 기술을 익히는 건 어려운 일이기 때문에 더더욱 자기 자신에 대한 믿음에서부터 출발해야 합니다. 할 수 있다고 믿고 끝까지 해보는 것, 이게 가장 중요한 게 아닐까요

아마도 지금 어딘가에서는 저처럼 잘 안 되는 기술을 가지고 끙끙 거리며 배우고자 노력하고 있는 분들이 계실 겁니다. 그 모든 분들에게 대신해서 전해주고 싶습니다.

그게 무엇이든, 당신은 할 수 있습니다.
반응형