데브옵스와 데브옵스 엔지니어
- 많은 분들이 어플리케이션 개발자(여기선 웹 프론트엔드,백엔드 등보다 더 포괄적인 의미)는 아는 분들이 많지만, 데브옵스, 데브옵스 엔지니어를 잘 모르시는 분들이 있었기 때문에 정리할겸 포스팅 함.
1. DevOps (Development + Operations, 개발과 운영의 합성어)
2. DevOps라는 단어가 나오게 된 배경
- 개발 프로세스 중 폭포형 모델을 사용한 시스템 개발에서는
1. 애플리케이션 실행 환경 구축(인프라)은 네트워크나 하드웨어에 능통한 인프라 엔지니어가 담당.
2. 애플리케이션 개발 부분은 업무 지식, 프로그래밍, 테스트 방법과 같은 기술을 잘 아는 애플리케이션 엔지니어가 담당.
- 하지만..
- 급격하게 발전한 인터넷 및 가상화 기술로 인하여 인프라 제공 및 하드웨어 리소스 제공
키워드 : IaaS, PaaS, SaaS 등.
- 온프레미스 환경에서 가동 시키던 서버들을 클라우드 상의 인스턴스로 옮기고, 데이터베이스나 네트워크와 같은 클라우드 서비스를 이용함으로써 실행 환경의 구축 범위가 극도로 줄어들어 짧은 사이클로 릴리스를 반복하는 스타일로 변경됨
- 클라우드를 구성하는 대부분의 기술은 한 대의 물리 호스트 상에서 움직이는 시스템과는 달리 분산 환경에서 가동시키는 것이 기본이다.
- 이와 같은 분산 환경에서는 인프라 엔지니어가 수동으로 운용을 하지 않고 자동화된 툴을 사용하여 오케스트레이션한다.
- 여기서 중요한 점은 짧은 사이클로 릴리스를 반복하는 점이다.
-> 그럼? 배포, 통합, 유지관리, 업데이트, 안정성 등을 누가 챙기는데?!
4. 운영팀과 개발팀의 경계선이 사라짐
- DevOps는 기존에 개발과 운영이라는 두 팀간의 장벽을 없애준다.
- 일부 조직에서는 개발팀과 운영팀이 나뉘어 있지 않고 엔지니어가 두 업무를 모두 수행할 수도 있다 (..설마..)
- 즉 DevOps는 (개발 + 운영) 말 그대로 개발과 운영이 합쳐진 모델을 뜻한다.
5. 그래서 데브옵스 엔지니어는 뭐하는데?
- 프로세스, 툴, 방법론을 도입하여 코딩에서 배포, 유지관리 및 업데이트에 이르는 소프트웨어 개발 라이프사이클 전~체에 걸쳐 요구 사항 간의 균형을 맞춘다.
- DevOps에서는 프로세스의 통일 및 자동화가 핵심!
- DevOps 엔지니어는 코드, 애플리케이션 유지 관리, 애플리케이션 관리를 통합하는 데 중요한 역할을 한다.
- 애자일 환경에서 개발자, 시스템 관리자, 프로그래머는 사일로화되어 동일 제품을 개발하면서도 사용자에게 가치를 제공하는 데 필수적인 정보를 공유하지 않을 수 있다.
- DevOps 엔지니어는 이러한 과정을 통합하고 경계를 없애며 애플리케이션을 빠르게 변경하는 데 필요한 작업과 안정성을 유지하는 태스크 간 격차를 해소한다.
참고: 사일로란?
곡식 창고라는 뜻이 있는데, 단단한 벽을 두르고 남들이 곡식에 접근하지 못하게 창고를 만든 것 처럼
각자 팀이 자기 팀의 이익만을 대변하는 현상이다.
결론적으로
- 짧은 사이클로 어플리케이션 릴리스를 반복하는 목적 중 하나는, 사용자에게 가치를 빠르게 제공할 수 있다는 점이다.
- 그러므로 팀의 통합이 무엇보다도 중요해졌던 것이다.
- 개발과 운영이라는 사일로에 묶여 있던 팀들의 장벽을 없애기 위해서 DevOps라는 모델이 나온 것이다.
- DevOps 엔지니어는 이 전반에 걸쳐 필요한 작업을 한다.
- 성공적인 DevOps의 도입은 문화 및 프로세스의 변화에 좌우된다.!!
참고
https://www.redhat.com/ko/topics/devops/devops-engineer
https://aws.amazon.com/ko/devops/what-is-devops/
https://www.redhat.com/ko/topics/cloud-computing/what-are-cloud-services
https://www.hrinsight.co.kr/view/view.asp?in_cate=114&bi_pidx=31856
https://www.redhat.com/ko/topics/automation/what-is-orchestration
좋은 글 잘보고 갑니다!!!