TrendMicro에서 Milvus로 APK 보안 강화

<95밀리초
종단 간 쿼리 지연 시간
<10초
300만 개의 벡터를 적재하려면
활성화
실시간 위협 탐지
Milvus delivers unparalleled performance and flexibility, integrating seamlessly with leading vector index libraries like Faiss. Its intuitive API and robust solutions for high availability make it an indispensable tool in our APK security efforts.
Wei Huang
Trend Micro 소개
Trend Micro는 소프트웨어 공급업체와 개인 사용자에게 최첨단 솔루션을 제공해 온 오랜 명성을 지닌 글로벌 보안 소프트웨어 업계의 선도 기업입니다. 사이버 보안 위협이 진화함에 따라 TrendMicro의 혁신에 대한 헌신도 함께 발전하고 있습니다.
이 회사의 핵심 집중 분야 중 하나는 모바일 보안으로, 디지털로 연결된 세상에서 그 중요성이 점점 더 커지고 있습니다. 이러한 맥락에서 TrendMicro의 전문 팀은 모바일 보안 앱을 구축하고 인프라를 개발하는 일을 담당합니다. 이들의 워크플로에는 Google Play와 같은 플랫폼에서 외부 APK(Android application packages)를 크롤링하고 TrendMicro의 독자적인 알고리즘을 적용하여 바이러스를 포함한 APK를 탐지하는 작업이 포함됩니다.
확장성의 한계에 부딪히다: MySQL과 Faiss의 한계
프로젝트 초기 단계에서 TrendMicro는 APK 유사도 검색에 MySQL을 사용했습니다. 관계형 데이터베이스인 MySQL은 처음에는 APK 샘플 규모를 처리하기에 충분했으며, 팀이 유사도 검색에 SQL 쿼리를 사용할 수 있게 해주었습니다. 그러나 데이터셋이 수천만 건으로 증가하고 일일 증가량이 수십만 건에 이르자 MySQL의 성능은 저하되기 시작했습니다. 쿼리 지연 시간이 증가했고, 데이터베이스는 높은 볼륨의 동시 검색을 처리하는 데 어려움을 겪어 시스템 병목 현상으로 이어졌습니다.
그 후 팀은 2017년에 Facebook이 공개한 유사도 검색 전문 라이브러리인 Faiss로 눈을 돌렸습니다. Faiss는 유사 벡터를 빠르게 검색하는 것으로 알려져 있으며 IndexFlatL2, IndexFlatIP, HNSW, IVF와 같은 여러 인덱싱 옵션을 제공합니다. Faiss는 속도 면에서는 뛰어났지만, 본질적으로 기본 알고리즘 라이브러리에 가까워 프로덕션 환경에 필요한 여러 핵심 기능이 부족했습니다. 예를 들어, Faiss는 데이터 관리 기능을 제공하지 않았기 때문에 팀은 데이터 저장 및 검색을 위한 별도의 계층을 구축해야 했습니다. 또한 고가용성 기능과 모니터링 도구도 부족하여 APK 보안과 같은 미션 크리티컬 애플리케이션에는 적합하지 않았습니다.
더욱이 Faiss는 분산 시스템으로 설계되지 않았기 때문에 수평 확장성 측면에서 과제가 있었습니다. 일부 업계 솔루션은 Elasticsearch 플러그인의 기반 라이브러리로 Faiss를 사용했지만, 이러한 방식에도 문제가 없지는 않았습니다. 메모리 사용량이 많았고 성능 최적화를 위해 상당한 미세 조정이 필요했는데, 이는 TrendMicro의 빠르게 증가하는 데이터셋에는 더 실용적인 방식이 필요하다는 것을 의미했습니다.
Milvus의 돌파구: 확장 가능한 APK 분석을 위한 강력한 벡터 검색 엔진
MySQL과 Faiss의 한계에 직면한 후, TrendMicro는 강력하고 확장 가능한 솔루션을 찾는 과정에서 Milvus에 이르게 되었습니다. C++로 개발된 Milvus는 이전 솔루션들의 많은 단점을 해결한 종합적인 벡터 검색 엔진으로 부상했습니다. 두드러진 기능 중 하나는 Faiss, NMSLIB, Annoy와 같은 주류 벡터 인덱스 라이브러리와의 통합이었습니다. 이러한 통합을 통해 TrendMicro는 Faiss의 속도를 활용하는 동시에 Milvus가 제공하는 추가 기능의 이점을 누릴 수 있었습니다.
| 엔진 | 성능(ms) | 데이터셋 크기(백만) | 차원 |
|---|---|---|---|
| ES | 600 | 1 | 128 |
| ES + Alibaba Cloud | 900 | 20 | 128 |
| Milvus | 27 | 1000+ | 128 |
| SPTAG | 좋지 않음 | ||
| ES + nmslib, faiss | 90 | 150 | 128 |
Milvus는 단순하고 직관적인 API를 제공했으며, 이는 개발 팀에게 상당한 이점이었습니다. API를 통해 팀은 특정 사용 사례에 따라 다양한 인덱싱 유형을 선택할 수 있었고, 다른 솔루션에는 없던 유연성을 제공했습니다. 이러한 유연성은 TrendMicro에 도움이 되었는데, 다양한 APK 특징 벡터를 다루어야 했고 다양한 요구 사항에 적응할 수 있는 시스템이 필요했기 때문입니다.
또 다른 강점은 Milvus가 고가용성과 분산 시스템에 중점을 둔다는 점이었습니다. 분산 시스템으로 설계되지 않은 Faiss와 달리, Milvus는 수평 확장을 위한 성숙한 솔루션입니다. 데이터셋이 크고 빠르게 증가하고 있었기 때문에 TrendMicro에게 확장성과 성능은 매우 중요했습니다. Milvus의 분산 아키텍처 덕분에 증가하는 부하를 처리하기 위해 시스템에 더 많은 노드를 쉽게 추가할 수 있었고, 이를 통해 APK 분석 인프라의 미래 대비가 가능했습니다.
모니터링은 Milvus가 뛰어난 또 다른 영역이었습니다. Milvus에는 고급 데이터 시각화를 위해 Grafana와 함께 작동하는 선도적인 오픈 소스 모니터링 솔루션인 Prometheus에 대한 기본 지원이 포함되어 있었습니다. 이러한 모니터링 기능을 통해 TrendMicro는 쿼리 지연 시간과 데이터 가져오기 속도를 포함한 다양한 성능 지표를 면밀히 모니터링할 수 있었고, 사전 예방적인 문제 해결이 가능해졌습니다.
Milvus는 TrendMicro의 복잡하고 증가하는 요구에 잘 맞는 견고하고 유연하며 확장 가능한 솔루션을 제공했습니다. 통합 기능, 직관적인 API, 고가용성과 모니터링에 대한 집중은 TrendMicro의 APK 보안 프로젝트에 획기적인 선택이 되게 했습니다.
실제 영향: 낮은 지연 시간과 높은 데이터 가져오기 속도
TrendMicro의 ThashSearch 서비스에 Milvus를 구현한 것은 APK 분석의 효율성과 효과를 크게 향상시킨 가시적인 결과를 가져왔습니다. 모든 검색 서비스에서 가장 중요한 지표 중 하나는 지연 시간이며, 이 점에서 Milvus는 판도를 바꾸는 역할을 했습니다. ThashSearch 서비스는 몇 달 동안 운영되어 왔으며 평균 쿼리 지연 시간을 지속적으로 95밀리초 미만으로 달성했습니다. 이러한 낮은 지연 시간은 TrendMicro가 잠재적으로 유해한 APK에 대해 기업 및 개인 사용자에게 적시에 경고를 제공할 수 있도록 하여 전반적인 보안 태세를 강화합니다.
하지만 낮은 지연 시간은 방정식의 한 부분일 뿐입니다. APK 분석과 같은 데이터 집약적인 환경에서는 개발자가 새 데이터를 시스템에 수집할 수 있는 속도도 똑같이 중요합니다. Milvus는 이 측면에서도 뛰어난 성능을 보였습니다. 이 시스템은 약 10초 만에 300만 개의 192차원 벡터 데이터를 수집할 수 있는 인상적인 데이터 가져오기 속도를 입증했습니다. 매일 수십만 개의 새로운 APK 샘플이 증가한다는 점을 고려할 때, 이러한 빠른 데이터 가져오기 기능은 TrendMicro에 매우 중요합니다. 이는 데이터베이스가 항상 최신 상태를 유지하도록 보장하여 가장 정확하고 최신의 유사성 검색을 가능하게 합니다.
낮은 지연 시간과 높은 데이터 가져오기 속도의 조합은 TrendMicro의 운영에 시너지 효과를 가져왔습니다. 더 빠른 검색 결과를 제공하여 사용자 경험을 개선했고, 백엔드 프로세스를 간소화하여 최신 데이터로 시스템을 최신 상태로 유지하기 쉽게 만들었습니다. 이러한 운영 우수성 덕분에 TrendMicro는 ThashSearch 서비스의 초기 설계 목표를 충족하고 초과 달성할 수 있었으며, 선택한 벡터 검색 엔진으로 Milvus를 구현하기로 한 결정을 확인해 주었습니다.
향후 계획
TrendMicro는 미래를 내다보며 Milvus의 로드맵과 향후 기능이 APK 분석 운영을 어떻게 더 최적화할 수 있을지에 큰 관심을 가지고 있습니다. 이러한 기능 중 하나는 Milvus에 문자열 타입 ID를 도입하는 것입니다. TrendMicro는 Redis 캐싱의 필요성을 없애 현재 아키텍처를 단순화하기 위해 이 기능을 활용할 계획입니다. 문자열 타입 ID는 데이터 검색 프로세스를 간소화하여 더 효율적으로 만들고 복잡성을 줄일 것입니다.
또한 TrendMicro는 완전한 분산 시스템으로 발전하려는 Milvus의 계획에 기대를 가지고 있습니다. 현재 Milvus는 하나의 쓰기 노드만 지원하지만, 향후 버전에서는 이 제한을 제거하는 것을 목표로 하고 있습니다. TrendMicro는 이를 운영을 수평적으로 확장하고, 더 큰 데이터셋과 더 높은 쿼리 볼륨을 처리하는 능력을 강화할 수 있는 기회로 보고 있습니다. Milvus를 ThashSearch 서비스에 활용하여 경험한 성공을 바탕으로, TrendMicro는 조직 내에서 Milvus의 사용 범위를 확대하는 것도 고려하고 있습니다. 이들은 효율적인 벡터 유사도 검색의 이점을 얻을 수 있는 다른 프로젝트와 워크플로에 Milvus를 통합할 가능성을 모색하고 있으며, 이를 통해 해당 기술에 대한 투자 수익을 극대화하고자 합니다.


