Блог

Проблема всех крупных интернет-порталов

Совсем недавно я взялся за разработку крупного интернет-портала, целевая аудитория которого находится в разных временных зонах.

Расскажу небольшую историю о том, как большой проект нашел на небольшой айсберг.

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

Система очень быстро развивалась и росла. И жители/заказчики других регионов начинали расспрашивать о системе, им было интересно внедрить ее у себя в регионе. Разработчики системы с радостью делились возможностью пользоваться системой, они поднимали на одном веб-сервере еще одну копию проекта для региона и предоставляли к ней доступ. К слову сказать, веб-сервер использовался IIS, который жил в операционной среде Windows Server.

И все было хорошо, пока слухи о системе не начали распространятся дальше соседних регионов и пролетели половину страны, тогда люди из далека начали приходить и спрашивать о системе. Довольные разработчики также охотно делились информацией о системе, но когда пришла просьба внедрить в их регионе, разработчики взялись за голову.

Сервер, где должна разворачивается система находится в одном часовом поясе, а регион — в другом часовом поясе. И начали разработчики искать решения  проблемы:

  1. предлагали перевести все время в системе на UTC, но что делать с существующими данными;
  2. предлагали ввести системную настройку в виде разницы между часовыми поясами, но тогда везде писать дополнительные условия на вывод времени;
  3. настроить время на сервере под нужный регион, но сервер используется один для всех.

И долго маялись с этой проблемой разработчики, пока не перешли на UTC формат. И смысл данной истории прост: храни все в UTC, раз хочешь иметь инфраструктуры рост.

{"time":1561659669399,"blocks":[{"type":"paragraph","data":{"text":"Совсем недавно я взялся за разработку крупного интернет-портала, целевая аудитория которого находится в разных временных зонах."}},{"type":"paragraph","data":{"text":"Расскажу небольшую историю о том, как большой проект нашел на небольшой айсберг."}},{"type":"paragraph","data":{"text":"Все началось еще пару лет назад, когда данный проект разрабатывался для личного использования, и целевая аудитория предполагалась небольшая. По крайней мере она находилась в одной временной зоне."}},{"type":"paragraph","data":{"text":"Система очень быстро развивалась и росла. И жители/заказчики других регионов начинали расспрашивать о системе, им было интересно внедрить ее у себя в регионе. Разработчики системы с радостью делились возможностью пользоваться системой, они поднимали на одном веб-сервере еще одну копию проекта для региона и предоставляли к ней доступ. К слову сказать, веб-сервер использовался IIS, который жил в операционной среде Windows Server."}},{"type":"paragraph","data":{"text":"И все было хорошо, пока слухи о системе не начали распространятся дальше соседних регионов и пролетели половину страны, тогда люди из далека начали приходить и спрашивать о системе. Довольные разработчики также охотно делились информацией о системе, но когда пришла просьба внедрить в их регионе, разработчики взялись за голову."}},{"type":"paragraph","data":{"text":"Сервер, где должна разворачивается система находится в одном часовом поясе, а регион — в другом часовом поясе. И начали разработчики искать решения  проблемы:"}},{"type":"list","data":{"style":"ordered","items":["предлагали перевести все время в системе на UTC, но что делать с существующими данными;","предлагали ввести системную настройку в виде разницы между часовыми поясами, но тогда везде писать дополнительные условия на вывод времени;","настроить время на сервере под нужный регион, но сервер используется один для всех."]}},{"type":"paragraph","data":{"text":"И долго маялись с этой проблемой разработчики, пока не перешли на UTC формат. И смысл данной истории прост: храни все в UTC, раз хочешь иметь инфраструктуры рост."}}],"version":"2.13.0"}
image

Евгений

Специалист по разработке систем на современных PHP фреймворках.