Как написать валидирующий прокси сервис для клиентов?
Будут мобильные и веб клиенты, которые будут делать запрос в серверную инфраструктуру. Клиентские запрос будут иметь одинаковую базовую структуру для валидации. Для того чтобы избежать валидацию клиентского запроса на всех сервисах, было предложен вариант написать отдельный сервис. Он будет заниматься валидацией клиента, оборачивать клиентский запрос своими параметрами и проксировать дальше по инфраструктуре сервера. Интересно услышать мнения по реализации данной задачи?
В теории все так и выглядит)) Однако, по факту, это будет бутылочное горлышко, и хотелось бы увидеть более описательный вариант. К примеру, на каком языке лучше реализовывать, чтобы был запас скорость, но при этом, по сложности и времени, затраченного на разработку, было
быстро в реализации, так как возможно обьем трафика выростет и придеться думать, как его переписывать. Дальше, использовать какой-то фреймворк или вообще отказаться от него в пользу минимизации всего и всех и т.д. Может есть какое-то готовое решение в виде стека технологий, над которым стоит подумать. Надеюсь я правильно изъяснился, что бы вы поняли суть вопроса.
Максим Яковенко, на чем написан бек-энд?
Я не знаю какая логика валидации должна быть и насколько она затратная по ресурсам.
Если уж совсем все сложно - можно использовать хоть Go/C++/C/Rust/etc, можно делать несколько экземпляров и балансировать между ними.
В чем заключается суть валидации и какое прогнозируемое количество запросов?
Nasxi - ИМХО больше для защиты от SQL Injections, XSS и т.п.
ModSecurity - не знаю что это, но судя по описанию - что-то вроде Nasxi
Валидация пока будет не сложная, потому что она может изменяться со временем. Суть валидации будет заключаться в проверке клиента по заголовкам, в основном, и частично по телу запроса. И еще, моя ошибка, что сразу не сказал. Перед валидирующим сервисом будет стоят nginx, который будем заниматься предпроверкой запроса и затем проксировать запрос в валидирующий сервис, либо в другое место, что бы разгрузить инфраструктуру за ним, и сервис в том числе. Дальше, также забыл сказать, валидирующий сервис также будет собирать и обрабатывать некую статистика по клиентам и хранить ее в своей базе.
По поводу количества запросов, точно сказать не могу, но ожидаемое количество может достигнуть 20к в минуту.
Максим Яковенко, проверить какие заголовки - можно и в nginx. Тело - нужен какой-то сервис. 20к запросов в минуту - надо, скорее всего, делать несколько экземпляров и балансировать межу ними 2-3 сервиса на go, думаю, вполне способны справиться с этой задачей.
Смотря что надо анализировать в теле - возможно хватит Nasxi
RidgeA, почему на go? Я на нем сам еще не писал, поэтому не могу сказать ничего в частности по нему. Однако, я погуглил быстренько про него. Его хвалят, что он в разы быстрее и эффективнее по использованию ресурсов, чем питон. Однако, в данной ситуации, скорость времени разработки тоже важный фактор, отсюда следующий вопрос: на нем дольше писать чем на питоне?
Максим Яковенко, абстрактный вопрос. Я не знаю какая логика и мне сложно ответить на вопрос.
Мне было бы быстрее, т.к. питон я не знаю почти совсем.
Можно и на питоне, если производительности будет хватать. Никто не мешает попробовать.