- Из чего будет состоять система
- Какие сервисы будут в системе заметок
- Работа по созданию системы заметок для новичков
- Заключение
Проектирование микросервисной архитектуры начинается с разработки плана действий. Например, разработчику необходимо создать систему заметок. Для начала надо расписать основные возможности будущей системы. Вот примерные возможности, которыми она будет обладать:
- регистрация, авторизация в этой системе;
- создание и удаление заметок;
- прикрепление документа;
- разделение на категории заметок;
- полнотекстовый поиск.
Версии системы заметок будут созданы для браузера и мобильного телефона на операционной системе Андроид. Далее будем разрабатывать UI. В UI потребуется вместить регистрацию и авторизацию, списки и карточки заметок.
Созданное техническое задание не имеет требований, таких как краш-устойчивость, надежность и производительность. Система заметок будет выглядеть просто, чтобы даже начинающий разработчик смог разобраться и понять, как она составляется.
Начинается все с подготовительной части. Это обязательная часть, которая входит в состав разработки. Без нее, без конкретного плана, собрать что-либо подходящее и положительно оцениваемое пользователями не удастся.
Из чего будет состоять система
Для сбора и написания кода будут использованы CircleCI или GitHub Actions. Сервисы нужно будет упаковывать в контейнеры Docker. А приводить в действие их нужно будет с помощью Docker-Compose.
Для репозитория используется версия на GitHub. Кодировку делаете с открытым исходным кодом GPLv3.
В качестве системы распределенной трассировки нужно будет выбрать Zipkin. В нем можно найти много готовых фреймворков под языки Питон и Голанг.
Стек ELK лучше использовать для поиска и фильтрации. Опытные разработчики скажут, что это неправильно, и этот функционал необходимо использовать под хранилище, но для начала пойдет. Нужно будет узнать все возможности сервисов и увидеть, как они создаются. Этот стек как нельзя лучше подходит для подобного рода действий. В него будут заливаться и логи. Разработчики подсказывают, что логи лучше всего собирать агентом Telegraf либо использовать FileBeat.
Чтобы наполнить информацией этот стек, потребуется работать с Apache Airflow.
Для сетевых протоколов потребуются Consul и DNS-сервер. Чтобы конфигурировать все сервисы, нужно установить программу Consul Template. Она автоматически будет отслеживать документ шаблона и создавать конфигурацию.
Какие сервисы будут в системе заметок
Сервис системы заметок будет состоять из следующих пунктов:
- NoteService — это главный сервис. Для него будет создано специальное хранилище. Будет использована база данных Mongo. Все операции будут реализовываться посредством формата Json, REST API;
- файл-сервис — все документы станут храниться на файловой системе. А управлять ими можно будет с помощью отдельного сервиса;
- сервис категорий будет создан на языке Питон 3. В качестве фреймворка возьмете Flask 3. Для хранения запросов нужно использовать базу данных — Neo4j. В ней вы сможете работать на языке запросов Cypher. Он гораздо проще, чем SQL;
- в качестве сервиса API можно использовать Crud;
- сервис по управлению тегами;
- поисковый сервис будет создан с помощью Elasticsearch. Опять же для работы с ним используют язык Питон. Он легче и проще в изучении для новичка;
- для людей, заходящих в систему, будут разработаны отдельный сервис и хранилище на PostgreSQL.
После того как все сервисы подготовлены, нужно создать веб-приложение. Его можно подготовить с помощью фреймворков Vue.js или React.js.
Должна получиться следующая архитектура, как на картинке.
Работа по созданию системы заметок для новичков
В первую очередь создают макет интерфейса. Для создания рекомендуется использовать Ninja-Mock. Это онлайн-сервис для прототипирования интерфейсов. Работать в нем можно бесплатно.
Вот так будет выглядеть страница, сделанная на нем.
Документы заметок не должны отображаться полностью. Нужно сделать так, чтобы заметка открылась, когда пользователь кликнет по ней. При открытии пусть отобразится длинный заголовок, а в правой части большое поле для расположения текста. Внизу появится специальное поле для картинок. Оно не помешает юзеру редактировать текст, потому что будет приходить с помощью асинхронного запроса.
Далее необходимо настроить эндпоинты. Они нужны для регистрации и аутентификации. Здесь необходимо будет научиться создавать отдельные категории. Их делают с помощью метода POST на URL/api/categories. Опытные разработчики с помощью метода POST создают новые теги. Они тоже понадобятся для выполнения данной задачи.
Для обновления заметки вставляют метод Patch. Для отображения заметок пользуются методами POST и GET.
Теперь давайте посмотрим, как будет выглядеть структура репозитория. В директории APP задается исходный код. Здесь же будут находиться другие директории базы данных Mongo, ELK.
После подготовки необходимо создать сервис, то есть написать к нему код. Это делается на Golang. Предварительно его скачивают, распаковывают и добавляют ссылку до бинарников. Затем пишут тестировочный код. Создают бинарник и запускают.
Остается только сделать проект. Его создают по стандарту: билд — для сборки; командная строка — точка входа в утилиту; интернал — это внутренняя логика программы; пакаж — создается для кода, чтобы можно было копировать его из проекта в проект.
Теперь вам остается создать только само приложение. Затем эндпоинты, которые были получены при анализе прототипов интерфейса. Затем работаете с Json Web Token. Он не позволяет подделать токен без данных о ключе. Реализуют его следующим образом:
- Подготавливают директории middleware и jwt, а также файл jwt.go.
- Прописывают пользовательские UserClaims и сам middleware.
- Получают Authorization, из него берут токен.
- Забирают секрет из конфигурации.
- Делают верификатор HMAC.
- Парсят и проверяют токен.
- Загружают полученную информацию в UserClaims.
- Тестируют.
Если появляется ошибка, то прописывают код 401. Если пользователь ввел правильные данные, то контекст сохраняют.
API описывают с помощью спецификации OpenAPI 3.0. Используют YAML-документ со спецификацией Swagger. Многие разработчики любят его за приятный интерфейс.
Далее запускают графовую базу данных. Работают с ней. Прописывают код на языке Cypher. Создают сервис для категорий. Разрабатывают систему контроля версий Git. Дорабатывают API-сервис. Создают NoteService.
Затем реализуют свою веб-разработку. Более подробно можно познакомиться с разработкой подобных приложений при изучении языка JavaScript.
Заключение
Бегло пробежавшись по основным пунктам разработки системы заметок с нуля, уже можно понять, что это большой труд для начинающего разработчика. Хотя опытные смогут создать такие приложения максимум за неделю. Если вы хотите научиться создавать подобные программы, работать с разными фреймворками и базами данных, записывайтесь на курсы по программированию от DevEducation.