суббота, 15 февраля 2014 г.

Docker

   Последние 2 недели играюсь с Docker. Охеренная штука оказалась... не без изъянов конечно.  Итак если в кратце, плюсы Docker:
1. Docker реально очень быстрый. Виртуальные машины просто на порядок медленнее.
2. Docker простой - если почитать документацию то все в принципе логично и понятно.
3. Docker очень быстро развивается
Из недостатков:
1. Есть некоторые косяки. Lxc сам по себе не верх стабильности, а тут еще и Docker своих багов добавляет. Хотя они честно пишут об этих багах и даже в документации есть ссылки на тикеты с багами.
2. Средства связывания находятся в состоянии зародыша. Контайнеры нельзя линковать друг к другу динамически, шары(volume) нельзя изменять динамически. Получается ситуация - да, ты можешь реально быстро распихать компоненты по контейнерам, запускать их на любой машине - но задача связывания этих компонентов не решена совсем. Ведь для построения работающей системы нужно чтобы эти компоненты знали друг о друге. Вот у тебя есть компонент - база данных, а куда к ней коннектится ? IP адреса-то динамические ?? Если бы они внутри Docker реализовали discovery сервис - цены бы ему не было. Но сейчас мы имеем ровно 2 варианта:
1. Если  оба контейнера находятся внутри одного  физического сервера, то ты можешь связать их при помощи опции link. Но опять же - ее нельзя задать для уже запущенного контейнера. И этот способ не работает когдя нужно связать компоненты, находящиеся на разных физических серверах.
2. Использовать сторонние discovery сервисы:
 - SkyDNS
 - Discoverd
 - Etcd
 - Serf
В общем для рельной работы с Docker нужно использовать один из этих сервисов. Все эти link - выглядят как костыли. Строить свое live окружение на костылях - себе дороже будет.

четверг, 13 февраля 2014 г.

Про Украину

   Хотя и живу во Вьетнаме - но меня эта котовасия не обошла стороной. Просто у нас есть несколько коллег из тех краев: двое из Львовской области, один из Харьковской. И мнения у них диаметрально противоположные. В итоге они с москалями больше общаются чем друг с другом. 
     Это наводит на определенные мысли. С одной стороны когда ты видиш как львовчане душой болеют за революцию - проникаешся уважением. Они любят свою родину, и это само по себе достойно уважения. А наши же наоборот - "гребаная рашка",  да еще про поросенка петр вспомнят. Прям противно от этого. Почему у русских такая ненависть и презрение к России ? Неужели украина настолько охеренная, что они ее так любят ? нет, не думаю. Они просто любят свою родину, а мы нет. Позор нам в общем.
     Что касается самой революции - то мое мнение о ней строго негативное. Хорошо если она закончится также мирно как оранжевая революция. А если нет ? Просто уже сейчас им похеру на закон. Для них единственный закон - это закон революции. Очень напоминает 1917 год...  тогда тоже интелигенция задумала маленькую революцию, чтобы свергнуть царскую власть и быстренько установить парламентскую форму правления. Но что случилось в результате ? через пол года анархии - их также свергли - как до этого свергли царскую власть. И они все вместе бежали за границу - вместе с царским двором, который они свергли с власти... а страна погрузилась в пучину анархии на 3 последующих года...  потом пришел к власти Сталин - и расстрелял всех тех людей, которые когда-то творили эту революцию...  Еще задолго до этого французы поняли одну историческую закономерность - революция пожирает своих детей
       Все те люди которые которые стояли у руля французской революции - были убиты своими же соратниками. То же самое случилось с советскими революционерами - они все были расстреляны в 30-х годах. Неужели люди которые сейчас стоят на майдане не понимают что в лучшем случае их предадут свои же политики. В худшем - революция пойдет по Украине и после ее "победы" их пустят под нож их собственные товарищи.

среда, 12 февраля 2014 г.

Из личного

      Семейная жизнь дает о себе знать: времени на блог совершенно не остается. Надо как-нибуть заставить себя дописать про наш круиз двухмесячной давности.  Не так давно у нас был новый год по лунному календарю. У вьетнамцев он называется Тет. На время тета - практически все заведения во Вьетнаме закрыты. Это конечно зависит от города - в Сайгоне практически ничего не работало,  в Нячанге - куда мы ездили на весь тет, все было закрыто только 1-2 дня... потом все открылось. На самом деле хуже времени для посещения вьетнама не придумаешь - везде толпы местных туристов (вьетнамцы приехавшие к своей родне), толпы китайцев и других азиатов. Вместе с туристами на промысел приезжают и воришки - сайгонские профи передают мастерство местным мудакам,  так что нужно быть в двойне осторожным. Вода в Нячанге в это время прохладненькая... купаться можно конечно - но не комфортно... ни в какое сравнение не идет с тем что было в сентябре, когда я приезжал в Нячанг в первый раз. Что еще не понравилось по сравнению с сентябрем - это то что сильно дофига людей. Очень много русских - такое впечатление что в Крым приехал.  Мы привыкли говорить на русском и думать что нас никто из окружающих не понимает... тяжело было привыкнуть к тому что многие вокруг говорят по русски.
      Почти весь отпуск не вылезали из ресторана - Парк Горького. Все очень вкусно... может быть за исключением вьетнамской кухни... ее лучше пробовать во вьетнаских забегаловках... Еще отличное заведение - бар Crazy frog... душевное такое место... правда я не понимаю зачем туда идут люди которые приехали во вьетнам на 10 дней...  Это у нас - от одного запаха борща ломка начинается...  а туристам-то чего там делать ? В общем Парк Горького был полон практически каждый день. Еще есть одно хорошее заведение для любителей русской кухни - ресторанчик под названием "CCCР". Дешевле чем в Парке Горького, но все довольно вкусно и быстро.  
       Еще одно место, которое нужно обязательно посетить в Нячанге - это бар на крыше отеля Sheraton. Там такой вид, что аж дух захватывает:


Что еще хочется сказать про Нячанг - тут нет хороших пекарен. В Сайгоне их куча, и по ценам они гораздо дешевле и по качеству - на голову выше. В Нячанге нашли две - и те полудохлые, зато цены на все - от 50 тысяч. Вообще 50 нормальная цена - но не за малюсеький чизкейк... В общем нам не хватало наших Сайгонски пекарен.
      Ездили на одну экскурсию - на водопады Янбей... посмотреть - прикольно, купаться - холодно... так ноги помочили - и назад. Хотя в округе красиво. Что очень порадовало - это термальные источники... полежать в каменной ванной с горячей водой, любуясь при этом на горный пейзаж - это ли не отдых... 







Туристическая компания - ЭРА- МИР Навигатор. Они нам долго объясняли почему такое название, но я это пропустил мимо ушей. В общем отличные ребята.. знают подход к русским туристам - в тур с собой берут местный ром+вино+колу+ фрукты. В общем местный ром очень помогал скрашивать те участки экскурсии, которые были скучноваты для меня.
    Иногда в Нячанге чувствуется что русских туристов тут прям очень много... даже местных они начинают доставать:

а на этой белой табличке:
Вообще Нячанг очень хорошее место, даже в феврале:


На почитать

1. Operating Systems: Three Easy Pieces  онлайн книга по операционным системам
2. https://code.google.com/p/leveldb-go/ - это не то чтобы книга... просто реализация LevelDB на Go. Надо будет почитать исходники на досуге.
3. http://www.1024cores.net/home/in-russian/o-lock-free-algoritmah-bonus отличная статья о Lock-free алгоритмах от Дмитрия Вьюкова, который сейчас также работает над Go :-) Вообще надо бедет найти время и прочитать остальные статьи на его сайте
4. https://code.google.com/p/tungsten-replicator/  3-d party репликатор для MySQL. Возможно и пригодится в хозяйстве.
5. https://github.com/greenlion/swanhart-tools  набор MySQL инструментов от одного из сотрудников Percona
6. http://www.mysqlperformanceblog.com/2013/03/06/accessing-xtradb-cluster-nodes-in-parallel-from-php-using-mysql-asynchronous-calls/ Вадим Ткаченко объясняет как можно из PHP выполнять паралельные запросы к MySQL

пятница, 10 января 2014 г.

MS SQL сервер

    В прошлом посте я много всего написал про Microsoft, и в основном все не очень хорошее. Но на самом деле это не так. Он просто другой, он просто очень сильно отличается от open source RDBMS с которыми я раньше имел дело. Если образно сравнивать MS SQL с MySQL, то MySQL это как советская армейская машина - типа УАЗ. Относительно простая, все настройки хорошо документированы - но чтобы из изменить нужно лезть в конфиг. В принципе если его прокачать и правильно использовать - то он умеет все то же что умеет MS SQL, но все это разбросано по разным местам и требует тщательной подгонки друг к другу. MS SQL - это как иномарка среднего класса, с автоматической коробкой передач. У тебя есть некоторое количество настроек, аккуратно выведенных на переднюю панель. Ты даже можешь управлять работой MS SQL, но на очень простом уровне. Что-то типа  - переключить коробку в режим "спорт" (OLTP ) или езда по бездорожью с прицепом (OLAP). Правда на самом деле под капотом есть куча  скрытых настроек(а-ля блок управления двигателем), совершенно не документированных, но которые вы можете менять через редактирования ini файлов, но уже на свой страх  и риск. В обем самое то - для комфортной езды сертифицированных админов.
        На последок пару полезных ссылок про MS-SQL Server:
1. http://technet.microsoft.com/en-us/library/hh231298.aspx - детальная информация по конфигурирования MS SQL сервера. Ввиду общей убогости документации Microsoft, найти этот источник удалось далеко не сразу.
2.  http://technet.microsoft.com/en-us/library/hh230806.aspx - информация по настройке Analysis Services. Для тех кто не в курсе - Analysis Services - это как бы реинкорнация MS SQL в теле OLAP
3. Hardware Sizing a Tabular Solution (SQL Server Analysis Services) - о том как рассчитывать требуемый размер RAM для нормальной работы Tabular Models.
5.  http://technet.microsoft.com/en-us/library/cc280449.aspx - про сжатие данных в MS SQL

Go Lang

Вчера нашел одно место в стандартной библиотеке Go( а именно в пакете database/sql), которое можно бы прооптимизировать. Зарепортил им Issue 7086, думал сейчас патч пришлю. Хер там был. Через 2 часа его прокомментировал Дмитрий Вьюков, сегодня с утра Bradfitz уже прислал патч. Оперативно работают ребята, что тут скажешь. Молодцы! В общем решил что перейду на девелоперскую версию - хватит на релизах сидеть.

среда, 8 января 2014 г.

Про данные, много данных. Или просто DWH

         Раньше мне как-то не приходилось сталкиваться в плотную с Data warehouse. Все с OLTP базами работал,  и прямо скажем OLAP не вызывал  у меня особого интереса.  Но не так давно на голову мне свалился DWH, один из двух наших DWH.  Тот что сделан на соплях. Так что пришлось с разбега окунуться во все это.  
          В общем новый анекдот от Microsoft: in-memory data warehouse. Они похоже реально верят что оперативка является бесконечным ресурсом. И очень дешевым. В MS SQL Server 2012 они всячески продвигают свое новое решение - tabular modeling. Если в кратце - это новый тип моделей, которые работают на  xVelocity(VertiPaq) analytics engine. Они называют его предметом искуства (дословно: state of art), изредка при этом упоминая что это IN MEMORY SOLUTION.  Справшивается - зачем строить решения для бизнес аналитики на in-memory движке ?  У вас в DWH полтора гига данных ?? или может быть целых два ??? По моему DWH это минимум пол терабайта данных. Если у вас их меньше - держите их в OLTP базе и не трахайте мозг себе и другим. Вам больше не нужен DWH. 
          Но когда построением DWH занимаются "менеджеры" они легко ведутся на этот маркетинг.  И компания оказывается в заложниках MS решений, и вынуждена покупать сервера с сотнями гигабайт оперативной памяти, просто для того чтобы все днные туда поместились. Иначе все - перестанет работать игрушка для MD.  Но кто-нибуть подумал что данные в DWH добавляются быстрее чем 64 килобайта в год, как об этом думают в Microsoft.
                Но даже если вы выберете другой тип моделей - multidimensional models или tabular models in DirectQuery mode - не все так хорошо как вы думаете.  Вы все равно остаетесь в заложниках одного сервера.  MS SQL это  SMP решение, и без танцев с бубнами вы не сможете распределить данные по нескольким серверам. Это значит что масштабироваться вы все равно сможете только вертикально - покупать все более и более дорогие сервера. Скажем до 10TB вы сможете держать на одном MS SQL instance, но потом ценник на сервера улетит в небеса. Вообще у Microsoft есть ответ и в этом случай - PWD, Parallel Data Warehouse. Но это уже совсем другие деньги, так сказать.  Хотя они и считают его бюджетным - по сравнению с Oracle Exadata, Teradata - оно конечно выглядит бюджетным, но вообще ценник кусается. 
             А выше идут специализированные аапаратно-программные решения от Oracle, IBM и узко специализированных вендоров. В решениях такого класса самые ресурсоемкие операции - типа сжатия/распаковки данных и маршрутизации данных между нодами реализованы в железе, на FPGA.  Естественно никакая софтовая реализация по скорости с FPGA тягаться не может.
           Но самое парадоксальное что я выяснил - есть open source решения которые могут  успешно конкурировать с решениями от Microsoft/Oracle/Teradata практически во всех сегментах, кроме последнего. Это Hadoop. Бесплатное, работает на дешевых серверах - бери и ездий. Для статистического анализа можно использовать язык R, который стал де-факто стандартом для статистов.  Единственное - runtime для R, который поддерживает параллельную обработку данных в Hadoop является проприетарным. Но я думаю там ценник совсем другого уровня, по сравнения с Oracle/Microsoft.