아티클
튜토리얼
대화형 가이드
DevOps 엔지니어란 누구입니까?
DevOps 엔지니어는 개발과 운영 모두를 아우르는 스킬과 사일로화된 팀 간의 분열을 연결하는 대인 관계 스킬을 갖춰야 합니다.
Tom Hall
DevOps 애드보케이트 및 실행자
개발 및 운영이 별도로 작동하는 사일로화된 구조에 뿌리를 두고 있는 조직의 경우 DevOps를 구현하려면 조직적인 점검이 필요한 경우가 많습니다. DevOps를 성공적으로 구현하려면 적절한 사용자, 문화 및 도구가 필요합니다. Atlassian의 2020년 DevOps 트렌드 설문조사에 따르면 DevOps 구현에 있어 가장 일반적인 장애물은 직원의 스킬 부족입니다.
DevOps 구조를 바꾸는 일을 구현하는 주요 역할은 DevOps 엔지니어입니다. 이 엔지니어는 개발과 운영 모두에 걸친 광범위한 스킬뿐만 아니라 사일로화된 팀 간의 분열을 연결하는 대인 관계 스킬을 갖춰야 합니다.
DevOps 엔지니어란 누구입니까?
DevOps 엔지니어는 코딩, 인프라 관리, 시스템 관리 및 DevOps 도구 체인을 포함하여 개발 및 운영에 대한 광범위한 지식을 갖춰야 하는 IT 전문가입니다. DevOps 엔지니어는 공동 작업에 더 적합한 환경을 만들기 위해 사일로 전반에서 작업하므로 대인 관계 스킬을 보유해야 합니다.
DevOps 엔지니어는 일반적인 시스템 아키텍처, 프로비저닝 및 관리에 대해 잘 알고 있어야 하지만, 소스 제어 사용, 코드 검토 주고받기, 단위 테스트 작성, 애자일 원칙에 대한 친숙도 등 기존 개발자 도구 세트 및 관행에 대한 경험도 있어야 합니다.
역할 및 책임
DevOps 엔지니어의 역할은 조직마다 다르지만 공통적으로 릴리스 엔지니어링, 인프라 프로비저닝 및 관리, 시스템 관리, 보안 및 DevOps 지원이 어느 정도 결합되어 있습니다.
솔루션 보기
팀 전체를 위한 DevOps 도구
교육 과정
Atlassian DevOps 필수 사항 알아보기
릴리스 엔지니어링에는 애플리케이션 코드를 빌드하고 배포하는 데 필요한 작업이 포함됩니다. 정확한 도구와 프로세스는 코드가 작성된 언어, 파이프라인 자동화 정도, 프로덕션 인프라가 온프레미스인지 또클라클라우드인지 등 다양한 변수에 따라 크게 달라집니다. 릴리스 엔지니어링에는 CI/CD 도구를 선택, 프로비저닝 및 유지 관리하거나 맞춤형 빌드/배포 스크립트를 작성 및 유지 관리하는 작업이 포함될 수 있습니다.
인프라 프로비저닝 및 시스템 관리에는 애플리케이션을 호스팅하는 데 필요한 서버, 스토리지 및 네트워킹 리소스의 배포 및 유지 관리가 포함됩니다. 온프레미스 리소스가 있는 조직의 경우 데이터 센터의 물리적 서버, 스토리지 장치, 스위치 및 가상화 소프트웨어 관리가 포함될 수 있습니다. 하이브리드 또는 완전히 클라우드 기반 조직인 경우 일반적으로 같은 구성 요소의 가상 인스턴스를 프로비저닝하고 관리하는 작업이 포함됩니다.
DevOps 지원은 저평가되거나 완전히 간과되는 경우가 많지만, DevOps 엔지니어의 가장 중요한 역할이라고 할 수 있습니다. DevOps 문화로의 전환은 엔지니어링 팀원에게 방해가 되고 혼란스러울 수 있습니다. DevOps 엔지니어는 DevOps 실무 전문가로서 조직 전체에서 DevOps 방식을 전파하고 교육하는 데 도움을 주는 역할을 맡습니다.
주요 DevOps 엔지니어 스킬 9가지
DevOps 엔지니어에게 필요한 기술적 스킬은 사용 중인 팀 구조, 기술 및 도구 집합에 따라 달라집니다. 그러나 강력한 커뮤니케이션 및 공동 작업 스킬은 꼭 필요합니다. 또한 DevOps 엔지니어는 배포 파이프라인의 모든 구성 요소를 확실하게 이해하고 사용 가능한 도구 및 서비스의 장단점도 파악해야 합니다.
1. 커뮤니케이션 및 공동 작업
DevOps 엔지니어는 팀, 관리자 및 고객과 효과적으로 커뮤니케이션하고 공동 작업해야 합니다. 소위 “소프트 스킬”은 간과되고 저평가되는 경우가 많지만, DevOps의 성공은 전체 가치 흐름에서 피드백의 품질과 양에 크게 좌우됩니다.
2. 시스템 관리
DevOps 엔지니어는 서버 프로비저닝 및 관리, 데이터베이스 배포, 보안 모니터링, 시스템 패치 적용, 내부 및 외부 네트워크 연결 관리와 같은 시스템 관리 경험을 갖게 됩니다.
3. DevOps 도구 관련 경험
DevOps 관행에는 올바른 도구를 사용하는 것이 필수이므로, DevOps 엔지니어는 다양한 도구를 이해하고 사용할 수 있어야 합니다. 이 도구는 인프라 및 구축부터 제품 또는 서비스 모니터링 및 운영에 이르기까지 DevOps 수명 주기 전반에 걸쳐 있습니다.
4. 구성 관리
DevOps 엔지니어는 Chef, Puppet, Ansible과 같은 하나 이상의 구성 관리 도구와 관련된 경험을 쌓아야 하는 경우가 많을 것입니다. 많은 조직에서는 새로운 시스템을 배포하거나 이미 실행 중인 시스템에 보안 패치를 적용하는 등 시스템 관리 작업을 자동화하기 위해 이 도구 또는 비슷한 도구를 채택하고 있습니다.
5. 컨테이너 및 컨테이너 오케스트레이션
Docker가 널리 보급한 기술인 컨테이너화를 사용하면 애플리케이션 코드와 런타임 환경을 동일한 이미지에 번들로 제공합니다. 따라서 기존 구성 관리 도구의 필요성이 줄어듭니다. 동시에, 컨테이너 관리에는 자체적인 어려움이 있으며 “컨테이너 오케스트레이터"(예: Docker Swarm 또는 Kubernetes)라고 알려진 도구와 관련된 경험은 DevOps 엔지니어에게 필요한 스킬이 됩니다.
6. 지속적 통합 및 지속적 배포
지속적 통합 및 지속적 제공(CI/CD)은 소프트웨어 개발에 대한 DevOps 접근 방식의 핵심 관행이며 사용 가능한 여러 도구를 통해 지원됩니다. CI/CD 도구 또는 도구 세트의 가장 기본적인 기능은 소프트웨어 구축, 테스트 및 배포 프로세스를 자동화하는 것입니다.
DevOps 엔지니어는 일반적으로 하나 이상의 CI/CD 도구를 구성하고 배포하는 경험이 필요하며, 일반적으로 이 도구가 효과적으로 사용될 수 있도록 나머지 개발 조직과 긴밀하게 협력해야 합니다.
7. 시스템 아키텍처 및 프로비저닝
DevOps 엔지니어는 온프레미스 또는 클라우드에서 컴퓨터 에코시스템을 설계, 프로비저닝 및 관리할 수 있어야 합니다. DevOps 소프트웨어 개발에서 클라우드 인프라 리소스의 관리에 이르는 모범 사례를 적용하는 IaC(Infrastructure as Code)라는 IT 관리 프로세스를 이해하는 것이 중요합니다. DevOps 엔지니어는 Amazon Web Services(AWS), AWS CloudFormation 또는 Terraform을 사용하여 클라우드에서 시스템 인프라를 모델링하는 방법을 이해해야 합니다.
8. 코딩 및 스크립팅에 익숙
많은 기존 시스템 관리자는 반복 작업을 자동화하기 위해 셸 스크립트를 작성한 경험이 있습니다. DevOps 엔지니어는 자동화 스크립트 작성에 그치지 않고 고급 소프트웨어 개발 관행과 코드 검토 및 소스 제어 사용과 같은 애자일 개발 관행을 구현하는 방법을 이해해야 합니다.
9. 공동 작업 관리 스킬
교차 팀 공동 작업은 특정 조직 구조와 관계없이 효과적인 DevOps 전략의 기본적인 구성 요소입니다. 엔지니어링 팀이 역할로만 구분된 그룹이든 또는 기능 개발, 품질 보증, DevOps 등을 위한 별도의 팀이 있든 관계없이, DevOps 엔지니어는 다양한 구성원과 함께 코치 및 동료로서 조직 전체에서 일해야 합니다.
예를 들어 DevOps에 투자에서 얻는 가장 가치 있는 효과는 개발자에게 더 빠른 피드백을 제공하는 기능입니다. DevOps 엔지니어는 테스트 방법론의 속도, 효율성 및 결과를 개선하기 위해 QA(수동 테스터 또는 테스트 자동화를 작성하는 개발자 모두)와 협력해야 하는 경우가 많습니다.
이와 동시에 개발자는 애플리케이션 코드를 만들고 배포하는 프로세스를 개선하기 위해 작업할 때 DevOps 엔지니어의 지원이 필요할 수 있습니다.
DevOps 팀: 다른 역할 및 책임
DevOps 에반젤리스트
조직 전체에서 DevOps 관행을 장려하고 개발하는 DevOps 전문가입니다. DevOps 에반젤리스트는 일반적으로 강력한 기술적 배경이 있지만 역할의 초점은 대인 관계 커뮤니케이션과 프로세스 개선에 있습니다.
릴리스 관리자/변경 자문 위원회
DevOps로 전환하지 않았거나 아직 초기 단계에 있는 조직에는 CAB(변경 자문 위원회) 또는 개별 릴리스 관리자 역할이라는 별도의 그룹이 있을 수 있습니다.
이 역할의 목적은 프로덕션에 출시되는 새로운 애플리케이션 소프트웨어가 품질 및 보안 표준을 충족하고 적절한 관리 승인을 받도록 하는 것입니다.
이 역할은 소프트웨어 릴리스가 더 위험할 때 특히 중요했습니다. 그러나 자동화된 테스트 및 테스트 배포와 같은 전략을 사용할 때는 이 역할이 덜 중요합니다.
자동화 전문가
모든 DevOps 엔지니어는 자동화에 대한 전문 지식을 갖추고 있어야 합니다. 그러나 조직이 별도의 자동화 전문가 또는 자동화 엔지니어 역할을 두는 경우도 없지는 않습니다. CI/CD 도구를 관리하거나 자동화된 테스트 모음을 개발 및 유지 관리하는 데 중점을 둔 전문가 또는 엔지니어일 수 있습니다.
소프트웨어 개발자
대부분의 경우 소프트웨어 개발자라는 직함은 프런트 엔드 또는 백엔드 애플리케이션 코드를 작성하거나 둘 다 작성하는 개발자에게 주어집니다. 이들은 애자일 사고 방식이 시작되기 전까지는 “컴퓨터 프로그래머”라고 불렸습니다.
QA
QA(품질 보증) 팀은 소프트웨어에서 오류를 찾아내는 일을 담당합니다. QA 엔지니어는 지금까지 새로운 애플리케이션 코드가 즉시 장애를 일으키거나(“스모크 테스트”), 기존 기능에 영향을 주거나(“회귀 테스트”), 다른 새로운 기능과 충돌(“통합 테스트”)하지 않도록 수동으로 테스트하는 데 집중했습니다.
점점 더 많은 조직에서 수동 테스터를 소프트웨어 개발 테스트 엔지니어(SDET) 역할로 보완하거나 교체하고 있습니다. SDET는 프로덕션에 릴리스되기 전에 새 애플리케이션 코드를 테스트하는 데 중점을 둡니다. 그러나 소프트웨어를 수동으로 테스트하기보다는 테스트 자동화 코드를 작성하는 데 중점을 둡니다.
보안 엔지니어
보안 및 규정 준수 문제를 계획 및 개발 프로세스에 완전히 통합한다는 개념을 수용하지 않은 조직에는 종종 보안을 담당하는 개인 또는 팀이 있습니다. 이런 경우 보안을 이후에 관여하는 분야로 생각하기 때문에 비효율적인 경우가 많으며, 보안을 염두에 두고 설계하는 것보다 소프트웨어를 설계, 구축 및 배포한 후에 소프트웨어를 보호하는 것이 훨씬 더 어렵습니다.
단일 역할을 초월
DevOps에는 문화적 변화, 새로운 관리 원칙 및 기술 도구의 사용이 필요합니다. DevOps 엔지니어는 DevOps 혁신의 핵심이며 변화를 촉진하기 위해 광범위한 스킬을 갖추고 있어야 합니다. 그러나 대부분의 조직에는 DevOps 엔지니어가 한 명만 필요한 것이 아니라, DevOps를 구현하고 소프트웨어 개발 수명 주기를 개선하기 위해 서로 긴밀히 협력하려면 다양한 분야를 다루는 엔지니어와 구체적인 분야의 엔지니어를 조합해야 합니다. DevOps 엔지니어는 사일로를 허물어 다양한 전문가 및 도구 체인 간의 공동 작업을 촉진하여 DevOps의 약속을 완전히 실현하도록 지원합니다.
Atlassian의 Open DevOps는 팀이 소프트웨어를 개발 및 운영하는 데 필요한 모든 것을 제공합니다. 팀은 선두 공급업체 및 Marketplace 앱과의 통합으로 원하는 DevOps 도구 체인을 구축할 수 있습니다. Atlassian은 팀이 공급업체가 원하는 방식보다는 그들이 원하는 방식으로 일해야 한다고 생각하기 때문입니다. 지금 사용해 보세요.
이 문서 공유
다음 토픽
여러분께 도움을 드릴 자료를 추천합니다.
이러한 리소스에 책갈피를 지정하여 DevOps 팀의 유형에 대해 알아보거나 Atlassian에서 DevOps에 대한 지속적인 업데이트를 확인하세요.