안녕하세요. 저는 현재 고등학생 신분으로 인포그랩에 입사해 DevOps 엔지니어로 근무하는 John이라고 합니다. 대한민국에서는 10대 고등학생 대부분이 고등학교 3년 과정 동안 대학수학능력 시험을 대비해 공부하고요. 입시 전형을 거쳐 대학에 진학합니다.
그러나 저는 고등학교 3년 과정 동안 대학 입시를 준비하는 대신 취업에 도움이 되는 여러 활동에 참여했고요. DevOps 엔지니어가 되는 데 필요한 밑바탕을 꾸준히 쌓는 데 주력했습니다. 그 결과, 고등학교를 졸업하기도 전에 고등학교 3학년, 18세의 나이로 DevOps 기업에 취업했습니다.
고등학생 신분으로 벌써 취업하는 일도, DevOps 엔지니어로 사회에 첫 발을 내딛는 일도 세상에 아예 없는 일은 아니지만 드문 일일 수 있는데요. 이 글에서는 제가 다른 10대 친구들과 달리 ‘어쩌다가 IT 시장에서 흔치 않은 DevOps 엔지니어로 첫 커리어를 시작했는지’ 이야기해 보려고 합니다. 재밌게 읽어주시면 감사하겠습니다. :)
대학 진학 대신 취업을 결심한 이유
출처=픽사베이제가 대학 진학 대신 취업을 결심한 이유를 설명하려면 제 어린 시절 이야기부터 해야 할 듯합니다. 중학교 시절, 저는 그저 게임을 좋아하는 평범한 학생이었습니다. 학교 성적은 좋았지만 제 공부의 목적은 ‘높은 성적을 받는 것’뿐이었습니다. 그런 가운데 ‘중학교 시험도 힘든데 고등학교 3년 과정 동안 내가 잘 해낼 수 있을까?’라는 염려가 들었고요. 이에 평범한 인문계 고등학교가 아닌 특성화 고등학교(특성화고), 특수목적고등학교(특목고)로 눈을 돌렸습니다.
‘특성화고, 특목고에 다니다 대학에 진학할까?‘라는 생각도 했는데요. 그 당시 ‘대학에 가도 취업이 잘 안된다’는 소리를 많이 들었고요. 주변의 대학생 형, 누나들이 대학에 다니며 맨날 놀기만 하는 모습을 보고 대학에 부정적인 인식이 강해졌습니다. ‘대학에 다니며 노는 대신 사회에 빨리 진출해 일하고, 돈을 버는 게 낫다’고 생각했죠. 그게 더 생산적인 활동으로 보였습니다. 이에 ‘대학에 진학하지 않고 바로 취업할 수는 없을까?’라고 고민했고요.
그러던 차에 저는 진학할 고등학교를 알아보다가 반가운 정보를 접했습니다. 대학 진학 대신 취업을 돕는 소프트웨어 마이스터고등학교가 있다는 사실을 알았는데요. 여기서는 제가 초등학교 시절 스크래치로 접했던 코딩을 할 수 있었습니다. 초등학교 시절, 스스로 만든 작품이 동작하는 걸 보고 신기해하며 좋아했던 기억이 있는데요. 그때 그 경험을 다시 해보고 싶은 마음이 생겨 소프트웨어 마이스터고등학교에 지원하기로 마음먹었습니다.
대학에 진학하지 않고 취업하려는 제 계획에 주변 사람은 부정적인 의견을 내놓았는데요. 저는 제가 하고 싶은 일을 꼭 해야 직성이 풀리는 성격이었습니다. 따라서 부정적인 의견에 굴하지 않고 소프트웨어 마이스터고등학교에 지원했고요. 합격해서 입학했습니다.
DevOps 엔지니어가 되기로 마음먹은 배경
DevOps 라이프사이클. 출처=인포그랩제가 DevOps 엔지니어가 되기로 결심하는 데에는 거창한 뜻이 있었던 건 아니었습니다. 고등학교 1학년 때, 저는 클라우드 기능반에 소속돼 활동했는데요. 이 기능반에서 클라우드 기술을 배웠습니다. 1학년 때까지만 해도 저는 코드를 작성하는 데 익숙지 않았는데요. 클라우드 기술을 사용하면 ‘콘솔에서 클릭하는 것’만으로도 뭔가를 할 수 있어 흥미를 느꼈죠(그래픽 유저 인터페이스(GUI)에서 모든 걸 할 수 있다고 생각했어요😅). 그러다 1학년 말 무렵에는 ‘앞으로 클라우드 기술을 더 열심히 파고들어 관련 기능 대회에서 꼭 수상해야겠다’라고 다짐했고요. 그때부터 클라우드 서비스 중 하나인 AWS를 열심히 공부했습니다.
그 이후, 학교에서 한 클라우드 강사님의 강연을 들었는데요. 이 강연을 계기로 DevOps에 본격적으로 관심이 생겼습니다. 강사님은 ‘DevOps가 언어나 기술이 아닌 하나의 방법론이자 문화’라고 설명했는데요. 저는 이 말에서 DevOps의 매력을 느꼈습니다. 기술에만 갇히지 않고, 소프트웨어 개발과 운영 전반을 폭넓게 아우르는 DevOps 개념이 신선하고 흥미로웠어요.
아울러 ‘DevOps가 제 관심 분야인 클라우드와도 연관 있다’라는 걸 알게 되었는데요. DevOps 엔지니어가 되면 클라우드 기술을 계속 공부할 수 있을 거고요. ‘이 클라우드 환경에서 DevOps를 효과적으로 구현하는 방안을 고민하고, 실행하면 엔지니어로서 크게 성장할 수 있을 거’라고 생각했습니다. 이에 저는 ‘DevOps 엔지니어가 되는 걸’ 제 커리어 목표로 세웠습니다.
그때부터 저는 인터넷 강의를 보고 책을 읽으며, DevOps 관련 기술을 학습하고, 프로젝트에 적용했습니다. 주변에 DevOps 엔지니어를 지망하며 같이 공부하는 친구가 없었는데요. ‘진로를 변경해 볼까?’ 계속 고민하기도 했죠. 심지어 기능반 강사님은 “신입 DevOps 엔지니어가 되기는 힘들 거다”라고 말씀하시기도 했는데요. 오히려 저는 그 말씀을 듣고 ‘꼭 DevOps 엔지니어가 돼야겠다’는 오기가 생겼습니다.
친구들의 반응도 제게는 동기 부여가 됐습니다. 제가 DevOps와 관련해 사소한 걸 구현해도 친구들이 놀라워하곤 했는데요. 이러한 반응을 접하니 전 뭔가를 구축할 때마다 신이 났습니다. 또 학교에서 대규모 프로젝트를 진행하면서 ‘DevOps 엔지니어가 운영 환경에 얼마나 많이 기여하는지’ 깨달았고요. 이런 경험이 쌓이면서 ‘DevOps 엔지니어’라는 포지션에 자부심과 애정이 생겼습니다. ‘DevOps 엔지니어’로 진로를 개척하는 데 확신도 생겼고요.
고등학생 신분으로 참여한 DevOps 관련 프로젝트
출처=픽사베이저는 DevOps 엔지니어가 되는 데 필요한 경험을 쌓고자 2~3학년 때 학교에서 여러 프로젝트에 참여했습니다. 이러한 프로 젝트에서 주로 DevOps 관련 업무를 수행했는데요. 제가 학년별로 참여한 일부 프로젝트와 그때 담당한 DevOps 관련 업무를 소개합니다.
2학년
2학년 초반 때, 저는 학교의 입학지원시스템을 만드는 프로젝트에 참여했습니다. 그때는 간단한 AWS 리소스를 생성할 줄밖에 몰랐는데요. 이 프로젝트는 약 반년 동안 진행됐습니다. 제가 이 프로젝트에서 구축한 결과물은 다음과 같습니다.
-
CloudPlatform : AWS
- 학교에서 지원해 주는 클라우드 플랫폼이 AWS로 한정되어 있어 AWS를 사용하였습니다.
- 사용한 서비스: VPC, EC2, RDS, S3, Cloudwatch, Codeseries, Route53 등
- NestJS 애플리케이션을 EC2 인스턴스에서
git clone
하여 서버 로컬에서build
→start
를 하였습니다. - RDS를 사용해 데이터베이스를 구축하였으며 S3를 이용하여 원서 정보 등을 관리하였습니다. 클라이언트와 어드민이 다른 애플리케이션이었기 때문에 데이터베이스(DB)를 2개 사용하였던 일이 기억에 남네요.
- NestJS 애플리케이션을 EC2 인스턴스에서
-
CI/CD : GitAction, CodeSeries
- GitHub과 AWS 리소스를 사용하였기 때문에 CI는 GitHub Action에서, CD는 Codedeploy로 진행하였습니다.
-
Monitoring :
- 특정 Statue Code나 단어가 Cloudwatch Log에 남으면 Discord 웹훅으로 알람이 울리는 프로세스를 구축하였습니다.
그때 실력이 부족하였기에 실습에서 봤던 아키텍처를 따라 구축하고 실제 운영을 진행하였습니다. 운영하기 전, IAM이 해킹당해 프로젝트 1년 예산을 훨씬 뛰어넘는 과금이 발생하기도 하였고요(다행히 환불받았습니다. 😂) 트래픽이 몰려 서버가 다운될 뻔한 일 등 많은 사고를 경험하였습 니다. 이러한 다양한 사고에 대처하다 보니 많이 성장할 수 있었던 프로젝트였습니다.
3학년
이때는 여러 회사에서 공통으로 요구하는 기술, 제가 평소 사용해 보고 싶은 기술을 써보며 다양한 시도를 해봤습니다. 3학년 때 진행한 프로젝트 가운데 규모 있는 프로젝트는 학생 정보를 관리하는 프로젝트였는데요. 이 프로젝트에서 제가 구축한 결과물은 다음과 같습니다.
-
CloudPlatform: AWS
-
사용한 서비스: VPC, EC2, RDS, S3, Cloudwatch, CodeSeries, DynamoDB 등
- Spring Boot 애플리케이션을 Redis 등과 함께 docker-compose로 묶어 EC2 인스턴스에 배포하였습니다. 또 NGINX를 이용하여 블루/그린 배포를 진행하였습니다. Kubernetes를 사용해보고 싶었지만 예산 한계 등으로 인해 도입해 보지 못하였습니다.
-
Automation : Discord 봇
- Android, iOS 파트의 앱 스토어 릴리즈 프로세스를 단축하는 Discord 봇을 Python으로 만들었는데요. 여기서 간단한 명령어만 입력하면 GitHub 릴리즈 노트를 작성하고, Pull Request를 생성하도록 구축했습니다.
-
CI/CD : GitAction, CodeSeries
- GitHub과 AWS 리소스를 사용하였기 때문에 CI, Android와 iOS의 CD는 GitHub Action으로, EC2 인스턴스를 사용하는 SpringBoot 애플리케이션의 CD는 Codedeploy로 진행하였습니다.
-
Monitoring:
- Cloudwatch를 이용하여 모니터링을 진행하였습니다. 아울러 Python으로 구축한 Discord 봇과 연계하여 AWS에 익숙하지 않은 개발자도 Discord에서 오류를 쉽고 빠르게 확인하도록 구축했습니다.
3학년 때 수행한 프로젝트는 2학년 때 참여한 프로젝트보다 규모가 큰 프로젝트는 아니었는데요. 서버비를 아끼기 위해 클라우드 아키텍처를 신경 쓰기보다 Discord 봇, Python 애플리케이션 등 자동화 애플리케이션을 구축하는데 시간을 많이 썼습니다. 개발자 친구들이 제가 구축한 자동화 애플리케이션을 사용하며 편안함을 느끼고, 많이 칭찬해 줘서 매우 뿌듯했습니다.
10대로서 녹록지 않은 취업 과정
출처=픽사베이프로젝트가 끝나가고 있을 때, 기업에 이력서를 넣을 시기가 다가왔습니다. 저는 고등학생 신분으로 ‘중학교 졸업’이 최종 학력이었는데요. 기업에서 ‘학력이 아닌 실력’을 봐주기를 기도하며 입사 지원했습니다. 이력서에는 ‘여러 프로젝트를 프로덕션 환경에서 어떻게 운영하였고, 어떤 결과를 창출하였는지’ 강조하였습니다.
저는 경력과 학력 제한에 상관없이 ‘많은 걸 배울 수 있고, 저와 회사가 더 성장할 수 있다’고 생각한 기업에 이력서를 넣었습니다. 올해 4~9월까지 약 70개의 회사에 입사 지원했는데요. 기능반 강사님의 말씀대로 학력과 관계없이 신입 DevOps 엔지니어를 채용하는 회사는 드물었고요. 서류전형부터 탈락할 때가 많았습니다.
이 가운데 3개 기업에서 서류전형을 통과해 면접이 잡혔는데요. 면접을 준비하 면서 저는 네트워크 등 CS 지식이 부족해서 이를 중점적으로 공부하였습니다. 평소 ‘학교에서 무슨 일을 어떻게 수행하였고, 어떤 걸 고민하였는지’ 자주 생각하고 친구들에게 공유했는데요. 그렇다 보니 면접에서 제 경험을 말로 풀어내는 건 어렵지 않았습니다. 그러나 CS 지식과 관련된 질문을 받을 때는 ‘그게 뭐였지?’하고 머리를 쥐어짰죠.
그래도 면접을 여러 번 본 끝에, 전 올해 9월 인포그랩에 최종 합격했고요. 10월에 DevOps 엔지니어로 입사했습니다.
DevOps 회사에 입사하고 느낀 점
출처=픽사베이그렇게 저는 고등학교를 졸업하기 전에 DevOps 엔지니어로 사회에 출사표를 던졌습니다. 입사 이후, 저는 리뷰 등으로 Plumber, DevOps Expert Labs 등 회사 서비스를 개선하는 데 참여했고요. 사내 기술 세션에서 평소에 관심 있던 ‘Discord 봇’ 구축하기, 최근 새롭게 접한 프로그래밍 언어인 ‘Mojo’를 주제로 발표했습니다. 요즘은 동료들과 함께 CKA 자격증 스터디에도 참여하고요. 고객사에 기술 지원을 나가 선배 DevOps 엔지니어의 업무 수행 방식을 보고 배우기도 합니다.
DevOps 기업에 입사해서 좋았던 점 중 하나는 ‘배울 기회가 많다는 것’이었습니다. 학교에는 DevOps 엔지니어를 목표로 공부하는 친구가 거의 없었는데요. 이에 기술을 이야기하거나 질문할 사람도 없었습니다. 인포그랩은 DevOps 전문 기업인 만큼 DevOps 엔지니어가 많고요. 이분들은 DevOps 지식도 풍부했습니다. 동료 엔지니어들과 DevOps 이야기를 나누고 제가 모르는 걸 물어보며 갈증을 해소할 수 있었어요.
특히 DevOps 실무에서 사용하는 기술은 제가 학교에서 사용해 보지 않은 기술이 많았는데요. 그렇다 보니 러닝 커브가 날마다 찾아왔고요. 하루하루 업무를 수행하는 시간보다 그 업무에서 사용하는 기술을 학습하는 시간이 길 때도 있었습니다. 😅 하지만 그 산을 하나하나 넘을 때마다 성취감을 느꼈고요. 그 성취감 덕분에 기술을 학습하는 게 흥미로웠습니다. 학교와 차원이 다른 규모의 아키텍처, 심도 있는 기술이 DevOps 엔지니어로 일하는 데 만족감을 더 키워줬죠.
이러한 경험 덕분에 하루하루 성장하는 느낌도 듭니다. 회사에서 제게 주어진 미션을 수행하며, ‘학교에서 혼자 공부할 때보다 실력이 더 빨리 늘었다’는 생각도 들고요. 좋은 동료와 함께 일하며, 기술과 인성 측면에서도 많은 걸 배웠습니다. 인포그랩 DevOps 엔지니어의 온보딩 과정이 궁금하다면 Chad가 작성한 ‘인포그랩 DevOps 엔지니어는 어떻게 온보딩할까’를 읽어보시면 좋겠습니다.