👣 Golang HTTP синхронизация



▶️Кейс: пишем Restful сервер с использованием патернов network_api -> data(UseCase->Repository).



Так как все http хендлеры обрабатываются параллельно, то каким образом корректно протянуть зависимости репозиториев и use_case объектов в слой network_api? То есть это будут синглтоны или же их нужно создавать для каждого отдельного request?

Что насчёт доступа к общим ресурсам?

Например, use_case при загрузке читает json-конфигурацию и в дальнейшем к ней обращается по многим путям из слоя nwtwork_api.



Есть какие нибудь best practices?





▶️Здесь всё зависит от того, какие требования предъявляются к нашим данным (т.е именно модель данных диктует требования к архитектуре).

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

Вот и всё, пожалуй



@golang_interview