LINUX.ORG.RU

Сообщения RedRus

 

Golang в крупных проектах

Здравствуй, уважаемый форум!

Предыстория: Наша компания заказала web-проект. Он был написан на Tornado на Python 2. Проект является достаточно крупным и является бэкендом веб-портала, который включает в себя элементы взаимодействия с другими системами компании, различные мастера заказа и т.п. Всего база данных состоит из ~200 таблиц. Т.е. это проект с достаточно сложной бизнес-логикой.

Далее уже в нашей компании поставленный нам проект стал дорабатываться и постепенно переписываться с Python 2 на Python 3 и затем Python 3.5 (3.5 из-за лучшей поддержки асинхронной работы).

В последне время отдельные части системы стали переписываться на Golang.

Проблема: Начальство поставило задачу переписать всю систему на Golang (Но, разумеется, не 100%, где-то Python может остаться). Причина: борьба с растущей нагрузкой. При этом сейчас следует определиться с основными архитектурными вопросами при использовании Golang-а.

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

  • Достаточно продвинутое ООП для реализации сложной логики
  • Хорошие инструменты для работы с базой данных (ORM)
  • Организовать проект, состоящий из множества файлов так, чтобы максимально легко вносить изменения

Что смущает в Golang:

  • Нету примеров архитектуры сложных веб-проектов (под сложностью я бы понимал работу со сложной структурой базы данных)
  • Слабая поддержка ООП в языке
  • Отсутствие устоявшихся технологий

Вопросы:

  • Есть ли у кого-либо опыть использования Golang в столь сложных проектах?
  • Может ли кто-нибудь подсказать примеры столь сложных проектов с открытым исходным кодом?
  • Есть ли у кого-нибудь веские аргументы не делать этот переход на Golang?
  • Может ли кто-то рассказать, как решить те проблемы, которые были мной выше описаны в Golang?

 , ,

RedRus
()

RSS подписка на новые темы