February 17, 2019

Системы тоже люди, они общаться хотят

Когда речь идет о разработке систем для организаций и предприятий, то часто возможностей одной системы не достаточно. Нужно знать актуальные данные из других систем, чтобы принимать решения или выполнять действия. Порой часть нужных функций уже реализованы в других сервисах. В целях экономии проще использовать их, чем писать новые. Вопрос решается интеграцией систем - создается диалог между системами.

Недавно сдали пользователям в эксплуатацию одну такую общительную лапочку. Делали систему обработки обращений граждан.

  • Суть: когда у вас нет дома воды, отопления или рядом с вашим домом огромная яма на дороге, вы можете пожаловаться на проблему в гос.органы. Есть разные площадки, где можно подать заявку с жалобой: сайты гос.учреждений, странички в соц.сетях, колл-центры.
  • Нашей задачей было создать единый трубопровод обработки заявок для всех ведомств.
  • Перед системой стояла главная цель - максимально ускорить процесс обработки обращений: автоматизировать все автоматизируемое, контролировать сроки на каждом этапе процесса, информировать жителей о каждом шаге.

Конечно же для этого нужно было научиться с разных площадок забирать весь поток жалоб, уметь с ними общаться по всем изменениям с заявками, вести переписки между гос.служащими и гражданами по уточнениям деталей жалоб.

Помимо этого часть функций мы отдали на откуп сторонним сервисам: распознавание текста, лингвистический анализ, взаимодействие гос.учреждений с контрагентами и т.д.

Есть разные готовые решения для таких коммуникаций. Например, старый добрый web api.

  • Идея: системе А нужны данные из системы B. Для этого она с некоторой периодичностью будет ходить к системе B и спрашивать "ну, чо есть что-нибудь для меня?" Если есть, то система B их отдаст в некотором согласованном формате. Второй вариант реализации, система B, когда ей будет что сказать системе A, сходит к системе A и скажет, что пора забирать инфу и передаст пачку информации.

В нашем случае проблема была в том, что диалогов ожидалось сверхмного и сверхчасто. В web api пришлось системам A и B постоянно друг друга спрашивать и обмениваться данными. А систем для интеграции было куда больше двух и объем данных ожидался мощный. Из известных решений ничего не подходило: был риск заддедосить себя и других. Решили использовать новую технологию - брокер сообщений Rabbit MQ.

  • Идея: когда системе B будет что рассказать системе А, она положит данные в специальную для этого вопроса очередь (папочку). Когда системе А понадобятся эти данные, она заберет все данные из этой очереди.

Более детально о технологии можно почитать в интервью в следующем посте....