지난 토요일(2019.12.07) 아주 좋은 기회로 우아한 형제들의 개발리더, 데브옵스로 재직 중인 분들을 만나서 이것 저것 물어볼 수 있는 기회를 가졌다.
학교다닐 때는 개발이 너무 재밌었고, 자바를 더 알고싶었고 의욕도 넘쳤는데 대기업 IT 에 입사하며 점점 현실에 순응하는 중이었고 이렇게 사는 것도 딱히 나쁘진 않겠다 라는 생각이 들기도 했었다. 그러던 중 최근 몇주간 원치않던 일을 떠맡게 되었다. 내가 이런 일을 하려고 학교다닐 때 그렇게 열심히 공부하고 울고불고 노력해가며 대기업에 취업했나 싶을 정도로 정말 (내 기준) 생산성 없고 의미 없는 업무였다. 물론 누군가는 해야할 일이지만, 그 누군가가 내가 되는건 정말정말 싫었다. 좀 이기적인가?
내 나름대로 심각한 스트레스여서 보임자에게 무슨 자신감인지 이거 계속 시키면 퇴사할거라고 으름장도 놔보고 여기 저기 높은 분들에게 너무 힘들다고 징징거려도 보고 애처럼 울어도 봤는데, 돌아오는건 위로 + 그래도 조금만 버텨봐라 + 언젠가 도움이 될 것이다 이 뿐이었다. 솔직히 아무리 생각해도 내 인생에 전혀 도움될 것 같지 않다. 확실히
고백하자면 처음부터 자체 서비스를 하는 회사를 가고 싶었고, 이 회사를 입사하고 나서도 바로 이직 준비를 열심히 해볼 생각이었다. 하지만 우연히 맡게 된 내 직무가 맘에 들고, 이렇게 큰 규모의 회사에서 이런 직무를 맡는것도 행운이겠다 싶어서 잠시 이직의 꿈을 접었던 것인데, 현실은 내가 하고 싶은 일만 할 수 없는 거라 요즘 좀 많은 생각을 했었던 중 이런 기회가 찾아왔다.
아무튼 서론이 길었고 이런 와중에 머리를 세게 맞은 순간이 몇 번 있었다.
요즘 여느 회사처럼 우리 회사도 클라우드에 대한 관심과 투자가 엄청나다. 그 때문인지 컨테이너 기술, 그리고 멀티클라우드에 대한 수요가 쏟아진다. 하지만 그만한 전문가는 사실 많지 않은 것이 현실이다.
이런 상황에서 나에게도 컨테이너 기술을 습득하라는 압박이 주어지는데, 솔직히 재밌었다. 재밌었고 뭔가 남들보다 앞서나간 트렌디한 기술을 사용한다는 쓸데없는 부심도 있던 것 같다. 이런 생각이 조금씩 들던 중 몇가지 사건이 있었다.
1. AWS CodeDeploy EC2 Canary 배포를 구성하라는 사수의 요청
- 아는 사람은 알겠지만 AWS CodeDeploy 에서 Canary 배포는 람다에 대해서만 지원한다. 그래서 나는 딱 블루/그린, 롤링에 대해서만 정리해가고 까나리배포는 지원하지 않습니다. 라고 말했는데 한마디 들었다. 그럼 AWS가 지원해줄 때까지 EC2 Canary 배포는 못하는거냐고. 단편적인 것만 보면 안된다고. 진짜 필수적으로 까나리배포가 필요한 요구조건이면 어떻게 할거냐고. 이때 처음으로 내가 진짜 얕게 알아가고 있다는 생각이 들었다. 콘솔로 못하는건 못한다고 말하는 사람이 인프라 담당이라고 할 수 있을까? 하고.
2. 스터디 토이프로젝트 TravisCI 구축
- 토이프로젝트 CI/CD 를 Travis CI + CodeDeploy 를 통해 구축하는 것을 맡았는데, 친절하게 설명된 게시글까지 받아서 사실 쉽다고 생각했다.(https://jojoldu.tistory.com/265) 모든 과정이 원활했지만 딱 jar 배포하는 스크립트에서 막혔다. 사실 지금 다시 보니까 조금만 봤어도 금방 이해했을 스크립트지만 그때는 바쁘기도 바빴고 회사에서 Docker로 배포하는 스크립트를 과장보태서 열몇번은 짰던 터라 도커가 편하기도 했다. 그래서 굳이 도커카 필요없는 환경임에도 EC2에 도커를 설치하고 Docker 배포 스크립트를 사용했는데 내가 Jar 배포도 어렵다고 못하는데 Docker 배포하는게 의미가 있는건가 싶었다. 솔직히 그 스크립트도 지금보면 스크립트라고 말하기도 부끄럽다 ㅋㅋㅋ
그리고 이번 자리에서 비슷한 질문을 드렸다.
Q. 회사에서 컨테이너 기술에 대한 다양한 요구가 들어옵니다. 쓰라고 해서 쓰긴 하지만 사실 제대로 쓰고 있는거 같진 않은데 어느정도 익히고 나서야 상용화된 환경에 적용을 하는게 좋을까요?
뜻밖의 답을 받았다.
A. 우리회사는 컨테이너 기술을 쓰지 않는다. 굳이 필요가 없기 때문이다. 그리고, 온프레미스에서도 적용하지 못하면서 컨테이너, 클라우드 기술을 도입부터하는것은 좋지 않다고 생각한다.
대충 요약하면 이 두줄이었는데, 조금 더 자세하게는 언제든지 A환경에서 B환경으로, 그리고 C환경으로 같은 애플리케이션을 운영할 수 있는 사람이 되어야 합니다. 온프레미스에서 운영도 잘 하지 못하는데 컨테이너에 배포만 할줄 아는 것이 무슨의미일까요. 그리고, 리눅스 환경에서 기본적인 트러블슈팅도 할 수 없는 사람이 컨테이너 기술을 사용한다고 말할 수 있을까요. 라는 말을 하셨는데, 진짜 내가 그동안 많이 느꼈지만 "트렌드, 요즘기술" 이라는 명목으로 애써 무시했던 기본에 대한 생각을 다시 깨우는 순간이었고 머리 한번 쎄게 맞은 느낌이었다.
이 시간 후 개발, 공부 뽕이 엄청 찼는데~ 사실 사람인지라 지금 또 조금 죽긴 했지만 ㅋㅋㅋ 나름 "본질"에 대한 의미를 깨달은 순간이었다. Jar 배포 스크립트도 어렵다고 넘어간 내가 도커 배포 스크립트를 짠다고 배포할줄 안다고 할 수 있을까? 스크립트를 짤줄 안다고 할 수 있을까? 자바 8 스트림도 어렵다고하고 디버깅도 제대로 못하면서 스프링부트로 에이피아이 몇개 짤줄 안다고 스프링을 안다고 할 수 있을까?
여전히 나는 현직자고, (내 기준) 쓸데없는 잡무로 커리어에 전혀 도움되지 않는 시간을 보내는 시간도 있고, 고객의 요구가 있다면 아직 잘 알지도 못하는 컨테이너 기술을 도입해야한다. 하지만 적어도 기본을 다지고 싶어졌다. 빠른 시일 내에 내가 이 직무에 대해 잘 안다고 당당하게 말할 수 있는 날이 오기를 바란다 :) 그리고 꼭 싸인에 남겨주신 말이 이루어지길..!