데브옵스 엔지니어 로드맵ㅣ소프트웨어 개발 개념 학습, Docker, 컨테이너 기술, IaC

인사이트

데브옵스 엔지니어 로드맵ㅣ소프트웨어 개발 개념 학습, Docker, 컨테이너 기술, IaC

2022년 12월 02일

얼마 전 여러 매체에서 직업 선호도 분야에 안정적인 직종으로 인기가 많았던 공무원의 인기가 하락하고 있다는 현상을 보도했습니다. 수직적인 문화와 발전 가능성의 불확실성, 그리고 최저임금보다 못한 수준의 임금 등으로 더 이상의 워라벨의 희망은 보이지 않아서 취준생들이 다른 길을 찾고 있고 현직 공무원들의 퇴사도 증가하는 추세라고 하는데요.

반면 소프트웨어 개발자에 대한 선호도와 구인 시장에서의 수요는 계속해서 상승하고 있습니다. IT 분야에서 주도적인 역할을 하고 있는 미국에서는 현재 소프트웨어 엔지니어의 인력이 부족한 상태이고 그 현상이 앞으로 계속 증가할 것이라고 예측하고 있습니다. 실제 미국 노동통계국(2019)의 자료에는 2021년 소프트웨어 엔지니어에 대한 면접 요청이 2배 증가했다는 내용도 담겨있기도 하고요.

데브옵스 엔지니어 전망
공무원 인기 하락과 관련된 기사들

미래의 IT 시장과
데브옵스 (DevOps) 엔지니어

미국 컴퓨터기술산업협회(CompTIA)의 보고서에 따르면, 현재와 미래의 IT 시장은 전통적인 시장보다 AI, IoT, 로봇, VR/AR, 클라우드 등 신기술 시장이 IT 시장의 성장을 주도할 것이라고 합니다.

현재 글로벌 IT 시장은 전통적 IT시장이 디바이스를 포함한 하드웨어가 23%, 소프트웨어와 서비스가 33%, 통신 서비스가 26%의 시장을 차지하고 있고, 혁신 신기술 시장이 17%를 차지하고 있습니다. 전통 IT 시장의 성장률은 점차 하락하는 추세인 반면, 혁신 신기술 시장은 지속적으로 성장하여 2023년까지 IT 전체 시장 성장에 혁신 신기술의 성장이 기여하는 부분이 46%까지 증가할 것으로 예상됩니다. IDC의 자료를 인용한 CompTIA 분석에 따르면, 2018~2023년까지 전통 IT시장의 성장률은 통신서비스가 5%, 디바이스 및 하드웨어가 23%, IT서비스 시장이 23% 성장하고, 소프트웨어 시장이 50% 성장할 것으로 예상됩니다. 이에 비해 혁신 신기술 시장의 성장률이 104%에 이르러 전통 IT시장 보다 높은 성장세를 보일 전망입니다. (ComTIA, 2019)

전 세계적으로 소프트웨어 개발자의 수요와 인기가 상승하고 있는 지금. 여러분은 소프트웨어 개발자에 대해서 얼마나 알고 계신가요? 현재 대략 19개 분야의 소프트웨어 개발 직군이 존재합니다. 이 중에 혁신 신기술에 속하는 클라우드 기술을 다루는 데브옵스 엔지니어 수요는 꾸준히 증가하고 있으며 이제 우리나라 채용시장에서도 수요가 증가하고 있는 것을 체감할 수가 있습니다. 기존의 시니어 수준의 개발자를 요구하던 수요 구조에서 이제는 주니어, 신입 데브옵스 엔지니어 채용도 증가했다는 것을 볼 수 있습니다.

채용시장의 블루오션
데브옵스 엔지니어 로드맵 🗺

데브옵스 엔지니어 커리어를 꿈꾸고 있는 분들을 위해 데브옵스 엔지니어 로드맵을 준비했습니다. 현재 소프트웨어 개발자, 시스템 관리자, 테스트 자동화 엔지니어, 네트워크 엔지니어로 종사하고 있는 사람은 물론이며, IT 지식이 전혀 없는 사람이라도 누구나 데브옵스 엔지니어가 될 수 있습니다.

데브옵스 엔지니어가 되기 위한 가장 효율적인 방법이 무엇인지를 차근차근 살펴보도록 하겠습니다. 데브옵스는 전체 소프트웨어 개발 수명 주기를 다루기 때문에 많은 기술로 작업을 해야 합니다. 또한 여전히 발전하고 있는 분야이며 지금 이 시각에도 많은 새로운 도구가 개발되고 있습니다. 따라서 로드맵은 다양할 수 있습니다. 또한 데브옵스 엔지니어가 된 후에도 지속적으로 지식을 배우고 확장할 것을 권장합니다.

데브옵스 엔지니어 로드맵-devops
(출처 : 데브옵스 엔지니어 로드맵)

1. 소프트웨어 개발 개념 학습

데브옵스 엔지니어는 애플리케이션을 프로그래밍을 하는 포지션은 아니지만, 개발팀과 긴밀하게 협력을 하면서 작업을 개선하고 자동화를 하여야 하기 때문에 핵심적인 개발 개념을 이해하고 있어야 합니다.

  • 개발자가 작업하고 협업하는 방법(e.g. Agile Work Flow)
  • 개발자가 사용하는 Git 워크플로
  • 애플리케이션 구성 방법(빌드 및 패키징 도구)
  • 자동화된 테스트와 테스트 범위

또한 일반적으로 전체 소프트웨어 개발 수명 주시가 아이디어에서 코드에 이르기까지, 최종 사용자에게 배포되는 것까지 포괄하는 전체 내용을 이해하여야 합니다.

2. OS & Linux Basic

데브옵스 엔지니어는 애플리케이션이 배포되는 인프라를 준비하고 관리하는 작업을 수행하게 됩니다. 따라서 서버를 관리하고 그 서버에 다양한 도구를 설치하는 방법에 대한 기본 사항을 알아야 합니다.

  • shell 명령어
  • 리눅스 File System & 권한
  • SSH 키 관리
  • 가상화

대부분의 서버는 리눅스 OS를 사용하기 때문에 리눅스와 특히 CLI(Command Line Interface)-명령줄 인터페이스를 자유자재로 사용할 수 있어야 하고 네트워킹 및 보안의 기본사항도 알아야 합니다. 고급 수준이 아니더라도 기초적인 운영체제와 리눅스 기술만 익히고 있어도 충분합니다.

3. 컨테이너 기술 – Docker

컨테이너는 모든 컴퓨팅 환경에서 애플리케이션이 빠르고 안정적으로 실행될 수 있도록 코드와 모든 종속성을 패키지화하는 소프트웨어의 표준 단위입니다. 컨테이너가 소프트웨어 패키징의 새로운 표준이 됨에 따라 회사에서는 애플리케이션을 컨테이너로 실행할 가능성도 높습니다. 이는 곧 데브옵스 엔지니어들이 가상화 기술의 개념, 컨테이너화의 개념, 서버에서 컨테이너화된 애플리케이션을 관리하는 방법 등을 이해하고 있어야 함을 의미합니다.

컨테이너 기술 중에서도 Docker가 지금까지 단연 가장 인기 있는 기술입니다. 컨테이너를 잘 다루는 데브옵스 엔지니어가 되기 위해서는 다음의 사항들을 충분히 익혀야 합니다.

  • 컨테이너 실행 방법
  • 활성 컨테이너 검사
  • Docker 네트워킹
  • Dockerfile을 사용하여 앱의 Dockerize
  • Docker-compose를 사용하여 여러 컨테이너 실행하기
  • Docker 리포지토리 작업

4. CI/CD Pipelines

데브옵스에서는 새로운 기능이나 버그 수정과 같은 모든 코드 변경 사항을 기존 애플리케이션에 통합하고 최종 사용자를 위해 지속적으로 자동화된 방식으로 배포해야 합니다. 데브옵스에서 CI/CD는 핵심이라고 해도 과언이 아닙니다.

많은 종류의 CI/CD 플랫폼이 사용되고 있으며 그중에서도 Jenkins와 Github Action이 많이 사용되고 있으며 다음의 사항들에 대한 기술을 익혀야 합니다.

  • CI/CD 서버 설정
  • 코드 리포지토리를 통합 후 파이프라인을 자동으로 트리거
  • 빌드 도구 & 패키지 매니저 도구를 사용한 테스트 실행 및 애플리케이션 패키징
  • 아티팩트 리포지토리 구성 및 파이프라인 통합

5. 클라우드 플랫폼 중 하나 배우기 -AWS

오늘날 많은 기업이 자체 인프라를 관리하는 대신 클라우드에서 가장 인프라를 사용하고 있습니다. 백업, 보안, 로드 밸런싱 등과 같은 다양한 추가 서비스를 제공하는 IaaS(Infrastructure as a Service) 플랫폼을 이용합니다. 이러한 서비스들은 플랫폼 특화되어 있기 때문에 특정 플랫폼이 서비스를 배우고 플랫폼에서 전체 배포 인프라를 관리하는 방법을 배워야 합니다.

AWS는 현재 전 세계에서 가장 많이 사용되는 IaaS 플랫폼이며 다루기가 어려운 서비스 중 하나인 것도 사실입니다. 마이크로 소프트의 Azure, 구글 클라우드 등의 다른 플랫폼도 널리 사용되며 AWS 서비스를 충분히 익힌다면 다른 플랫폼도 무난하게 다룰 수 있게 됩니다.

6. Container Orchestration – Kubernetes

컨테이너 기술이 대중적으로 사용하기 쉬워지게 되면서 큰 규모의 많은 기업에서 여러 서버를 수백 또는 수천 개의 컨테이너로 실행하고 있습니다. 그 많은 컨테이너는 사용하면서 어떻게든 에이징이 되고 관리가 되어야 합니다. 이러한 이유로 컨테이너 오케스트레이션 도구들이 생기게 되었습니다. 컨테이너 오케스트레이션 도구는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화합니다. 그 중에서 가장 많이 사용되는 Kubernetes는 클라우드 플랫폼 다음으로 데브옵스 엔지니어가 가져야 할 필수 역량 중의 하나입니다. 그렇기 때문에 아래의 내용들을 충분히 익혀야 합니다.

  • Kuberetes 작동 방법
  • Kubernetes 클러스터 운영 및 관리
  • Kubernetes에 애플리케이션을 배포하는 방법
  • 세부 사항 : Deployment, Service, ConfigMap, Secret, StatefulSet, Ingress 이해, Kubernetes CLI(Kubectl), Kubernetes 볼륨으로 데이터 유지, 네임스페이스

7. 모니터링 & 관찰 가능성

소프트웨어가 생산되면 이를 모니터링하여 성능을 추적하고 인프라 및 애플리케이션의 문제를 발견하는 것이 중요합니다. 따라서 데브옵스 엔지니어는 아래 사항의 역할에 책임을 다해야 합니다.

  • 소프트웨어 모니터링 설정
  • 인프라 모니터링 설정 e.g.) Kubernetes 클러스터 및 기본 서버 모니터링
  • 데이터 시각화
데브옵스 엔지니어 로드맵

8. IaC (Infrastructure as Code)

인프라를 수동으로 만들고 유지 및 관리하려면 시간과 리소스가 너무나 많이 소모가 되고 오류가 발생하기 쉽습니다. 특히 테스트 환경이나 프로덕션 환경용 인프라를 복제해야 하는 경우, 일일이 수동으로 인프라를 구동하는 것은 시간이나 비용면에서 비효율적입니다. 데브옵스의 궁극적인 목적은 자동화에 있기 때문에 바로 이 시점에서 Infrastructure as Code가 필요합니다.

IaC를 사용하면 코드를 사용하여 인프라를 생성 및 구성하며 인프라 프로비저닝과 구성 관리에 대한 개념을 알아야 합니다.

데브옵스 엔지니어 로드맵

가장 대표적인 IaC 도구로는 Terraform(프로비저닝 도구)과 Ansible(구성 관리 도구)이 있습니다. 그리고 AWS 이용자를 위한 AWS의 자체 IaC 서비스 Cloudformation도 있습니다.

데브옵스 엔지니어 로드맵

9. Scripting Language

데브옵스 엔지니어는 개발자, 시스템 관리자와 긴밀하게 협력하여 개발 및 운영을 위한 작업을 자동화하는 아주 중요한 포지션에 있습니다. 이를 자동화할 스크립트 작성할 수 있어야 하고 이 자동화 프로그램을 실행시킬 애플리케이션을 작성할 수 있어야 합니다. 이를 위해서는 하나 이상의 기본적인 프로그래밍 언어를 습득하여야 합니다.

bash 또는 Powerhsell과 같은 OS 특정 스크립팅 언어일 수도 있고, OS와 독립적인 Python, Ruby, Go 같은 언어가 될 수도 있습니다. 이 모든 언어를 모두 알아야 할 필요는 없습니다. 하지만 한 가지 언어를 자유롭게 사용할 수 있을 정도의 수준이 된다면 데브옵스 엔지니어로서 훨씬 더 능력을 인정받을 수 있겠죠.

데브옵스 엔지니어 로드맵

10. 버전 컨트롤 – Git

데브옵스 엔지니어는 모든 자동화 로직을 코드로 작성합니다. 그리고 애플리케이션 코드뿐만 아니라 자동화 코드도 Git과 같은 버전 관리 도구에서 관리하고 호스팅해야 합니다.

Git은 로컬에 설치하는 CLI 도구입니다. 소스 코드의 변경 사항을 추적할 수 있고 코드에 대한 더 나은 협업이 가능합니다. 코드로 작성된 이 파일들은 웹의 원격 Git 리포지토리에 중앙 집중식으로 저장이 됩니다. 현재 GitHub 와 GitLab이 많이 사용되고 있는 Git 리포지토리입니다.

데브옵스 엔지니어 로드맵

필수 학습 사항

  • Git 명령어(git clone, git branch, git pull/push, git merge 등)
  • 프로젝트 협업(create pull requests, code reviews, branching 등)

데브옵스 엔지니어가 되는 지름길 🛣
코드스테이츠 데브옵스 부트캠프

지금까지 데브옵스 엔지니어가 되기 위한 로드맵을 살펴보았습니다. 다양한 배경을 가진 많은 사람들이 데브옵스 엔지니어의 길에 도전을 하고 있습니다. 각자의 출발점이 모두 다르기 때문에 IT분야에 대한 지식이 많이 없는 초급자들이 가장 먼저 배우기에는 두렵게 느껴질 수도 있습니다. 하지만 위 일련의 과정을 체계적이고 탄탄한 시스템으로 17주 만에 완성할 방법이 있습니다.

코드스테이츠 데브옵스 부트캠프에서는 비전공자도 클라우드 서비스 개발은 물론 운영까지 한 번에 이루어 낼 수 있습니다. 높은 코스 운영 만족도를 자랑하는 코드스테이츠의 프리미엄 데브옵스 교육을 경험하고 데브옵스 엔지니어의 커리어에 도전하시길 바랍니다.

 김은아 DevOps Entry Engineer (DevOps)
편집 조주연 Content Manager


💻️ 데브옵스 엔지니어 커리어의 시작,
DevOps 부트캠프가 더 궁금하다면?

목록 보기

추천글