Pull to refresh
0
0

User

Send message

Как мы пытались подружить VictoriaMetrics и Thanos (и у нас почти получилось)

Reading time14 min
Views5.5K

Привет! Меня зовут Григорий, я техлид в Cloud Infrastructure Team в Сравни. Моя команда отвечает за observability системы и облачную инфраструктуру. Не так давно мы полностью обновили наш стек мониторинга. Хочу рассказать, как у нас организовано хранение long-term метрик без использования Object Storage.

Мы в Сравни долгое время использовали связку Prometheus + Thanos для мониторинга и хранения данных. Для Thanos мы использовали схему с sidecar’ом. Эта схема работала довольно неплохо, но с ростом проекта — росло и потребление ресурсов. Со временем задачи по scrape samples уже потребляли значительные ресурсы. Когда только на Prometheus стало уходить больше 30 ядер vCPU и 100 гигабайт RAM, мы начали искать способы оптимизации потребления ресурсов. 

Первым делом определили требования, которые необходимы для системы мониторинга:
- должно поддерживаться развертывание в Kubernetes;
- система должна быть способна переезжать из одного Kubernetes-кластера в другой без потери данных;
- нужна поддержка downsampling;
- возможность построить high availability систему;
- в идеале, чтобы система требовала очень мало внимания на обслуживание ;)

Мы поизучали варианты, и сперва показалось, что будет хорошей идеей взять стек VMAgent + Thanos receiver. Как несложно угадать из названия статьи, этого у нас не получилось. Недавно я увидел в одном профессиональном чате, что коллеги захотели использовать такой же стек и по тем же причинам, что и мы. Поэтому решил поделиться нашим опытом и рассказать, к чему мы в итоге пришли.

Читать далее
Total votes 5: ↑5 and ↓0+5
Comments3

Опыт использования WebRTC. Лекция Яндекса

Reading time8 min
Views26K
Что лучше использовать при разработке софта — нативные или веб-технологии? Холивар по этому поводу закончится ещё не скоро, но мало кто станет спорить, что нативные функции полезно продублировать для использования в браузерах или WebView. И если когда-то приложения для звонков существовали исключительно отдельно от браузера, то теперь их легко реализовать и в вебе. Разработчик Григорий Кузнецов объяснил, как пользоваться технологией WebRTC для P2P-соединений.


— Как вы все знаете, в последнее время появляется довольно много приложений, в основу которых заложен прямой обмен данными между двумя браузерами, то есть P2P. Это всевозможные мессенджеры, чаты, звонилки, видеоконференции. Также это могут быть приложения, которые производят какие-то распределенные вычисления. Пределы фантазии никак не ограничиваются.
Total votes 29: ↑29 and ↓0+29
Comments28

Как восемь человек масштабируют highload-проект. Опыт Unsplash

Reading time8 min
Views13K

Фото: Alex Smith | Unsplash

Добрый день!

Меня зовут Виктор Пряжников, я работаю в отделе Features компании Badoo. Основная задача нашего отдела — разработка функционала, который видят пользователи нашего сайта и приложений. Когда мне попалась на глаза статья сооснователя Unsplash Люка Чессера, она заинтриговала меня тем, что им удаётся развивать сравнительно большой проект совсем маленькой командой. Подход автора импонирует мне своей прагматичностью и чем-то напомнил «Вы — не Google», поэтому я решил её перевести.


Одна из самых забавных вещей в разработке Unsplash — большой масштаб и популярность продукта.

В обычный день наш API обрабатывает больше 10 млн. запросов от unsplash.com и тысяч сторонних приложений, через наш пайплайн обработки данных проходят миллионы событий, в наши ленты добавляются 60 млн. обновлений, и мы обслуживаем 60 млн. изображений.

В то же время наша команда сравнительно мала: два дизайнера, три человека, работающих с фронтендом, два — с бекендом и один дата-инженер. У нас нет отдельного DevOps-инженера, и каждый член команды тратит бОльшую часть своего времени на эксперименты и разработку новых фич для обеспечения дальнейшего развития продукта.
Читать дальше →
Total votes 48: ↑47 and ↓1+46
Comments3

IPsec vs TLS/SRTP в обеспечении безопасности VoIP

Reading time9 min
Views16K

Предисловие



Под катом перевод оригинальной статьи, который мне необходимо было сделать для сдачи кандидатского зачёта по английскому языку в магистратуре. Мною был выбран именно этот текст, поскольку, ещё во время написания дипломной работы, я достаточно хорошо ознакомился с его содержимым. С тех пор прошёл уже где-то год, и только сейчас я решил его опубликовать. Примечательно, что за это время, решая задачи защиты IP-телефонии, мне довелось поработать как с TLS/SRTP, так и с IPsec. Надеюсь, для кого-то это будет полезным (как для меня, в своё время), или хотя бы просто интересным чтением. Пишите своё мнение по поводу этого материала.


P.S. В силу достаточно большого объёма, некоторые вещи я умышленно опустил, пропуски отмечены троеточием. Без перевода остался термин Information Assurance, я так и не встретил аналогии на русском.

Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments11

Сравнительный анализ методов балансировки трафика

Reading time15 min
Views32K


Сергей Зубов (CDNvideo)


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


Total votes 29: ↑27 and ↓2+25
Comments18

Подводные камни Bash

Reading time32 min
Views94K


В этой статье мы поговорим об ошибках, совершаемых программистами на Bash. Во всех приведённых примерах есть какие-то изъяны. Вам удастся избежать многих из нижеописанных ошибок, если вы всегда будете использовать кавычки и никогда не будете использовать разбиение на слова (wordsplitting)! Разбиение на слова — это ущербная легаси-практика, унаследованная из оболочки Bourne. Она применяется по умолчанию, если вы не заключаете подстановки (expansions) в кавычки. В общем, подавляющее большинство подводных камней так или иначе связаны с подстановкой без кавычек, что приводит к разбиению на слова и глоббингу (globbing) получившегося результата.


Читать дальше →
Total votes 143: ↑141 and ↓2+139
Comments63

Что делать если Instagram не дал доступ к API?

Reading time3 min
Views103K
1 июня 2016 года Instagram отключит от своего API все приложения, которые не прошли модерацию. Что делать если вы в их числе?

Предыстория


Мы делаем сервис для постинга в Instagram по расписанию и используем API для получения информации об аккаунтах. Самим постингом занимаются телефоны в автоматическом режиме. Нам отказали в доступе к API после 1 июня (пробовали пройти модерацию два раза) поэтому было решено найти замену.

Сначала расскажу как мы использовали официальный API:
  1. При добавлении аккаунта забираем из Instagram информацию об аккаунте: имя, фото профайла, количество постов, подписчиков, подписок.
  2. Перед тем как опубликовать фото/видео мы запрашиваем количество постов, и тоже самое после публикации, если число постов увеличилось считаем публикацию успешной.
  3. Если публикация прошла успешно забираем ссылку на последнее фото в профайле.
  4. Если пользователь удаляет фото из нашего сервиса, то перед тем как выполнить задачу нужно проверить существует ли такой пост в Instagram (или его удалили).

Реализация


У Instagram есть веб-версия. С помощью нее в приватных аккаунтах можно получить информацию о количестве постов, подписок и подписчиков, а в публичных еще и сами посты, комментарии и лайки. Поэтому, в силу простоты получения, я подумал, что уже написаны подобные библиотеки. Пошел гуглить и нашел только для NodeJS. И для PHP нашелся какой-то код, но всем четырем пунктам не соответствовал. В итоге было решено писать свою библиотеку.
Читать дальше →
Total votes 14: ↑10 and ↓4+6
Comments72

Мегаобзор микрофонов для записи подкастов

Reading time13 min
Views55K


Мы очень внимательно следим за тем, что происходит в сфере подкастинга и принимаем регулярное участие в записи одного из наиболее востребованных подкастов в Рунете – передаче «Звук».

Создание передачи – это отдельная история с множеством разнообразных нюансов. Сегодня мы поговорим об одном из них и посмотрим, какие микрофоны для записи подкастов рекомендуют эксперты вроде Марко Армента.
Читать дальше →
Total votes 25: ↑24 and ↓1+23
Comments29

Книга «Программируем Arduino: Основы работы со скетчами»

Reading time3 min
Views32K
Привет, Хаброжители!
У нас вышла книга-новинка:

imageВпервые на русском языке выходит легендарный бестселлер Саймона Монка, который много лет занимает первые строчки в рейтингах Amazon. Хотите создать умный дом или запрограммировать робота? Нет ничего проще. Саймон Монк не только поможет разобраться с проволочками, контактами и датчиками, но и покажет, как заставить все это хитросплетение проводов и плат делать то, что вам нужно. Arduino — это не так сложно, как кажется с первого взгляда. Вы сразу будете покорены открывающимися возможностями.
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments11

14 книг, которые вдохновили Илона Маска

Reading time4 min
Views116K


Когда у Илона Маска, главы Tesla и SpaceX, спрашивают, как он научился строить ракеты, он дает простой ответ: «Я читаю книги». Предприниматель очень любит читать, и не пропускает возможности, чтобы изучить очередную книгу. При этом Маск читает как художественные книги, научно-популярную литературу, так и чисто технические издания, которые нужны для специалиста в той либо иной области науки или техники.

Когда Маск жил в Южной Африке (все его детство прошло именно в ЮАР), над ним насмехались сверстники, и он убегал в мир фантастики и фэнтези. Любимые его книги этого жанра — Джон Толкин и Айзек Азимов. Сейчас Маск выделяет 14 книг, которые изменили его самого и всю его жизнь.
Читать дальше →
Total votes 25: ↑20 and ↓5+15
Comments10

PYCON RUSSIA-2015: видео и презентации докладов

Reading time4 min
Views16K
18-19 сентября в Екатеринбурге прошла третья международная конференция python-разработчиков PyCon Russia. 21 доклад, два мастер-класса, Lightning Talks — все это PyCon-2015. Под катом — отчет о прошедшей конференции, много видео и презентации докладов.

0_1217f0_23d019c7_orig.jpg
Питонисты собрались из 25 городов, среди которых: Сан-Франциско, Париж, Прага, Бонн, Таллин, Минск, Киев, Москва, Санкт-Петербург, Казань, Уфа

Читать дальше →
Total votes 24: ↑24 and ↓0+24
Comments7

Удалённое исполнение системных команд по запросу через сокеты на Python 3 или как я сайты скачивал

Reading time9 min
Views35K
Проект был написан скорее в учебных целях (научиться сетевому программированию в Python), чем в практических. Такую же роль несёт и статься, ведь сейчас вряд ли кто-то будет скачивать сайты, чтобы прочитать пару статеек (за исключением некоторых случаев, когда подобное реально может пригодится).

Не так давно качество мобильного интернета в моём городе стало постепенно ухудшаться из-за возрастающей на сети операторов нагрузки и некоторые сайты, требующие большое количество соединений (зависимые файлы страницы) стали загружаться ну ОЧЕНЬ медленно. По вечерам скорость опускается на столько, что некоторые сайты могут полностью загружаться в течении нескольких десятков секунд.

Есть несколько способов решения данной проблемы, но я решил выбрать немного необычный для нашего времени способ. Я решил скачивать сайты. Конечно, данных способ не подходит для крупных сайтов, вроде Хабра, тут разумнее использовать парсер, но можно скачать и отдельный хаб, список пользователей, или только свои публикации с помощью HTTrack Website Copier, применив фильтры. Например, чтобы скачать хаб Python с Хабра нужно применить фильтр "+habrahabr.ru/hub/python/*".

Этот способ можно использовать ещё в нескольких целях. Например, чтобы скачать сайт, или его часть, перед тем, как вы окажитесь без интернет-соединения, например, в самолёте. Или для того, чтобы скачать заблокированные на территории РФ сайты, если скачивать их через Tor, что будет очень медленно, или через компьютер в другой стране, где данных сайт не запрещён, а потом передать его на компьютер, находящийся в РФ, что будет гораздо быстрее для многостраничных сайтов. Таким образом мы может скачать, например, xHamster Wikipedia через сервер в Германии или Нидерландах и получить сайт в сжатом виде по SFTP, FTP, HTTP или другому, удобному для вас, протоколу. Если, конечно, места хватит, для такого большого сайта :)

Ну что, начнём!?
Читать дальше →
Total votes 13: ↑11 and ↓2+9
Comments12

Телефоны CISCO 7942G и 7940 в связке с Asterisk 11

Reading time4 min
Views28K
Попали в мои руки данные аппараты. С Cisco я не очень дружу, потому полез в гугл и таки настроил эти аппараты. Очень помогла эта статья, но и в ней есть ошибки, которые не совместимы с некоторыми ревизиями 7942G.

Из коробки телефоны работают с цисовскими протоколами, потому надо сначала прошить на SIP.

Начнем с нуля.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments8

Мифы и рецепты Docker

Reading time5 min
Views90K
Вокруг постоянно говорят про Docker. Я знаю что вы отвечаете: «Это что-то про контейнеры, виртуализацию, облака», «У нас все и так работает», «Это все баловство», «Он не запустится на нашем старом ядре линукса», «Точно так же можно подготовить образ для облака и запустить его», «Можно просто настроить LXC, chroot или AppArmor». Вы знаете, что он вам не нужен. Очередная модная штука. В конце концов, просто лень разбираться. Но любопытно! Тогда, читайте. Это серия из шести заметок.

Если вы не слышали о контейнерах в Линуксе, вот список страниц, которые надо прочитать, чтобы понимать о чем речь:


Поставьте Docker, он небольшой. Для Windows и Mac можно просто поставить Toolbox: www.docker.com/toolbox. Создавать виртуальную машину и настраивать лучше из командной строки, а не через графическую обертку. Прочитайте несколько уроков из мануала. Здесь я пишу о том, чего в документации нет.

Docker — это не виртуализация.


Вот какой у меня линукс:

Welcome to Ubuntu 15.04 (GNU/Linux 3.19.0-15-generic x86_64)

Last login: Tue Aug 18 00:43:50 2015 from 192.168.48.1
gri@ubuntu:~$ uname -a
Linux ubuntu 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/                                       Linux
gri@ubuntu:~$ free -h
             total       used       free     shared    buffers     cached
Mem:          976M       866M       109M        11M       110M       514M
-/+ buffers/cache:       241M       735M
Swap:         1.0G       1.0M       1.0G

Запускаю CentOS:

gri@ubuntu:~$ docker run -ti centos
[root@301fc721eeb9 /]# uname -a
Linux 301fc721eeb9 3.19.0-15-generic #15-Ubuntu SMP Thu Apr 16 23:32:37 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
[root@301fc721eeb9 /]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)
[root@301fc721eeb9 /]# free -h
              total        used        free      shared  buff/cache   available
Mem:           976M         85M        100M         12M        790M        677M
Swap:          1.0G        1.0M        1.0G

Docker — это не chroot, их функционал частично совпадает. Это не система безопасности вроде AppArmor. Docker использует те же контейнеры, что и LXC, но интересен он не контейнерами. Docker — это ничего из того, что я думал о нем до того, как прочитал документацию.

То же ядро, память, файловая система, а дистрибутивы, библиотеки и пользователи — разные.

Docker — это инструмент объекто-ориентированного проектирования


Регулярно возникает вопрос, является ли конфигурация nginx частью веб-приложения. Системные администраторы спорят с разработчиками. Но недавно в мире появились devops и захотели вместо последовательно-процедурного вызова команд из bash думать привычным OOP. Docker дает инкапсуляцию, наследование и полиморфизм компонентам системы, таким как база данных и данные. Это значит, что можно провести декомпозицию всей информационной системы, выделить приложение, web-сервер, базу данных, системные библиотеки, рабочие данные в независимые компоненты, внедрять зависимости из конфигов, и заставить все это работать одной группой, одинаково на разных компьютерах.

Такой подход можно использовать, чтобы снизить потери рабочего времени дорогих front-end разработчиков на настройку базы данных и Nginx. Чтобы уйти от vendor lock-in. Не обломаться когда openssl на сервере не поддерживает cipher, используемый в API госучреждения. Чтобы приложение работало независимо от версии PHP или Python на сервере заказчика. Создавать open source не только в виде кода, но и настройкой пакетов из нескольких приложений, написанных на разных языках, работающих на разных слоях OSI.
Читать дальше →
Total votes 35: ↑32 and ↓3+29
Comments99

Тюним память и сетевой стек в Linux: история перевода высоконагруженных серверов на свежий дистрибутив

Reading time10 min
Views94K
image

До недавнего времени в Одноклассниках в качестве основного Linux-дистрибутива использовался частично обновлённый OpenSuSE 10.2. Однако, поддерживать его становилось всё труднее, поэтому с прошлого года мы перешли к активной миграции на CentOS 7. На подготовительном этапе перехода для CentOS были отработаны все внутренние процедуры, подготовлены конфиги и политики настройки (мы используем CFEngine). Поэтому сейчас во многих случаях миграция с одного дистрибутива на другой заключается в установке ОС через kickstart и развёртывании приложения с помощью системы деплоя нашей разработки — всё остальное осуществляется без участия человека. Так происходит во многих случаях, хотя и не во всех.

Но с самыми большими проблемами мы столкнулись при миграции серверов раздачи видео. На их решение у нас ушло полгода.
Читать дальше →
Total votes 110: ↑104 and ↓6+98
Comments73

Python meetup — 2 года

Reading time2 min
Views11K
Python Meetup Minsk Всем привет!
В июне Python Meetup исполнилось 2 года. Чтобы отметить это, мы собрались в субботу 27 июня и провели весь день вместе, общаясь и слушая доклады. Речь шла о:
  • Оптимальном наименовании переменных
  • Безопасном запуске чужого кода на своем компьютере
  • Использовании Jenkins в тестировании игр
  • Парном удаленном программировании
  • Объектной подсистеме Python


Записи выступлений под катом. Хорошего просмотра!
Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments11

MIT предлагает всем желающим бесплатные уроки по теории покера

Reading time2 min
Views22K

Первое видео курса

Массачусетский технологический институт выложил в свободный доступ курс лекций по теме «Теория и аналитика игры в покер» (на английском языке). Доступны видеолекции, конспекты и специальные заметки по курсу. Это событие – часть программы OpenCourseWare, которая посвящена организации бесплатного доступа к избранным лекциям института для всех желающих – даже для тех, кто не учится в нём.

Помните, как в школе многие говорят: «Ну зачем мы это учим, нам это не пригодится!»?



Так вот, лекции по покеру – пожалуй, могут оказаться не просто интересными, но и весьма полезными с практической точки зрения.

Лекции ведёт магистрант института Кевин Дезмонд, который получил степень бакалавра по финансам. И, что логично, его лекции как раз рассказывают о технологиях анализа и планирования, предназначенных для максимизации выгоды от игры на деньги.

В курсе рассматриваются основы игры, наилучшие стратегии, и те важные детали, которые самоучки обычно упускают. Рассматривается анализ поведения игроков, манеры игры и прогнозы их будущих действий в зависимости от предыдущих раздач.
Читать дальше →
Total votes 22: ↑18 and ↓4+14
Comments0

Искусство командной строки

Reading time15 min
Views249K


Вот уже как неделю английская версия the art of command line висит в секции trending на Github. Для себя я нашел этот материал невероятно полезным и решил помочь сообществу его переводом на русский язык. В переводе наверняка есть несколько недоработок, поэтому милости прошу слать пулл-реквесты мне сюда или автору оригинальной работы Joshua Levy вот сюда. (Если PR отправите мне, то я после того, как пересмотрю изменения отправлю их в мастер-бранч Джоша). Отдельное спасибо jtraub за помощь и исправление опечаток.

Enjoy!
Total votes 127: ↑122 and ↓5+117
Comments143

Книги для системного администратора. Моя книжная полка

Reading time6 min
Views478K
Книги.
Я считаю, что важнейшим инструментом получения скилов системного администрирования являются именно они — книги.
Нет специальных факультетов, обучающих «админству» — каждый постигает это самостоятельно. Путем проб, ошибок и боли, потере важных данных различных злоключений.
В начале пути сложно определиться, что же нужно прочесть — ведь массив информации столь огромен!
В данном посте я хочу собрать наиболее важные и значимые труды для системных администраторов.
Уклон будет на *nix админство, но, надеюсь тема окажется небезынтересной и для Windows коллег и в комметариях они заполнят мои пробелы.
Пост субьективен и отражает лишь мой собственный опыт — я раскажу о книгах, которые помогли моему становлению.

Читать дальше →
Total votes 51: ↑46 and ↓5+41
Comments45

Information

Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity