$ whoami

Алексей Козадаев

Backend разработчик

$ skills

PHP

Go

Python

AWS

Docker

SQL

Общие сведения

Я, Козадаев Алексей, разработчик из Тамбова. В IT c 2013 года, занимал как рядовые, так и руководящие должности в различных организациях. Этот сайт предназначен для демонстрации некоторых моих навыков, здесь я в общих чертах, поскольку не могу приводить конкретные примеры с места работы, показываю, чем занимаюсь. В разделе "Системная архитектруа и микросервисы" обобщенно показана моя деятельность. Для того, чтобы показать свой код, я написал отдельные проекты, которые никак или опосредовано связаны с той работой, которую обычно выполняю. Проекты имеют некоторые пересечения только с текущим местом работы. Если будете знакомиться с моими открытыми репозиториями, которые здесь не перечислены, имейте, пожалуйста, ввиду, что многое из них написаны "на коленке" для пояснения материалов студентам, я преподаю программирование в ВУЗе. 


Системная архитектура и микросервисы

Разработка и масштабирование архитектури микросервисов

В команде разработали и внедрили архитектуру микросервисов, обрабатывающую более 1 млн ежедневных запросов с 99,99% времени безотказной работы. Разработаны скрипты для управления доменами (API Selectel).

Ключевые результаты:

  • Создана система микросервисов (REAT API) - сервис авторизации, сервис обработки фото и видео, сервис административной панели, сервис клиентской части (API мобильных клиентов), сервис подготовки отчетов в формате CSV и Excel, сервис для работы с файловым хранилищем AWS S3.
  • Сокращение времени отклика в среднем на 40% за счет оптимизации SQL запросов и применения кеширования.
  • Сокращение времени выполнения рутинных задач системного администратора, замена их на использование API по управлению доменами (заведение поддомена, редактирование/удаление поддомена, управление виртуальными сервисами, подача и проверка тикетов хостеру).
  • Контейнеризация микросервисов с помощью Docker.

Docker

PostgreSQL, Redis

API Selectel

Обработка данных, как в режиме реального времени, так и в режиме отложенных задач по расписанию

Созданы надежные сервисы, получающие и обрабатывающие данные в реальном врмени и отдающие результат "сырых" данных, а также механизмы предрасчета и сохранения результатов в дополнительные таблицы по событию или расписанию. Отслеживание всех события изменяющих состояние и журналирование этих событий. Создание отчетов - результатов обработки "сырых" данных, приходящих в сервисы от клиентов - мобильных и web приложений.

Основные задачи:

  • Участие в проектировании архитектуры и разработке backend для мобильного приложения SkillCup и административной панели управления контентом и сбора статистики. Основной стек: Laminas / Zend Expressive, PHP 7.4 / 8.2, PostgreSQL + Doctrine, Redis, RabbitMQ, ELK.
  • Разработка микро-сервисов на Go:

 - Доработки в микро-сервисе, предоставляющем API для мобильных устройств.

 - Разработка отчётов с использованием библиотеки Excelize.

- Реализация функционала централизованного хранения файлов клиентов. Интеграция AWS через aws-sdk-go-v2.

Используемый стек Go: Gin, GORM, Excelize, aws-sdk-go-v2.

 

  • Реализация интеграций с внешними авторизационными системами заказчиков.
  • Рефакторинг и оптимизация существующей архитектуры, устранение узких мест.
  • Взаимодействие с командой технической поддержки, а так же специалистами QA, менеджерами проекта. Формализация исходных требований к необходимому для реализации функционалу.

 

Ключевые достижения:

  • Оптимизировал SQL-запросы для формирования статистики и отчетов, написал десятки запросов для дашбордов и отчетов.
  • Перевел формирование отчетов (более 60 отчетов) c xlsx (https://pkg.go.dev/github.com/tealeg/xlsx) на excelize (https://pkg.go.dev/github.com/xuri/excelize/v2), что позволило применять стили ячеек, фильтры, задавать размер столбцов, что в конечном итоге привело к положительным откликам клиентов.
  • Разрабатывал сервис по работе с файловых хранилищем AWS S3 от Selectel.
  • Реализовал часть комплексного мониторинга с помощью Grafana.
  • Реализовал работу с VK-video (после блокировок Youtube этот функционал оказался востребованным).

PHP

AWS S3

Go (Golang)

Grafana

Python

PostgreSQL

Краткое описание проектов, демонстрирующих некоторые навыки

Symfony quick - это проект, демонстрирующий базовый функционал Symfony — свободного фреймворка, написанного на языке программирования PHP.

 

Здесь реализовано:

  • REST API для работы с одной сущностью — Product

  • Работа с БД PostgreSQL

  • Обработка исключительных ситуаций

  • Валидация полей объекта

  • Журналирование

Проект go_shortiner

  • Предназначен для демонстрации некоторых возможностей языка Go. Здесь показана многопоточность (concurrency), работа с некоторыми паттернами, БД, миграциями, логгированием (журналированием).

    Проект не рассчитан на практическое применение, а только показывает некоторые мои навыки. Запись в предрасчетную таблицу ведется без учета уникальности (цель максимально быстро заполнить данными для генерации отчета).

    1. Показывает работу с БД и ORM - PostgreSQL + GORM с автомиграциями.

    2. Показывает работу с миграциями - Goose.

    3. Показывает работу с фреймворками, зависимостями - Gin Web Framework, Fx.
    4. Показывает работу с middleware и авторизацию.

    4. Показывает формирование отчета в формате xlsx.
    5. Журналирование, ротация логов, трассировка.

Проект go_news_server

  • Предназначен для демонстрации сервера fiber и работы с базой через reform.
    Когда то этот проект был предложен мне как тестовое задание и тема показалась интересной. Я считаю, что выполнять тестовое более 8 часов не корректно. Если больше, то это означает, что, либо оно для меня слишком сложное, либо просто не корректно составлено. Поэтому разработка реализация достаточно простая, но задача показалась мне интересной, ранее я не работал ни  с fiber ни с reform, привожу ее здесь.

Self Training Bot

  • Self Training Bot — это Telegram-бот на базе aiogram, который помогает подготовиться к экзаменам, зачетам, другому по темам и вопросам в формате карточек с вопросами и ответами. Пользователь получает случайные вопросы, может посмотреть ответ и перейти к следующему.
    Идея проста - самоподготовка с любого устройства и в любом месте, где есть интернет. Telegram стал настолько популярным, что есть уже на почти ка каждом устройстве. А если не установлен как приложение, может работать в браузере.
    Self Training Bot может быть помощьником не тольк для обучающегося, но и для преподавателя. Логи позволяют видеть статистику прохождения карточек с материалами. Можно использовать как самостоятельный и нструмент, и как часть комплексного обучения.

pg_prewarm

  • Это не проект в привычном понимании. Это набор рекомендаций по "прогреву" таблиц и индексов базы данных PostgreSQL после очистки/перезапуска.

$ contact --info

Контакты

$ location --current

Россия, Тамбов

$ contact --email

$ cat resume.pdf

Download Resume

$ ls ./social-links

GitHub

@akozadaev

LinkedIn

Алексей Козадаев