DevOps를 통해 소프트웨어를 효과적으로 제공하기 위한 기본 원칙 중 하나는 “조기에 테스트하고, 자주 테스트하라”는 것입니다. 실제로 CI/CD(지속적 통합/지속적 제공) 영역에는 빌드와 해당 빌드의 자동화된 테스트가 포함됩니다. 개별 구성 요소뿐만 아니라 전체 애플리케이션을 테스트해야 합니다.
테스트 주도 개발(TDD)은 한 가지 방법이며, 또 다른 방법은 단위 테스트와 시스템 테스트를 빌드 및 릴리스 프로세스 자체에 통합하는 것입니다. 기능 테스트와 회귀 테스트는 필수적이며, 민첩성이 매우 높은 환경에서는 저장소에 간단히 ‘커밋’하는 것만으로 실행되는 경우가 많습니다.
따라서 소프트웨어가 프로덕션 환경에 배포할 책임이 있는 담당자에게 ‘전달’될 즈음에는, 소프트웨어가 배포 준비를 마쳤다는 확신이 상당히 높기를 기대할 수 있습니다.
물론 정말 그랬다면 제가 이 글을 쓰고 있지는 않겠죠?
소프트웨어가 프로덕션 환경으로 전달될 때 넘어야 하는 장벽(분명히 말하지만, 그 장벽은 여전히 존재합니다)에서 우리는 철학에서 이른바 ‘합성의 오류’라고 하는 함정에 자주 빠집니다. 이 논리적 오류는 일반적으로 논증과 증명에 적용되지만, 흥미롭게도 저자 Ali Almossawi는 The Book of Bad Arguments에서 이 ‘잘못된 논증’을 간단히 설명하는 소재로 소프트웨어를 사용합니다(철학자나 토론 챔피언을 꿈꾸는 모든 연령대의 독자에게 강력히 추천합니다).
비형식적 오류, 근거 없는 가정, 합성과 분할
이 소프트웨어 시스템의 각 모듈은 일련의 단위 테스트를 거쳐 모두 통과했다. 따라서 모듈을 통합하더라도 소프트웨어 시스템은 해당 단위 테스트에서 검증된 불변 조건을 하나도 위반하지 않을 것이다. 하지만 실제로는 개별 부분을 통합하면 종속성으로 인해 시스템에 새로운 복잡성이 생기며, 이는 또 다른 잠재적 실패 가능성을 초래할 수 있다. -- https://bookofbadarguments.com/ 46쪽
이제 CI/CD 프로세스의 마지막 단계에 이르면 소프트웨어가 반드시 이러한 오류에 빠지는 것은 아닙니다. 단위 테스트뿐만 아니라, 해당 단위들을 통합하여 완전한 ‘시스템’ 또는 애플리케이션을 구성하는 과정에 대한 테스트도 거쳤기 때문입니다.
하지만 일단 프로덕션 환경에 배포되고 나면 우리는 다시 세 번째 단계로 돌아갑니다. 이러한 테스트만으로 시스템이 계속 예상대로 작동할 것이라고 가정할 수는 없습니다. 애플리케이션의 정의가 소프트웨어와 플랫폼뿐만 아니라, 말하자면 애플리케이션을 구동하고 이를 기대에 찬 소비자와 기업 사용자의 화면에 전달하는 데 필요한 네트워크 및 애플리케이션 서비스 구성 요소까지 포함하도록 바뀌었기 때문입니다.
네트워크 및 애플리케이션 서비스는 요청과 응답이 거쳐야 하는 데이터 경로에 영향을 미칩니다. 이러한 서비스 중 상당수는 개발자가 예상하지 못한 방식으로 요청과 응답을 실제로 변경할 수 있지만, 모든 서비스가 그런 것은 아닙니다. 따라서 개별 서비스와 애플리케이션 구성 요소를 모두 엄격하게 테스트했더라도 프로덕션 환경에 배포된 애플리케이션에서는 결함이 발생할 수 있으며, 실제로 그런 경우가 많습니다. 장애가 발생하거나 오류를 일으킬 수 있습니다.
이는 프로덕션 환경에서 구성의 오류에 빠졌기 때문입니다. 앱 개발자와 DevOps 담당자는 이러한 오류를 이해하고 프로덕션 이전 테스트에서 이를 다루지만, 네트워크 계층에서의 통합 역시 엄연한 통합이며 실제로 전체 시스템의 운영 무결성에 영향을 미칠 수 있다는 사실을 여전히 간과하는 경우가 많습니다.
답은 뻔해 보입니다. 그럼 그냥 프로덕션 환경에서 테스트하면 되겠네요!
하지만 실제로는 그렇게 하지 않을 것이고, 당신도 나도 그 사실을 알고 있습니다. 프로덕션은 여러 사람이 함께 사용하는 환경이기 때문에, 프로덕션 환경에서 엄격한 테스트를 수행하면 공유 리소스와 시스템에 부수적인 피해를 줄 위험이 커지고, 이는 서비스 중단으로 이어질 수 있습니다. 서비스 중단은 수익과 생산성 저하를 의미하며, 누구도 그 책임을 지고 싶어 하지 않습니다. 프로덕션에서 가능한 개별 테스트만 수행한 뒤, 나중에 무언가 고장 나거나 광고한 대로 작동하지 않을 때 개발자에게 책임을 돌리는 편이 훨씬 쉽습니다.
이는 궁극적으로 프로덕션 네트워크를 잠식하고 있는 소프트웨어 혁명을 조용히 이끄는 요인 중 하나입니다. 과거에는 프로덕션 환경과 동일한 테스트 환경을 복제하고 유지하기가 너무 어렵고 비용도 많이 들었습니다. 공유 인프라 중 일부는 가격이 비싸고 많은 공간을 차지합니다. 그러한 네트워크를 복제하는 것은 재정적으로도 운영 측면에서도 현명하지 않습니다.
하지만 클라우드 컴퓨팅과 가상화 덕분에 소프트웨어가 도입되고 이후 널리 채택되면서, 소프트웨어 기반 네트워크를 복제하는 것이 비용 면에서 부담이 적을 뿐만 아니라 코드형 인프라와 같은 개념 덕분에 더 쉬워졌다는 인식이 부각되기 시작했습니다. 또한 네트워크를 복제하고, 그 환경 전반에서 테스트한 뒤, 해체할 수 있으므로 해당 리소스를 재사용해 다른 애플리케이션에도 동일한 작업을 수행할 수 있습니다.
아직 완전히 실현된 것은 아니지만, 점점 가까워지고 있습니다. 가상(소프트웨어) 기반 네트워크 및 애플리케이션 서비스를 CI/CD 파이프라인에 통합하는 일은 일부 사람들이 생각하는 것보다 훨씬 더 현실화되어 있습니다. 전통적으로 인프라(네트워크) 기반이었던 서비스, 즉 로드 밸런싱, 애플리케이션 라우팅, 웹 애플리케이션 보안 등은 컨테이너 기반 아키텍처와 같은 환경에 통합되면서 소프트웨어 빌드 주기에도 긴밀하게 통합되고 있습니다. 이러한 서비스는 소프트웨어 기반 솔루션이므로 최소한 빌드 프로세스의 테스트 단계에 포함할 수 있으며, 이를 통해 프로덕션 환경에 배포할 때 결함이나 오류가 발생하지 않을 것이라는 확신을 높일 수 있습니다.
이러한 소프트웨어를 기반으로 “코드형 인프라”를 적용하면 한 단계 더 나아갈 수 있습니다. 빌드 및 릴리스 주기 동안 정책과 구성을 설계하고 세밀하게 조정한 다음, 거의 또는 전혀 변경하지 않고 프로덕션 환경에 배포할 수 있다면 프로덕션 환경에 존재하는 구성의 오류를 제거하는 데 분명 한층 더 가까워진 것입니다.
이러한 서비스, 즉 애플리케이션 서비스 중에서도 애플리케이션 중심성이 가장 높은 서비스가 CI/CD 테스트 단계에 더 많이 통합될수록, 모든 관계자가 프로덕션 배포의 성공을 더욱 확신할 수 있습니다.
오늘날 존재하는 또 다른 잘못된 통념은 ‘프로덕션’을 대상으로 테스트한다는 것이 곧 ‘프로덕션 시스템’을 테스트한다는 의미라는 것입니다. 하지만 여기에는 프로덕션 환경에서 데이터 경로를 구성하는 애플리케이션 서비스가 포함되지 않는 경우가 많습니다. 이러한 서비스도 반드시 포함해야 오류를 정말 난해한 문제로만 좁히고, 이를 해결할 시간과 리소스를 확보할 수 있습니다.
작성자 소개

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 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.