📜 ⬆️ ⬇️

The technical side of Supl.biz

Good day. My name is Alexey Krasnoperov and I am the founder and technical director of the Supl.biz project - a trading platform for small and medium businesses. I want to tell you how the project works from the inside.

General project architecture


The technical side of Supl.biz


The project is based on the popular Django and AngularJS frameworks. Moreover, to add sharpness to the project, the frontend is implemented as a Single Page Application, python 3.4 is used on the server, and all the static is laid out in the CDN.
')
Oddly enough, this choice of technologies did not add problems when using the site. To index the search engines used to generate pages on the server through PhantomJS. As a result, both Google and Yandex perfectly index the project.

PostgreSQL 9.4 is used as the main data storage. Also, the data is uploaded to ElasticSearch for quick search and construction of statistical reports.

A separate pool of Postfix servers is responsible for sending emails. For the normal deliverability of letters, it was necessary to set up email domains: SPF / DKIM / PTR, as well as to correctly prepare the technical headers of letters. As a result, it is possible to track the delivery status of each individual letter and clean the mailing from inactive users.

Trigger mailing of messages based on user behavior is implemented using Mixpanel. This allowed to increase the involvement of the audience, without wasting time on the development of complex functionality.

Services Postmaster@mail.ru and Yandex.Post office provide statistics about mailing lists. And Feedback Loop allows you to find out which email users send to spam and draw conclusions.

Infrastructure


The project is deployed in the cloud Selectel in St. Petersburg. Both cloud servers and CDN for statics and user files are used. The cloud basis of the project allows you to put into operation new servers and scale the project under the current load.

At the moment, the site is hosted on one server, this is enough to handle 400,000 visits per day.

Selectel, among other things, provides detailed reports on consumed resources. No need to set up your own monitoring.

Ansible is used to manage the servers: the deployment, the commissioning of new servers and the update of the project are automated and run in one command.

Development


The developer's environment is as close as possible to the real environment in which the site operates. For this, a miniature copy of the project is deployed in a Vagrant virtual machine. This minimizes problems from differences in environments. In addition, a new developer can be entered into the project in just one hour.

For development, use Git Workflow. The source code is stored in Git on Bitbucket. The new functionality is implemented and tested in separate branches, then merged into the main branch of the project.

The project is configured Continuous Deployment: each release is automatically published and tested in the sandbox. If everything is fine, the publication on the working site starts. On the day, invisibly to users, about five site changes are published.

Sentry is used to monitor ticks. We learn about the error that occurred even before the user sees the error message.

Development


There are many ideas on how to develop a project. Doing them all will not be enough any resources. And why? Each idea turns into a hypothesis, the minimum necessary functional is realized and metrics are checked. Only successful ideas are developed.

Work is underway to localize the site and bring the project outside of Russia and the CIS.

The launch of the mobile application is planned: the AngularJS website is perfectly packed into the application using PhoneGap. The practical possibility is checked, it remains to correct the UI for display on small screens and you can run it.

PS


The project was implemented and launched by my forces. Since November 2014, wonderful developer Tatyana has joined the development and has already managed to contribute. But I also need bright minds for the further development of the project. I invite you to join our team .

Source: https://habr.com/ru/post/249873/


All Articles