2017년 5월 3일 수요일

정체성의 혼란

팀을 옮긴지 이제 2달 정도가 지난 것 같습니다.

사실 팀을 옮기지는 했지만 애초에 Developer에서 DevOps Engineer로 완전히 직군과 하는 일이 바뀌지는 않았습니다. 제 이전 글에도 밝힌 바 있는데, DevOps팀을 꾸리고 팀의 1차 목표였던 CD 구축에 Java Developer 가 필요했지만, 현재 DevOps팀에 있는 개발자 출신 직원이 Java가 아닌 C++, C# 개발자 출신이고, 적당한 인물의 신규 채용이 어렵다보니 제가 가게 된 것이지요.. 그래서 아직까지는 제가 하는 일은 여전히 SW 개발입니다. 다만, 제품 개발을 하고있는 것이 아니라 개발과 빌드환경에 필요한 툴들을 수정하거나 새로 만드는 일을 하고 있지요.

DevOps Engineer와 SW Developer 사이에서가 고민을 할 것이라는 예상은 하고 시작한 일이긴 한데, 예상외로 조금은 다른 문제로 정체성의 혼란을 겪고 있습니다.



분명 처음 시작을 할 당시에는 VP도 DevOps팀 매니져도 Java 개발을 할 사람이 필요하다고 하여 시작하게 된 일인데, 지금까지 약 2달동안 제가 한 업무의 대부분은 Java 보다는 오히려 C#과 Power Shell Script쪽이 더 많네요. 이전에 퇴직한 다른 개발자가 만들던 플러그인을 이어받아 안정화 시키고 개발 완료를 하는 것이 첫 임무였는데, 의외로 3주 이내에 해당 플러그인의 개발과 그 플러그인의 확장버젼 개발까지 완료를 하게 되었습니다.

그리고 다른 plug-in을 개발하던 중 상당히 장기화 될 것으로 보였던 리팩토링 중 일부가 한방에 해결되는 바람에 한시적으로 필요했던 그 plug-in 프로젝트는 그대로 closed 되었고, 저는 먹이를 찾아 떠돌아다니는 하이에나가 될 수 밖에 없었습니다.

일반 상품화 팀이라면 PM이 있고, PM이 이미 수백가지의 신규 개발 리스트를 가지고 있으며 개발팀에서 언제든지 일감을 달라고 조르면 던져줄 수 있는 스토리들이 백로그에 가득합니다. 하지만 DevOps팀에 따로 PM이 없으며, 아직 팀이 완전한 정상 궤도에 오른 상태도 아니다보니 팀 내에서 자체적으로 백로그 아이템들을 만들고, 백로그 내에서 우선순위도 우리 스스로 정하여 스스로 일감을 골라 진행해야만 합니다. 

지금도 크게 다르지 않지만 당시 저는 2~3주 가량 DevOps 구성원 중 하나로 일을 해 왔지만, 일반적인 DevOps 엔지니어와는 경험과 지식이 상이했고, 이전에 간간히 백엔드 개발을 하긴 했지만 제품 전반을 이해하는 수준은 아닌지라, 팀 내 개발자 출신들이 담당하는 백엔드 단의 리펙토링을 하기에도 무리가 있었습니다. 그런데 백로그 아이템을 아무리 뒤져봐도 우선순위 상위를 차지하는 것들은 대부분 백엔드 리팩토링이나 관련 빌드 스크립트 작성/수정 혹은 모니터링 툴의 개발과, Infrastructure 관련된 것들 뿐이였죠.

"흠... 뭐지? 나 뭐 해야하지? 할 일 없으니 다시 원대복귀 해야 하는걸까?"

그렇게 퇴근을 하고 고민을 하다보니 제가 개발한 확장형 플러그인을 보다 효율적으로 활용하기 위해 shim layer 성격의 별도의 서버 혹은 서비스를 만들자고 제안했던 것이 생각났고, 이 참에 제대로 자바나, 안되더라도 살짝 맛본 적 있는 Node JS로 간단한 REST API Shim 서비스를 만들어 보자는 생각이 들었고, 다음날 출근 후 stand up 미팅 시간에 제안을 했습니다. 안그래도 때마침 CD 서버 외에 다른 서버에서도 해당 서비스를 이용할 계획이 있던 터라 여러 서비스를 통합할 수 있는 Shim Layer가 필요했다며 다들 반기는 모습을 보니 '휴~ 앞으로 적어도 1-2주 정도는 이 일을 할 수 있겠구나' 생각하고 있었는데, 예상치 못한 암초가 다시 나타났습니다.

"Shim layer 성격의 서비스 개발은 찬성. 하지만 Node JS나 Java로 만드는 것은 반댈세!"

"왜?"

"회사에 Java 백엔드 개발이나, Node JS로 상용화 수준의 개발을 한 개발자가 없자나. 그러니 C#으로 하자. 닷넷 개발자는 쎄고 쎘으니."

"어...엉? 이거 아주 라이트 웨이트 서비스라 Node JS로 하면 엄청 심플하고 편할텐데?"

"그렇긴 할텐데, 다들 그냥 개인적으로 공부하고 이것저것 만져본 수준이지 사용화 경험은 아무도 없자나. 그리고, 이거 돌리려면 Node JS 지원되는 별도 VM이 하나 또 있어야 하는데, VM 리소스 관리에도 불편할꺼고, 또, 닷넷으로 해도 이런건 상당히 심플하게 쉽게 갈 수 있어."

사실 맞는 말이기는 했지만, 개인적으로 Node JS로 한 번 해보고 싶기도 했고, 안되더라도 Java는 또 제게 익숙한 언어라 Java로 하고도 싶었습니다. C#은 처음 나왔을 때 잠깐 본 적은 있었지만 제대로 공부한 적도 배운 적도 없었고, Visual Studio라는 툴 자체의 설치를 제가 그다지 좋아하지도 않았고요.

하지만 저 스스로도 개인적인 선호 외에 딱히 내세울 만한 이유도 없었고, 매니져와 다른 팀원들과 VP까지 모두 C#으로 가는 것이 맞을 것 같다는 의견을 보이니 제가 더 주장을 하기도 힘들었습니다. 그리고 난 그러면 다른 일감을 또 찾아야지... 라고 생각하던 차에 VP가 말을 하더라고요.

"왜? C#으로는 너 만들기 힘들어?"

딱히 적대감을 가지고 던진 질문은 아니긴 했지만, 그 말에 왠지 승부욕이 생기더군요. 그 말을 듣기 직전까지도 이 일은 이제 내 손을 떠났구나라고 생각을 했는데, 이제는 이건 내 일이라는 생각이 들었습니다.

"뭐... 나 백엔드 일도 가끔 하긴 했지만 난 C++ 모듈들만 해서 편하진 않지. 그래도 뭐 못할건 없어. 이거 간단한거자나"

"그래 그럼 니가 시작한 일이고, 이미 구조 디자인도 니가 잡아놨으니 니가 이거 하면 되겠네. 얘는 지금 백엔드 코드랑 빌드 스크립트 완전히 모듈화 시키는 일로 앞으로 반년 정도는 계속 바쁠테니."

그렇게 예기치않게 C# 일감을 갖게 되고 1시간 정도가 지나니 진한 후회가 밀려오기 시작하더군요. 기본적인 C#의 syntax야 알긴 하지만... 당장 C#으로 REST 서버를 구축하려면 무얼 어떻게 해야하는지 조차 전혀 알지 못하겠더군요.

"아... 놔... 내 무덤 또 내가팠네... 그냥 내가 right person이 아니라는 말을 했으면 될껄..."

그렇게 시작된 C#쪽 개발은 우여곡절 끝에 마무리가 되었는데, 일단 물꼬가 트이니 줄줄히 그 쪽 업무가 몰려 왔습니다. 회사가 있는 구역 전체가 2시간 가량 정전이 되어 중요도가 낮은 서버들은 잠시 shutdown을 시켰는데, 그 사이에 개발환경 서비스/서버간 예상치 않은 오류들이나 현재 상황을 미스리딩하는 모니터링 리포트들이 나와 그 문제들을 디버깅하고 수정하는 일도 생겼고, 또 다른 니즈가 생겨 또 다른 웹 서비스를 개발하는 일들도 생겼고요.

이렇게 팀을 옮긴 후 지난 2달여 돌아보니 첫 2주 반 가량만 Java를 개발했고 5주 정도는 C#을, 또 최근 1 주 정도는 Power Shell script를 작성하고 있네요. 제가 Java를 고집하는 것은 아니기는 하지만, 기본이 부실하면 쉽게 밑천이 드러나는 법이다보니 제대로 이해하고 있지도 않고,배운 적이나 공부한 적이 없는 C#으로 개발을 하다보니 개발 기간도 기간이거니와 리뷰 과정에서 몇몇 크리티컬한 오류들이 발견되는 일들이 당황스럽기도 하고, 속상하기도 하네요.

필요한 기술과 지식인데 저에게 부족함이 있다면 채우면 되겠지만, 현 상황이 제가 계속 C#을 해야만 하는 상황인지, 아니면 DevOps 엔지니어로서 빌드 인프라와 환경, VM, 도커, 스크립트, 쉐프 등을 익혀야 하는 상황인지, 아니면 당초 저에대한 니즈와 같이 Java쪽 일을 해야 할 일이 많은것인지도 정확히 감을 잡기 어려워 어느 방향으로 제가 뛰어가야 할지가 아직 갈피가 잡히지 않아 걱정입니다. 무엇보다 스스로 내가 무엇을 해야 할 지를 잘 찾지 못하고 알지 못한다는 점이 가장 답답하네요. 아무래도 지금 개발 진행중이고 일부 부분적으로 운영중인 파이프라인을 좀 더 알아보고 이해해서 현재 어떤 needs들이 있는지 스스로 찾아보아야 할 것 같습니다.

제 정체성은 누가 정해주는 것이 아닌 스스로 정해야 하는 것이니까요.

댓글 2개:

  1. 실력이 좋으시군요 ! 부럽습니다.

    답글삭제
    답글
    1. 실력이 좋았다면 이런 문제들이 없었을텐데... 안좋아서 문제죠.

      삭제