DevOps 엔지니어가 실무 역량 키우려면?(수정본-1)

오늘날 소프트웨어 개발 업계는 끊임없이 변화하고 있습니다. 생성형 인공지능(AI)을 비롯한 신기술은 하루가 멀다하며 쏟아지고 있고요. 이는 엔지니어의 개발 방식, 문화, 환경을 뒤흔들죠. 특히 DevOps 엔지니어는 이러한 환경 변화에 능동적으로 대처하고, 기술 발전에 뒤처지지 않도록 꾸준히 공부해야 합니다. 조직 가운데에는 DevOps가 여전히 과도기에 머문 곳도 적지 않고요. DevOps 엔지니어는 내부에 DevOps를 잘 정착시켜야 할 책임이 있습니다. 그 결과, 조직이 시장과 고객 요구에 부합하는 ‘훌륭한 프로덕트’를 내도록 기여해야 하고요. 그러려면 DevOps 엔지니어가 변화하는 기술 트렌드를 계속 학습하고, 이를 DevOps와 연계해 조직에서 뛰어난 결과물을 내도록 관련 역량을 갈고닦아야 합니다.
인포그랩 기술 블로그 독자 가운데에는 DevOps 엔지니어로 커리어를 이제 막 시작했거나, 이미 DevOps 엔지니어로 일하며 관련 지식과 정보를 구하려는 분들이 있는데요. 인포그랩에서는 이러한 분들이 현업에서 DevOps 실무를 원활하게 수행하는 데 도움이 되도록 DevOps 교육 서비스 ‘DevOps Expert Labs’를 최근 선보이기도 했습니다. 이 글에서는 DevOps 엔지니어로 일하기 위해 알아야 할 지식과 이를 학습하는 방법, 인포그랩의 Expert Labs가 이에 어떻게 도움이 되는지 소개하고자 합니다.
DevOps 엔지니어에게 필요한 지식과 역량
DevOps 엔지니어는 개발팀과 운영팀의 업무를 유기적으로 연결하고요. 이로써 조직이 시장과 고객 요구에 맞는 ‘훌륭한 프로덕트’를 선보이도록 업무 생산성과 효율성을 끌어올리는 데 주효한 역할을 합니다. 따라서 DevOps 엔지니어는 개발 지식과 운영 지식, 조직의 업무 흐름을 모두 알아야 하고요. 이러한 지식을 활용해 개발, 운영 업무를 자동화하고, 정책을 강제하는 역할도 수행해야 하죠.
DevOps는 소프트웨어 개발 라이프사이클 전반 업무를 아우르는데요. 업무 범위가 포괄적인 만큼 DevOps 엔지니어가 알아야 할 지식도 무수히 많습니다. 아래는 DevOps 엔지니어가 반드시 알아야 하는 지식 또는 지녀야 할 역량 중 일부입니다.
-
개발 방법론 / 협업 능력
DevOps 엔지니어로서 첫 걸음은 조직의 업무 방법을 정확히 이해하는 것입니다. 이를 바탕으로 더 나은 조직 구성, 협업 방법을 제시해야 합니다. 따라서 DevOps 엔지니어는 워터풀 모델, 애자일과 같은 기존의 개발 방법론을 정확히 숙지해야 합니다. 아울러 개발 관행, 문서 작성 관행, 운영 관행 등 여러 가지 좋은 관행(best practice)을 이해하고 조직이 가장 잘 협업할 수 있는 방법을 찾아야 합니다.
-
프로그래밍 및 스크립트 언어
개발이 끝난 애플리케이션을 신속하게 프로덕션에 배포하는 것은 DevOps 엔지니어의 중요한 역할 중 하나입니다. 실제 애플리케이션 개발은 개발팀이 담당합니다. 하지만 DevOps 엔지니어 또한 빌드 시스템을 이해하고 스크립트를 개발해야 합니다. 아울러 운영에서 다른 서비스과 통합을 할 때에도 개발을 이해하고 스크립트를 만들어 작업을 해야 하는 경우가 많습니다. 스크립트를 작성하기 위해서는 Shell Script 혹은 Python을 능숙하게 다뤄야 하고요. Java와 Gradle, JavaScript와 NPM과 같은 프로그래밍 언어와 빌드 시스템을 잘 이해해야 합니다.
-
버전 관리 / 구성 관리 / IaC (Infrastructure as code)
끊임없이 변화하는 사용자의 요구사항에 맞춰 코드 또한 끊임없이 변해야 합니다. 이런 와중에 단위 테스트나 인수 테스트와 같이 여러 절차를 거쳐야 하고요. 오류 없이 배포하기 위해 여러 설정을 해야 합니다. 이 모든 정보를 적절히 관리하고 협업하기 위해서는 반드시 모든 정보의 버전을 관리해야 합니다.
버전 관리는 Git, GitLab과 같은 도구를 사용합니다. Git을 사용하면 소스 코드 뿐만 아니라 애플리케이션의 구성 정보와 인프라의 정보 모두 통합적으로 버전을 관리할 수 있습니다. Terraform을 사용하면 클라우드 인프라를 코드로 관리하고 이를 자동으로 배포, 수정할 수 있고요. Ansible, Chef와 같은 구성 관리 도구를 사용해 서버에 설치된 패키지나 설정을 관리할 수 있습니다.
-
CI/CD
제품을 신속하게 전달하기 위해서는 대부분의 개발/배포 절차가 자동화되어야 합니다. 이를 CI/CD(지속적 통합/지속적 배포)라고 하는데요. DevOps 엔지니어는 코드를 빌드하고 테스트하며 적절한 서버에 배포하는 일련의 과정을 자동화하는 방법을 반드시 숙지해야 합니다. CI/CD는 주로 Git과 연동되어 동작하는데요. 가장 대표적인 서비스가 GitLab CI/CD와 GitHub Actions입니다.
-
IT 하드웨어 및 인프라
DevOps 엔지니어는 제품의 개발부터 배포, 운영까지의 모든 단계를 신속하고 안전하게 준수하여 빠르게 배포하는 업무를 합니다. 다시 말해 배포와 운영을 촉진시키는 것도 중요한 작업 중 하나입니다. 이를 위해 서버, 네트워크, 운영체제 등 IT 하드웨어 및 인프라 영역에 대한 깊은 지식이 필요합니다.
-
보안
DevOps 관행에서 모든 배포는 신속하되 안전해야 합니다. 두 가지 조건을 모두 만족하려면 많은 노력이 필요한데요. DevOps 엔지니어는 애플리케이션 보안, 인프라 보안과 데이터 암호화 작업 등 여러 가지 보안 조치 또한 신속하게 이루어질 수 있도록 해야 합니다. 이러한 보안 관행을 DevSecOps라고 합니다.
-
클라우드 / 도커 / 쿠버네티스
클라우드가 보편화되고, 애플리케이션을 도커로 빌드해 쿠버네티스에 배포하는 업무 또한 DevOps 엔지니어의 중요한 역할이 되었습니다. 도커의 동작 원리와 빌드, 캐싱에 대한 지식을 반드시 알아야 하고요. 쿠버네티스에서 각종 리소스를 생성하고 관리하는 것에도 익숙해야 합니다. 더 나아가 GitOps 방식으로 배포를 진행한다면 ArgoCD와 같은 도구를 잘 다룰 줄 알아야 합니다.
-
서비스 통합
오늘날 아무도 데이터베이스나 메시징 기능을 개발해서 사용하지 않고, 대신 Redis, Kafka 같은 외부 서비스를 적극 사용합니다. 애플리케이션 또한 기능 단위로 잘게 쪼개서 배포하는 마이크로서비스 관행이 확산되고 있는데요. DevOps 엔지니어는 이러한 도구들을 설치, 구성하고 사용하는 방법을 알아야 합니다. 아울러 서비스들의 연결 상태를 관리하는 Service Mesh 기술도 잘 이해하고 운용할 수 있어야 합니다. DevOps 엔지니어의 목표는 리소스와 서비스의 전체적인 관점을 확립하고 상호 운영될 수 있도록 하는 것입니다.
-
모니터링 / 옵저버빌리티
애플리케이션이 정상적으로 배포되었더라도 정상적으로 동작하는지 지속적으로 확인하는 작업도 중요한 요소입니다. 메모리, CPU, I/O 등 시스템의 기본 정보를 모니터링하는 과정은 반드시 이루어져야 하고요. 더 나아가 로그, 메트릭과 트레이스를 수집하고 시각화해 능동적으로 시스템을 분석하는 옵저버빌리티(Observability)도 적용할 수 있어야 합니다. Prometheus, Grafana와 같은 툴을 설치 및 구성할 수 있어야 하고 Sentry로 애플리케이션 에러를 추적, 분석할 수 있어야 합니다. 마지막으로 시스템이 이상 수치를 보이면 자동 조치(self-remediation)하거나 담당자에게 메일을 보내는 알람 시스템도 구축해야 합니다.
-
성숙도 분석
DevOps 엔지니어는 조직의 현재 성숙도를 면밀히 평가하고 발전하기 위한 로드맵을 제시할 수 있어야 합니다. 성숙도를 평가하는 방법은 여러 가지인데요. 가장 대표적인 지표가 DORA metric이라 부르는 ‘배포 빈도’, ‘변경 리드 타임’, ‘평균 복구 시간’, ‘변경 실패율’입니다. 이러한 지표를 효과적으로 수집하고 분석해, 조직의 관행을 더 나은 방향으로 인도하는 역할을 해야 합니다.
DevOps 역량 키우는 학습 방법
이처럼 광범위한 지식을 단시간에 학습하기는 어려운데요. 공부 방법과 로드맵을 구체적으로 정리해 체계적으로 학습해야 합니다. 공부 방법은 다양합니다. 1)유튜브를 시청하거나 2)블로그를 읽을 수도 있고요. 3)부트 캠프에 참여하거나 4)온라인 교육 프로그램을 수강할 수도 있습니다. DevOps 교육에 처음 입문할 때는 로드맵을 참고해 나의 지식수준을 점검하고 학습하는 것도 좋은 방법입니다.

저는 5)자격증을 따기 위해 공부하며 DevOps 엔지니어 역량을 길렀습니다. AWS의 SAA(Solution Architect Associate)나 CNCF의 CKA(Certified Kubernetes Administrator)를 취득하며 DevOps 커리어를 쌓기 시작했는데요. 자격증은 이력서에 추가하기도 좋고요. 이는 전문가가 만든 체계적인 커리큘럼을 학습해 단기간에 여러 지식을 학습하기에도 좋습니다.

6)커뮤니티에 참여해 여러 워크숍이나 세미나를 듣는 것도 좋은 방법입니다. 이 자리는 초보자를 위한 입문용 세션부터 경력자 눈높이에 맞는 상세한 기술 세션까지 광범위한 DevOps 지식을 제공합니다. 특히 워크숍이나 세미나에서는 엔지니어들과 네트워킹도 할 수 있는데요. 이는 DevOps 지식을 쌓고 인맥을 넓히고 싶은 이들에게 안성맞춤입니다.
그러나 한계는…?
그러나 위와 같은 학습 방법에는 한계가 있습니다. DevOps를 처음 접하는 사람들은 목표를 설정하기 어렵고요. 자격증이나 강의만으로 큰 방향성을 잃을 수 있습니다. 자격증을 중심으로 공부하면 특정 영역에 기본 지식을 습득하기에는 좋습니다. 그러나 DevOps 전체 영역을 체계적으로 학습하는 데 한계가 있습니다.
아울러 기존 DevOps 교육 프로그램은 이론 위주 콘텐츠가 많은데요. 현업에서 DevOps 실무에 바로 써먹을 지식을 얻으려면 이론보다 실무 중심의 교육이 더 필요합니다. 현장 업무를 교육 소재로 삼아 어떤 기술로 무슨 작업을 어떻게 수행할 수 있는지 알려주고요. 이를 손으로 직접 따라해보며 방법을 익히도록 지원하면 더 도움이 되겠죠.
또 기존 DevOps 교육 커리큘럼은 입문자용 교육이 많습니다. 이는 DevOps 특정 분야에 초보 수준의 단편적인 지식을 제공하는 경향이 있고요. 이또한 복잡한 실무에 적용하기는 어렵습니다. 초보 수준의 단편적인 지식만으로는 DevOps 실무를 수행하며 문제가 일어났을 때 원활하게 대처하기 어렵고요.
Expert Labs로 극복하기!
인포그랩의 DevOps Expert Labs는 이러한 한계를 보완하는 서비스입니다. 이는 실무에 바로 적용할 수 있는 DevOps 기술을 익히도록 지원하는데요. 학습자는 러닝패스에 따라 기초 학습과 실무 중심 교육을 받으며 DevOps 도구와 지식을 체계적으로 익힐 수 있습니다. Expert Labs는 DevOps의 모든 분야를 아우르고 있으며 이론뿐만 아니라 구체적인 실무를 학습자가 손으로 직접 따라 해볼 수 있는 핸즈온 방식으로 알려줘 하나하나 짚어가며 공부할 수 있습니다.
조직에서 하나의 서비스를 설치하려면 수많은 설정을 해야 하는데요. Expert Labs에서는 이 모든 단계를 세분하고요. 각 단계가 필요한 이유와 이를 맞춤 설정하는 방법을 제시합니다. 또한 Expert Labs에서는 서비스에 꼭 필요한 기술만 다뤄 학습자가 여러 기술을 일일이 검증하며 사용하지 않아도 되도록 만들었고요. 학습자는 Expert Labs에서 제시하는 기술 스택만 사용해도 유수 기업에서 쓰는 주요 기술을 익힐 수 있습니다.
이밖에 Expert Labs에서는 매 단계 실제로 마주하는 문제를 모아서 퀴즈로 만들었습니다. 학습자는 퀴즈를 하나씩 풀며 ‘내가 무엇을 알고, 무엇을 아직 이해하지 못하였는지’ 확인할 수 있습니다. 이를 토대로 부족한 지식을 보충 학습할 수 있고요.

마무리
DevOps의 세계는 넓고 깊습니다. 엔지니어 뿐만 아니라 서비스 기획자도 DevOps를 배워 조직에서 ‘프로덕트 마켓 핏’이 딱 들어맞는 결과물을 내는 데 기여해야 할 상황입니다. 소프트웨어 개발 환경에서는 배워야 할 게 많습니다. 시행착오를 최소화하고 회사에 가장 적합한 기술을 선택하는 건 엔지니어 개인의 경쟁력이고 회사의 경쟁력이 됩니다. Expert Labs는 최소한의 투자로 기술 경쟁력을 최대치로 높이도록 지원합니다.
인포그랩은 GitLab 및 DevOps에 대한 맞춤 기술 지원을 제공합니다. GitLab(Omnibus/Cloud Native Hybrid) 구축 관련한 지원이 필요하시면 문의하기로 연락 주십시오.
사전 동의 없이 2차 가공 및 영리적인 이용을 금하며, 온·오프라인에 무단 전재 또는 유포할 수 없습니다.
DevOps 도입이 필요하신가요?
인포그랩 전문가가 맞춤 을 도와드립니다.
관련 글

Expert Labs로 DevOps 실무 역량 똑똑하게 키우는 방법
이 글에서는 개발자/엔지니어가 DevOps 실무 역량을 키우는 데 필요한 지식과 공부 방법을 설명하고요. 인포그랩의 DevOps 교육 서비스인 ‘DevOps Expert Labs’를 소개합니다. DevOps 역량을 키우려면 개발 지식, CI/CD, 클라우드, IaC, 모니터링 등의 지식이 필요합니다. 인포그랩의 DevOps Expert Labs는 핸즈온 교육 방식으로 학습자가 DevOps 기반 기술, DevOps 시스템 아키텍처 구성, 지속적 통합/테스트/배포 자동화 파이프라인 구축 등을 클라우드 네이티브 기반과 프로덕션 수준 환경에서 직접 실습하고, 기술 관행을 배우도록 지원합니다.
2023년 11월 6일

지금 엔지니어가 DevOps Expert Labs에 주목해야 할 이유
인포그랩의 DevOps Expert Labs는 국내외 DevOps 교육 서비스의 한계를 해소하고, 초급부터 중급 이상까지 다양한 러닝 패스를 제공하여 실무자를 위한 교육을 지향합니다. 핸즈온 중심의 교육 방식과 최신 버전으로 강의 내용 업데이트, 맞춤형 러닝 패스와 워크숍, 실시간 커뮤니티 지원 등으로 학습자들에게 최적화된 DevOps 교육 서비스를 제공합니다.
2023년 11월 10일

DevOps 교육의 필요성-유익한 강의를 선택하는방법과 Expert Labs
DevOps 교육의 필요성에 대해 국내/외 교육 플랫폼을 비교하고, Expert Labs의 특징을 소개합니다. 국내 플랫폼은 강의 수준과 연속성, 실습 환경, 업데이트, 네트워킹, 언어 지원 등을 고려해야 하며, 국외 플랫폼은 수준, 강의 연속성, 실습 환경, 업데이트, 네트워킹, 언어 지원 등을 고려해야 합니다. Expert Labs는 실무에 깊이 연관된 전문적인 강의, 강의 연속성, 실습 환경, 업데이트, 네트워킹, 언어 지원을 제공하여 실질적인 학습 경험과 현업 적용 가능한 지식을 제공합니다.
2023년 10월 23일