Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

Цель данного проекта — создать веб-сайт для личного портфолио, который позволил бы не только продемонстрировать мои проекты, но и освоить ключевые практики разработки и DevOps. В этой статье я расскажу о процессе разработки, о том, что удалось реализовать на данный момент, а также о том, какие задачи еще предстоит выполнить.

Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

Идея проекта и выбор технологий

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

Я выбрал стек технологий, который включал:

  • Backend: Python с использованием Flask.
  • Frontend: HTML, CSS и JavaScript (с использованием фреймворков Bootstrap и React).
  • База данных: PostgreSQL для хранения данных о проектах.
  • Контейнеризация: Docker для упаковки приложений.
  • Оркестрация: Kubernetes для управления контейнерами.
  • CI/CD: Jenkins для автоматизации процессов сборки и деплоя.
  • Мониторинг и логирование: Prometheus, Grafana и ELK Stack.

Этот стек позволит мне не только создать сайт, но и изучить практики DevOps, включая контейнеризацию, автоматизацию деплоя и мониторинг.

Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

Шаги разработки и освоение новых навыков

1. Разработка бэкенда

На старте я сосредоточился на создании бэкенда сайта с использованием Python и Flask. Это позволило мне углубить знания по разработке API, взаимодействию с базой данных через ORM (SQLAlchemy) и работе с POST и GET запросами.

Первоначально был разработан основной функционал:

  • Создание моделей данных для хранения информации о проектах.
  • Написание API для выполнения операций CRUD с проектами.
  • Реализация авторизации и регистрации пользователей, а также разделение прав доступа для администраторов и обычных пользователей(это было не в самом начале)

Кроме того, я написал тесты для проверок корректности работы API, что позволило не только убедиться в правильности работы кода, но и улучшить навыки тестирования.

Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

2. Контейнеризация и Docker

Когда бэкенд был готов, я решил запаковать его в Docker-контейнер. Это было единственное, что получилось с первого раза. Я создал Dockerfile для бэкенда и использовал Docker Compose для связывания бэкенда, базы данных и графического интерфейса для работы с базой данных(а связать уже не с первого)

На этом этапе я:

  • Освоил основы Docker: создание контейнеров для различных частей приложения.
  • Разработал Docker Compose файл, который объединяет несколько контейнеров (бэкенд, база данных и интерфейс).
  • Связал контейнеры между собой, что является важным элементом при работе с микросервисами.
Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

3. Разработка функционала и тестирование

В процессе разработки я добавлял дополнительные блоки:

  • Блоки обработки ошибок для удобного отображения ошибок пользователям.
  • Реализация форм для добавления проектов и управления ими.
  • Тут как раз и добавил регистрацию пользователей

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

4. Создание базовой структуры проекта

Я построил основу для дальнейшего развития сайта:

  • Спроектировал и настроил структуру проекта для разделения логики приложения, что облегчает его масштабирование в будущем(не я, а ChatGPT).
  • Внес все необходимые зависимости в проект, установив все библиотеки и фреймворки(проблема несовместимости с версиями это трэш).

Это позволило мне организовать расширяемую архитектуру приложения.

Что уже сделано

На данный момент я завершил несколько ключевых этапов:

  • Создан сервер для сайта, который отвечает за обработку запросов и работу с базой данных.
  • Разработана базовая структура проекта, включая все необходимые файлы и папки.
  • Внесены зависимости и настроены библиотеки, необходимые для работы с Flask и PostgreSQL.
  • Написан код для бэкенда: разработаны модели данных, API для CRUD-операций с проектами и реализована авторизация пользователей.
  • Внесены блоки для обработки ошибок и регистрации пользователей, а также разделение прав доступа для администраторов и обычных пользователей.
  • Написаны тесты для проверки работы POST и GET запросов.
  • Запакован бэкенд в Docker и создан файл Docker Compose для контейнеризации приложения, базы данных и интерфейса для работы с базой данных.
Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

Что предстоит:

  • Написание и контейнеризация фронтенда: необходимо запаковать фронтенд в Docker и настройка его взаимодействие с бэкендом.
  • Оркестрация с Kubernetes: настройка Kubernetes для развертывания приложения, создание манифестов для каждого компонента (бэкенд, фронтенд, база данных).
  • Настройка CI/CD с Jenkins: интеграция с GitHub, создание пайплайнов для автоматической сборки, тестирования и деплоя в Kubernetes.
  • Мониторинг и логирование: настройка Prometheus и Grafana для мониторинга метрик приложения и сбор логов с помощью ELK Stack.
  • Оптимизация безопасности: настройка SSL, внедрение политики безопасности и настройка фаерволов.
  • Развертывание и тестирование в продакшн-среде: окончательное развертывание в Kubernetes и тестирование всей инфраструктуры.
Проект: Сайт для портфолио с Kubernetes и DevOps-практиками: Путь обучения и развития навыков

Заключение

Этот проект стал отличной возможностью не только создать веб-сайт для портфолио, но и значительно улучшить свои знания и навыки в области разработки и DevOps. Однако впереди еще много работы по настройке инфраструктуры и автоматизации процессов, что даст мне возможность углубиться во всё инженерное

11
2 комментария

Это ты ловко придумал вместо скринов своего сайта понакидывать фотографии котиков.

1

Ахах, ну да. Тут и кидать нечего по скринам. Пока что логика описана в backend, и на сайте формочки и кнопка аля Windows 95.