현재 내 상태와 고민
- 17년도부터 시작된 회사생활에 잠시 쉼표가 찍혔다. 육아휴직이 시작된것이다. 물론 회사생활에는 쉼표가 찍혔지만 내 일상은 여전히, 오히려 더 바쁘다.. 아기가 9개월인 지금, 솔직히 말하면 개발의 ㄱ자도 전혀 들여다보지 못했다.
- 지금까지는 주어진 일을 내 나름 열심히 해왔는데, 사실 앞으로의 커리어를 어떻게 가져가야할지 그리면서까지 일하고 있지는 못했다. 이렇게 회사업무 휴식기가 생긴 게, 어쩌면 지난 날을 돌아보고 앞으로의 커리어 점검을 할 수 있는 아주 좋은 찬스라는 생각이 들었다. 조금은 긴 호흡으로 바라보고 생각해볼 수 있는 시간과 기회.
- 업무를 하고있지도, 더더욱이 파이썬으로 뭔가를 하고 있지도 않지만 이번에 기회가 되어 pycon kr 2024 행사에 다녀왔다. 오랜만에 컨퍼런스도 가고, 다른 개발자분들도 만나니 그동안 미뤄두었던 개발과 커리어에 대해 정말로 다시 생각해봐야겠다는 생각이 들었다.
클라우드 네이티브 환경? 쿠버네티스? SRE?
- 현재 회사에서는 SRE 팀에 계속 몸담고 있지만, SRE 업무 전문성을 가진 엔지니어인가? 물어본다면 답은 “네니오”
- 각 회사별 SRE 업무 잡 디스크립션을 보다보니 생각보다 각 회사마다 추구하고 원하는 SRE 업무가 아주 미묘하게 다르다는 느낌을 받았다. 어떤 곳에서는 devops를 겸하며 서비스 안정성을 가져가려고 하고, 또 어떤 곳은 서비스 운영 모니터링에 중점을 두기도 하고, 또 어떤 곳은 서비스 장애에 대해 민첩하게 움직이고 대응하려는 의지가 보이기도 했다.
- 내가 devops 엔지니어인가? 또 답은 네니오.. 도커와 쿠버네티스에 전문성을 가지고 있지 않다. 거의 대부분의 회사에서 사용하는 AWS로 업무를 하고 있지도 않다. 하지만 개발과 운영은 한다. 개발 에서 CI/CD로 이어지는 파이프라인을 구축할 수 있다.
- 모니터링 업무를 하는가? 이것도 네니오. 물론 내가 담당하는 서비스 모니터링, 한다. 내가 개발한 툴도 각 서버에서 수집된 지표를 바탕으로 유저들이 알람을 설정할 수 있고, 받아볼 수 있는 서비스이기도 하다. 하지만 지표 수집 업무는 담당하고 있지 않다. 내가 개발/운영하지 않는 서비스 모니터링 경험은 적다. “적다”라고 표현한 이유는, 모니터링을 하더라도 비상 상황 발생시 내가 뭔가 조치를 취하는 권한은 없었다.
- 좀 불안한 마음이 든다. 계속 이렇게 업무해도 되는걸까? 공부하지 않고 일만 하다보니 속빈 강정이 된것 같다. 핫하다는 클라우드랑 쿠버네티스 공부를 해야할까? 일단 묻고 따지지 말고 CKA를 따고, 쿠버네티스 공부를 하면 내 커리어에 도움이 될까?
원점으로 돌아가서
- 내가 했던 생각중에 가장 신경쓰이는 부분이 “공부하지 않고 일만 하다보니 속빈 강정이 된것 같다.” 라는 생각이 문득 들었다. 멋진 커리어는 아니더라도, 지금까지 내가 한 일들에 대해서 나는 “모든 것”을 “정확하게” 알고 있나?
- 다른 사람들이 8년차 백엔드 엔지니어인 나에게 어떤 것을 바랄지 한번 chatgpt 에게 물어보았다.
- 당신의 다양한 경험을 바탕으로, 단순한 실무 능력을 넘어서는 경험의 깊이와 리더십, 시스템 개선 및 운영 최적화 능력입니다.
- 기술적 리더십과 문제 해결 능력: n대 장비 메트릭을 관리한 경험은 대규모 시스템을 운영하고 문제를 해결하는 능력을 보여줍니다. 이는 회사가 기대하는 수준의 신뢰성과 안정성 확보를 위한 리더십에 적합한 강점입니다. 새로운 기술 도입이나 복잡한 문제 해결에서 방향을 잡아줄 엔지니어로서의 가능성을 높입니다.
- 효율성과 품질 개선: 단순히 코드 작성에 그치지 않고 전체적인 프로젝트의 효율성을 높이는 방법론이나 품질 향상 전략을 제안하고 실행하는 능력을 기대할 수 있습니다. 기존 모놀리식 아키텍처의 개선, 컨테이너화, 클라우드 네이티브 전환 등 다양한 최적화 경험을 기반으로 시스템을 한 단계 발전시켜 줄 엔지니어로 자리매김할 수 있습니다.
- 멘토 역할 수행: 8년 차 엔지니어로서의 풍부한 경험을 바탕으로 후배들을 멘토링할 수 있는 능력도 회사의 기대 포인트입니다. 주니어들이 단순한 코딩을 넘어 시스템의 전반적인 이해를 돕고, 실무에서 겪는 문제를 함께 해결해주며 팀의 성장을 돕는 역할을 할 수 있습니다.
- 프로세스 개선 및 자동화 능력: 반복되는 작업을 자동화하고 CI/CD 파이프라인을 최적화하는 등의 경험은 회사의 운영 효율성을 높이는 데 필수적인 요소입니다. 특히 Jenkins를 통한 CI/CD 자동화나 MongoDB 설치 스크립트 활용 등 이미 능숙한 작업을 통해 팀의 시간과 리소스를 절약해줄 것으로 기대됩니다.
- 안정성 높은 대규모 서비스 운영 경험: 대규모 장비 모니터링과 알람 시스템 구축 및 운영 경험은 특히 트래픽이 많고 여러 요구 사항을 처리해야 하는 회사에서 매우 매력적인 역량입니다. 회사가 안정적이고 확장 가능한 시스템을 원한다면 이러한 실전 경험은 큰 강점이 될 것입니다.
- 당신의 다양한 경험을 바탕으로, 단순한 실무 능력을 넘어서는 경험의 깊이와 리더십, 시스템 개선 및 운영 최적화 능력입니다.
- 위 질문과 답변을 통해서 지금 내게 필요한 건 어떤 멋져보이는 것, 핫한 것, 사람들이 많이 찾는 기술 스택 공부가 아니라 지금까지 내가 해왔던 업무들을 잘 정리해서 언제 어떤 상황에서도 써먹을 수 있도록 완벽하게 내 것으로 만드는 게 필요하구나 라는 생각이 들었다.
계획
- 앞으로는 아래 내용을 중점으로, 기존 내가 했던 업무들을 다시 정리하고 온전히 내것으로 만드는 공부를 진행할 생각이다.
- 서버 개발 및 운영
- java, springboot
- 웹서버 (아파치, nginx 등)
- 시스템 디자인
- 기존 모놀리식 아키텍처의 개선: 어떻게 fail point를 찾고, 어떻게 개선할 수 있는지?
- 단순한 코딩을 넘어 시스템의 전반적인 그림을 보려면 어떻게 해야하는지?
- 대규모 시스템을 운영하고 문제를 해결하는 능력
- 애플리케이션/서비스/서버 헬스체크는 어떻게 하는가?
- 각 레이어별 수집 메트릭
- 문제상황이 발생했는지 어떻게 알 수 있는가? 어떻게 자동 대응하는가?
- MTTF 시간을 측정하고, 이를 줄이기 위해 어떤 것을 해야하는가?
- 모니터링(프로메테우스, 그라파나), ELK (로그 및 데이터 분석 스택), OpenTelemetry 등..
- 클라우드 네이티브
- 컨테이너화, 클라우드 네이티브 전환
- 클라우드 관리 및 오케스트레이션
- 컨테이너화 및 컨테이너 오케스트레이션
- devops 엔지니어링
- CI/CD 파이프라인 구축 및 관리
- IaC(Infrastructure as Code)
- 모니터링 및 로깅
- 협업 문화 및 도구 구축
- 서버 개발 및 운영
- 이런 기술 관련 공부나 커리어 관련 생각 정리를 어디에 하면 좋을까 고민하다가, github 블로그에 좀 더 편하게 이런 저런 내용들을 올리면 좋겠다는 생각이 들었다. 공부도 많이 하고, 그만큼 블로그에 글도 많이 쓰기를!