Почему FTP вместо REST
Платформа Lokad ориентирована на обработку данных в терабайтном масштабе и предназначена для предиктивной оптимизации цепочек поставок. Однако, чтобы обработать данные, их сначала нужно импортировать. Большинство веб-приложений предлагают веб-API в стиле REST, в то время как у Lokad используются FTPS и SFTP, что может показаться удивительным1. Этот выбор не был случайным, а продиктован требованиями к производительности передачи данных. Хотя этот выбор был сделан десятилетие назад на основе предыдущего опыта, аргументы в пользу FTP по-прежнему остаются весомыми.

Давайте уточним область применения Lokad. Типичной клиентской компании необходимо передать полную копию от 10 до 100 таблиц базы данных, от 5 до 500 полей в каждой таблице, в свой аккаунт Lokad. Эти данные представляют содержание их ERP, MRP, WMS, POS и т.д. Со временем копии должны оставаться актуальными, обычно не старше вчерашнего дня. Общий объём данных, если предположить использование несжатых плоских текстовых файлов (например, CSV), варьируется от 1 ГБ для средней компании до 10 ТБ для крупной компании. При использовании инкрементальных передач для более крупных таблиц объём ежедневных передач обычно составляет от 100 МБ до 10 ГБ.
Клиентская компания — или её поставщик программного обеспечения, или интегратор этого поставщика — должна успешно передать соответствующие данные в Lokad. Действительно, в большинстве случаев Lokad никогда не получает доступ к производственным IT-системам. Это разумно: по соображениям безопасности стороннему аналитическому подразделению не следует иметь прямого доступа к производственным системам. Клиентская компания должна сохранять контроль, выступая в роли привратника для данных, покидающих её систему. Кроме того, это позволяет удалить каждую частичку личных данных, которые сторонней организации вроде Lokad и так не нужны.
В теории REST может быть настроен до произвольной производительности. На практике это не так. При использовании REST надёжная передача 100 МБ детализированных реляционных данных ежедневно неизбежно приводит к огромным накладным расходам, если не задействована высококлассная команда разработчиков. Два аспекта требуют особого внимания: избыточность запросов и повторные попытки. Избыточность относится к количеству вызовов по сети. Повторные попытки связаны с мерами, необходимыми для преодоления временных сбоев в сети. Оба аспекта крайне сложны в реализации на практике.
В корпоративном сегменте большинство поставщиков программного обеспечения не умеют правильно реализовывать постраничную разбивку даже в своих собственных API. Предположение, что те же поставщики, внедряя быструю и небрежную интеграцию с Lokad, внезапно привлекут высококлассных инженеров-программистов, не является разумным. Мой опыт работы в Lokad показывает, что, напротив, поспешные IT-решения — это лучшее, на что может рассчитывать Lokad. И это нормально. В IT-сфере предстоит множество сражений. Реалистично ожидать, что интеграция данных в Lokad станет той единственной задачей, требующей участия элитных специалистов, нельзя.
На практике, когда необходимо добиться приемлемой производительности, веб-API сводятся к передаче плоских файлов через HTTP. Такая деградация решает проблему избыточности запросов, упомянутую выше. Однако она оставляет без внимания вопрос повторных попыток. Как только и этот вопрос будет решён, поздравляем: API наконец переизобрёл протокол передачи файлов (FTP).
Однако этот нестандартный FTP далеко не так хорошо инструментирован, как настоящий. FTP поддерживается всеми основными операционными системами. И тот, и другой обладают широкой поддержкой в виде инструментов с открытым исходным кодом. Соответствующие реализации являются промышленными стандартами уже десятилетиями. Да, есть свои особенности, эти протоколы может быть уже и не в моде, но когда речь идёт о выполнении работы за считанные часы без привлечения суперзвёздных инженеров, они даже не сравнимы.
Именно поэтому Lokad принял решение использовать FTP для поддержки как входящих, так и исходящих передач данных. Более того, десятилетие эксплуатации доказало, что этот выбор был правильным. Даже IT-компании с низкой квалификацией и невысокими затратами, работающие по аутсорсингу, успешно передают большие объёмы реляционных данных в Lokad через FTP быстро и надёжно, чего ни разу не происходило за все годы использования веб-API.
-
В дальнейшем, для краткости, FTP всегда означает «FTPS и SFTP». Эти два протокола существенно различаются, но для целей данного обсуждения эти различия не имеют значения. Выбор одного протокола по сравнению с другим в основном определяется соответствием существующим IT-практикам в интересующей компании. ↩︎