Технічна сторона Supl.biz

Добрий день. Мене звуть Олексій Краснопьоров та я є засновником і технічним директором проекту Supl.biz   торговельної площадки для малого і середнього бізнесу. Хочу розповісти, як влаштований проект зсередини.

Загальна архітектура проекту

Технічна сторона Supl.biz


У основі проекту використовуються популярні фреймворки Django і AngularJS. Причому, щоб додати проектом гостроти, фронтенд реалізований як Single Page Application, на сервері використаний python 3.4, а вся статика викладена в CDN.

Як дивно, такий вибір технологій не додав проблем при використанні сайту. Для індексації пошуковими системами застосовується генерація сторінок на сервері через PhantomJS. У результаті і Google, і Яндекс відмінно індексують проект.

У якості основного сховища даних PostgreSQL 9.4. Також дані вивантажуються в ElasticSearch для швидкого пошуку і побудови статистичних звітів.

За відправку листів відповідає окремий пул Postfix серверів. Для нормальної вивозили листів потрібно налаштувати поштові домени: SPF/DKIM/PTR, а також правильно оформляти технічні заголовки листів. У результаті є можливість відслідковувати статус доставки кожного окремого листа і чистити розсилку від неактивних користувачів.

Тригерна розсилка листів на основі поведінки користувачів реалізована з допомогою Mixpanel. Це дозволило збільшити залучення аудиторії, не витрачаючи часу на розробку складного функціоналу.

Сервіси Postmaster@mail.ru Яндекс.Поштовий офіс надають статистику про поштових розсилках. А Feedback Loop дозволяє дізнаватися, які листи користувачі відправляють в спам і робити висновки.

Інфраструктура

Проект розгорнутий хмарі Selectel в Санкт-Петербурзі. Використовуються як хмарні сервери, так і CDN для статики і користувальницьких файлів. Хмарна основа проекту дозволяє вводити в дію нові сервери і масштабувати проект під поточну навантаження.

На даний момент сайт розміщується на одному сервері, цього достатньо для обробки 400 000 відвідувань в день.

Selectel, крім іншого, надає детальні звіти по споживаних ресурсів. Немає необхідності налаштовувати власний моніторинг.

Для управління серверами використовується Ansible: розгортання, введення в дію нових серверів і оновлення проекту   автоматизовані і запускаються в одну команду.

Розробка

Оточення розробника максимально наближене до реальному оточенню, в якому працює сайт. Для цього мініатюрна копія проекту розгорнута в віртуальній машині Vagrant. Це зводить до мінімуму проблеми від відмінності оточень. До  ж нового розробника можна ввести в проект всього за одну годину.

Для розробки застосовується Git Workflow. Вихідний код зберігається в Git на Bitbucket. Новий функціонал реалізується і тестується в окремих гілках, потім зливається в основну гілку проекту.

На проект налаштований Continuous Deployment: кожен реліз автоматично публікується і тестується в пісочниці. Якщо все відмінно   запускається публікація на робочий сайт. У день, непомітно для користувачів, публікується близько п'яти змін сайту.

Для моніторингу крешей використовується Sentry. Ми дізнаємося про сталася помилку навіть раніше, ніж користувач бачить повідомлення про помилку.

Розвиток

Є багато ідей, як розвивати проект. Робити їх не вистачить ніяких ресурсів. Так і навіщо? Кожна ідея перетворюється в гіпотезу, реалізується мінімальний необхідний функціонал і перевіряються метрики. Розвиваються тільки успішно працюють ідеї.

Ведуться роботи з локалізації сайту і висновку проекту за межі Росії і СНД.

Планується запуск мобільного додатку: сайт AngularJS відмінно запаковується у додаток з допомогою PhoneGap. Практична можливість перевірена, залишається поправити UI для відображення на невеликих екранах і можна запускати.

p.s.

Проект був реалізований і запущений моїми силами. З листопада 2014 р. до розробці приєдналася чудовий розробник Тетяна і вже встигла внести свій вклад. Але мені потрібні світлі голови для подальшого розвитку проекту. Запрошую приєднатися до нашій команді.

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.