Всем привет! Я живу в Средней Азии и замечаю следующую картину - мои знакомые и друзья со временем переезжают заграницу. Большей частью в Российскую Федерацию. Кто-то в Америку, кто-то в Корею, Турцию, Европу и прочие благополучные страны. Их всех объединяет одно - они потратили кучу времени и энергии на процесс переезда, получение документов, разрешений и прочих трудностей. Собравшись с несколькими, самыми близкими друзьями, мы решили запилить сервис помощи переселенцам - HumanWay.
В процессе обдумывания, голова просто кругом пошла - насколько сложная доменная область. Количество сущностей множилось с каждой новой мыслью и никакая бритва тут не помогала. Список необходимых действий зависит от страны исхода, от возраста заявителя, состава семьи, профессии, региона вселения и многих других параметров. Все эти данные нам надо собрать, обработать и выдать наиболее оптимальный путь.
Наша мысль пошла дальше, чтобы пользователь не запутался в таком сложном процессе, мы захотели ему помочь: дать подсказки, лайфхаки, придуманные такими же переселенцами до него, и информацию о необходимых документах кратко и в нужный момент. Чтобы реализовать задуманное нужно было какое-то особенное техническое решение. Традиционные подходы хранить свойства в колонках таблицы пользователя подходили плохо, т.к. для каждого пользователя набор атрибутов свой и количество их огромно и постоянно увеличивается по мере развития проекта. Кроме того, мало эти данные записать, нужно еще эти данные удобно проанализировать.