어떤 기술 트렌드든 지나친 과대광고로 인해 금세 사실상 무의미해지는 용어가 있기 마련입니다. 초기에는 클라우드가 그랬습니다. 어떤 면에서는 지금도 그렇습니다. DevOps는 개념이 정립되는 데 몇 년이 걸렸습니다(정말 정립되었다고 볼 수 있다면 말이죠). 현재 머신러닝과 AI는 과대광고의 파도를 맨발로 타고 있으며, 당분간 그 기세가 꺾일 조짐은 보이지 않습니다.
그 뒤를 바짝 쫓는 용어가 바로 "코드형(as code)"입니다.
갑자기 모든 것이 "코드형(as code)"이 되었습니다. 시장은 C, C++, C#의 차이조차 제대로 구분하지 못하면서도 "코드형"이라면 열광합니다. "코드형"은 삶과 우주, 그리고 모든 것에 대한 해답이 되었습니다. "코드형"으로 해결하지 못할 문제는 없으며, 모두가 이를 도입하고 있습니다.
경계나 명확한 정의 없이 용어가 남발될 때는 잠시 멈추고 *우리*가 사용하는 정의부터 명확히 해야 합니다. 참고할 만한 RFC 형식의 정의를 마련하는 표준 위원회가 있다면 좋겠지만, 그런 위원회는 없습니다. 그나마 가장 가까운 기관은 NIST인데, 이들이 클라우드를 둘러싼 혼란을 얼마나 잘 잠재웠는지는 이미 확인한 바 있습니다.
"코드형(as-code)"에는 코드형 인프라(IAC) 외에도 더 많은 것이 포함됩니다. Pythian의 Aiman Najjar는 현재 코드형 인프라 환경을 훌륭하게 개괄했습니다. 컨테이너를 별도의 계층으로 봐야 한다는 주장(네트워크 및 애플리케이션 서비스 관점에서는 컨테이너도 인프라일 뿐입니다)과 Jenkins가 여기에 속하지 않는다는 주장에는 동의하지 않지만, 전반적으로 그의 블로그는 '코드형' 계층 간의 관계를 이해하고 각 작업에 적합한 도구를 연결하는 데 매우 유용했습니다. 또한 코드형 인프라에 관한 논의는 대부분 지속적 제공에 초점을 맞춥니다. 즉, 애플리케이션을 빌드하고 테스트하고 통합한 뒤 프로덕션에 릴리스하는 파이프라인을 말합니다. 이는 지속적 배포와는 다른 프로세스입니다. 지속적 배포는 릴리스된 애플리케이션을 가져와 필요한 네트워크 및 애플리케이션 서비스와 함께 프로덕션 환경에 배포하는 데 초점을 맞춥니다.
참고 이상적인 애플리케이션 환경에서는 딜리버리 파이프라인과 배포 파이프라인이 하나로 통합됩니다. 하지만 우리 대부분은 (여전히) 애플리케이션의 현실 속에 살고 있으며, 프로덕션 환경과 개발 환경은 서로 다른 요구 사항과 제약 조건을 가진 별개의 환경입니다. 따라서 파이프라인에 자동화를 적용할 때는 이러한 분리를 인식해야 합니다.
IT와 배포 파이프라인에 내재된 특수성을 처리하기 위해 세 가지 뚜렷한 계층이 등장하고 있습니다. 그중에서도 가장 두드러지는 것은 환경 자체에 내재된 복잡성입니다. 네트워크 다이어그램에서 클라이언트와 앱을 직선으로 연결해 그린다고 해서 누구도 실제로 그렇게 단순하다고 생각하지는 않습니다. 내부에서는 우리가 다이어그램으로 표현할 시간과 인내심이 허락하는 것보다 훨씬 더 많은 일이 벌어지고 있습니다.
파이프라인 자체가 지닌 다양성, 즉 특수 목적용 하드웨어뿐 아니라 상용 기성품(COTS)에 배포되는 가상 및 컨테이너 기반 소프트웨어까지 아우른다는 점 역시 '코드형(as code)' 방식을 별도의 계층으로 세분화해야 할 필요성을 뒷받침합니다. 최신 하드웨어는 코드형 접근 방식으로 관리할 수 있지만, 레거시(공유) 하드웨어를 이 프로세스에 편입하는 것은 거의 불가능할 수 있습니다. 따라서 배포 프로세스 자체를 더욱 충실히 반영하도록 계층을 분리하면, 레거시 및 최신 하드웨어 기반 솔루션과 소프트웨어 기반 서비스를 모두 파이프라인에 포함할 수 있습니다.
목표는 멀티 클라우드 환경에서 애플리케이션별 배포 일정과 아키텍처를 지원할 수 있는 연속적인 IT 스택을 구축하는 것입니다. 또한 배포는 애플리케이션의 실제 수명 주기가 시작되는 단계에 불과하므로, 배포 후 운영에 중점을 둔 네 번째 계층이 필요합니다. 이는 인프라 프로비저닝 및 온보딩, 서비스 구성 및 관리, 배포 파이프라인을 포괄하는 세 가지 핵심 계층에 추가되는 계층입니다.

이 도구 목록을 모든 도구를 망라한 것으로 간주해서는 안 됩니다. 이 밖에도 수많은 도구와 도구 모음이 있습니다. 예를 들어 여러 설문 조사와 연구에 따르면, 대다수의 NetOps 담당자는 네트워크 및 애플리케이션 서비스 자동화 작업에 맞춤형 Python 스크립트를 선호합니다. 또한 Cisco ACI, VMware NSX, OpenStack, Red Hat OpenShift와 같은 네트워크 자동화 시스템 및 스택도 지속적 운영 스택의 여러 기능을 구현하는 데 널리 사용됩니다. 시각 자료에 모든 도구를 담기에는 공간이 부족하므로, DevOps에서의 도구 인기도를 기준으로 일부만 예시로 포함했습니다. 제공 및 배포 파이프라인 전반의 표준화는 성공을 위한 필수 요소이며, 조직 내 기존 기술과 전문성을 활용해 '코드형(as code)' 제공 파이프라인 구현에 가장 널리 쓰이는 도구를 사용하는 것이 합리적이기 때문입니다. 참고로 '코드형 운영(operations as code)'을 위한 도구는 따로 나열하지 않았습니다. 적어도 현재로서는 이러한 도구 중 상당수가 맞춤형(사용자 지정 스크립트)이거나 특정 공급업체의 기술에 종속되어 있기 때문입니다.
참고 코드형 운영은 비즈니스 프로세스 관리(BPM)에 해당하는 IT 개념입니다. BPM을 활용하면 비즈니스 프로세스를 자동화할 수 있습니다. 일부 BPM은 매우 구체적인 워크플로에만 초점을 맞추는 반면, 다른 BPM은 구매부터 결제, 배송에 이르는 고객 상호작용의 전 과정을 포괄하기도 합니다. 코드형 운영은 오늘날 IT 분야에서 아직 초기 단계에 있는 방식이지만, 기업이 BPM을 활용하는 방법을 익힌 것처럼 운영 프로세스 최적화의 이점을 누리려면 운영 프로세스 관리로 발전해야 합니다.
지속적 운영 스택
코드형 인프라(IaC)
클라우드든 데이터 센터든 구성해야 할 네트워크는 여전히 존재합니다. 상위 계층 서비스(계층 4~7에서 작동하는 서비스, 즉 애플리케이션 서비스)조차 운영하려면 네트워크 토폴로지에 대한 어느 정도의 지식이 필요합니다. 완전히 새로운 파이프라인을 배포하는 경우에는 일부 기능을 활성화(즉, 라이선스 부여)해야 할 수도 있습니다. 셀프서비스 방식의 배포를 지원하려면 코드형 인프라(Infrastructure as Code)가 필요합니다. 인프라(소프트웨어 및 서비스)가 갖춰져 있지 않으면 구성할 대상도, 앱을 배포할 대상도 없기 때문입니다.
책임: 인프라 온보딩, 라이선스 관리, 프로비저닝
코드형 구성(Configuration as Code, CaC)
이는 구성과는 별개의 문제입니다. 구성은 해당 서비스에 특화된 정책과 동작을 설정해야 할 필요성을 구체적으로 다룹니다. 구성 작업은 애플리케이션의 주요 업데이트마다 반복될 수 있으며, 사소한 업데이트 때마다 필요할 수도 있습니다. 보안 관련 서비스의 경우 특정 서비스를 패치하거나 업데이트 또는 업그레이드하기 위해 긴급하게 수행될 수도 있습니다. 코드형 구성(Configuration as Code)은 애플리케이션별 배포 일정과 파이프라인을 지원하고, 전체 프로덕션 파이프라인의 안정성을 보장하는 데 중요한 애플리케이션 데이터 경로의 격리를 적용하는 데 필수적입니다.
책임: 서비스 구성, 업그레이드 및 패치
코드형 파이프라인(PaC)
그리고 애플리케이션 전체와 해당 서비스를 처음부터 끝까지 정의하는 포괄적인 프로세스가 있습니다. 이것이 전체 파이프라인이며, 배포를 자동으로 실행하는 실행 가능한 프로세스로 코드화됩니다. 코드형 파이프라인(Pipeline as Code)은 IaC와 CaC를 연결하여 이들을 하나로 통합하고, 이른바 배포 파이프라인을 정의합니다. 파이프라인을 활용하면 프로세스의 필수 단계 사이에서 발생하는 대기 시간을 없앨 수 있으므로 속도와 효율성을 가장 크게 향상할 수 있습니다.
책임: 배포 프로세스 자동화
코드형 운영(OaC)
이 계층은 지속적인 운영을 담당하는 계층입니다. 모니터링 및 알림, 자동 확장, 검색이 이루어지는 곳입니다. 이 계층에서는 운영 프로세스를 자체적으로 실행할 수 있는 시스템에 코드화하는 데 중점을 둡니다. 자동 확장은 가장 흔히 코드화되는 운영 프로세스 중 하나이며 여러 시스템이 관여합니다. 그러나 분석을 위한 원격 측정 데이터 수집 역시 주의가 필요한 운영 프로세스입니다. 또한 해당 원격 측정 데이터를 기반으로 데이터 경로나 애플리케이션 성능을 최적화하도록 (자동으로) 조정하는 작업도 마찬가지입니다. 이러한 운영 프로세스에는 고유한 구성이 있으며 배포 프로세스가 완료된 후에 적용됩니다.
책임: 운영 워크플로 자동화
지속적 운영 스택의 관점에서 지속적 배포를 바라보면 프로덕션 파이프라인 자동화를 위한 전략적 접근 방식을 마련할 수 있습니다. 계층과 책임을 분리하면 많은 조직이 원하고 비즈니스 부문에서 점점 더 요구하는 셀프서비스 방식을 구현하면서도, 매우 까다로운 IT 업무 자동화 과제를 보다 쉽게 해결할 수 있습니다. 또한 IT 자동화 활용에 반드시 필요한 발전 단계인 코드형 운영(Operations as Code)을 통해 지속적 운영으로 나아갈 수 있습니다.
물론 이것이 배포 파이프라인과 관련된 자동화 작업을 바라보는 '유일한 정답'은 아닐 수 있습니다. 하지만 하나의 관점이 될 수 있으며, 시장 참여자들이 자신들이 무엇을 하고 무엇을 하지 않는지 명확하게 설명할 수 있게 해 줍니다.
즉, 제가 코드형 인프라 또는 코드형 구성이라고 말할 때, 특히 F5 제품과 관련하여 정확히 무엇을 의미하는지 확실히 알 수 있다는 뜻입니다.
작성자 소개

Lori MacVittie는 F5 CTO 오피스의 수석 엔지니어이자 최고 에반젤리스트로, 애플리케이션 딜리버리, 자동화 전략 및 인프라 분야에서 깊이 있는 전문성을 보유하고 있습니다. AI 에이전트를 위한 가드레일을 정의하고, 취약한 멀티클라우드 아키텍처를 분석하며, 확장 가능한 시스템의 한계를 탐구하는 등 복잡한 문제를 명확하게 풀어내는 것으로 잘 알려져 있습니다. 애플리케이션 개발, IT 아키텍처, 네트워크 및 시스템 운영 전반에 걸쳐 30년 이상의 업계 경험을 쌓았습니다. F5에 합류하기 전에는 수상 경력이 있는 기술 편집자로 활동했습니다. MacVittie는 컴퓨터 과학 석사 학위를 보유하고 있으며, 보안, 클라우드 및 엔터프라이즈 아키텍처 분야를 아우르는 다수의 저서를 집필한 작가입니다. 또한 보드게임과 비디오 게임을 열정적으로 즐기며, 치즈에 대해서는 거리낌 없이 확고한 견해를 갖고 있습니다.
Lori Mac Vittie의 다른 블로그 게시물관련 블로그 게시물
성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.
TLS 검사에서 피터 파커 원칙 다루기
“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.
Venafi와 F5를 통한 머신 아이덴티티 보호
‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.
마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...
내 클라우드에서 나가!
F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.
Shift(웹 앱) 보안 레터
웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.