Pull to refresh
6
0
Максим @KuniLinux

Системный администратор / DevOps

Send message

Профилирование и оптимизация программ на Go

Reading time25 min
Views86K

Введение


В этой статье я расскажу, как профилировать и оптимизировать приложения на языке Go с использованием встроенных и общих инструментов, доступных в ОС Linux.

Что такое профайлинг и оптимизация? Если ваша программа работает недостаточно быстро, использует слишком много памяти, неоптимально использует процессор, вы хотите понять, в чем дело, и исправить — это и есть профайлинг и оптимизация.

Я привел такое определение, чтобы сразу отсечь вопросы некорректной работы приложения. В этой статье мы не будем говорить о проблемах мультитредового программирования, о дата-рейсах (англ. data race), о поиске ошибок (англ. debugging). Для всего этого в Go есть свои утилиты и подходы, но оставим эту тему на будущее.



Читать дальше →
Total votes 47: ↑45 and ↓2+43
Comments18

RBK.money выпустила первый в мире open-source платежный процессинг — творим будущее вместе

Reading time15 min
Views40K


Привет!


Если вы читали наши предыдущие посты (читали же?), то точно помните, что мы в RBK.money очень сильно за опенсорс. Настолько, что выложили в открытый доступ наш антифрод в виде открытых исходников под лицензией Apache 2.0.


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


Зачем мы это сделали? Как это работает внутри? Как теперь жить дальше? Читайте под катом. Я гарантирую, что такого вы еще не встречали — еще никто в мире не опенсорсил платежную систему такого уровня.


История меняется прямо сейчас на ваших глазах!

Читать дальше →
Total votes 68: ↑66 and ↓2+82
Comments43

Миграция с Nginx на Envoy Proxy

Reading time10 min
Views37K

Привет, Хабр! Предлагаю вашему вниманию перевод поста: Миграция с Nginx на Envoy Proxy.


Envoy — это высокопроизводительный распределенный прокси-сервер (написанный на C++), предназначенный для отдельных сервисов и приложений, также это коммуникационная шина и «universal data plane», разработанный для больших микросервисных архитектур «service mesh». При его создании были учтены решения проблем, которые возникали при разработке таких серверов, как NGINX, HAProxy, аппаратных балансировщиков нагрузки и облачных балансировщиков нагрузки. Envoy работает вместе с каждым приложением и абстрагирует сеть, предоставляя общие функции независимо от платформы. Когда весь служебный трафик в инфраструктуре проходит через сетку Envoy, становится легко визуализировать проблемные области с помощью согласованной наблюдаемости, настройки общей производительности и добавления основных функций в определённом месте.


Возможности


  • Архитектура вне процесса: envoy — это автономный, высокопроизводительный сервер занимающий небольшой объем оперативной памяти. Он работает совместно с любым языком приложения или фреймворком.
  • Поддержка http/2 и grpc: envoy имеет первоклассную поддержку http/2 и grpc для входящих и исходящих соединений. Это прозрачный прокси от http/1.1 до http/2.
  • Расширенная балансировка нагрузки: envoy поддерживает расширенные функции балансировки нагрузки, включая автоматические повторные попытки, разрыв цепи, глобальное ограничение скорости, затенение запросов, локальную балансировку нагрузки зоны и т. д.
  • API для управления конфигурацией: envoy предоставляет надежный API для динамического управления своей конфигурацией.
  • Наблюдаемость: глубокая наблюдаемость трафика L7, встроенная поддержка распределенной трассировки и наблюдаемость mongodb, dynamodb и многих других приложений.
Читать дальше →
Total votes 23: ↑20 and ↓3+17
Comments28

Сeph — от «на коленке» до «production»

Reading time22 min
Views20K

Выбор CEPH. Часть 1


У нас было пять стоек, десять оптических свичей, настроенный BGP, пару десятков SSD и куча SAS дисков всех цветов и размеров, а ещё proxmox и желание засунуть всю статику в собственное S3 хранилище. Не то чтобы это всё было нужно для виртуализации, но раз начал использовать opensource — то иди в своём увлечении до конца. Единственное, что меня беспокоило — это BGP. В мире нет никого более беспомощного, безответственного и безнравственного, чем внутренняя маршртутизация по BGP. И я знал, что довольно скоро мы в это окунёмся.



Задача стояла банальная — имелся CEPH, работал не очень хорошо. Надо было сделать "хорошо".
Доставшийся мне кластер был разнородным, настроенным на скорую руку и практически не тюнингованным. Он состоял из двух групп разных нод, с одной общей сеткой выполняющей роль как cluster так и public network. Ноды были набиты четырьмя типами дисков — два типа SSD, собранными в два отдельных placement rule и два типа HDD разного размера, собранными в третью группу. Проблема с разными размерами была решена разными весами OSD.


Саму настройку разделили на две части — тюнинг операционной системы и тюнинг самого CEPH и его настроек.

Читать дальше →
Total votes 26: ↑25 and ↓1+24
Comments18

geoDNS с помощью Powerdns и nginx

Reading time6 min
Views27K
Обожаю задачи “на стыке технологий”, это одна из таких.
Задача:
  • реализовать geoDNS*
  • c возможностью wildcard (*.some.tst. A 1.2.3.4)
  • с возможностью менять содержимое зон на ходу, добавлять новые зоны пачками
  • без необходимости запускать громоздкие скрипты на каждый запрос “мимо кеша”
  • научиться тестить этот реактор (с локалхоста, а не кучи proxy/VDS)


*) под geoDNS я подразумеваю возможность для клиентов из разных регионов отдавать разные, например, адреса сервера/А-записи (для США отдаётся IP сервера в США, для СНГ — в москве, для ЕС — в Европе ...)

Статья описывает
  • метод реализации geoDNS
  • метод тестирования
  • эскизное решение на “чистом nginx”

Если интересно, причём же здесь nginx, прошу под кат.
Читать дальше →
Total votes 33: ↑29 and ↓4+25
Comments18

16 DevOps конференций 2018 года, выступления с которых стоит посмотреть

Reading time5 min
Views6.4K
Вообще, подобных конференций сильно больше, но именно эти можно назвать флагманскими. Они проходят в разных уголках мира и я, конечно, не призываю их лично посещать. В чём же польза? Просмотр видео, аудио или презентаций может помочь разглядеть технологические новинки, общий вектор движения технологий и, возможно, уже начинать внедрять что-то новое в своей организации. Сам я делаю в такой последовательности: захожу на сайт конференции, смотрю программу, выбираю полезные для себя выступления, начинаю их гуглить и затем искать на Ютюбе, Слайдшэре, Спикердеке или Саундклауде. Не всегда везёт, но чаще всего следы выступлений найти удаётся. Я даже как-то обращался с вопросом к одному из выступающих через Линкедин.



В посте приведу ссылки на каждую конференцию, переходите на сайт, смотрите что интересного было в 2017 году, было или будет в 2018, гуглите и изучаете. На каждом мероприятии выступают не только производители софта, но и крупные компании, которые его используют. Без проблем можно найти бизнес-кейс, похожий на ваш.
Смотреть конференции
Total votes 19: ↑16 and ↓3+13
Comments1

Вышел GitLab 11.0: Auto DevOps и управление лицензиями

Reading time18 min
Views13K

Картинка для привлечения внимания



Создание качественного ПО — непростой процесс. Во-первых, нужно решать бизнес-проблемы и писать качественный код. Однако, на этом сложности не заканчиваются: нужно еще удостовериться в том, что ваш код работает быстро, безопасно и надежно. Работа с кодом — это конвейер из множества этапов, таких как сборка, интеграция, тестирование, обеспечение безопасности, ревью, настройка и развертывание. На выполнение всех этих действий уходит много времени и сил.


Total votes 19: ↑18 and ↓1+17
Comments1

OpenStack: вся правда о «королевском» релизе

Reading time8 min
Views13K
Воланд у М. Булгакова говорил, что «кирпич ни с того ни с сего никому и никогда на голову не свалится». Может, и так, но, когда два с половиной года назад меня спросили, хочу ли я познать OpenStack, это был тот самый хорошо завуалированный кирпич (а на старте даже не кирпич, а гранитная плита). Именно 2016 год стал для меня так называемой «точкой невозврата», положив начало стремительному освоению концепций открытого мира и в значительной степени повлияв на менталитет, – превратив мою дальнейшую жизнь в праздник. «Праздник», который всегда со мной.


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

Масштабирование ClickHouse, управление миграциями и отправка запросов из PHP в кластер

Reading time11 min
Views44K

В предыдущей статье мы поделились своим опытом внедрения и использования СУБД ClickHouse в компании СМИ2. В текущей статье мы затронем вопросы масштабирования, которые возникают с увеличением объема анализируемых данных и ростом нагрузки, когда данные уже не могут храниться и обрабатываться в рамках одного физического сервера. Также мы расскажем о разработанном нами инструменте для миграции DDL-запросов в ClickHouse-кластер.


Два шарда по две реплики


Читать дальше →
Total votes 23: ↑22 and ↓1+21
Comments0

Практики Continuous Delivery с Docker (обзор и видео)

Reading time7 min
Views30K
Свой блог мы начнём с публикаций, созданных по мотивам последних выступлений нашего технического директора distol (Дмитрия Столярова). Все они состоялись в 2016 году на различных профессиональных мероприятиях и были посвящены теме DevOps и Docker. Одно видео, со встречи Docker Moscow в офисе Badoo, мы уже публиковали на сайте. Новые будут сопровождаться статьями, передающими суть докладов. Итак…

31 мая на конференции RootConf 2016, проходившей в рамках фестиваля «Российские интернет-технологии» (РИТ++ 2016), секция «Непрерывное развертывание и деплой» открылась докладом «Лучшие практики Continuous Delivery с Docker». В нём были обобщены и систематизированы лучшие практики построения процесса Continuous Delivery (CD) с использованием Docker и других Open Source-продуктов. С этими решениями мы работаем в production, что позволяет опираться на практический опыт.

Дмитрий Столяров (Флант) на RootConf 2016

Если у вас есть возможность потратить час на видео с докладом, рекомендуем посмотреть его полностью. В ином случае — ниже представлена основная выжимка в текстовом виде.
Total votes 19: ↑18 and ↓1+17
Comments14

Who is Mr. Hacker?

Reading time1 min
Views12K


Коллеги и друзья! Рад сообщить о запуске новой, 11-й по счету лаборатории тестирования на проникновение: Test Lab v. 11!

Лаборатория представляет собой копию реальной корпоративной сети компании, содержащую типичные уязвимости и ошибки конфигурации, а принять участие сможет каждый желающий. В настоящее время в лаборатории зарегистрировано более 17 000 человек!
Читать дальше →
Total votes 35: ↑34 and ↓1+33
Comments8

10 инструментов для стартаперов и стартапов

Reading time5 min
Views14K
В прошлом мы уже подсказывали начинающим владельцам бизнеса стратегии и платформы для первых этапов продвижения, а также приводили список полезных ресурсов. Добавим к этому небольшой набор инструментов, которые помогут в процессе планирования, лидогенерации и проектирования сайта продукта.


Startup Graveyard

Учимся на горьком, но полезном опыте предшественников. Strartup Graveyard — это каталог стартапов, которые потерпели неудачу и вынуждены были выйти из игры. Цель проекта, как уверяют авторы, вовсе не в том, чтобы клеймить людей за ошибки — напротив, объективный безоценочный анализ факторов, которые привели ту или иную компанию к печальному исходу, позволит «снять стигму с неудачи» и выстроить более открытое, вдумчивое сообщество. История болезни излагается в лаконичной, ясной форме: название, ниша, годы жизни, инвесторы и бюджет, конкуренты, основные причины краха. Посетителям также предлагается внести свою лепту — произвести вскрытие такого рода над известным им проектом (возможно, даже своим собственным) и отправить результаты администрации.
Читать дальше →
Total votes 25: ↑22 and ↓3+19
Comments2

В чём суть проекта Moby и почему главным репозиторием Docker вдруг стал moby/moby?

Reading time5 min
Views25K
Месяц назад компания Docker на конференции DockerCon 2017 официально представила свой новый Open Source-проект — Moby. Если это просто ещё один дополнительный проект, нужный кому-то, кто работает с Docker… то почему, как заметили внимательные пользователи, основной репозиторий компании в GitHub — docker/docker — стал пересылать на moby/moby?



Забегая вперёд и заранее отвечая на вопросы разработчиков, использующих Docker как простой способ запуска приложений в контейнерах: Moby — проект не для вас. Несмотря на его появление и происходящие внутри перестановки, «внешне» (для пользователей Docker как готового продукта) ничего не изменится. А для тех, кто настроен более глубоко разобраться в этих перестановках (весьма значимых!) и, возможно, даже воспользоваться ими для решения своих задач… начну с краткого экскурса в новейшую историю развития Docker.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments7

Основы TCP/IP для будущих дилетантов

Reading time11 min
Views471K
Предположим, что вы плохо владеете сетевыми технологиями, и даже не знаете элементарных основ. Но вам поставили задачу: в быстрые сроки построить информационную сеть на небольшом предприятии. У вас нет ни времени, ни желания изучать толстые талмуды по проектированию сетей, инструкции по использованию сетевого оборудования и вникать в сетевую безопасность. И, главное, в дальнейшем у вас нет никакого желания становиться профессионалом в этой области. Тогда эта статья для вас.

Читать дальше →
Total votes 47: ↑39 and ↓8+31
Comments63

Принцип адвоката Брофловски, или облачная балансировка нагрузки своими руками

Reading time5 min
Views4.7K
Каждого представляет Джеральд Брофловски, адвокат из Саус Парка, который рассчитывает получить неплохую комиссию. Противоположную сторону каждого представляет… Джеральд Брофловски! Кажется, папу Кайла ждут нехилые бабосы независимо от исхода дела.

South Park, серия 306, «Панда—сексуальное домогательство»

Smug Alert!


Не так давно наши коллеги рассказали на конференции HighLoad++ о решении задачи балансировки нагрузки в облаках Google и Amazon, а также DNS-балансировки с использованием сервиса gdnsd. Это отличное введение в тему, с которым стоит познакомиться всем, кого жизнь уже заставила завести несколько фронтендов. И практическое руководство, если вы вынуждены иметь дело с облачным хостингом.

К счастью, бывают случаи, когда вы можете позволить себе удовольствие работать с реальным оборудованием, а не с облаками. Автор этих строк обожает реальное оборудование и готов часами рассказывать про его плюсы:
Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments17

Игры, в которых нужно писать код: Grid Garden, Elevator Saga и другие

Reading time3 min
Views138K

В детстве мы постигаем премудрости жизни через игру. Это важнейший элемент развития личности, социальных навыков, получения знаний об окружающем мире. Игры — хороший «контейнер» для донесения и закрепления каких-либо знаний. Яркий пример — игры, в которых нужно писать код. Наверняка все вы о них слышали, а в некоторые даже играли. Их первичная задача — развлечь людей, уже владеющих навыками программирования, но они могут использоваться и для обучения. Эти игры помогут освежить свои знания по тому или иному языку, отвлечься и заняться более простой алгоритмической задачей.

Total votes 72: ↑72 and ↓0+72
Comments46

OpenSSL, ssl_ciphers и nginx: прокачиваем на 100%

Reading time11 min
Views88K


Много где написано о том, как получить 100% и A+ по тесту от Qualys. При всём при том практически везде директивы ssl_ciphers и подобные даются как эдакие магические строки, которые нужно просто вставить, и надеяться, что автор не подводит вас под монастырь. Эта статья призвана исправить это недоразумение. По прочтению этой статьи директива ssl_ciphers потеряет для вас всякую магию, а ECDHE и AES будут как друзья да братья.


Также вы узнаете почему 100% по тестам — не всегда хорошо в реальности.

Читать дальше →
Total votes 66: ↑65 and ↓1+64
Comments92

Новый L4 Load Balancer с нативной реализацией SRV record service discovery и Docker API service Discovery

Reading time4 min
Views8.9K

Как все начиналось


В ходе работы с микросервисами мы неоднократно сталкивались с проблемами сервис дискавери при автоскелинге, схлопывании лишних нод.


Были перепробованы почти все решения существовавшие или существующие на данный момент, но как водится — ничего не ложилось идеально на наши динамичные окружения (десятки остановок/запусков однотипных контейнеров в час). Наиболее близкое решение было NGINX+Consul+Consul templates, но оно было некрасивым, требовало перезапуска, не давало возможности использовать внешние хелсчеки иначе как через Consul.


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

Читать дальше →
Total votes 16: ↑14 and ↓2+12
Comments19

Введение в криптографию и шифрование, часть первая. Лекция в Яндексе

Reading time20 min
Views242K
Чтобы сходу понимать материалы об инфраструктуре открытых ключей, сетевой безопасности и HTTPS, нужно знать основы криптографической теории. Один из самых быстрых способов изучить их — посмотреть или прочитать лекцию Владимира ivlad Иванова. Владимир — известный специалист по сетям и системам их защиты. Он долгое время работал в Яндексе, был одним из руководителей нашего департамента эксплуатации.


Мы впервые публикуем эту лекцию вместе с расшифровкой. Начнём с первой части. Под катом вы найдёте текст и часть слайдов.

Total votes 96: ↑92 and ↓4+88
Comments29

RubyMine 2016.3: Отладка в режиме attach, обновленная поддержка Puppet, синхронизация SDK через rsync

Reading time4 min
Views4.9K
Привет, хабравчане!

В ноябре мы анонсировали обновленные IntelliJ IDEA, CLion, PyCharm и DataGrip, а эта статья — для Ruby/Rails-разработчиков. Мы выпустили RubyMine 2016.3, заключительное обновление нашей IDE для Ruby и Rails в этом году! Обновление доступно для скачивания и бесплатного 30-дневного ознакомления на нашем сайте.


Читать дальше →
Total votes 13: ↑12 and ↓1+11
Comments14

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity