пятница, 23 декабря 2016 г.

Вьетнам меняется на глазах

      Я с одной стороны уже давно не живу во Вьетнаме, но с другой стороны довольно часто здесь бываю. И для меня разительны изменения которые происходят в этой стране. Все сказанное ниже в основном про Хошимин(Saigon).  С одной стороны количество высотных зданий в городе увеличивается катастрофически быстро. Еще пару лет назад их было буквально штук 5. Сейчас куда не посмотри - везде высотки. Я не могу назвать их небоскребами, но по 30-40 этажей есть. Количество машин увеличивается просто невероятно быстро.  Видно что люди багатеют, много новых машин премиум класса. Это все хорошо, но с другой стороны неподготовленность транспортной инфраструктуры и наплевательское отношение к правилам дорожного движения приводят город к транспортному коллапсу. Раньше большим достоинством Сайгона было то что ты мог добраться до работы на мопеде за 20 минут. Сейчас это время увеличилось в два раза. Но я думаю и это не предел. Думаю через пару-тройку лет Сайгон окончательно встанет в пробку.

Akamai sucks

     В последнее время мы отгребаем огромное количество проблем с Akamai. Казалось бы - крупнейший CDN провайдер, обслуживает гигантов индустрии. Но по факту оказывается что ребята совершенно не мониторят доступность своих сетей, практически невозможно заставить их исправить косяки на их стороне.  Я не знаю какой сервис они предоставляют в Европе/Америке, но в SEA их сервис просто отстойный. Они легко могут начать отправлять вашу статику из дата-центра в Индонезии до Америки, а потом обратно в Индонезию. Клиенты будут сутками жаловаться что статика грузится по 20 секунд а поддержка Akamai будет делать удивленные лица. Да ?? Правда что-ли ?? Вот так да... мы исправим... И через пару дней они действительно исправят это.  Иногда edge сервера Akamai вообще бывают недоступными из опредеоенных подсетей.  И очень трудно заставить их исправить подобную ситуацию. 
      Строго говоря - если ты положил свой контент в Akamai - совершенно не факт что твои клиенты вообще смогут его скачать. В общем я советую подумать три раза а нужен ли вам такой CDN провайдер. 

понедельник, 5 декабря 2016 г.

Полезные Golang-библиотечки от Uber

        Сегодня осмотрел github аккаунт Uber и нашел просто кучу полезного софта написанного на Golang и для Golang. В общем похоже в Uber прям Golang-бум случился. Кроме https://github.com/uber/go-torch про который я уже они написали:

  • https://github.com/uber/ringpop-go -  фреймворк для fault-tolerant statefull приложений. Если ты не  state-less то твоя жизнь автоматически становится намного сложнее и тебе так или иначе придется решать все те проблемы которые решены в этом фреймворке.
  • https://github.com/uber/tchannel-go  - реализация их внутреннего протокола для взаимодействия между компонентами системы
  • https://github.com/uber/terraform - форк terraform.  Плюс систем типа Ansible/Puppet в том что полно модулей написано под практически весь наиболее распространенный софт. Но в больших компаниях большая часть софта - самописная,  поэтому это преимущество сходит на нет. Гораздо важнее становится - что именно из себя представляет та или иная система управления конфигурацией.
  • https://github.com/uber/jaeger -   распределенная система для трэйсинга приложений. Они еще не до конца выложили ее в opensource, но начало уже положено.
  • https://github.com/uber-go/atomic - библиотека atomic типов с синхронизацией
  • https://github.com/uber-go/fx - Uber фреймворк для микросервисов
  • https://github.com/uber-go/ratelimit - библиотека для реализации ограничений по количеству запросов  
  • github.com/uber-go/sally не самая полезная вещь, но в хозяйстве пригодится
  • https://github.com/thriftrw/thriftrw-go Thrift encoding library for Golang
  • https://github.com/yarpc/yarpc-go - еще один RPC фреймворк
  • https://github.com/uber-go/zap - библиотека для логгирования 

пятница, 2 декабря 2016 г.

Профайлинг в Golang

       Недавно мне рассказали про https://github.com/uber/go-torch. Оказался мега-полезной штукой.  Позволяет из стандартных Golang профайлингов строить flame graph:

Еще одна приятная новость - профайлинг в Golang 1.7 практически не оказывает влияния на производительность. Я включал его на продакшен серверах среди белого дня - и даже не увидел заметного скачка в потреблении CPU.

среда, 23 ноября 2016 г.

Анекдот из моей жизни

Ребенок: Блять!
Мама: Сынок, нельзя так говорить! Это плохое слово!
Ребенок: Мама нет, блять - это когда машина не едет!
Занавес. 

вторник, 1 ноября 2016 г.

Барселона и ее окрестности

          Барселона - это парковочный ад для автомобилистов. Побывав там я понял почему у европейцев в ходу маленькие авто. Не потому что они не смогли набрать денег на большую машину - а потому что на этих узеньких улочках в маленькой машине в сто раз удобнее. Мы взяли на прокат дизельную Audi A4. Она по сравнению с другими машинами выглядила как корабль! Хер припаркуешься на ней. В результате пришлось раскошелится на подземную стоянку рядом с отелем. 

              Не буду ходить вокруг да около и рассказывать вам сказки про Гауди - самое главное зачем стоит ехать в Испанию - это за сангрией. Она тут божественна. Ничего не может буть лучше чем пяток топазов и кувшин сангрии на двоих. Ну и уж если я начал говорить про Гауди - крайне рекомендую вам взять аудио-гид когда вы будете осматривать его творения. С аудио гидом ты начинаешь совершенно по другому все понимать. 
                Творения Гауди беспорно прекрасны - но они ничто по сравнению с природными красотами каталонии. Монтсеррат оставил просто неизгладимое впечатление. Эти горы, окружающие равнины, древние здания монастыря. После этих красот дома гауди кажутся причудливо разукрашенными коробками - не и не более.



                 Также успели прокатится по нескольким маленьким городкам в окрестностях Барселоны: Sidges
Tarragona
Vilanova i La Gentru:
Скажу честно - жизнь в маленьких городках мне понравилась значительно больше чем в самой Барселоне.  Из особенностей Испании - очень много курят. Прям пипец сколько курят. Я не видел чтобы где-либо в Европе столько курили. 
          Испанский язык очень красивый. Я вообще тупой на языки, но тут я схожу выучил пару фраз и мне доставляло удовольствие произносить их. Слова очень красивые, певучие. В общем мне бы хотелось его выучить. 
            Ну и последнее что меня поразило в Испании - это фламенко. Особенно когда танцуют не где-то на сцене а прямо рядом с тобой. Ощущения непередаваемые. От артистов прямо прет энергией, страстью. В общем это нечто. Всем рекомендую посетить Tablao de Carmen. Вы проведете незабываемый вечер.


Con Dao

       Наконец-то сбылась мечта идиота - я побывал на Con Dao. В отличии от того же Фукуока этот остров гораздо более удаленный и менее развитый. Из всех моих знакомых которые уже долгие годы живут во Вьетнаме никто не бывал там.  Попасть туда можно либо по морю - 12 часов на пароме который ходит через день и в любой день может отмениться из-за капризов погоды, либо на небольших винтовых самолетах - расписание которых непостоянно а сам запас мест на таких самолетах весьма ограничен. Так или иначе но каждый раз когда я пытался спланировать свое путешествие на Con Dao - что-нибудь да не сросталось. И вот наконец-то сбылось.
       Если говорить о самом путешествии на Con Dao - то однозначно это того стоило. Это весьма специфичный остров во многом отличающийся от других курортных мест Вьетнама. Вы не найдете там массажей и баров со шлюхами. Там нет  ночных клубов.  Там есть набережная в городе с оригинальным именем Con Dao. Город Con Dao на острове Con Dao в провинции Con Dao - это очень оригинально названный город. Есть рынок небольшой,  есть два заведения с западной кухней - Infinity и Bar 200. Оба весьма не плохие, могу смело их рекомендовать. Infinity немного по дешевле будет. Ну и собственно все. По сути после закаты вы можете либо поесть либо выпить. Других вариантов нет. 
          Зато на острове есть очень чистый пляж(Bãi Đầm). Он был настолько чистым что меня это даже немного ошарашило. Чистота - это вообще не характерное для Вьетнама свойство. Но потом я понял разгадку: прилив в этом месте настолько сильный что во время прилива весь пляж уходит под воду и таким образом естественны путем "самоочищается".


Попасть на это пляж можно либо на такси либо на мотобайках.  Мотобайки можно снять прямо в отеле за 120k VND.  На острове целых три заправки, так что за бензин беспокоится не стоит. Одного бака хватит чтобы прокатится вокруг острова три раза.
         Хотя прокатится вокруг - не получится при всем желании. Дорога начинается от аэропорта и заканчивается у рыбацкой деревушки с пристанью. В той части острова где дороги нет находится заповедник в который мы не попали.
             Но зато мы еще влезли на самую высокую точку острова:
         Подъем туда начинается с тропинки между домами которая больше напоминает дорожку в деревенский сортир. Но потом она идет все круче и круче. Мы были на острове в сезон дождей, поэтому там было не многолюдно. Точнее там вообще ни души не было. Пока мы поднимались пошел дождь и стало совсем жутковато. В довершении ко всему нас покусала какая-то летающая дрянь(пчела или оса) которая может прокусывать даже одежду. В общем это было весьма болезненно. Наверху находится несколько домиков разрушенных уроганом лет 10 назад. Домики крепкие, из камней и бетона. Строили местные зеки. Кому еще в голову прийдет строить на такой высоте ? Подъем туда занимает минут 30-40, в зависимости от вашей физической формы. 
          Большая часть побережья острова является каменистой
Кроме упомянутого выше пляжа мы нашли несколько пляжей по грязнее и один закрытый пляж на котором находится пятизвездочный отель Six Senses. Еще на острове очень красивые закаты:
В общем я не могу сказать что я бы поехал туда еще раз - не потому что остров плохой, а потому что мне было бы там скучновато. Но один раз туда стоит съездить это точно. Ну и спокойный отдых на пляже - там очень даже не плохой. Очень удивила температура воды - она там очень теплая. Для острова который находится на довольно значительном удалении от материка в открытом море - я ожидал гораздо более холодной воды в это время года.
В общем если хочется потупить на пляже - то можно даже сказать что я его рекомендую:


      

суббота, 8 октября 2016 г.

Elastic Search - опыт эксплуатации

      Сейчас у нас находятся в эксплуатации несколько поисковых Elastic Search кластеров, в сумме больше 150 машин. Хочу поделится своим опытом настройки/эксплуатации этого хозяйства. 
        Выделенные master ноды - это очень важно для стабильности Elastic Search. Если в кластере нет выделенных master нод - то при перегрузке кластер рассыпается. Текущий мастер выпадает, кластер начинает выбирать новую мастер ноду, после этого начинается rebalance шард а так как ноды перегружены - они то и дело снова вылетают из кластера. Причем вылетают из кластера не всегда по своей вине. Так как master нода также обслуживает запросы - она может быть ими перегружена и просто вовремя не послать/не принять heartbeat запросы от всех остальных нод. Даже если кластер соберется вновь - он может сам собой рассыпаться из-за нагрузки генерируемой процессом перебалансировки.  В таком коматозном состоянии кластер может находится очень долго. Вплоть до нескольких часов. Лечится это только уберанием нагрузки и перезапуском всех нод. Если в кластере есть выделенные master ноды -  он в аналогичной ситуации ведет себя гораздо стабильнее. Как только search queue на рабочих нодах заполняется - они начинают игнорировать все остальные запросы. То есть те запросы для обработки которых у них не хватает ресурсов - быстро возвращаются с ошибкой. То есть даже в условиях перегрузки кластер остается полностью работоспособным и управляемым.
          Хранить какие-то данные в поисковом кластере - это плохая идея. Elastic Search это не база данных. Даже не потому что мгновенный апдейт индекса эластика - это иллюзия. Это просто абстракция которая была реализована поверх immutable solr индексов.  Даже если ваши данные не часто изменяются, и вы не собираетесь сделать Elastic Search  основным хранилищем этих данных - все равно не храните их в  Elastic Search. Поставьте рядом in-memory key-value хранилище и храните их там. Уберите из Elastic Search все данные которые не используются при выполнении поисковых запросов. При увеличении размера ElasticSearch документа в два раза производительность кластера уменьшится примерно в два раза. Поэтому уменьшение размера ElasticSearch документа - это эффективный способ оптимизации кластера. Почему так происходит ? Чтобы понять это достаточно представить как Elastic Search выполняет запросы - https://www.elastic.co/guide/en/elasticsearch/guide/current/distributed-search.html  
           Ограничьте глубину постраничной навигации. Если у вас больше миллиона документов - никакому разумному пользователю не нужно листать больше 100 страниц. Это решение во многом связано с бизнес логикой, поэтому это не всегда возможно наложить подобное ограничение. Стоимость выполнение поисковых запросов с большими номерами  страниц - на порядки выше стоимости выполнения аналогичных поисковых запросов для маленьких номеров страниц. Просто потому что для генерации результата поиска  N, вам нужно передать между нодами и отсортировать список документов размером N * [documents_per_page] * [number_of_shards].
            

среда, 5 октября 2016 г.

вторник, 27 сентября 2016 г.

The curious case of Artem Andreenko

       Недавно узнал что Артем стал всеми уважаемым ведущим подкаста посвященному языку Go а также администратором соответсвующего Slack канала. Также все посты в которых рассказывалось о "curious case of Artem Andreenko" были забанены. 
Осталась только отредактированная версия - https://medium.com/@karma.wiki/the-curious-case-of-e5d837ba5ee5#.pep3vw61w 
        Я считаю что страна должна знать своих героев, поэтому оставляю эту ссылку здесь. Я могу подтвердить что Артем вел себя аналогичным образом во время работы в компании Lazada. А именно нагло врал и на самом деле ничего не делал. 
        Не хочу ни коем образом умалить его достоинств - он очень умный человек и высоко классный инженер. Но с совестью проблемы.  
    

вторник, 20 сентября 2016 г.

DC/OS

          DC/OS - datacenter operating system, это по сути пристройка к Mesos, которая пытается сделать ее более применимой практически. До недавнего времени Mesos был практически единственным open source инструментом подобного рода и для реального использования требовал хорошей доработки напильником. Ребята из mesosphere (продавец DC/OS) написали к Mesos обертку под названием Marathone, которая умеет запускать Docker контейнеры. По сути это такой Kubernetes подключаемый к Mesos, который выполняет роль глобального планировщика.  После детального ознакомления он производит впечатление очень сырого продукта, создатели приподносят все слишком радужно. Облако волшебное, хочешь мускуль запустит, хочешь - постгрю. В жизни так не бывает. У меня осталось стойкое ощущение что меня хотят наебать. 
          После того как я узнал что внутри MarafonLB находится HA-proxy + python script я понял что дальше мне слушать уже не интересно. С Kubernetes он рядом не лежал. Единственный плюс - он Java-friendly. Написан на Scala, это гораздо удобнее чем Go для компаний использующих Java стэк.

Отели в USA

     Для меня остается загадкой почему в USA все отели - это такое говно ?? Ребята, они все ущербные. Причем я останавливаюсь не в дешевых отелях. Не в Хилтоне конечно, но и по рейтингам и по цене - они очень не плохие. 300-400 баксов за ночь. Но при таких ценах меня каждый раз шокирует уровень предоставляемого сервиса. Он ниже плинтуса.   
        Номера очень сильно поношенные, кондей шумит как дизель-генератор. Причем по нему видно что он весьма почтенного возраста.  В номере очень часто нет даже таких банальных вещей как шампунь. И это впечатление не по одному отелю а минимум по 4-м. То есть это не я такой невезучий, тут в принципе уровень отельного сервиса такой. 
          Отдельная тема - это завтраки. Они просто уебищьные. Во всех странах в которых я бывал - они лучше. Причем на порядок. В юго-восточной Азии, в Сингапуре, во Вьетнаме. И что самое херовое - они к этому привыкли. Они считают что так и должно быть, что завтрак должен быть хуевым - потому что он бесплатный. Я теперь понимаю почему оценки отелям данные американскими туристами зачастую неадекватны. То что американец поставил какому-то отелю 10 из 10 - это вообще ничего не значит. Возможно он просто  в первый раз увидел отель в котором завтраки не отвратные, а номер убирают раз в сутки -и не продают эту услугу за кучу бабла как Extra Cleaning Service 

New York

         Побывал в New York, исполнил давнюю мечту. В общем очень грязный, неуютный город. Навевает абсолютный пессимизм. В каждом месте где мне удается побывать я пытаюсь прочувствовать атмосферу. Атмосфера NY давит, гнетет. Чувство аггресии придавленное законом - вот это NY.  Даже фонари - какие-то тусклые, как будто из совсем нет.  Сейчас я понял откуда берется вот эта атмосфера темных,  едва освещенных улиц - в играх/фильмах. Эту атмосферу пишут с NY. Я живу сейчас на Манхеттене, Таймсквер буквально в 500 метрах. Это не где-то там в захолустьях. Но тут реально темно. Даже такая простая вещь - как фонари. Неужели нельзя нормальные фонари поставить ?? Как в Сингапуре, как Москве, да блин в моем родном Ульяновске с освещением и то на порядок лучше дела обстоят!    

вторник, 9 августа 2016 г.

MySQL tools

      Немного полезного в копилку MySQL DBA:

  • http://githubengineering.com/gh-ost-github-s-online-migration-tool-for-mysql/ инструмент для online schema changes. В отличии от остальных инструментов подобного рода не использует триггеры. Вместо этого он подключается к серверу как slave, слушает все изменения в изменяемой табличке и применяет их к ghost-табличке.  
  • https://www.percona.com/doc/percona-monitoring-and-management/index.html Перкона сделала очень неплохую специализированную систему мониторинга для MySQL. Внутри Prometheus, Graphana, consul + плюс кастомные агенты для сбора метрик MySQL,  сбора и аггрегирования slow logs. Так же поддерживает MongoDB. Мы активно используем для мониторинга мускуля, очень рекомендую. 

понедельник, 8 августа 2016 г.

Интересное чтиво

     Хочу поделится интересными книгами/статьями которые я прочитал в последнее время и которые показались мне интересными.

  • Site Reliability Engineering: How Google Runs Production Systems. Это книга оказала на меня огромное влияние. Всем кто занимается тем что - "делает так чтобы работало и чтобы не падало" - обязательно к прочтению. https://dmytrish.net/lib/srebook/ 
  • https://blog.twitch.tv/gos-march-to-low-latency-gc-a6fa96f06eb7#.m9sxd09g6 Интересная статья про то как работает GC в Golang
  • http://machinezone.github.io/research/networking-solutions-for-kubernetes/  Сравнение различных способов организации сети в Kubernetes кластере. Для меня больший интерес представляет не само сравнение а:
    • Методика проведения исследования. Это действительно исследование а не тупой бенчмарк/писькомерка
    • Методика настройки сетевого стека
    • Ссылки на источники/документацию. Мне показались весьма полезными.

среда, 29 июня 2016 г.

Работа палача

      Что больше всего ненавижу в своей работе - это увольнять людей. Те кто никогда этого не делал - никогда не поймут насколько тяжело принимать такие решения. Еще тяжелее объявлять людям о том что они уволены. Я думаю что увольнять это даже тяжелее чем быть уволенным. Конечно наверняка найдутся люди которые с этим не согласятся, возможно кто-то даже получает удовольствие от увольнений но я думаю таким людям надо сходить к психологу/психиатру.

суббота, 21 мая 2016 г.

Китай

      Не так давно вернулся из Китая. Что я могу сказать - это вообще другая вселенная. Сказать что я поражен - значит не сказать ничего. До этой поездки я представить не мог что люди могут жить настолько изолировано, настолько обособленно. Да, у них не северная корея - но что-то весьма похожее.  
    Собственные поисковые системы, собственные карты, собственные e-commerce гиганты которые по своему GMV(обороту) больше чем Amazon, e-bay, и прочий e-commerce вместе взятые. То что мы считаем глобальными e-commerce игроками на самом деле по сравнению с китайскими компаниями смотрятся не слишком серьезно. Baidu оказался очень прикольным поисковиком с кучей интересных фишек. Но с одним ньюансом - у него нет английского интерфейса. Я не поверю что у baidu нет ресурсов чтобы сделать английский перевод для их продуктов. Им просто нахер это не нужно.  В стране существует куча мессенджеров. Некоторые концепции реализованные в них очень интересные. Я ничего такого не видел в What'sApp и телеграмм. Но опять - они все исключительно на китайском. 
        Добавьте ко всему этому великий китайский файрвол - и вы поймете степень моего отчаяния. Гугл, Gmail, instagram, и куча других сервисов просто заблокированы. Я понял наконец-то чем кормятся эти бесчисленные конторы продающие VPN. Китайцами кормятся. Или теми кто там временно находится. Великий китайский VPN - это ответ на появление великого китайского файрвола. Надо отметить что качество VPN оставляет желать лучшего. Из трех купленных  VPN только один работал нормально. 
          Отдельный лучик поноса в адрес Мегафона.  Почему-то именно для Китая у них особые правила включения роуминга. Чтобы включить китайский роуминг нужно заранее приехать лично в их офис с паспортом. Дистанционно никак не включишь. А узнаешь ты об этом как правило уже по прилету в  Beiging. 
      О том что  Пекин на самом деле не Пекин, а Beiging я узнал тоже по прилету. В общем сплошные открытия.  Также прилетев туда ты понимаешь что дешево и говно это уже давно не про Китай. Хотя нет, в говно по прежнему легко можно вляпаться - но это будет не дешево. Не как в Сингапуре конечно, но все же. Цены там теперь вполне себе. Хотя если по дальше от центра по местечкам для местных ходить - можно по дешевле что-то найти. Но это весьма нетривиальная задача. Ведь никто не говорит по английски. Ну от слова вообще. Даже Yes и No не говорят. 
          Немного про работу. Работают китайские коллеги много. Часов по 12 в день обязательно. А то и больше. Но это не считается переработкой. Скорее обычным делом. Но в тоже время эффективность этой работы по моему мнению ниже чем у наших программистов. У китайцев принято что в обед ты можешь поспать на рабочем месте. То есть чистого рабочего времени у  них не сильно больше чем у нас. Но с точки зрения статистики - да, они работают (точнее присутсвуют в офисе) от зари до зари. Даже среди программистов процент владения англиским языком очень низкий. Так что иногда в коде можно встретить имена функция/переменных написанные на китайском языке.  В общем будущее обещает быть интересным.
        

пятница, 13 мая 2016 г.

Израиль

       Недавно вернулся из отпуска, проведённого в Израиле. Впечатления очень скомканные. С одной стороны я был поражён Иерусалимом, его улочками, его древностями и христианскими святынями. С другой стороны: моя жена которая до этого не проявляла никаких антисемитских наклонностей, вернулась из этого отпуска ярой антисемиткой. Выводы делайте сами.
     Кошерная еда явно на любителя, и к сожалению наши дети не относились к числу любителей кошерной еды. Так что каждый вечер мы отправлялись на поиски некошерной еды. Найти её в религиозном Иерусалиме не так просто. Всем кто остановился в районе улицы Яффо могу порекомендовать Грузинский ресторан Kangaroo. Огромные порции и изумительно вкусная еда. Минусы: он не дешевый. Как впрочем и все в Израиле. Надо прямо сказать -  Израиль это ни разу не дёшево.
        Ещё из позитивного: очень хорошее отношение к детям и людям с маленькими детьми. Нас везде пропускали без очереди. В аэропортах обустроены игровые комнаты.
     Кроме Иерусалима мы были в Эйлате. Сразу по приезду нас шокировал контраст между религиозным Иерусалимом и курортным Эйлатом. Абсолютно разные города. Остановились в 5-ти звездочном отеле но и там все только кошерное. Просто бесит. Неужели трудно понять - если ты приехал в Израиль в отпуск - это совершенно не означает что ты решил принять иудаизм. Всегда должен быть выбор. Но тут считают иначе. И похеру сколько K баксов ты за это заплатил.
        То что в шабат ничего не работает просто вымораживает. Просто жизнь останавливается. У нас с утра первого января больше всего работает в нормальном режиме чем в Израиле в шабат.