프록시의 힘: 개발 환경과 운영 환경의 격차 해소

F5 에코시스템 | 2015년 10월 26일

애플리케이션 개발자와 네트워크 아키텍트의 세계는 서로가 상대방의 영역을 바라보는 방식만큼은 비슷할지 몰라도, 그 밖의 모든 면에서는 이보다 더 다를 수 없을 정도로 상이합니다.

일반적으로 네트워크 관점에서 바라본 애플리케이션 배포는 다음과 같습니다:

clip_image002

한편, 그 ‘벽’ 너머에서 동일한 애플리케이션 배포를 바라보는 개발자의 관점은 흔히 다음과 같습니다:

clip_image004

두 환경 모두 각자의 영역에서는 의심할 여지 없이 정확하지만, 상대 환경의 실제 아키텍처에는 거의 관심을 두지 않습니다. 이는 애플리케이션이 프로덕션 환경으로 전환될 때 많은 문제가 발생하는 이유를 잘 보여 줍니다. 실제로 문제는 발생합니다. 한 연구에 따르면 2013년에 “개발자의 90%가 프로덕션 단계에서 발생한 애플리케이션의 긴급 문제를 해결하기 위해 주말과 공휴일, 휴가까지 반납하고 있다고 답했습니다[1].” 이러한 문제 중 상당수는 분명 소프트웨어 결함 및 오류와 관련이 있지만, 그 밖의 많은 문제는 두 환경 간의 수많은 차이로 인해 발생하는 것이 틀림없습니다. 프로덕션 환경은 개발 환경이 아니며, 그 반대도 마찬가지입니다.

오늘날의 애플리케이션은 프로덕션 환경에는 있지만 개발 또는 테스트 환경에는 거의 없는 다양한 서비스를 활용합니다. 확장성을 위한 로드 밸런서, 성능 향상을 위한 캐시, 보안을 위한 웹 애플리케이션 방화벽 등이 그 예입니다. 이러한 서비스는 사용자와 앱 사이(또는 앱과 API 사이)의 네트워크를 오가는 모든 요청과 응답을 처리할 뿐만 아니라, 경우에 따라 요청 및/또는 응답을 수정하기도 합니다. 대표적인 예가 사용자의 IP 주소입니다. 이 값은 모든 요청의 HTTP 헤더에 포함되어 있지만, 로드 밸런싱 프록시를 통과하면 클라이언트가 아닌 프록시의 IP 주소로 바뀝니다.

이러한 사실을 미처 알지 못한 개발자에게는 이로 인해 애플리케이션이 ‘작동하지 않게’ 될 수 있으며, 앱을 수정하는 데 필요한 시간 외에도 문제 해결에 몇 시간씩 소요될 수 있습니다. 환경 차이에서 비롯되는 이러한 유형의 문제 때문에 2015년 중반 설문조사[2]에 응답한 개발자의 28%가 “적절한 테스트 환경이 있었다면 운영 환경 문제의 50% 이상을 발견하고 해결할 수 있었을 것”이라고 답한 것은 의심할 여지가 없습니다. 또한 절반 이상(52%)은 “운영 환경 문제의 25~50%를 해결할 수 있었을 것”이라고 답했습니다.

프로덕션 환경에서 발생하는 많은 문제는 애플리케이션 간의 차이에서 직접적으로 비롯되며, 특히 애자일 방법론으로 개발된 애플리케이션에서 두드러집니다. 애자일 방식은 코드 변경이 빈번하기 때문에 프로덕션 환경에서 이러한 종류의 충돌이 발생할 가능성을 높일 수 있습니다.

이러한 문제 중 점점 더 많은 부분이 프로그래밍 가능한 프록시를 사용함으로써 해결되고 있지만, 그렇다고 모든 문제가 해결되는 것은 아닙니다. 이 방식을 사용하면 이미 운영 환경에 배포된 코드를 변경할 필요가 없어 애플리케이션 출시가 더 지연되는 것을 방지할 수 있습니다. 앞서 언급한 ‘IP 주소’ 문제는 일반적으로 프록시가 실제 IP 주소를 포함하는 새로운 HTTP 헤더를 삽입하도록 설정하여 해결합니다. 이를 통해 개발자는 해당 정보에 계속 액세스할 수 있으며, 계층 7 부하 분산 프록시는 버전 정보와 API 시그니처를 비롯한 다양한 데이터를 기반으로 애플리케이션 및 API 요청을 능숙하게 라우팅할 수 있습니다.

흥미롭게도 소프트웨어 및 네트워크 엔지니어링 다이어그램 모두에서 자주 명시되는 구성 요소 중 하나가 로드 밸런서입니다. 이 프록시는 전통적으로 네트워크 팀에서 배포하고 관리하지만, 애플리케이션 아키텍처에서 매우 중요한 역할을 하므로 거의 항상 애플리케이션의 일부로 포함됩니다. 마찬가지로 개발자들도 오늘날 애플리케이션 확장에 있어 로드 밸런싱의 중요성을 인식하고 있으며, 일반적으로 다이어그램에 이를 포함합니다.

이는 개발 및 운영 팀이 확장성에 대한 책임을 맡고 애플리케이션의 부하 분산을 직접 제어하는 사례가 늘고 있음을 보여주기도 합니다. 이는 바람직한 변화입니다. 개발 및 운영 팀이 부하 분산과 그에 수반되는 모든 계층 7 기능을 CI/CD 파이프라인, 특히 테스트 단계에 포함할 수 있고 실제로 그렇게 하고 있기를 기대할 수 있기 때문입니다. 이를 통해 잠재적인 문제를 신속하게 발견하고 프로덕션으로 전환하기 전에 해결할 수 있습니다. 부하 분산을 CI/CD 파이프라인의 초기 단계로 이동하면 전체 애플리케이션 패키지(아키텍처)를 코드로 관리하고 동시에 업데이트하는, 지속적 배포에 대한 보다 포괄적인 접근 방식도 가능해집니다. 이에 따라 네트워크 인프라(부하 분산은 전통적으로 네트워크 인프라의 영역으로 분류됨)는 애플리케이션(또는 해당 방식을 채택한 경우 마이크로서비스)을 단순히 업데이트하는 대신 새로운 구성으로 완전히 재배포하는 불변 아키텍처를 지원할 수 있습니다. 그 결과 문제와 기술 부채를 초래할 수 있는 소프트웨어의 자연스러운 엔트로피를 방지할 수 있습니다.

프록시는 여러 측면에서 소프트웨어 엔지니어 및 아키텍트와 네트워크 엔지니어 및 아키텍트를 갈라놓는 비유적인 간극(솔직히 말하면 벽에 더 가깝습니다)을 넘어 ‘네트워크’와 ‘애플리케이션’을 연결하는 다리 역할을 합니다. 조직이 현대적인 아키텍처의 과제에 대응할 수 있도록 확장하려면 DevOps가 해소해야 할 간극 중 하나가 바로 이것입니다.

[1] http://solutions-review.com/mobile-application-development/5000-developer-survey-mobile-app-development-insights-revealed/

[2] https://www.ravellosystems.com/blog/software-is-not-quite-ready-to-eat-the-world-state-of-devtest-infrastructure-survey-results/

공유
태그: 2015

작성자 소개

Lori Mac Vittie
Lori Mac Vittie수석 엔지니어 겸 최고 에반젤리스트 | F5

Lori MacVittie는 F5 CTO 오피스의 수석 엔지니어이자 최고 에반젤리스트로, 애플리케이션 딜리버리, 자동화 전략 및 인프라 분야에서 깊이 있는 전문성을 보유하고 있습니다. AI 에이전트를 위한 가드레일을 정의하고, 취약한 멀티클라우드 아키텍처를 분석하며, 확장 가능한 시스템의 한계를 탐구하는 등 복잡한 문제를 명확하게 풀어내는 것으로 잘 알려져 있습니다. 애플리케이션 개발, IT 아키텍처, 네트워크 및 시스템 운영 전반에 걸쳐 30년 이상의 업계 경험을 쌓았습니다. F5에 합류하기 전에는 수상 경력이 있는 기술 편집자로 활동했습니다. MacVittie는 컴퓨터 과학 석사 학위를 보유하고 있으며, 보안, 클라우드 및 엔터프라이즈 아키텍처 분야를 아우르는 다수의 저서를 집필한 작가입니다. 또한 보드게임과 비디오 게임을 열정적으로 즐기며, 치즈에 대해서는 거리낌 없이 확고한 견해를 갖고 있습니다.

Lori Mac Vittie의 다른 블로그 게시물

관련 블로그 게시물

성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A
F5 에코시스템 | 2023. 07. 13.

성평등을 향한 여정: 사이버 보안 분야에서 성공적인 커리어를 개척하는 방법에 관한 Jenn Gile과의 Q&A

F5의 ‘성평등을 향한 여정’ 시리즈 네 번째 Q&A에서는 Rachael Shah와 NGINX 제품 마케팅 책임자 Jenn Gile이 사이버 보안 직종에 대한 오해를 바로잡고, 사이버 보안 분야의 성별 격차를 해소하기 위한 조언과 그 이점에 대해 이야기합니다.

TLS 검사에서 피터 파커 원칙 다루기
F5 에코시스템 | 2019. 12. 09.

TLS 검사에서 피터 파커 원칙 다루기

“큰 힘에는 큰 책임이 따른다.” 볼테르와 처칠도 이와 비슷한 말을 남겼지만, 이 문구는 스파이더맨 코믹스에서 벤 삼촌의 말로 가장 널리 알려져 있습니다. 물론 이 문구가 문화적으로 널리 통용되는 이유 중 하나는 TLS 검사를 비롯해 수많은 상황과 주제에 적용할 수 있기 때문입니다.

Venafi와 F5를 통한 머신 아이덴티티 보호
F5 에코시스템 | 2018. 12. 11.

Venafi와 F5를 통한 머신 아이덴티티 보호

‘머신 아이덴티티’란 간단히 말해 자동화된 프로세스가 자신의 신원을 식별할 수 있도록 하고, 다른 자동화 시스템과 프로세스가 관련 리소스에 적절한 수준의 접근 권한을 부여하도록 하는 방법을 의미합니다. 이 개념 자체는 새로운 것이 아닙니다. 비교적 새로운 점은 이를 구현해야 하는 규모입니다.

마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다
F5 에코시스템 | 2018. 07. 23.

마이너와 미니언: 데이터 유출만이 비용을 초래하는 것은 아닙니다

물론 데이터 유출은 더 큰 비용을 초래할 수 있고(적어도 지금은), 실패 사실을 세상에 드러낼 수밖에 없게 합니다(통지 의무가 있으니까요). 하지만 보안을 단순히 데이터 노출 문제로만 봐서는 안 됩니다. 요즘은 데이터가...

내 클라우드에서 나가!
F5 에코시스템 | 2016. 10. 12.

내 클라우드에서 나가!

F5의 Jay Kelley가 전하는 최신 소식에는 Microsoft Office 365용 신규 ID 및 액세스 솔루션을 배포할 때 고려해야 할 사항이 정리되어 있습니다.

Shift(웹 앱) 보안 레터
F5 에코시스템 | 2015. 07. 06.

Shift(웹 앱) 보안 레터

웹 앱 보안을 개발 초기 단계로 앞당기세요. F5 블로그에서 DevOps 파이프라인 초기에 보안을 통합하여 취약점을 예방하고 시간을 절약하는 방법을 알아보세요.