Описание приложения
Чойс – социальная сеть шопинга для поиска и планирования покупок! Приложение доступно для скачивания на мобильные телефоны в магазинах приложений AppStore и Google Play.

Чойс даёт возможность:

СОХРАНЯТЬ ПОНРАВИВШИЕСЯ ТОВАРЫ В ОДНОМ МЕСТЕ
Попрощайтесь с бесконечными скриншотами, вкладками в браузере, ссылками в мессенджерах и больше не бойтесь потерять понравившиеся товары.

СОЗДАВАТЬ ПОДБОРКИ И ОРГАНИЗОВЫВАТЬ ВСЕ ТОВАРЫ ПО ПОЛОЧКАМ
С подборками проще и удобнее упорядочивать понравившиеся товары — создавайте уникальные коллекции, образы, подборки по интересам, делитесь ими с друзьями и получайте их советы перед покупкой.

ПОКУПАТЬ НУЖНОЕ
Планируйте, выбирайте и делайте следующие покупки более осознанно. На странице каждого товара вы сможете получить всю информацию о нём и легко перейти на его страницу в интернет-магазине

ЭКОНОМИТЬ НА ПОКУПКАХ
Будьте в курсе скидок и распродаж с уведомлениями о снижении цены — мы сообщим вам, когда снизится цена на товары, чтобы вы могли купить их в нужный момент.

НАХОДИТЬ ПОХОЖИЕ ТОВАРЫ И С ЧЕМ ОНИ СОЧЕТАЮТСЯ
Выбирайте товары, которые вам нравятся, а система рекомендаций покажет все похожие товары и с чем они сочетаются.

ОТКРЫВАТЬ НОВЫЕ ИДЕИ, КОТОРЫЕ ПОПАДУТ В САМОЕ СЕРДЕЧКО
Лента подстроится под вас и предложит персонализированные рекомендации товаров и подборок на основе ваших интересов.

УЗНАВАТЬ ИНТЕРЕСНЫХ АВТОРОВ И СОХРАНЯТЬ ПОНРАВИВШИЕСЯ ПОДБОРКИ
Сохраняйте подборки других авторов и создавайте свой личный центр вдохновения.

СТАТЬ ЧАСТЬЮ КРЕАТИВНОГО КОМЬЮНИТИ
Делитесь идеями и своей экспертизой с тысячами пользователей, создавая подборки на любой случай, и вливайтесь в глобальную сеть креаторов

ДЕЛИТЬСЯ СВОМИ ПОДБОРКАМИ НА ДРУГИХ СОЦИАЛЬНЫХ ПЛАТФОРМАХ
Фотографии приложения
Технологический стэк
1. ОБЗОР АРХИТЕКТУРЫ
Проект разработан на основе микросервисной архитектуры, что обеспечивает гибкость в развитии и масштабировании системы. Использование Python в сочетании с FastAPI как основной технологии для разработки микросервисов позволяет быстро создавать высокопроизводительные и асинхронные веб-приложения. Планируется расширение стека за счет внедрения Golang для улучшения производительности и эффективности работы с сетевыми запросами и микросервисами.

2. МИКРОСЕРВИСЫ FastAPI
Микросервисы разработаны с использованием FastAPI, обеспечивающего легкость в разработке и поддержке, а также высокую скорость работы благодаря асинхронности. Каждый микросервис отвечает за определенный набор функций в системе, таких как управление пользователями, обработка данных и предоставление различных API для внешних и внутренних клиентов.

3. КЛАСТЕРИЗАЦИЯ И ОРКЕСТРАЦИЯ ЧЕРЕЗ Kubernetes на Яндекс.Клауд
Для управления микросервисами используется Kubernetes, развернутый на инфраструктуре Яндекс.Клауда. Это позволяет автоматизировать развертывание, масштабирование и управление контейнеризированными приложениями, обеспечивая высокую доступность и надежность системы. Яндекс.Клауд предоставляет необходимые инструменты и сервисы для мониторинга, логирования и обеспечения безопасности приложений.

4. БАЗА ДАННЫХ PostgreSQL
Для хранения данных используется PostgreSQL – мощная, надежная и гибкая система управления базами данных. Она обеспечивает высокую производительность при работе с большим объемом данных и поддержку сложных запросов.

5. ОЧЕРЕДИ ЗАДАЧ НА Celery + Redis
Для асинхронной обработки задач и управления распределенными заданиями применяется связка Celery и Redis. Celery используется для постановки задач в очередь и их асинхронной обработки, а Redis служит в качестве брокера сообщений. Это позволяет эффективно распределять нагрузку между микросервисами и обеспечивать быстродействие системы даже при высоких пиках нагрузки.

6. БЕЗОПАСНОСТЬ И МОНИТОРИНГ
Система включает в себя комплексные решения по обеспечению безопасности данных и приложений, включая шифрование, регулярные аудиты безопасности и интеграцию с системами мониторинга и логирования. Это обеспечивает высокий уровень защиты информации и возможность оперативно реагировать на возможные инциденты или неполадки в работе системы.

7. РАЗВИТИЕ И МАСШТАБИРУЕМОСТЬ
С учетом планов по расширению технологического стека за счет внедрения Golang, система разработана с прицелом на гибкость и масштабируемость. Использование Golang позволит оптимизировать производительность при работе с сетевыми запросами и параллельным выполнением задач, что особенно важно для критически важных и высоконагруженных частей системы. Плавный переход и интеграция новых компонентов на Golang в существующую инфраструктуру будут обеспечены за счет контейнеризации и оркестрации через Kubernetes.

8. НЕПРЕРЫВНАЯ ИНТЕГРАЦИЯ И РАЗВЕРТЫВАНИЕ (CI/CD)
Для обеспечения высокого качества кода и ускорения процессов разработки и развертывания применяются практики непрерывной интеграции и непрерывного развертывания (CI/CD). Автоматизированные тесты, проверка кода и автоматическое развертывание изменений в тестовые и продуктивные среды позволяют сократить время на разработку и внедрение новых функций, а также минимизировать риски, связанные с человеческим фактором.

9. ОБЕСПЕЧЕНИЕ ОТКАЗОУСТОЙЧИВОСТИ И РЕЗЕРВНОГО КОПИРОВАНИЯ
Система обеспечивает высокий уровень отказоустойчивости благодаря репликации данных и автоматическому переключению на резервные узлы в случае сбоев. Регулярное резервное копирование данных и возможность быстрого восстановления системы после сбоев обеспечивают надежную защиту от потери данных.

ЗАКЛЮЧЕНИЕ
Данная архитектура проекта предоставляет сервису гибкую, масштабируемую и безопасную систему, способную адаптироваться к меняющимся требованиям и нагрузкам. Использование современных технологий и лучших практик разработки позволяет обеспечить высокое качество предоставляемых услуг и удовлетворить потребности пользователей на высоком уровне.