DevOps Engineer

1,398 단어·3 분·원문(.md)

DevOps #

말 그대로 Dev와 Ops를 합친 말로

개발팀과 운영팀 간의 원할하고 지속적인 커뮤니케이션, 협업, 통합, 가시성 및 투명성을 장려하는 것이다.

DevOps 목표를 문화, 자동화, 측정 및 공유(CAMS)의 네 가지 범주로 그룹화하며 DevOps 툴 사용하여 이 모든 영역을 지원할 수 있다.

  • 통합
  • 개발
  • 테스트
  • 구축
  • 모니터링

DevOps Engineer #

DevOps 엔지니어는 프로그래밍, 인프라 관리, 시스템 관리 및 DevOps 도구 체인을 포함하여 개발 및 운영에 대한 광범위 한 지식을 갖추어야 하는 IT 제네럴리스트다.

DevOps 엔지니어는 보다 협업적인 환경을 조성하기 위해서 사일로에서 작업하기 때문에 대인 관계 기술도 보유해야 한다고 한다.

책임 #

조직마다 DevOps 엔지니어의 책임은 다를 수 있지만 릴리스 엔지니어링, 인프라 프로비저닝 및 관리, 시스템 관리, 보안 및 DevOps 옹호의 조합을 수반한다.

릴리스 엔지니어링 #

릴리스 엔지니어링에는 응용 프로그램 코드를 빌드하고 배포하는 데 필요한 작업이 포함된다.

정확한 도구와 프로세스는 코드가 작성된 언어, 자동화된 파이프라인의 양, 프로덕션 인프라가 온프레미스인지 클라우드인지와 같은 많은 변수에 따라 크게 달라진다.

릴리스 엔지니어링에는 CI/CD 도구 선택, 프로비저닝 및 유지 관리 또는 맞춤형 빌드/배포 스크립트 작성 및 유지 관리가 포함될 수 있다.

인프라 프로비저닝 #

인프라 프로비저닝 및 시스템 관리에는 애플리케이션을 호스트하는데 필요한 서버, 스토리지 및 네트워킹 리소스의 배포 및 유지 관리가 포함된다.

온프레미스 리소스가 있는 조직의 경우 여기에는 데이터 센터에 물리적인 서버, 스토리지 장치, 스위치 및 가상화 소프트웨어 관리가 포함될 수 있다.

하이브리드 또는 완전히 클라우드 기반 조직의 경우 일반적으로 동일한 구성 요소의 가상 인스턴스가 프로비전하고 관리하는 작업이 포함된다.

데브옵스 엔지니어의 기술 #

  1. 커뮤니케이션 및 협업
  2. 시스템 관리
  3. 데브옵스 도구 사용 경험
  4. 구성 관리
  5. 컨테이너 및 컨테이너 오케스트레이션
  6. 지속적 통합 지속적 배포 (CI/CD)
  7. 시스템 아키텍처 및 프로비저닝
  8. 코딩 및 스크립팅에 대한 지식
  9. 협업 관리 기술

데브옵스 엔지니어가 팀에 필요한 이유 #

개발자 관점으로 보았을 때 데브옵스 엔지니어가 필요한 이유를 생각해보았다.

서버 구축 #

요구 조건에 맞는 서버를 구축하는 일은 많은 공부가 필요한 것이 당연하며 실전 개발자로 투입되었을 때 만약 데브옵스 엔지니어가 없는 팀에 투입되어서 서버 구축을 맡으라고하면 이런 요구조건에서 어떻게 구축하고 이 트래픽들을 어떻게 분산시키며 어떤 전략을 세워야할지 막막해 질 것 같다.

전문적인 데브옵스 엔지니어와 백엔드 개발자가 하는 데브옵스 활동은 당연히 확연히 차이날 수 밖에 없으며 MSA를 채택하게 된다면 그만큼 더욱 심오해지고 깊어지기 때문에 전문적인 DevOps 엔지니어를 데리고있다면 좋고 효율적인 코드로 프로그램을 빠르게 하는 것 이상으로 프로그램의 성능과 효율을 개선할 수 있을 것 같다.

운영팀과의 대화 #

데브옵스 엔지니어가 있기에 운영팀과의 커뮤니케이션을 더욱 원할하게 진행할 수 있을 것이다.

일단 해. 라는 지시보다는 서로의 입장을 고려하고 판단을 내릴 수 있는 엔지니어가 팀에 속해있기 때문에 유연한 커뮤니케이션을 가져갈 수 있는 이점이 될 것 같다.

자동화 #

귀찮은 작업들을 반복적으로 하지 않는 것. 그것이 우리 개발자들이 원하는 프로그래밍 세계다.

서버를 구축하는 것도 하나의 반복작업이고 지속적으로 배포하는 것도 하나의 반복작업이다.

데브옵스 엔지니어가 CI/CD 스크립트를 짜주면서 우리 개발 환경에 도움을 주기 때문에 우리는 더욱 개발에만 몰두할 수 있어 개발팀에게 정말 큰 이점이 될 것이라고 생각한다.


참고 자료 #

DevOps/devops.md