과거에는 전략적으로 배치한 프록시를 활용해 애플리케이션 성능을 개선할 수 있었습니다. 모놀리식 및 3계층 아키텍처와 같은 기존 애플리케이션은 일반적으로 클라이언트와 서버 사이에 단일 데이터 경로를 사용했기 때문입니다.
쉽게 말해 정적 콘텐츠든 동적 콘텐츠든, 텍스트든 이미지든 모든 콘텐츠가 하나의 경로를 통해 전달되었습니다. 따라서 애플리케이션 전송 컨트롤러(프록시)를 그 사이에 배치하고 적절히 구성하면 성능을 최적화할 수 있었습니다. 이는 다양한 IP, TCP, 심지어 HTTP 설정을 조정하는 방식으로 구현되는 경우가 많았으며, 지금도 마찬가지입니다. 캐싱, 압축, 콘텐츠별 가속 기법과 같은 애플리케이션 서비스를 배포하는 것이 이러한 기술의 활용 사례입니다.

하지만 최신 애플리케이션은 더 이상 자체적으로만 작동하지 않습니다. 이제는 Sonatype에 따르면대부분(80~90%)이 서드파티 구성 요소로 이루어져 있으며, 오픈 소스 구성 요소의 비중도 점점 늘고 있습니다. 웹 애플리케이션에 포함된 수많은 스크립트와 기타 삽입 가능한 코드를 보면 이를 알 수 있습니다. 이러한 스크립트는 원격으로 실행되어 이미지나 광고 또는 웹 글꼴, 스프라이트 같은 기타 콘텐츠를 반환하기도 합니다. 반면 jQuery처럼 스크립트 자체가 런타임에 로드되어 브라우저 내에서 실행되기도 합니다.
이를 컴포넌트화, 또는 원한다면 원자화라고 합니다. 애플리케이션을 여러 개의 작은 조각으로 나누는 것입니다. 클라이언트 측에서는 일반적으로 동일한 공간에서 실행되기 때문에 이를 컴포넌트라고 부릅니다. 서버 측에서는 점점 더 마이크로서비스라고 부르며 컨테이너에 배포합니다. 두 경우 모두 영향은 비슷합니다. 성능에 직접적인 영향을 미치는 데이터 경로의 수를 예측할 수 없게 됩니다.
기본적으로 여러분이 제어할 수 있는 데이터 경로는 하나뿐이며, 이는 애플리케이션의 약 20%를 차지합니다. 즉, 성능을 거의 제어할 수 없기 때문에 사용자 경험 역시 거의 제어할 수 없습니다.
보안도 마찬가지입니다. 알아차려 주셔서 감사합니다. 중요한 점은 보안을 강화하기 위해 클라이언트 측 코드 기법을 활용하는 방법을 빠르게 익혀 가고 있다는 것입니다. 하지만 성능 측면에서는 이런 접근 방식이 그다지 효과적이지 않습니다. 대부분의 앱이 모바일 또는 웹 기반이고, 어느 쪽도 네트워크 스택을 직접 손댈 만한 여지나 기능을 제대로 제공하지 않기 때문입니다.
이 문제에 대응하는 방법 중 하나는 통제권을 되찾는 것입니다. 통제권을 되찾으면 보안 측면의 부수적인 이점도 누릴 수 있다는 점이 좋습니다.
윈윈: 위험은 줄이고 성능은 향상
앱에서 외부 사이트의 구성 요소를 동적으로 로드하고 있다면 중단하세요. 지금 당장 중단하세요. 이는 성능 문제인 동시에 심각한 보안 문제이기도 합니다. 외부에서 가져온 스크립트가 애플리케이션의 컨텍스트 내에서 실행되도록 사실상 전권을 부여하는 셈입니다. 보안 침해가 발생하면 사용자는 여러분이 만든 구성 요소와 외부에서 로드된 구성 요소를 구분할 수 없습니다. 최근 runc 컨테이너 취약점으로 인한 대혼란에서 알 수 있듯이, 타사 레지스트리나 사이트에서 로드한 리소스에 악성 코드가 삽입될 경우 보안 위험이 발생합니다.
스크립트라면 복제하여 자체 인프라에서 제공하는 편이 낫습니다. 직접 제어함으로써 위험을 줄일 수 있고, 사용자의 성능을 개선하는 여러 설정을 조정할 수도 있습니다. 여기에는 애플리케이션 성능에 가장 큰 영향(대개 부정적인 영향)을 미치는 것으로 꾸준히 확인된 DNS도 포함됩니다. 외부 사이트에서 구성 요소를 가져오면 해당 사이트의 DNS 인프라가 기대한 수준으로 작동하기를 기대해야 합니다. 반면 자체 사이트에서 구성 요소를 가져오면 사용자의 로컬 DNS 캐시를 활용할 수 있으므로 그 영향을 크게 줄일 수 있습니다.
자체 사이트에서 스크립트를 호스팅하면 TCP 최적화, SSL/TLS 오프로딩 또는 일반적인 애플리케이션 가속 기법을 적용하여 전반적인 성능을 개선할 수도 있습니다. 또한 해당 스크립트에 보안 검사를 수행하여 내부 깊숙한 곳에 예상치 못한 요소가 숨어 있지 않은지 확인할 수 있습니다.
컴포넌트화는 개발에 매우 유용하며, 가치 실현 시간을 단축하는 데도 분명 도움이 됩니다. 하지만 성능과 보안에는 부정적인 영향을 미칠 수 있습니다. 보안 및 사용자 만족도와 관련된 위험을 인지하고, 이에 대응하기 위해 무엇을 할 수 있는지 알아두세요.
작성자 소개

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