← Назад

Обо мне

Обо мне

Навигация по содержанию

TL;DR

Я — выпускник Колледжа, учившийся по IT-специальности с чёткой целью стать Fullstack-разработчиком

Помогал организовать региональный чемпионат WorldSkills (ныне “Профессионалы”), сделал обновлённый сайт Колледжу, защитил диплом на “отлично” и вышел с красным дипломом

На своём удалённом сервере развернул инфраструктуру из контейнеров: Traefik, Prometheus + Grafana, Gitea, Drone CI, Postgres, Docker registry

Планирую развиваться по направлению FullStack и DevOps

Краткое введение

Вашему вниманию: мой сайт. Написал его на Astro + TailwindCSS. Скоро перепишу сайт на NextJS и подключу Headless CMS по типу Strapi

По дизайну вдохновлялся сайтами NextJS и TailwindCSS

Сайт планирую использовать для публикации своих публичных проектов, ведения блога, а также использовать как площадку для развёртывания CI/CD процессов

На удалённом сервере у меня развёрнута инфраструктура:

  • Docker
  • Traefik
  • Мой основной сайт
  • Docker Registry
  • Gitea
  • Drone CI
  • Prometheus + Grafana
  • Postgres + Adminer

Мои планы на ближайшее время

В будущем на поддоменах моего основного сайта планирую развернуть несколько проектов, а также планирую купить дополнительный сервер для переноса туда git-сервера вместе с CI/CD сервисами

Планирую развиваться как DevOps-инженер и как FullStack-разработчик

Опыт работы

Коммерческого опыта у меня нет, но то, что я делал в Колледже, вполне можно считать за рабочий опыт. В Колледже по части Web-разработки я сделал больше, чем кто-либо когда-то что-то делал из моих одногрупников или даже других студентов моей специальности в Колледже за всё время, и я не преувеличиваю

Ну серьёзно, многие студенты сами не понимают чего хотят от жизни или идут в Колледж для корки/отсрочки от армии. Учебные материалы максимально устаревшие, насколько это можно вообще представить. Я же шёл в Колледж именно что за тем, чтобы потом вырасти в конкретного IT-специалиста по части Web-разработки

Колледж не мог мне предоставить знаний или каких-либо учебных материалов, но он мне предоставил площадку и мотивацию для самостоятельного обучения. И это было своеобразное обоюдовыгодное сотрудничество: я предоставляю Колледжу интересующие его материалы, а я получаю за это вполне заслуженные оценки. То, что делал я не сравнится с тем, что в это время делали другие

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

Я успел написать достаточно говнокода, которое в итоге вылилось в где-то 5-6 приложений. Приложения были рабочими:

  • BackEnd’ы представляли собой простенькие CRUD’ы на Laravel с token-session аутентификацией,
  • FrontEnd’ы же обслуживали созданные мною же REST API приложения, а сами клиенты написаны на VueJS

Некоторые исходники хранятся на компе и в моих приватных github-репозиториях: показывать такие страшилки на публику мне очень стыдно. Постепенно я начинал перенимать best-practices по написанию чистого кода

Написание сайта для Колледжа

Это были 2021-2022 года

Я поставил себе задачу: сделать сайт по-лучше того, что стоял на тот момент. А на тот момент стоял сайт на старой версии Joomla с бесплатной темой из интернета

Мою идею поддержали

Я решил сайт сделать на WordPress. Я не пользовался готовыми темами, а написал тему с нуля

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

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

Организация регионального чемпионата WorldSkills

На третьем курсе я готовился к чемпионату как конкурсант. На четвёртом как технический организатор площадки

Мне поставили задачу исправить задания для регионального чемпионата WorldSkills, а также подготовить материалы, необходимые для выполнения заданий

В подготовку материалов входило:

  • создание макетов посадочных страниц
  • написание серверного REST API приложения

Дипломная работа: сайт для выкладки курсов

Для защиты диплома я написал на Laravel сайт для выкладки курсов. Идея проста: создать сайт по типу Stepik или Hexlet, но доступный только аутентификации

У моего сайта были следующие сущности:

  • Пользователь (User)
    • Есть 3 роли: студент, автор, админ
    • автор создаёт и управляет своими курсами
    • админ создаёт и управляет пользователями
    • админ также создаёт курсы
    • студент имеет возможность смотреть содержимое курсов
  • Курс (Course)
    • Сборник сущностей “Занятие”
    • Связан со своим автором
  • Занятие (Lesson)
    • Контент в разметке markdown
    • Может иметь картинку-обложку
    • Автор занятия определяется тем, кто создатель курса

Страницы были следующие:

  • Главная страница
  • Страница аутентификации
  • Список курсов
  • Страница курса. Представляла собой список занятий
  • Страница занятия

На админке были следующие страницы:

  • Страницы создания/управления курсами
  • Страницы создания/управления занятиями
  • Управление пользователями

Это было дипломная работа, сайт надо было выкладывать в Интернет. Но и тут я отличился от своих одногруппников:

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

  • я использовал знакомый мне Laravel, который основу тебе сгенерирует с помощью консольной утилиты, а остальное всё сам

Для создания админки я использовал filament, для отрисовки страниц воспользовался шаблонизатором Blade

Я воспользовался Laravel Sail (готовое docker-compose решение от Laravel), чтобы деплой приложения на удалённый сервер прошёл гладко и с использованием Docker-контейнеров. Это был мой первый маленький шаг на пути к CI/CD автоматизации

В качестве хост-провайдера выбрал TimeWeb, купил домен + VPS. Задеплоил приложение, при защите диплома сайт работал гладко. Вышел с Колледжа с заслуженным красным дипломом

Время после Колледжа

После выпуска из Колледжа я спустя полторы недели иду служить срочную службу в армии

После того, как вернулся, я начал практиковаться в вёрстке и созданию UI с помощью TailwindCSS. UI/UX дело тонкое, требующее насмотренности

Потратил 1.5 месяца на создание одного pet-проекта

Делал его чисто для себя и для друзей (майнкрафт лаунчер для одного проекта). Я сталкивался с большими для себя трудностями из-за непонимания некоторых моментов разработки

Я не планировал в ближайшее время разрабатывать приложения на Десктоп, но опыт в разработке я свой получил: на своей шкуре и своими же ручками написал спагетти-код, и сразу же понял в какой момент всё пошло не по плану и как это можно исправить

Ну и что в итоге? После множества моих крупных провалов в выборе тех или иных инструментов, я сорвался на том, что когда было пора уже и выпустить первую версию, то после компиляции Electron-приложение не реагировало на события из FrontEnd’а, хотя при самых первых тестах всё работало нормально

Для меня это значило то, что мне нужно будет опять сидеть и думать над тем, где снова возникла проблема. А на это у меня может уйти ещё несколько дней и требование более глубоко изучить работу сборщиков Electron-приложений. И тут я понял, что убил много времени в никуда: я слишком много времени потратил на реализацию простой идеи

Для себя я вывел важный урок: не надо пытаться создать полный продукт сразу. Не надо при разработке первой рабочей версии прикрутить ещё какую-нибудь “простую” фичу, так как может оказаться, что на её реализацию может уйти довольно много времени. Задумка сама по себе может звучать просто, а в реализации может потребовать продумать множество деталей

После моего неудачного pet-проекта я восстанавливался где-то 3-4 дня

Изучение DevOps

Для себя я поставил задачи:

  • установить git-сервер на удалённый сервер
  • создать цикл CI/CD для моего сайта
  • настроить на удалённом сервере reverse-proxy с выдачей SSL-сертификатов для веб-служб
  • настроить базовую аутентификацию для веб-сервисов, которыми буду пользоваться только я

И для начала мне нужно было изучить то,

  • как правильно работать с Docker
  • как правильно собирать docker-образы
  • как потом делать docker-compose файлы
  • как потом можно будет удалённо с помощью docker context разворачивать на удалённом сервере сервисы из моих docker-compose файлов

Я изучил базу работы с Docker, понял как правильно собирать Docker-образы, как работать с удалённым сервером через Docker context, настроил SSH-сервер на удалённом сервер, настроил SSH-клиент на своём компьютере. Плюсом научился одной не популярной практике, которая помогает оптимизировать процесс сборки docker-образа

В процессе изучения нашёл аналог GitLab: Gitea. Весит немного, установка максимально лёгкая, обладает всем необходимым для меня функционалом

Для проверки работоспособности моего git-сервера, я попросил моего друга протестировать git-сервер: создать репозиторий, сделать коммиты используя SSH, сделать форк проекта, сделать pull-request, попробовать запушить коммит в мой репозиторий

Проверка git-сервера прошла успешна, можно двигаться дальше

Настройка CI/CD

После того, как я убедился что git-сервер работает как надо, я начал смотреть как устанавливается Drone CI и как сделать первые pipeline’ы для моего проекта

Drone CI я успешно установил, раннеры поставил

Задеплоил исходники сайта в приватный репозиторий, написал pipeline, который собирает мне docker-образ и отправляет его в мой приватный Docker registry

И чтобы обновления пошли в продакшн, мне нужно активировать контейнер Watchtower, который обнаружит новую версию моего сайта и обновит его

Под конец

И тут мы потихоньку переходим к сегодняшнему дню. Сейчас я планирую сделать свой pet-проект, который планирую постепенно развивать

Это будет сайт-блог для ложек. Цель проекта: научиться работать с постепенно усложняющимся приложением

Инфраструктура и сложность приложения будут постепенно усложняться в связи с появлением новых требований к сайту. Перед моими “заказчиками” я должен буду писать отчётность: делать диаграммы и писать грамотный отчёт без лишней воды. В процессе сайт-блог должен перерасти в полноценную социальную сеть

Пожелайте мне удачи в поиске работы или наймите меня на работу, мне надо дальше профессионально расти, а для этого мне надо на что-то кушать и быть в команде с разработчиками, которые в бизнесе работают не первый год