Задание проверяет понимание технической и программной архитектур: оценивается выбор подхода к хранению данных и организации кода исходя из условий и ограничений, а также аргументация принятых решений.
Детальная имплементация каких-либо сложных методов не требуется.
Задание расчитано на 1 час.
Вам нужно спроектировать микросервис, который будет хранить данные о сотрудниках, формировать выборки и обновлять данные, при необходимости.
Интерфейс миросервиса описан в файле index.ts и называется IHRApp.
Этот интерфейс является ориентиром того, что должен уметь делать микросервис.
Фактический набор методов для имплементации будет значительно шире:
каждая сущность будет задействована во многих методах.
В файле index.ts находятся образцы входных данных, с которыми
вам придется работать. Код импорта данных писать не нужно,
достаточно будет описать в типах как данные будут храниться в БД.
При желании или необходимости можно сделать вспомогательные структуры,
методы, обертки.
Для хранения данных используется документоориентированная база данных.
Интерфейс к ней описан в файле db.ts. Этот интерфейс считаем
неизменным.
Контекст подразумевает, что:
- СУБД мы изменить не можем.
- Количество операций по обновлению данных мало.
- Количество операций по выборкам и чтению - очень больше.
- Узкое место в производительности - база данных.
Нам нужно спроектировать решение лучшее по производительности насколько это возможно.
- Организуйте структуру кода, вспомогательные элементы (если нужно),
и имплементируйте интерфейс
IHRAppза исключением методаupdate. - Опишите, аргументируйте сделанные решения, предположения,
выбранные методы и подходы. Опишите в файле
SOLUTION.md. - Изменится ли ваше решение, если контекст будет подразумевать редкие
операции чтения и на порядок большее количество операций записи?
Если да, то как? Опишите в файле
SOLUTION.md.