В целом, все те же подходы применяются, что и в других языках. Есть особенности, но не такие значительные. Возможно, нужно иначе поставить вопрос без указания конкретного языка: "как начать писать качественный код?"
Начните с банального — slow log в mysql включите. Наверняка, там много интересных запросов, которые долго выполняются. Может все решится созданием нужных индексов
Неясно, для чего так все переусложнено, если конфиг только для чтения, то и мьютексы не нужны. И загружать нужно единожды при инициализации приложения. sync.Pool тут не нужен, да даже если был бы нужен, вы используете его неправильно)
Если бы нужно было менять конфиг, то не нужно "обмазывания мьютексами по всему коду". Выносите изменение в отдельную функцию (или метод структуры), в которой в одном месте защищаете мьютексом изменение. Используете эту функцию там, где нужно изменить конфиг
Микросервисы это небольшие автономно работающие сервисы, связанные между собой каким-либо образом, например, через API, брокеры сообщений и тп. Допустим, тот же интернет магазин можно сделать в виде набора микросервисов: авторизация, билинг, заказ, рассылка и т. д. В чем плюсы:
- Нет привязки к конкретному языку, как с монолитом
- Если падает один микросервис, то не падает вся система.
- Удобно масштабировать. Если допустим нагрузка на рассылку возросла, то просто увеличиваем число инстансов микросервиса рассылка.
- Быстрее можно доставлять фичи в прод. Каждый микросервис деплоится отдельно
- Проще работать с небольшой базой кода, в отличии от монолита
- Команды могут отдельно работать над разными микросервисами системы, не мешая друг другу
> т.е самые простые веб-приложения?
Как раз скорее микросервисы потребуются, когда сложность системы возрастает. Когда над проектом работает не 2 человека, а десятки команд. Когда проблемы с производительностью уже не решаются докидыванием железа
> Слышал, что ORM не используют, а пишут напрямую SQL - это так?
Тут как удобно. Никто не запрещает использовать ORM
Golang как раз хорошо подходит для разработки микросервисов. Он прост, быстр, позволяет писать конкурентный код. Не нужно следить за памятью, как в Си, Си++. Быстро компилируется, легко деплоить.
> он крайне невыразителен после вышеупомянутых языков
Это можно и как плюс оценить, так как на Go читать код очень легко, язык не нагроможден конструкциями и синтаксическим сахаром
> лучше изучите какой-нибудь более популярный язык
Go как раз достаточно популярный в данный момент язык
Основная фишка Go это возможность удобно разрабатывать высококонкурентные приложения. Думаю, стоит учить PHP и Go, а не выбирать что-то одно, так как на PHP много вакансий, а где PHP, там часто и Go