정말 오랜만의 포스팅입니다.
감사하게도 저는 올해부터 Buzzvil에서 신입 DevOps 엔지니어로 근무하고 있습니다. (물론 수습기간입니다.) 그간 DevOps 엔지니어 신입 준비를 하면서 느낀 점들, 경험을 공유하려고 합니다.
취준을 하면서 느낀 점은 DevOps 관련 취준 글,정보는 정말 없고, 그 중에서도 신입은 더 씨가 말랐다는 점입니다. 아예 없어요 없어...
이것이 제가 "내가 성공해서 성공담을 남기리라.."는 결심을 남기는 계기가 되었습니다. 블루오션
그럼 들어가보겠습니다.
신입 DevOps Engineer (없음)
DevOps 분야는 신입을 선호하지 않습니다. 여러가지 이유도 있겠지만 제 생각으로는 경력이 없는 분들(신입) 중 DevOps 분야를 가고자 하는 분들이 거의 없는 것도 큰 것 같기두 하고요. (인재 풀이 적음, 일반적으로 DevOps 개념이 학부생에게 잘 알려져 있지 않음. 입사 후 처음 DevOps를 알아가는 경우가 많음. ) 또 개발 생명주기 전체에 걸쳐 관리하고 모니터링,운영하는 업무를 가진 특성 상 서버 개발 경력이 있어야 DevOps 일을 더 잘할 수 있는 건 분명하구요.
그래서 대다수의 분들은 Server 개발자로 일을 시작하시다가 DevOps 분야에 관심이 생겨 직무를 이전하시는 경우가 많다고 알고 있습니다. 저도 이 길이 DevOps 엔지니어가 되기 위한 좋은 방법 중 하나라고 생각합니다.
하지만 저는 이 분야를 정말 재밌어하고 좋아했던 사람이었고 그런 현실과 타협하기는 싫었습니다. 일단 한번 부딪혀보기로 했죠.
내 장점과 단점이 뭘까
먼저 취준을 시작하기 전 저의 장단점을 분석해 봤습니다. 저는 이 부분이 정말 중요하다고 생각하는데, 겸손과 오만 없이 객관적으로 자신을 분석하기란 생각보다 쉬운일이 아니라서요.
나의 장점
- 알고리즘 문제해결력이 높다.
- SOMA 프로젝트 활동으로 자기주도적 서버리스 아키텍처링, 백엔드 개발 능력을 보여줄 수 있다.
- AWS SAA 취득으로 얻은 AWS 인프라 지식들
- DevOps, SRE, finOps 전반적으로 넓고얕은 지식들
- 개발 경진대회 프로젝트로 k8s, Terraform 사용경험 있음.
나의 단점
- 무(無)경력
- 네트워크, Linux, k8s, docker관련한 지식, 운영 경험 수준이 낮다.
- Istio를 비롯한 서비스 메시, prometheus를 비롯한 모니터링 도구에 대한 지식이 전무하다.
- python, Go 언어 등 DevOps 분야에서 주로 활약하는 언어들을 능숙하게 사용하지 못함.
이 정도로 분류를 하고나니 선택과 집중을 할 수 있었습니다. 그 중 단점3은 개인 프로젝트나 작은 프로젝트로는 거의 메꿀 수 없는 분야라 생각하기에(간단한 예제 실습 수준인 hello world 수준으로는 배울 게 없음) 단점2에 집중해서 전체적인 기반적 지식을 쌓고자 했습니다. 아래는 제가 각 분야를 학습한 방법입니다.
단점 메꾸기
네트워크 분야를 공부할 때 많은 도움이 되었던 서적입니다. 이 외에도 이 분의 블로그 포스팅들이 많은 도움이 되었습니다.
특히 네트워크 분야는 이후의 k8s,docker,Linux 등 어떤 과정과도 연계되는 중요한 기반 다지기 분야라고 생각됩니다. 저는 책으로 공부해야 효율이 좋은 편이라 잘 모르는 상태에서 1회독, 부족한 부분들을 공부하고 2회독, 이해가 아직도 완벽히 안 되었으면 3회독 하는 형식으로 책들을 읽어나갔습니다.
|
리눅스도 빼놓을 수 없는 중요한 분야입니다. 기본 커맨드 뿐만 아니라 커널의 구조, system call 등 많은 부분들이 Docker의 탄생계기, 구현원리 와 연결되는 과정이기 때문입니다. 특히 리눅스 커널 이야기 라는 서적이 가장 인상깊었고 저에게 시야를 확장시켜준 책이었습니다. (TCP KeepAlive, swap과 free 등)
그 다음은 쿠버네티스(k8s)인데.. 사실 k8s는 공식 Docs가 워낙 잘 되어있고 설명도 한국어라 Docs를 많이들 추천하시지만
솔직히 저는 처음 읽어볼때 당췌 무슨 말인지 이해가 잘 안갔습니다. 워낙 type이 많고 그 종류도 다양하니까요. 저는 어떤 것이다, 어떻게 사용하는 것이다 가 궁금한 게 아니라 구글이 어떤 문제점을 해결하고자 이 타입의 서비스를 만들어서 어떻게 해결했는가 가 더 궁금했거든요.
https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/
여러 공부방법을 찾다가 저는 유데미의 CKA 강좌를 선택했습니다. 다른 여러가지 이유가 있었지만 선택한 주요 이유로는, 컴포넌트가 생기게 된 배경 같은 설명도 자세했지만 터미널 환경의 실습환경을 제공한다는 점이 컸습니다.
물론 minikube나 k3s 등을 로컬로 설치해 커맨드를 연습할 수 있지만, 해당 강좌에서 지원해주는 환경은 문제 여러개를 내주고 터미널로 해당 문제를 정확히 수행하면 정답 체크까지 해주는 시스템이라서 학습에 많은 도움이 되었습니다. 자격증 이야기는 하단에서 한번 더 설명하겠습니다.
그외에도 언급은 하지 않았지만 OS, 자료구조, 알고리즘, DB 모두 중요한 기본적인 내용입니다. 거기다 AWS 지식은 필수, Terraform, Docker도 이론을 넘어 직접 실습은 하시는 것이 좋습니다.
그리고 이 책은 취업에 큰 도움은 되지 않지만 정말 재밌는 책이니 꼭 읽어보셨으면 좋겠습니다.
몇 번의 면접, 실패와 배운 점들
그렇게 포트폴리오도 준비하고 기반 지식도 익혀 지원을 넣어보기로 결심하고 링크드인, 원티드, 잡플래닛 등을 뒤져 DevOps, SRE 분야를 긁어모았습니다. notion에다가 여러가지 요소들을 넣고 분석하며 지원할 기업들의 리스트들을 정리했습니다.
지원하기 전 기업들을 리스트하며 느낀 점들로는,
정시 채용 인원 단 0명, 모두 수시 채용
공채는 빅테크와 SI 기업에서 주기적으로 실행하곤 하는데, DevOps 직군은 없습니다.
신입의 비중이 거의 없고 대부분이 3년 이하의 경력을 요구
앞서 말씀드린 이유때문입니다.
시기에 따라 공고가 금방 열리고 닫히는 기업도 많다.
수시채용과 연결되는 이야기이기도 한데, DevOps 직군은 서버 개발자에 비해 소수로 이뤄지는 경우가 많기에 1명의 인원만 채워져도 바로 닫히는 경우가 많습니다.
대부분의 기업들의 요구&우대 기술들은 비슷비슷하고 많다.
쿠버네티스와 프로메테우스, CI/CD와 Istio, AWS와 Terraform 등등 이죠. 사용하는 언어별로 지원 폭이 많이 달라지는 서버 개발자와는 다른 점이라고 생각합니다.
의외로 코딩 테스트를 채용 과정에서 뺀 기업들이 많다.
코딩 테스트를 과제나, API 구현 등으로 대체하는 기업들이 많았습니다.
이 정도들이 있는데, 다행히 서류전형에서 탈락하는 경우는 거의 없었고 운 좋게 면접을 자주 볼 수 있었습니다.
하지만 불행히 면접에서 고배를 많이 마셨습니다. 그럼에도 면접과정에서 매번 배우고 성장하는 느낌이었고 아직 내가 부족한 부분이 많다는 걸 매 면접때마다 느낀 것 같습니다.
또 느낀 점들은 각 기업마다 생각하는 인재상이 달랐고, 특히 경력이 없는 제가 경력직과 경쟁해 DevOps 직군으로 뽑힐만한 특별한 매력을 잘 못 보여줬다는 점이 탈락의 주 요인들로 보여졌습니다.
몇 번의 탈락이 더해지고, 많은 질문 리스트들을 정리할 수 있었고, 부족한 점을 더 공부할 수 있었습니다.
그렇게 현재 근무 중인 회사에 합격할 수 있었습니다.
지원한 회사들의 대부분이 코딩테스트가 없었는데, 아이러니한 점은 현재 회사의 합격에 영향을 준 결정적인 요소 중 하나가 코딩테스트 였다는 것입니다.
앞서 기업마다 생각하는 인재상이 다르다고 했는데, 자신이 생각하는 강점은 키우고 단점은 메꿔 다수에게 어필될 수 있는 핏을 만드는 것도 좋을 것 같습니다.
다음은 제가 취업 과정에서 느꼈던 점들인데, 모두가 생각하는 정답이란 없고 개인적인 생각들이니 참고만 해주시길 바랍니다. 🥲
추상화된 개념들에 대해 원리들을 이해하면 좋다.
- Kubernetes는 다른 Node의 Pod들이 서로 통신하기 위해 어떤 추상화된 타입을 지원하나요? 이를 구현하기 위해 어떤 방법을 사용했을까요?
- AWS의 ELB에서 NLB와 ALB의 차이점은 어떠한 이유로 생기는 것일까요? NLB는 ALB와 달리 ip가 고정되는 이유는 무엇일까요?
- Docker가 VM과 다르게 장점을 가지는 이유는 무엇일까요? Linux의 어떤 시스템 콜을 사용해 구현되었을까요?
- 서버리스 서비스인 Lambda를 구현하기 위해 AWS는 어떤 문제를 어떻게 해결했을까요?
자격증의 목적은 '취득'이 아니라 '과정'이어야 한다.
- AWS CAA나 Kubernetes CKA는 도움이 정말 많이 된다고 생각합니다. 하지만 너무 취득 그 자체에 매달리지 않는 것이 좋습니다. 문제 푸는 요령만 늘 가능성이 있기 때문입니다.
- 새로운 서비스를 배워가고 알던 서비스를 자세히 배워가는 것에 중점을 두면 자연스럽게 실력도 오르고 자격증도 취득할 수 있습니다.
프로젝트를 준비한다면 배포부터 운영까지 경험하는 것이 좋다.
- 포트폴리오를 위한 프로젝트를 많이 준비하십니다. 개인적인 생각으로는 대부분의 학부생 프로젝트는 기획-개발-배포 끝! 인 경우가 많은데, 사실 직접 배포 후 유저 유입에 운영 경험까지 쌓는 것이 훨씬 좋다고 생각합니다.
- 개발하고 배포 후 끝나는 프로젝트는 대게 운영단계와 추가 배포사항 등을 고려하지 않기 때문에 조금 부실하게 짜일 가능성도 많다고 생각합니다.
여러 경험과 후기들을 적었는데, 준비하시는 분들께 도움이 될 만한 부분이 있었는지는 모르겠습니다. 혹시 궁금한 점이 계시다면 댓글 남겨주시면 열심히 ✍️ 답변하도록 하겠습니다.
2편에서는 DevOps 엔지니어가 하는 일들과 수습기간 후기에 대한 간단한 글로 돌아오겠습니다.
많이 늦었지만, 새해 복 많이 받으세요. 🙇
'🏋️♀️ DevOps, SRE' 카테고리의 다른 글
신입 데브옵스 (DevOps) 엔지니어 되기 - (2) Drone CI 마이그레이션 하기 (2) | 2023.04.16 |
---|---|
[k8s] 당신의 pod에서 nslookup이 실패하는 이유 (0) | 2023.02.18 |
[k8s] Kubernetes CronJob 뜯어보기 - 구현 원리, best practices (4) | 2022.11.15 |
주니어 DevOps 엔지니어가 바라 본 CPU 아키텍처 (docker pull이 안 된다!) (0) | 2022.10.21 |
[AWS][DevOps] Terraform으로 EKS 환경 구성하기 - (1) (0) | 2022.08.14 |