Автоматизация работы программиста golang

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

Программист должен автоматизировать свою работу в первую очередь,
а то получится как сапожник без сапог.
Все этапы работы можно частично автоматизировать.
Рассмотрим основные, характерные этапы создания сервисов:

  1. Проектирование базы данных

  • это творческая работа, которую никак не автоматизируешь. После создания, базу данных надо нарисовать в виде графической схемы. Есть много разных приложения для автоматического создания ERD-diagram, однако они все отображают стрелки связей только до таблицы, а не до нужной колонки, и не имеют возможности редактировать и обновлять отредактированную схему - поэтому пришлось создать своё приложение image_database.

  1. Создание логгера необходимо в первую очередь т.к. оно будет использоваться во всех модулях сервиса. У нас логгер LOKI(grafana), который берёт текст логов из консоли, сохраняет к себе, и имеет интерфейс просмотра. Такой логгер прост для программиста т.к. выводить текст логов надо просто в консоль вывода, и не надо думать о том как его сохранять, просматривать и др. Мой логгер логгер использует известный logrus, имеет улучшения:

  • единый логгер для всех модулей (не надо думать где его хранить)

  • единое форматирование, добавляющее к логу: дату, время, миллисекунды, имя и номер строки исходного файла .go, имя функции, уровень (info, error и др.)

  • кликабельная ссылка внутри IDE Goland для перехода сразу к нужной строке кода. С такими настройками форматирования очень легко найти нужное место в коде с ошибкой и др.

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

  • дата, время, текст ошибки

  • логин(имя) ответственного за этот микросервис

  • URL ссылка быстрого перехода в браузер с логами (grafana)

  1. CRUD генератор исходного кода
    У каждой таблицы базы данных должен быть свой модуль, ответственный за выполнение CRUD операций: Create + Read + Update + Delete,
    а также, для выполнения этих операций по сети по протоколам GRPC или NRPC.
    Для множества таблиц в базе данных такой код писать долго - поэтому нужен кодогенератор исходного кода.
    Мой кодогенератор создаёт готовый микросервис на языке golang, который можно сразу запустить, создаётся код для каждой таблицы в базе данных, в том числе юнит-тесты.

  2. Подключение к внешним сервисам
    Обычно используется много внешних сервисов типа Postgres SQL, Kafka, NATS, CAMUNDA и др.,
    к которым надо:

  • загрузить настройки подключения из файла или переменных окружения

  • подключиться

  • отключиться

  • graceful shutdown (правильное отключение)

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

    Пример:
    postgres_gorm.StartDB()
    nats.StartNats()
    camunda.StartCamunda()

  1. Документация
    Хорошую документацию автоматически не сделаешь, но кое-что можно:

  • автоматически нарисовать граф зависимостей модулей языка golang, с отображением директорий с утилитой image_packages

  • автоматически нарисовать граф подключений к внешним сервисам с утилитой image_connections

    Подробнее в предыдущей статье статье.

Желаю всем облегчить себе работу с помощью автоматизации.

Источник: https://habr.com/ru/articles/781304/


Интересные статьи

Интересные статьи

С одной стороны, в IT-сфере распространено достаточно сильное убеждение, что IT-специалист обязан менять работу раз в 3 года, иначе он теряет свои технические навыки, его зарплата становится меньше, ч...
Свою предыдущую статью на Хабре я написал в 2016 году, и она была посвящена подборку команды стартапа. Примерно в это время я погрузился в историю создания собственного продукта и стало не до создания...
Независимо от ваших предпочтений, использовать любой тестовый фреймворк, возможно, лучше, чем вообще не проводить тесты.
В результате приостановки работы зарубежных компаний и отключения российских компаний от платежных систем Visa и MasterCard многие программисты столкнулись с проблемой доступа к привычным сервисам. Ра...
В нашей компании активно используется платформа для виртуализации VMware vSphere. В ней живут тестовые среды продуктов, демонстрационные стенды, эмуляторы различных инфраструктур заказчиков и...