Повышение безопасности APK с помощью Milvus в TrendMicro

<95 миллисекунд
сквозная задержка запроса
<10 секунд
загрузить 3 миллиона векторов
Включить
обнаружение угроз в реальном времени
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 отвечает за создание мобильных приложений безопасности и разработку инфраструктуры. Их рабочий процесс включает обход внешних APK (пакетов приложений Android) с платформ вроде Google Play и применение собственных алгоритмов TrendMicro для обнаружения APK, содержащих вирусы.
Столкновение с пределом масштабируемости: ограничения MySQL и Faiss
На ранних этапах проекта TrendMicro использовала MySQL для поиска сходства APK. Как реляционная база данных, MySQL изначально была достаточной для обработки размера выборки APK и позволяла команде использовать SQL-запросы для поиска сходства. Однако по мере роста набора данных до десятков миллионов, с ежедневным приростом в сотни тысяч, производительность MySQL начала снижаться. Задержка запросов увеличилась, и базе данных потребовалась помощь, чтобы справляться с большим объёмом одновременных поисковых запросов, что привело к узким местам в системе.
Затем команда обратилась к Faiss, специализированной библиотеке для поиска сходства, выпущенной Facebook в 2017 году. Faiss известна быстрым извлечением похожих векторов и предлагает множество вариантов индексирования, таких как IndexFlatL2, IndexFlatIP, HNSW и IVF. Хотя Faiss превосходно показывала себя по скорости, по сути она была базовой библиотекой алгоритмов, лишённой нескольких критически важных функций для производственной среды. Например, Faiss не предоставляла никаких возможностей управления данными, что означало, что команде пришлось бы создавать отдельный слой для хранения и извлечения данных. Ей также не хватало функций высокой доступности и инструментов мониторинга, что делало её неподходящей для такого критически важного приложения, как безопасность APK.
Кроме того, Faiss не была спроектирована как распределённая система, что создавало проблему для горизонтального масштабирования. Хотя некоторые отраслевые решения использовали Faiss как базовую библиотеку для плагинов Elasticsearch, они не были лишены проблем. Они потребляли много памяти и требовали значительной тонкой настройки для оптимизации производительности, что должно было быть более практичным для быстро растущего набора данных TrendMicro.
Прорыв Milvus: надёжный движок векторного поиска для масштабируемого анализа APK
Столкнувшись с ограничениями MySQL и Faiss, TrendMicro в поисках надёжного и масштабируемого решения пришла к Milvus. Разработанный на C++, Milvus стал комплексным движком векторного поиска, который устранял многие недостатки предыдущих решений. Одной из выдающихся особенностей была его интеграция с популярными библиотеками векторных индексов, такими как Faiss, NMSLIB и Annoy. Эти интеграции позволили TrendMicro использовать скорость Faiss, одновременно получая преимущества дополнительных функций, которые предлагал Milvus.
| Движок | Производительность (мс) | Размер набора данных (млн) | Размерности |
|---|---|---|---|
| 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 превосходил другие решения. Он поставлялся со встроенной поддержкой Prometheus, ведущего open-source решения для мониторинга, которое работает с Grafana для расширенной визуализации данных. Эта возможность мониторинга позволила TrendMicro внимательно отслеживать различные метрики производительности, включая задержку запросов и скорость импорта данных, обеспечивая проактивное устранение проблем.
Milvus предложил надежное, гибкое и масштабируемое решение, хорошо подходящее для сложных и растущих потребностей TrendMicro. Его возможности интеграции, интуитивно понятный API и акцент на высокой доступности и мониторинге сделали его прорывным выбором для проекта TrendMicro по безопасности APK.
Реальное влияние: низкая задержка и высокая скорость импорта данных
Внедрение Milvus в сервис ThashSearch компании TrendMicro принесло ощутимые результаты, которые значительно повысили эффективность и результативность их анализа APK. Одной из наиболее критичных метрик для любого поискового сервиса является задержка; в этом отношении Milvus стал кардинальным улучшением. Сервис ThashSearch работает уже несколько месяцев и стабильно достигает средней задержки запросов менее 95 миллисекунд. Эта низкая задержка гарантирует, что TrendMicro может своевременно предоставлять корпоративным и индивидуальным пользователям предупреждения о потенциально вредоносных APK, повышая общий уровень безопасности.
Но низкая задержка — это лишь одна часть уравнения. В среде с интенсивной работой с данными, такой как анализ APK, скорость, с которой разработчики могут загружать новые данные в систему, не менее важна. Milvus также превосходно проявил себя в этом аспекте. Система продемонстрировала впечатляющую скорость импорта данных, способную загрузить 3 миллиона 192-мерных векторных данных примерно за 10 секунд. Учитывая ежедневный прирост в сотни тысяч новых образцов APK, такая возможность быстрого импорта данных имеет решающее значение для TrendMicro. Она гарантирует, что база данных всегда актуальна, позволяя выполнять наиболее точный и актуальный поиск по сходству.
Сочетание низкой задержки и высокой скорости импорта данных оказывает синергетический эффект на операции TrendMicro. Оно улучшило пользовательский опыт, предоставляя более быстрые результаты поиска, и оптимизировало серверные процессы, упростив поддержание системы в актуальном состоянии с использованием новейших данных. Такое операционное совершенство позволило TrendMicro достичь и превзойти первоначальные проектные цели для сервиса ThashSearch, подтвердив правильность решения о внедрении Milvus в качестве выбранного векторного поискового движка.
План на будущее
Глядя в будущее, TrendMicro проявляет большой интерес к дорожной карте Milvus и к тому, как его будущие функции могут дополнительно оптимизировать операции анализа APK. Одной из таких функций является введение ID строкового типа в Milvus. TrendMicro планирует использовать эту функцию, чтобы упростить свою текущую архитектуру за счет устранения необходимости в кэшировании Redis. ID строкового типа упростят процесс извлечения данных, сделав его более эффективным и снизив сложность.
Более того, TrendMicro с энтузиазмом относится к планам Milvus эволюционировать в полностью распределенную систему. В настоящее время Milvus поддерживает только один узел записи, но будущие версии нацелены на устранение этого ограничения. TrendMicro рассматривает это как возможность горизонтально масштабировать свои операции, повышая способность обрабатывать еще более крупные наборы данных и более высокие объемы запросов. Учитывая успех, которого они добились с Milvus в своем сервисе ThashSearch, TrendMicro также рассматривает возможность расширения присутствия Milvus в своей организации. Они изучают возможность интеграции Milvus в другие проекты и рабочие процессы, которые могли бы выиграть от эффективного поиска векторного сходства, тем самым максимизируя отдачу от инвестиций в эту технологию.


