Feedback service

Опис завдання

Ваше завдання — створити простий мікросервіс для обробки даних відгуків клієнтів. Мікросервіс відповідатиме за управління відгуками клієнтів, зберігання їх у базі даних PostgreSQL і публікацію в темі Kafka. Крім того, мікросервіс реалізує кешування за допомогою Memcached для підвищення продуктивності.

Вимоги

  1. Створіть мікросервіс Go з такими кінцевими точками:

    • POST /feedback: дозволяє користувачеві надіслати новий елемент відгуку. Кінцева точка має приймати JSON у такому форматі:
    {
     "customer_name": "Джон Доу",
     "email": "johndoe@example.com",
     "feedback_text": "Важливо вчитися у пацієнта, щоб клієнт слідував за вами.",
     "source": "Веб-сайт"
    }

    Мікросервіс має перевірити вхідні дані, створити унікальний ідентифікатор для елемента відгуку, зберегти елемент у базі даних PostgreSQL і опублікувати його в темі Kafka.

    • GET /feedback/{id}: дозволяє користувачеві отримати певний елемент відгуку за його ідентифікатором. Мікросервіс повинен спочатку перевірити кеш Memcached для елемента. Якщо елемента немає в кеші, він повинен отримати його з бази даних PostgreSQL і зберегти в кеші для майбутніх запитів.
  2. Використовуйте наступний стек технологій: ( ! якщо він потрібен для реалізації завдання):

    • Go
    • PostgreSQL для зберігання даних
    • Кафка для публікації повідомлень
    • Memcached для кешування
    • JavaScript і React для інтерфейсу
    • Зв'язок мікросервісу через HTTP
    • JWT для автентифікації
  3. Мікросервіс повинен повертати відповідні повідомлення про помилки, якщо кінцева точка використовується неправильно або якщо є проблеми з даними.

  4. Ви повинні використовувати будь-які відповідні бібліотеки або фреймворки, які вам зручні.

Бонусні бали

  • Застосуйте розбиття на сторінки для /feedback кінцевої точки, щоб обмежити кількість отриманих результатів.
  • Додайте модульні тести для кінцевих точок мікросервісу.
  • Реалізуйте автентифікацію та авторизацію за допомогою JWT.
  • Використовуйте Docker для контейнеризації мікросервісу.

Подання

Будь ласка, надайте вихідний код для вашого рішення, включаючи інструкції з налаштування та запуску програми.

Goooood luck!