Pull to refresh
15
Karma
0
Rating

Пользователь

  • Followers 14
  • Following 5
  • Posts
  • Comments

Отправляем письма с помощью asyncio и aiohttp из Django приложения

Ostrovok.ru corporate blog Website development *Python *Programming *Django *
Всем привет!

Я занимаюсь разработкой и поддержкой сервиса уведомлений в Ostrovok.ru. Сервис написан на Python3 и Django. Помимо транзакционных писем, пушей и сообщений, сервис также берёт на себя задачи по массовым рассылкам коммерческих предложений (не спам! trust me, отписки у нас работают лучше подписок) пользователям, давшим на это согласие. Со временем база активных получателей разрослась до более миллиона адресов, к чему почтовый сервис не был готов. Я хочу рассказать о том, как новые возможности Python позволили ускорить массовые рассылки и сэкономить ресурсы и с какими проблемами нам пришлось столкнуться при работе с ними.


Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Views 6.9K
Comments 4

Типизируй все

Ostrovok.ru corporate blog Website development *Python *Programming *Designing and refactoring *

Всем привет!


У нас уже есть одна статья про развитие типизации в Ostrovok.ru. В ней объясняется, зачем мы переходим с pyContracts на typeguard, почему переходим именно на typeguard и что в итоге получаем. А сегодня я расскажу подробнее о том, каким образом происходит этот переход.


Читать дальше →
Total votes 8: ↑8 and ↓0 +8
Views 4.1K
Comments 23

Трюки для обработки метрик в Kapacitor

Ostrovok.ru corporate blog System administration *IT Infrastructure *Server Administration *DevOps *
Скорее всего, сегодня уже ни у кого не возникает вопрос, зачем нужно собирать метрики сервисов. Следующий логичный шаг – настроить алертинг на собираемые метрики, который будет оповещать о любых отклонениях в данных в удобные вам каналы (почту, Slack, Telegram). В сервисе онлайн-бронирования отелей Ostrovok.ru все метрики наших сервисов льются в InfluxDB и отображаются в Grafana, там же настроен базовый алертинг. Для задач типа «нужно посчитать что-то и сравнить с этим» мы используем Kapacitor.


Kapacitor – часть TICK-стека, который умеет обрабатывать метрики из InfluxDB. Он может соединить несколько измерений между собой (join), из полученных данных вычислить что-то полезное, записать результат обратно в InfluxDB, отправить алерт в Slack/Telegram/почту.

Весь стек имеет крутую и подробную документацию, но всегда найдутся полезные штуки, которые в явном виде в мануалах не указаны. В этой статье я решил собрать ряд таких полезных неочевидных советов (основный синтаксис TICKscipt описан здесь) и показать, как их можно применять, на примере решения одной из наших задачек.

Поехали!
Читать дальше →
Total votes 7: ↑7 and ↓0 +7
Views 3.4K
Comments 6

Как мы YouTube Live с Zoom интегрировали

Ostrovok.ru corporate blog Working with video *IT Infrastructure *Cloud services Lifehacks for geeks
Всем привет! Это вторая часть серии статей от IT-команды сервиса бронирования отелей Ostrovok.ru об организации онлайн-трансляции корпоративных презентаций и мероприятий в одном отдельно взятом помещении.

В первой статье мы рассказали о том, как решили проблему плохого звука трансляций с помощью микшерного пульта и системы беспроводных микрофонов.



И вроде всё было хорошо, но спустя некоторое время в наш отдел прилетела новая задачка – давайте сделаем наши трансляции более интерактивными! Всё наше ТЗ заключалось в одном предложении – нужно было дать удаленным сотрудникам возможность подключаться к встречам команд, то есть не только смотреть, но и активно участвовать: показывать презентацию, задавать вопросы в режиме реального времени и т.д. Проанализировав ситуацию, мы решили использовать конференцсвязь Zoom.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 15K
Comments 4

Пробы и ошибки при выборе HTTP Reverse Proxy

Ostrovok.ru corporate blog High performance *System administration *Nginx *DevOps *
Всем привет!

Сегодня мы хотим рассказать о том, как команда сервиса бронирования отелей Ostrovok.ru решала проблему роста микросервиса, задачей которого является обмен информацией с нашими поставщиками. О своем опыте рассказывает undying, DevOps Team Lead в Ostrovok.ru.

Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Views 22K
Comments 7

История блужданий по документации Haproxy, или на что стоит обратить внимание при его конфигурации

Ostrovok.ru corporate blog System administration *Network technologies *DevOps *Microservices *
И снова здравствуйте!

В прошлый раз мы рассказывали о выборе инструмента в Ostrovok.ru для решения задачи проксирования большого количества запросов к внешним сервисам, никого при этом не положив. Статья закончилась выбором Haproxy. Сегодня я поделюсь нюансами, с которыми мне пришлось столкнуться при использовании этого решения.


Читать дальше →
Total votes 24: ↑24 and ↓0 +24
Views 15K
Comments 3

I’m going deeper underground, или о чем стоит знать, оптимизируя работу сетевого приложения

Ostrovok.ru corporate blog Server optimization *Network technologies *DevOps *
Приветствую, друзья!

В предыдущих двух статьях (раз, два) мы погружались в сложность выбора между технологиями и искали оптимальные настройки для нашего решения в Ostrovok.ru. Какую тему поднимем сегодня?

Каждый сервис должен работать на каком-то сервере, общаясь с железом посредством инструментов операционной системы. Этих инструментов великое множество, как и настроек для них. В большинстве случаев для их работы настроек по умолчанию будет более чем достаточно. В этой статье я хотел бы рассказать о тех случаях, когда стандартных настроек все-таки было недостаточно, и приходилось знакомиться с операционной системой чуть ближе – в нашем случае с Linux.


Читать дальше →
Total votes 26: ↑26 and ↓0 +26
Views 5.1K
Comments 11

История типизации на примере одного большого проекта

Ostrovok.ru corporate blog Website development *Python *Designing and refactoring *
Всем привет! Сегодня я расскажу вам историю развития типизации на примере одного из проектов в Ostrovok.ru.



Эта история началась задолго до хайпа о typing в python3.5, более того, она началась внутри проекта, написанного еще на python2.7.

2013 год: совсем недавно был релиз python3.3, мигрировать на новую версию смысла не было, так как каких-то конкретных фичей она не добавляла, а боли и страдания при переходе принесла бы очень много.

Я занимался проектом Partners в Ostrovok.ru – этот сервис отвечал за все, что связано с партнерскими интеграциями, бронированиями, статистикой, личным кабинетом. У нас использовались как внутренние API для других микросервисов компании, так и внешнее API для наших партнеров.
Читать дальше →
Total votes 11: ↑11 and ↓0 +11
Views 4.6K
Comments 13

Как написать вредное API

Ostrovok.ru corporate blog Abnormal programming *System Analysis and Design *Delirium coding XML *

Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте.


Всем привет!


Я работаю тимлидом команды Integration Development в сервисе онлайн-бронирования отелей Ostrovok.ru и сегодня хотел бы поделиться своим опытом работы с различными API.



Как разработчик системы, работающей с внешними поставщиками, я часто встречаюсь с различными API – чаще всего это SOAP/REST или что-то на них похожее. Однако от работы со многими из них остается впечатление, что их писали, не руководствуясь ни техническими правилами, ни здравым смыслом – как будто бы по книге “Вредные советы” Григория Остера. В данной статье я постараюсь описать такие случаи в стиле “вредных советов” и рассмотрю примеры, связанные с XML. Комментарии и обсуждение приветствуются.

Читать дальше →
Total votes 20: ↑18 and ↓2 +16
Views 5.7K
Comments 8

Не ORMом единым

Ostrovok.ru corporate blog Abnormal programming *Website development *Python *Django *

Не ORMом единым


Всем привет! Я руковожу отделом партнерской разработки (Partners Development) в сервисе бронирования отелей Ostrovok.ru. В этой статье я хотел бы рассказать про то, как на одном проекте мы использовали Django ORM.


На самом деле я слукавил, название должно было быть "Не ORMом единым". Если вам интересно, почему я так написал, а также если:


  • У вас в стеке Django, и вам хочется выжать из ORM максимум возможностей, а не просто Model.objects.all(),
  • Вы хотите перенести часть бизнес-логики на уровень баз данных,
  • Или вы хотите узнать, почему самая частая отмазка разработчиков в B2B.Ostrovok.ru "так исторически сложилось",

… добро пожаловать под кат.


кдпв

Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Views 4.7K
Comments 14

Инструкция: как тестировать ansible-роли и узнавать о проблемах до продакшена

Ostrovok.ru corporate blog Configuring Linux *System administration *Python *IT Infrastructure *

Всем привет!


Я работаю DevOps-инженером в сервисе бронирования отелей Ostrovok.ru. В этой статье я хочу рассказать о нашем опыте тестирования ansible-ролей.


В Ostrovok.ru в качестве менеджера конфигураций мы используем ansible. Недавно мы пришли к необходимости тестирования ролей, но, как оказалось, инструментов для этого существует не так много — самым популярным, пожалуй, является фреймворк Molecule, поэтому мы решили использовать его. Но оказалось, что его документация умалчивает о многих подводных камнях. Достаточно подробного руководства на русском нам не удалось найти, поэтому мы решили написать эту статью.


Читать дальше →
Total votes 19: ↑18 and ↓1 +17
Views 9.1K
Comments 18

Организация онлайн-трансляций в особых условиях

Ostrovok.ru corporate blog IT Infrastructure *Gadgets Lifehacks for geeks Sound
Всем привет! В этой статье я бы хотел рассказать о том, как IT команда сервиса онлайн-бронирования отелей Ostrovok.ru настраивала онлайн-трансляции различных корпоративных мероприятий.

В офисе Ostrovok.ru существует особая переговорная комната – «Большая». Каждый день в ней проходят рабочие и неформальные мероприятия: встречи команд, презентации, тренинги, мастер-классы, интервью с приглашенными гостями и прочие интересные события. Штат компании насчитывает более 800 человек – многие из них работают удаленно в других городах и странах, и далеко не у всех есть возможность физически присутствовать на каждой встрече. Поэтому задача организовать онлайн-трансляции внутренних встреч не заставила себя долго ждать и прилетела в команду IT. Расскажу подробнее о том, как мы это делали.


Читать дальше →
Total votes 17: ↑16 and ↓1 +15
Views 4.4K
Comments 13

WWDC 2013 — взгляд изнутри

Aviasales corporate blog
image

Попасть на WWDC оказалось непросто. Я понимал, что желающих поучаствовать в конференции будет много. Поэтому к тому моменту, когда открылась продажа билетов, я был подготовлен: проверил интернет-соединение, разложил перед собой обе свои кредитки (на случай, если одна не сработает) и ждал, когда на сайте Apple появится заветная кнопка «Buy tickets». И вот она! Нажимаю, ввожу свой логин и пароль и… вижу сообщение о технической проблеме. Несколько раз судорожно обновляю страницу, но ничего не происходит. Наконец, страница загрузилась, и на экране возникает лаконичная надпись «Sold out»… 2 минуты, и билеты проданы, вот это ажиотаж! Я пребывал в лёгком смятении весь следующий день — планам не суждено было сбыться. Однако вечером мне позвонили из Apple и сообщили, что отследили мою попытку приобрести билет. Мол, что-то там у них не сработало, но мне зарезервировали билет и пришлют ссылку для покупки мне на почту, если я, конечно, не передумал. Билет был куплен, виза получена, и я отправился в Сан-Франциско.
Читать дальше →
Total votes 74: ↑67 and ↓7 +60
Views 28K
Comments 22

Фестиваль 404: опубликованы первые видео докладов

Фестиваль 404 corporate blog
Наверняка, многие из вас знают, что мы тут в своей Самаре недавно провели мощнейший Фестиваль 404. К нам приехало 800 участников со всей России, а еще Украины, Англии и США. Это очень много для небольшой провинциальной IT-конференции. Вот видео, которое более-менее передает настроение Фестиваля:



Самые внимательные из вас заметили, что в ролике много веселья, но мало докладов. Все потому, что мы сняли все доклады на видео и будем совершенно бесплатно демонстрировать их всем желающим.

Первые пять видео с докладами
Total votes 32: ↑28 and ↓4 +24
Views 6.1K
Comments 9

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity