데브옵스(DevOps)란?ㅣ클라우드 엔지니어, 데브옵스 엔지니어가 하는 일

인사이트

데브옵스(DevOps)란?ㅣ클라우드 엔지니어, 데브옵스 엔지니어가 하는 일

2022년 11월 25일

구글, 마이크로소프트, 아마존 등 많은 대기업이 클라우드 사업에 집중하고 있습니다. 클라우드 사업의 성장과 대규모 글로벌 서비스에 필요한 무중단 서비스 설계에 대한 필요성 증가로 인해 데브옵스 영역에 대한 관심도 그만큼 높아지고 있는데요.

이러한 흐름 속에서 데브옵스가 무엇인지, 무엇을 배워야 하고 배운 후에는 어떻게 활용하게 되는지, 왜 많은 기업이 찾고 있는지 궁금하신 분들을 위해서 데브옵스에 대한 전반적인 이해를 돕기 위한 글을 준비했습니다.

(출처 : https://www.statista.com/chart/19039/cloud-infrastructure-revenue/)

테크 산업에서 떠오르는
ABCD (AI, Block-chain, Cloud, Data)

지난 몇 년 사이 사회, 기술 분야 기사들을 살면 클라우드 인프라, 데브옵스 기술들에 대한 이야기가 부쩍 많아졌습니다. 함께 많이 거론되는 분야에는 테크 산업의 ABCD(인공지능:A.I, 블록체인:Blockchain, 클라우드:Cloud, 데이터:Data)를 들 수 있죠.

꼭 개발자가 아니거나 개발 공부를 하지 않더라도 AI, 블록체인, 빅데이터 분야는 익숙하게 느끼는 분들이 많으실 텐데요. 알파고를 시작으로 최근에는 그림 영역에서 많이 언급되는 AI 활용 기술, 가상 화폐시장에서 사용되는 블록체인 기술, 빅데이터 추천 알고리즘 등 내부 구현이나 기술에 대해서는 잘 모르더라도 실생활에서 들어보거나 사용해보셨을 가능성이 큽니다.

그에 비해서 클라우드 기술은 비교적 구름처럼 희미하게 보이는 것 같지만, 이미 클라우드 기술은 여러분의 삶에 스며들어있습니다. 클라우드 기술이 어떻게 우리 생활 속에 들어와 있는지, 앞으로 영역을 왜 넓혀갈 수밖에 없는지 알아보도록 하겠습니다.

데브옵스(DevOps)란?

데브옵스의 정의에 대해 찾아보시면 개발과 운영을 합친 것이라는 표현을 볼 때가 있습니다. 용어부터 개발을 뜻하는 Development에서 DEV를, 운영을 뜻하는 Operations에서 OPS를 가져왔죠. 더 디테일하게 들어가면,

단순한 개발과 운영의 통합이 아니며, 하나의 언어나 기술을 뜻하는 것도 아니며, 개발과 운영이 가지는 간극을 줄이는 시도로써 하나의 문화이자 방법론으로 볼 수 있다.”

라는 표현도 볼 수 있는데요. 데브옵스를 처음 접하는 분들에게는 여전히 한 번에 와닿지 않는 설명일 수 있습니다.

클라우드 엔지니어,
데브옵스 엔지니어가 하는 일은? 👨‍💻

데브옵스와 클라우드에 대한 여러분의 인식을 구체화해드리기 위해서, 데브옵스 엔지니어와 클라우드 엔지니어가 하는 일의 일부에 대해서 간단하게 소개하겠습니다.

1. 클라우드 마이그레이션

클라우드 마이그레이션은 기존에 물리적인 서버 인프라를 만들어서 운영하던 것을 클라우드 환경으로 이주시키는 것을 의미합니다. 삼성, LG, 대한항공 등 다양한 대기업들이 진행했었고, 진행하고 있는 영역입니다. 최근에 시작된 현대적인 구조를 가진 기업들은 처음부터 클라우드 환경에서 인프라를 구축하기도 합니다.

2. 피크 트래픽 핸들링 스케일 아웃

피크 트래픽 핸들링과 스케일 아웃은 서비스를 이용하는 사용자가 급증할 때, 흔히들 말하는 서버가 터지는 상황이 발생하지 않고 정상적으로 작동하도록 대비하는 설계와 관련되어 있습니다.

3. 데이터 파이프라인

데이터 파이프라인은 절차에 따라 반복적으로 수행되어야 하는 것들을 자동화해서 필요한 데이터, 리소스를 전달하는 구조를 만드는 것을 말합니다.

4. 모니터링 시스템

모니터링 시스템은 서비스를 운영하면서 발생하는 많은 데이터를 파악할 수 있도록 시각화합니다. 모니터링된 데이터들을 통해서 데이터 기반의 의사결정을 가능하게 함으로써, 시스템을 보완하거나 앞으로의 방향성을 위한 통찰력에 도움을 줍니다.

5. 네트워크 보안

네트워크 보안은 시스템에 접근해야 하는 사람들만 접근이 가능하게 하고, 악의적인 접근은 방지하기 위해서 퍼블릭 영역과 프라이빗 영역을 구분하거나 연결하는 일을 합니다.

6. 코드를 통한 인프라 관리

서비스 규모가 커지면서 서비스를 작동시키고 관리하기 위한 인프라의 규모도 커졌습니다. 이러한 인프라 구조를 파악하고, 관련 작업자들이 현 상황을 공유하고, 버전관리를 쉽게 하기 위해 IaC(Infrastructure as Code)의 필요성이 증가했습니다.

데브옵스(DevOps) 중요성이 커지는 이유

앞서 소개한 데브옵스 엔지니어가 하는 일의 공통점은 “현대의 모든 서비스(APP)가 겪을 수밖에 없는 문제를 해결하기 위한 시도”라는 것입니다.

필수적인 단계의 문제를
해결하는 데브옵스 솔루션

기업은 여러 가지 서비스를 제공하고, 사용자는 애플리케이션을 통해서 서비스를 소비하는 것이 현대의 일반적인 패턴이라고 할 수 있습니다. 서비스 제공자(기업)는 자신들의 서비스를 애플리케이션 사용자(고객)에게 전달하기 위해서 반드시 겪을 수밖에 없는 과정들이 있습니다. 이러한 과정은 기업의 비즈니스가 채팅 서비스든, 음식을 배달하는 것이든, 중고 거래를 하는 것이든, 그 어떤 비즈니스 영역을 다루는지와 상관없이 모두 겪게 됩니다. 그리고 그 과정들에는 해결해야 하는 문제가 존재하고 데브옵스 기반의 기술이 이 문제를 해결하는 데 도움이 되기 때문에 시간이 갈수록 수요가 증가하고 있는 것입니다.

1. 개발, 배포, 운영의 목적

일반적으로 애플리케이션을 통한 서비스 제공 비즈니스는 개발, 배포, 운영이라는 3가지의 과정을 반드시 거치게 됩니다.

개발 영역은 각자의 비즈니스 요구사항에 따라서 큰 차이가 있습니다. 어떤 서비스는 1인 개발로 가능할 것이고, 또 어떤 서비스는 수십, 수백 명의 개발인력이 필요할 수도 있습니다. 이렇게 완성된 서비스는 결국 그 규모의 상관 없이 고객에게 반드시 전달되어야 합니다.

서비스를 전달할 때는 최대한 많은 사람들에게 전달되는 것이 좋습니다. 그래서 한국에서 만들어진 서비스라도, 네트워크를 통해서 한국뿐만 아니라 전 세계의 많은 사람들에게 서비스를 전달하려고 노력하게 됩니다. 개발된 서비스를 고객들이 사용할 수 있도록 전달하는 과정을 배포라고 합니다.

서비스를 개발하고 고객에게 배포하는 과정은 단 한 번으로 끝나지 않습니다. 배포된 서비스에 문제가 없는지 고객들의 반응을 살피고, 데이터를 지속해서 확인해야 합니다. 그 과정을 통해 새로운 기능을 개발하고, 다시 배포하면서 서비스의 버전이 올라가게 됩니다. 이러한 업무가 수행되는 단계가 서비스 운영 단계입니다.

결론적으로 “개발하고 배포하고 운영하는” 사이클은 어떤 아이디어에서 시작된 서비스 또는 애플리케이션일지라도 겪을 수밖에 없고 개발 단계에서는 “필요한 것을 만들자”, 배포 단계에서는 “많은 사람에게 전달하자”, 운영 단계에서는 “지속 가능하게 관리하자”는 목적을 가지고 있는 것을 알 수 있습니다.

목적
- 개발 : 필요한 걸 만들자
- 배포 : 많은 사람들에게 전달하자
- 운영 : 지속 가능하게 관리하자

2. 개발, 배포, 운영의 목적을
달성하기 위한 과제

이 목적을 달성하기 위해서 수행해야 할 과제들도 있습니다.

개발 단계에서는 필요로 하는 기능을 계속 만들어내고 제대로 작동되는지 테스트하는 일이 필요합니다. 배포를 위해서는 서비스가 실행될 환경인 인프라를 구축해야 합니다. 운영 단계에서는 사용자들과 시스템에 대한 피드백을 확보해서 분석하고 유지관리 보수작업을 진행해야 합니다.

과제
- 개발 : 기능 추가, 테스트
- 배포 : 인프라 구축
- 운영 : 피드백 확보, 분석 및 관리

3. 개발, 배포, 운영 과제에서 겪는 문제

3가지 영역에서 목적을 달성하기 위해 과제를 수행할 때, 각각이 겪게 되는 문제점들이 있습니다.

개발 단계에서 기능을 추가하고, 작동 여부를 테스트하는 일을 반복적인 업무가 될 수밖에 없습니다. 서비스 규모가 커질수록 반복 작업의 수는 계속 늘어나게 됩니다. 또한 사람이 계속 반복된 작업을 하다 보면, 해야 할 단계를 건너뛰거나, 작업의 순서가 바뀌는 실수가 발생할 수 있습니다. 이러한 휴먼 에러는 언제 어떤 단계에서 잘못되었는지 확인하기 힘든 경우가 많습니다.

배포 단계에 있어서는 인프라를 유지하는 비용적인 문제를 만나게 됩니다. 클라우드 환경에서 인프라를 구축하기 전에는 실제 물리적인 머신들이 존재하는 서버실에 인프라 환경을 구축했습니다. 이러한 환경을 온프레미스라고 하는데, 지금도 여전히 많은 기업에서 사용되고 있습니다. 온프레미스 환경의 문제는 사용자 숫자에 대한 예측이 필요하고 예측에 실패한 경우, 큰 비용 손해를 보게 된다는 것입니다.

예를 들어서, 우리가 만드는 서비스를 100명의 사용자가 이용할 것으로 예측했습니다. 그래서 우리는 조금 여유 있게 150명을 감당할 수 있는 인프라를 구축했는데, 모종의 이유로 서비스가 유명해지면서 1,000명의 사용자가 접속하게 됐습니다. 이런 경우 한계를 넘어서는 850명의 사용자를 감당할 수 없을 뿐만 아니라, 서버가 다운되면서 기존 사용 가능자까지 피해를 보는 서비스 중단 상황이 발생할 수 있습니다. 그렇다고 해서 미리 1,000명을 상정한 인프라를 구축해서 대비하기도 어렵습니다. 계속해서 100명의 접속자만 유지하게 된다면 낭비되는 설비에 들어가는 유지비용이 부담되기 때문입니다.

운영 단계에서도 여러 어려움이 발생합니다. 효과적인 업데이트를 하기 위해서는 데이터 기반의 판단이 요구되는데, 흘러들어오는 데이터들을 어떻게 관리하고 어떻게 시각화해야 할지에 대한 고민이 필요합니다. 또한 오류나 재난 등의 특별 상황 속에서 우리의 서비스가 중단되지 않고 지속되도록 할 수 있는 방법을 찾아야 합니다.

문제
- 개발 : 반복되는 업무와 휴먼에러
- 배포 : 인프라 확장 축소에 따른 비용 문제
- 운영 : 데이터 관리, 서비스 중단 상황에 대한 대처

4. 개발, 배포, 운영의 문제를
해결하기 위한 솔루션

위에서 언급된 여러 문제는 사실 일부에 불과합니다. 또한 그에 연결된 해결 방법들도 각 문제에 따라 하나씩 연결되는 것이 아니라, 대부분 유기적으로 연결되어 있습니다. 예를 들어 자동화를 통한 문제해결 같은 경우에는 개발과 배포 운영 모두에서 필수적으로 고려되는 부분입니다. 이 글의 설명에서 등장하는 문제와 해결의 연결은 데브옵스를 처음 접하시는 분들의 전반적인 이해를 돕기 위한 단순화된 전개라는 점을 이해해주시면 좋겠습니다.

데브옵스에서 다루는 개념과 기술들은 위에서 소개한 문제들을 해결하기 위한 솔루션으로 활용됩니다. 인간은 실수하지만, 기계는 실수하지 않습니다. 절차대로 처리해야 하는 일이 있을 때 사람은 깜빡하고 놓치는 부분이 있을 수 있지만 기계는 천 번, 만 번 동일하게 수행합니다. 그래서 개발 단계에서 만나게 되는 반복되면서 실수가 없어야 하는 상황에서 데브옵스는 자동화를 통한 문제 해결법을 제시합니다. CI/CD 파이프라인을 통해서 테스트를 자동화 처리하고, 검증 완료된 추가 기능을 배포환경으로 자동으로 전달합니다.

배포 상황에서 언급한 문제는 급증 및 급감하는 상황에서의 대처가 어렵다는 점이었습니다. 데브옵스에서는 클라우드 인프라 구현을 통해서 필요에 따라 탄력적으로 인프라 구성을 늘리고 줄이는 설계를 지향합니다. 그래서 예측하지 않고 대응하는 인프라를 만드는 것을 중요하게 생각합니다. 흔히들 하는 말로 표현하면, 물 들어올 때 노 저을 수 있게 해주고, 때로는 손절해야 할 때 피해를 최소화할 수 있게 도와줍니다.

그리고 현 상황을 파악하고 데이터 분석을 통해 인사이트를 얻고, 서비스를 안정적으로 지속하려는 운영적인 문제 해결을 위해서 데브옵스는 모니터링 시스템 구축과 무중단 서비스 구현을 제시합니다. 프로메테우스(Prometheus), 그라파나(Grafana), 오픈서치(OpenSearch) 등의 모니터링 시스템을 활용해서 필요한 데이터를 시각적으로 제공하고, 문제상황에서 가용성을 확보하고 트래픽을 분산시키는 로드 밸런싱이나, 재해복구(DR) 설계 등을 통해 즉각 대처하는 무중단 서비스를 목표로 합니다.

해결
- 개발 : CI/CD 파이프라인, 자동화
- 배포 : 탄력적인 인프라 설계
- 운영 : 데이터 모니터링, 무중단 서비스

데브옵스 엔지니어가 하는 일은? 👨‍💻
서비스가 겪을 수밖에 없는 문제를 해결하는 일

지금까지 데브옵스가 무엇인지, 데브옵스 엔지니어가 하는 일은 무엇인지, 모든 비즈니스가 겪을 수밖에 없는 단계(개발, 배포, 운영)에서의 4가지 포인트(목적, 과제, 문제, 해결)에 대한 설명을 통해 함께 살펴보았습니다. 이를 통해 데브옵스 엔지니어가 하는 일은 “오늘날 모든 서비스(APP)가 겪을 수밖에 없는 문제를 해결하는 일”이라고 요약할 수 있는데요. 이 글을 통해 여러분이 보다 데브옵스에 대해 잘 이해하게 되셨으면 좋겠습니다.

 이정훈 Educational Software Engineer (DevOps)
편집 조주연 Content Manager


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

목록 보기

추천글