<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Insight IT</title><link>https://www.insight-it.ru/</link><description></description><atom:link href="https://www.insight-it.ru/tag/git/feed/index.xml" rel="self"></atom:link><lastBuildDate>Sat, 30 May 2015 20:10:00 +0300</lastBuildDate><item><title>Реинкарнация сайта</title><link>https://www.insight-it.ru//misc/2015/reinkarnatsiia-saita/</link><description>&lt;p&gt;После, пожалуй, самого длительного периода без обновлений в истории &lt;strong class="trebuchet"&gt;Insight&amp;nbsp;IT&lt;/strong&gt;, сайт прошел через "реинкарнацию" - был переделан с нуля, сохранен лишь контент. Этого сложно не заметить, если Вы здесь не впервые. Желающих получить ответы на вопросы в духе "как так?", "зачем?", "что поменялось?" и "что дальше?" - прошу читать далее.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id="kak-tak"&gt;Как так?&lt;/h2&gt;
&lt;p&gt;Многие годы, занимаясь &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt;, я совмещал приятное с полезным: по большому счёту оставаясь просто хобби, сайт помогал мне знакомиться с будущими партнерами, клиентами, коллегами, что долгое время позволяло мне обходиться без стабильного источника дохода. Когда я в итоге "сдался" и пошел работать в крупную компанию за зарплату - эта дополнительная ценность стала менее значимой. Во многом из-за этого здесь нельзя найти ни одной записи датированной прошлым годом (хотя есть и другие причины, конечно, но об этом в заключении).&lt;/p&gt;
&lt;h2 id="zachem"&gt;Зачем?&lt;/h2&gt;
&lt;p&gt;Резонный вопрос - зачем вкладывать столько сил, чтобы всё переделать на в заброшенном сайте? Началось всё со спортивного интереса: я начал замечать, что постепенно теряю хватку в мирах opensource и веб-разработки. В Яндексе вокруг меня по большей части разный backend внутренней разработки. Кандидат для экспериментов в лице &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; нашелся быстро, что из этого получилось - в следующем разделе.&lt;/p&gt;
&lt;h2 id="chto-pomenialos"&gt;Что поменялось?&lt;/h2&gt;
&lt;h3 id="rip-wordpress"&gt;R.I.P. WordPress&lt;/h3&gt;
&lt;p&gt;Первые 6 c половиной лет своего существования &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; проработал на &lt;a href="/tag/wordpress/"&gt;WordPress&lt;/a&gt; в качестве &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt;. С пьедестала самой популярной &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt; в мире, насколько я знаю, за всё это время WordPress так никто и не сместил. Думаю, в первую очередь благодаря крайне простому в использовании интерфейсу для управления сайтом, а во вторую - выдающемуся ассортименту плагинов и тем. Плюс имевший место в 2008-м акцент на блоги отходит в сторону, сейчас на нем какие только сайты не делают.&lt;/p&gt;
&lt;p&gt;Но за &lt;del&gt;красоту&lt;/del&gt; простоту приходится платить:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;abbr title="What You See Is What You Get"&gt;WYSIWYG&lt;/abbr&gt; редактор создает верстку сомнительного качества,&lt;/li&gt;
&lt;li&gt;При установке большого числа плагинов и без того далёкая от идеала производительность становится невыносимой,&lt;/li&gt;
&lt;li&gt;У всех компонентов разные разработчики и релизные циклы, постоянно нужно следить за совместимостью, регулярно накатывать обновления как минимум по части безопасности, после обновлений часто всё ломается.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Вопрос с производительностью решается агрессивным кешированием и клиентской оптимизацией. Не раз занимался этим для других сайтов, в том числе и на WordPress, но для некоммерческого проекта не понятно как оправдать трудозатраты на изначальную настройку и поддержание этого всего в рабочем состоянии. Зачастую плагины разрабатываются без оглядки на то, что, например, &lt;a href="/tag/javascript/"&gt;JavaScript&lt;/a&gt;-библиотека, от которой они зависят, может быть ещё не быть загружена и пытаются ей пользоваться в распечатанном прямо вперемешку с HTML JavaScript, что даже само по себе плохо, а с перенесенными вниз зависимостями и вовсе не работает.&lt;/p&gt;
&lt;p&gt;Верстку тоже можно "чинить" через текстовый режим редактора, но такие правки имеют обыкновение пропадать после любого изменения в визуальном режиме, что крайне надоедает.&lt;/p&gt;
&lt;p&gt;Уже в 2009-м минусы WordPress для меня начали перевешивать плюсы. Тогда достойной альтернативы, увы, не нашлось и всё осталось как есть. Но не в этот раз.&lt;/p&gt;
&lt;h3 id="staticheskie-saity"&gt;Статические сайты&lt;/h3&gt;
&lt;p&gt;Несколько лет назад начал набирать популярность подход с &lt;strong&gt;генерацией статических сайтов&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Вместо хранения в базе данных статьи и другой контент приравнивается к исходному коду, то есть:&lt;ul&gt;
&lt;li&gt;Хранятся в системе контроля версий в виде файлов в специализированном формате (как правило, &lt;a href="https://www.insight-it.ru/goto/4eefcf89/" rel="nofollow" target="_blank" title="https://ru.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt; или ReStructured Text), который удобен для написания человеко-читаемых текстов и однозначно преобразовывается в чистый, валидный, HTML.&lt;/li&gt;
&lt;li&gt;Пишутся в текстовых редакторах, ориентированных на разработчиков, с подсветкой синтаксиса, автодополнением и т.п.&lt;/li&gt;
&lt;li&gt;При необходимости легко начать использовать общепринятые инструменты для работы с кодом, в том числе совместной (ревью кода, ветвление, непрерывная интеграция, отслеживание проблем).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;С помощью &lt;code&gt;make&lt;/code&gt; или аналога сайт собирается примерно так же, как это делала бы программа на &lt;a href="/tag/c/"&gt;C++&lt;/a&gt;:&lt;ul&gt;
&lt;li&gt;Создается output директория с будущим результатом.&lt;/li&gt;
&lt;li&gt;В ней генерируются все страницы сайта - для статей с помощью шаблонизатора добавляется вся необходимая HTML-обвязка, а навигационные страницы (по категориям и тегам, с по-страничным выводом) создаются с нуля, тоже по шаблону.&lt;/li&gt;
&lt;li&gt;Весь клиентский код на JavaScript и CSS, а также статические файлы вроде изображений, группируются и прогоняются через разные фильтры для уменьшения количества файлов и их размеров.&lt;/li&gt;
&lt;li&gt;Внутренние ссылки в исходном коде как правило реализованы по путям в локальной файловой системе, а как они будут выглядеть в итоговом сайте конфигурируется и тоже применяется при сборке.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;В итоге, чтобы посмотреть на результат в браузере подойдет любой веб-сервер, умеющий отдавать статические файлы из папки, то есть совсем любой за вычетом специализированных.&lt;/li&gt;
&lt;li&gt;Как легко такую папочку кешировать на всех уровнях, а также как быстро и дешево можно такой сайт показывать пользователям, рассказывать, думаю, не нужно.&lt;/li&gt;
&lt;li&gt;Но у отсутствия динамической серверной логики есть и минусы:&lt;ul&gt;
&lt;li&gt;&lt;del&gt;Тоска по гламурной админке WordPress.&lt;/del&gt;&lt;/li&gt;
&lt;li&gt;Для реализации некоторого функционала &lt;em&gt;(в нашем случае - комментариев и поиска по сайту)&lt;/em&gt; требуется как-то изворачиваться, возможные варианты:&lt;ul&gt;
&lt;li&gt;Воспользоваться сторонним сервисом - &lt;a href="/tag/disqus/"&gt;Disqus&lt;/a&gt; уже использовался и раньше, а обе лидирующие поисковые системы предоставляют сервис поиска по конкретному сайту, так что я пошел по этому пути).&lt;/li&gt;
&lt;li&gt;Поселить рядом с кучей статики какой-о набор скриптов, но не очень понятно как их интегрировать с системой сборки сайта, которая по сути выполняет роль &lt;abbr title="Content Management System"&gt;CMS&lt;/abbr&gt;.&lt;/li&gt;
&lt;li&gt;Реализовать его на JavaScript - скажем для поиска по сайту можно при сборке сложить весь контент в один большой JSON, и искать по нему уже на клиенте. Но я решил пожалеть пользователей с долгоиграющими ноутбуками, особенно новых без вентиляторов. Раньше ещё можно было пожалеть владельцев смартфонов, но когда их стали делать восьми-ядерными...&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Время, которое технически необходимо для публикации нового контента или изменений в шаблонах, начинает зависеть от размера самого сайта - не смотря на попытки реализовать кеширование при сборке, многие изменения требуют перегенерации примерно всего сайта.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;И, напоследок, ввиду низкой серверной ресурсоемкости таких сайтов, для него легко найти качественный хостинг бесплатно.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Взвесив "за" и "против", я решил, что для &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; такой вариант очень даже подходит. Осталось выбрать конкретную реализацию такой системы сборки сайта.&lt;/p&gt;
&lt;p&gt;Первопроходцем и лидером рынка здесь является &lt;a href="https://www.insight-it.ru/goto/d9898f57/" rel="nofollow" target="_blank" title="http://jekyllrb.com/"&gt;Jekyll&lt;/a&gt;. Всем хорош, очень много кем используется, масса тем и плагинов. Но один субъективный минус поставил на нём лично для меня крест - &lt;a href="/tag/ruby/"&gt;Ruby&lt;/a&gt;. Вот тошнит меня от его синтаксиса и всё.&lt;/p&gt;
&lt;p&gt;Был вариант, конечно, закрыть на это глаза и не лезть вглубь, а просто собрать сайт из готовых компонентов, но опыт подсказывает, что без напильника нынче ничего не взлетает.&lt;/p&gt;
&lt;p&gt;Подходящую альтернативу искать долго не пришлось: выбор пал на &lt;a href="https://www.insight-it.ru/goto/f5099f2a/" rel="nofollow" target="_blank" title="http://getpelican.com"&gt;Pelican&lt;/a&gt;, практически единственный вариант на &lt;a href="/tag/python/"&gt;Python&lt;/a&gt;. Готовых плагинов у него не так много, но самое основное есть, а недостающее мне определенно было не сложно допилить, благо с экосистемой Python я тесно знаком. В качестве шаблонизатора используется &lt;a href="/tag/jinja2/"&gt;Jinja2&lt;/a&gt;, лучше которого я по-прежнему ничего не видел. Про сам перенос сайта можно написать отдельный пост, и не один, что я надеюсь и сделаю в скором будущем, так что здесь эту тему дальше развивать не буду.&lt;/p&gt;
&lt;h3 id="https"&gt;https://&lt;/h3&gt;
&lt;p&gt;Как при желании можно было заметить, &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; уже много лет живет за &lt;a href="https://www.insight-it.ru/goto/26a5858d/" rel="nofollow" target="_blank" title="https://www.cloudflare.com/"&gt;CloudFlare&lt;/a&gt; - многофункциональной распределенной прокси, выполняющей роль &lt;abbr title="Content Delivery Network"&gt;CDN&lt;/abbr&gt;, &lt;abbr title="Domain Name System"&gt;DNS&lt;/abbr&gt;,защиты от разного рода атак и многого другого. Изначально поддержка &lt;abbr title="Secure Sockets Layer"&gt;SSL&lt;/abbr&gt; была доступна только на платном тарифе, который некоммерческому проекту был ни к чему, но с недавних пор это стало не так и я за компанию решил перейти на &lt;code&gt;https://&lt;/code&gt;, раз уж всё равно все внутренние ссылки переехали. Плюсы не критичны, но всё же есть:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Само отображение защищенного соединения в адресной строке браузеров внушает уверенность если не всем, то какой-то части посетителей&lt;/li&gt;
&lt;li&gt;Поддержка современных протоколов в лице SPDY и, вероятно, со временем HTTP/2.0&lt;/li&gt;
&lt;li&gt;Говорят, использование защищенного соединения положительно сказывается на репутации сайта в глазах как минимум поиска Google&lt;/li&gt;
&lt;li&gt;Владельцы публичных WiFi точек не могут показывать свою рекламу на сайте&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Основной минус - дополнительные накладные расходы на инициализацию соединения и, собственно, шифрование, но как правило это не особо критично.&lt;/p&gt;
&lt;p&gt;К слову, стоявший за CloudFlare простенький &lt;abbr title="Virtual Private Server"&gt;VPS&lt;/abbr&gt; тоже заменен, на наиболее популярный среди хостингов статичных сайтов &lt;a href="https://www.insight-it.ru/goto/e7e0e370/" rel="nofollow" target="_blank" title="https://pages.github.com/"&gt;GitHub Pages&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id="kontent"&gt;Контент&lt;/h3&gt;
&lt;p&gt;В состав Pelican входит инструмент для конвертации статей из XML-формата WordPress в Markdown, которым я и воспользоваться. Большую часть работы он сделал, но всё равно потребовался ручной просмотр и адаптация всех страниц сайта. Это заняло уйму времени, но в целом того стоило:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Везде причёсан HTML, во многом благодаря &lt;a href="/tag/markdown/"&gt;Markdown&lt;/a&gt;; лучше оформлены изображения и врезки, ещё раз проверены опечатки.&lt;/li&gt;
&lt;li&gt;Исторически статьи раскладывались по рубрикам по мере написания, по-этому общая структура сайта была хаотичной. Теперь разбил их на категории по-другому, на этот раз, надеюсь, более логичным образом.&lt;/li&gt;
&lt;li&gt;Пока перечитывал осознал, что значительная часть контента морально устарела и годится только для совсем начинающих или как историческая перспектива. Решил сделать некоторый акцент на годе публикации - теперь он присутствует в URL статей, а также в &lt;a href="https://www.insight-it.ru/highload/"&gt;оглавлении публикаций об архитектуре высоконагруженных интернет-проектов&lt;/a&gt;. Совсем-совсем неактуальным пришлось пожертвовать или явно подписать соответствующим образом.&lt;/li&gt;
&lt;li&gt;Как следствие из предыдущих двух пунктов, в очередной раз полностью поменялась структура ссылок сайта. По-возможности со старых адресов сохранены редиректы, но, к сожалению, в концепции статических сайтов возможны только клиентские, через meta-тег или JavaScript. Поисковые системы же предпочитают серверные, через 301/307 HTTP-код и заголовок Location.&lt;/li&gt;
&lt;li&gt;В общем, позиции &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; в поисковых системах определенно пострадают, остается лишь надеяться что не катастрофическим образом - ведь сейчас это основной источник посетителей. Если вам не безразлична судьба сайта - твиты, лайки и прочие входящие ссылки по новым адресам крайне приветствуются.&lt;/li&gt;
&lt;li&gt;Теперь весь контент публикуется под лицензией &lt;a href="https://www.insight-it.ru/goto/c3aba0/" rel="nofollow" target="_blank" title="http://creativecommons.org/licenses/by-nc-nd/4.0/"&gt;Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License&lt;/a&gt;, о чем свидетельствует значок в правом-нижнем углу каждой страницы.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="dizain"&gt;Дизайн&lt;/h3&gt;
&lt;p&gt;В плане дизайна я не особо гурман, но предыдущий определенно требовал замены. Изыски здесь ни к чему, так что всё свелось к выбору готовой визуальной концепции.&lt;/p&gt;
&lt;p&gt;За всё те же последние несколько лет &lt;a href="https://www.insight-it.ru/goto/80e3ad2/" rel="nofollow" target="_blank" title="http://getbootstrap.com/"&gt;Twitter Bootstrap&lt;/a&gt; стал решением по-умолчанию для подобных ситуаций благодаря низкому порогу входа и хорошей комбинации встроенного функционала, кроссбраузерности и приличного внешнего вида. По иронии ровно это и стало причиной моего от него отказа в данном случае: уж больно он всем приелся и на каждом углу почти без изменений используется.&lt;/p&gt;
&lt;p&gt;В своё время мне приглянулось своей стройностью и логичностью концепция &lt;a href="https://www.insight-it.ru/goto/7d571a9f/" rel="nofollow" target="_blank" title="http://www.google.com/design/spec/"&gt;Material Design&lt;/a&gt; от &lt;a href="/tag/google/"&gt;Google&lt;/a&gt;, которую они активно внедряют сами и всем советуют. Не долго думая, я пошел поискать opensource решения с готовой реализацией для веб-сайтов и остановился на &lt;a href="https://www.insight-it.ru/goto/823b55/" rel="nofollow" target="_blank" title="http://materializecss.com"&gt;варианте&lt;/a&gt;, который одновременно имел достаточный функционал, сколько-либо большое сообщество и минимум зависимостей, особенно от громоздких &lt;a href="/tag/javascript/"&gt;JavaScript&lt;/a&gt;-библиотек, чем грешили альтернативные варианты.&lt;/p&gt;
&lt;p&gt;Основной цвет сменился с желтовато-зеленого на ярко синий, появился набор акцентных цветов, а типографичный логотип остался почти неизменным. Иконочный шрифт сделан специальный, только с использующимися иконками, получается очень маленький по байтам.&lt;/p&gt;
&lt;p&gt;Итого, с моей субъективной колокольни получилось заметно лучше прежнего, но хочется всё же услышать и ваше мнение в комментариях.&lt;/p&gt;
&lt;h2 id="chto-dalshe_1"&gt;Что дальше?&lt;/h2&gt;
&lt;p&gt;Как обычно, многое зависит от вас, читателей. Вложенные в реконструкцию сайта силы дают некоторый толчок к мотивации писать новые материалы, но без обратной связи её определенно на долго не хватит.&lt;/p&gt;
&lt;p&gt;С закрытием Google Reader два года назад число подписчиков на счетчике от FeedBurner упало почти на два порядка, так что можно считать, что сейчас и правда для &lt;strong class="trebuchet"&gt;Insight IT&lt;/strong&gt; всё начинается почти с начала.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Sat, 30 May 2015 20:10:00 +0300</pubDate><guid>tag:www.insight-it.ru,2015-05-30:misc/2015/reinkarnatsiia-saita/</guid><category>Pelican</category><category>Python</category><category>Creative Commons</category><category>https</category><category>Material Design</category><category>Cloudflare</category><category>GitHub</category><category>GitHub Pages</category><category>Markdown</category><category>git</category><category>SSL</category><category>https</category></item><item><title>Вакансии: разработчики облачной IaaS платформы в Крок</title><link>https://www.insight-it.ru//vacancy/2013/vakansii-razrabotchiki-oblachnojj-iaas-platformy-v-krok/</link><description>&lt;div class="card orange darken-3"&gt;
&lt;p&gt;&lt;div class="card-content white-text center"&gt;
&lt;strong&gt;Вакансии более не актуальны&lt;/strong&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Ведущая российская ИТ-компания ищет талантливых, креативных и энергичных
инженеров и разработчиков для развития коммерческой облачной платформы
КРОК, предоставляющей услугу типа &amp;laquo;Инфраструктура как сервис&amp;raquo; (IaaS). В современном высокотехнологичном офисе Вас ждет дружная сплоченная команда профессионалов, занимающаяся разработкой передовой &amp;laquo;облачной&amp;raquo; платформы, у которой всегда найдется для Вас множество интересных, сложных и разнообразных задач, способных удовлетворить даже самые заоблачные амбиции!&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id="razrabotchik-na-platforme-linux"&gt;Разработчик на платформе Linux&lt;/h2&gt;
&lt;h3 id="obiazannosti"&gt;Обязанности&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Проектирование архитектуры компонентов &amp;laquo;облачного&amp;raquo; решения;&lt;/li&gt;
&lt;li&gt;Разработка и интеграция модулей облачной платформы;&lt;/li&gt;
&lt;li&gt;Исследования в области распределенных высоконагруженных систем.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="trebovaniia"&gt;Требования&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Опыт в области shell-программирования;&lt;/li&gt;
&lt;li&gt;Уверенное знание Python, приветствуется знание С++ или Java;&lt;/li&gt;
&lt;li&gt;Владение средствами разработки (autotools, git, svn и др.);&lt;/li&gt;
&lt;li&gt;Опыт администрирования ОС Linux от 1 года (преимущественно RHEL,
    CentOS, Debian или SLES);&lt;/li&gt;
&lt;li&gt;Опыт работы с технологиями виртуализации (Qemu/KVM, XEN, Hyper-V или
    VMware);&lt;/li&gt;
&lt;li&gt;Знание &amp;laquo;облачных&amp;raquo; технологий особенно приветствуется.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="inzhener-po-oblachnym-resheniiam_1"&gt;Инженер по облачным решениям&lt;/h2&gt;
&lt;h3 id="obiazannosti_1"&gt;Обязанности&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Общение с техническими специалистами заказчика для определения задач
    и специфических требований, предъявляемых к информационной системе;&lt;/li&gt;
&lt;li&gt;Исследовательская работа по поиску, тестированию и внедрению
    различных технологий;&lt;/li&gt;
&lt;li&gt;Участие во внедрении решений для автоматизации ИТ-инфраструктуры;&lt;/li&gt;
&lt;li&gt;Тестирование различных вариантов исполнения инфраструктурных
    решений;&lt;/li&gt;
&lt;li&gt;Техническая поддержка внедряемых решений решения.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="trebovaniia_1"&gt;Требования&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Навыки администрирования современных ОС GNU/Linux и Windows;&lt;/li&gt;
&lt;li&gt;Понимание принципов виртуализации вычислительных ресурсов;&lt;/li&gt;
&lt;li&gt;Приветствуется опыт написания сценариев на языках shell и Python;&lt;/li&gt;
&lt;li&gt;Личные качества: коммуникабельность, общительность, активная
    жизненная позиция.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="usloviia_1"&gt;Условия&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Конкурентная заработная плата по результатам собеседования;&lt;/li&gt;
&lt;li&gt;Возможность профессионального и карьерного роста;&lt;/li&gt;
&lt;li&gt;Компания оплачивает обучение и сертификацию;&lt;/li&gt;
&lt;li&gt;Социальный пакет (медицинская страховка, бесплатное питание в офисе,
    спортивные программы и компенсация фитнеса, английский язык);&lt;/li&gt;
&lt;li&gt;Компания оказывает помощь при переезде в Москву (оплата стоимости
    проезда для прохождения собеседований, &amp;laquo;подъемные&amp;raquo; при выходе на
    работу).&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="kuda-otpravliat-reziume"&gt;Куда отправлять резюме?&lt;/h2&gt;
&lt;div class="card orange darken-3"&gt;
&lt;p&gt;&lt;div class="card-content white-text center"&gt;
&lt;strong&gt;Вакансии более не актуальны&lt;/strong&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Thu, 19 Sep 2013 19:40:00 +0400</pubDate><guid>tag:www.insight-it.ru,2013-09-19:vacancy/2013/vakansii-razrabotchiki-oblachnojj-iaas-platformy-v-krok/</guid><category>autotools</category><category>C++</category><category>CentOS</category><category>Debian</category><category>Git</category><category>IaaS</category><category>Java</category><category>KVM</category><category>Linux</category><category>Python</category><category>Qemu</category><category>RHEL</category><category>SLES</category><category>SVN</category><category>Xen</category><category>вакансии</category><category>виртуализация</category><category>Крок</category><category>облачные вычисления</category></item><item><title>Вакансии: PHP и Python разработчики в Киеве</title><link>https://www.insight-it.ru//vacancy/2012/vakansii-php-i-python-razrabotchiki-v-kieve/</link><description>&lt;div class="card orange darken-3"&gt;
&lt;p&gt;&lt;div class="card-content white-text center"&gt;
&lt;strong&gt;Вакансии более не актуальны&lt;/strong&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Киевская команда разработчиков игр для социальных и мобильных платформ
Level UP ищет опытных специалистов по
веб-разработке на Python и PHP.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h2 id="senior-python-developer"&gt;Senior Python Developer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Задачи:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Разработка высоконагруженных веб-приложений;&lt;/li&gt;
&lt;li&gt;Разработка внутренних и публичных API;&lt;/li&gt;
&lt;li&gt;Разработка архитектуры комплексных сервисов;&lt;/li&gt;
&lt;li&gt;Конвертирование бизнес-задач в технические решения (R&amp;amp;D).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Требования:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Опыт разработки на &lt;strong&gt;Python&lt;/strong&gt; более 3х лет;&lt;/li&gt;
&lt;li&gt;Сильные навыки применения реляционных и нереляционных баз данных;&lt;/li&gt;
&lt;li&gt;Опыт в разработке высоконагруженных веб-приложений;&lt;/li&gt;
&lt;li&gt;Дружба с &lt;strong&gt;Linux&lt;/strong&gt; и &lt;strong&gt;Git&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Хорошее знание клиентских технологий (HTML, CSS, Javascript);&lt;/li&gt;
&lt;li&gt;Опыт работы в команде.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Плюсом будет:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Опыт разработки комплексных проектов на &lt;strong&gt;PHP&lt;/strong&gt; или серверном
    &lt;strong&gt;Javascript&lt;/strong&gt; &lt;em&gt;(node.js)&lt;/em&gt;;&lt;/li&gt;
&lt;li&gt;Опыт разработки инструментов для верстки, автоматизации верстки,
    шаблонизаторов и пр.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="senior-php-developer"&gt;Senior PHP Developer&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Задачи:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Разработка высоконагруженных социальных веб-приложений;&lt;/li&gt;
&lt;li&gt;Работа в небольшой дружной команде до 15 человек;&lt;/li&gt;
&lt;li&gt;Решение нетривиальных задач и создание инструментов для внутреннего
    использования;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Требования:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Опыт разработки на &lt;strong&gt;PHP&lt;/strong&gt; более 3х лет;&lt;/li&gt;
&lt;li&gt;Опыт работы с &lt;strong&gt;MySQL&lt;/strong&gt; и &lt;strong&gt;MongoDB&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Опыт в разработке высоконагруженных веб-приложений;&lt;/li&gt;
&lt;li&gt;Дружба с &lt;strong&gt;Linux&lt;/strong&gt; и &lt;strong&gt;Git&lt;/strong&gt;;&lt;/li&gt;
&lt;li&gt;Хорошее знание клиентских технологий (HTML, CSS, Javascript);&lt;/li&gt;
&lt;li&gt;Опыт примененения функционарного и юнит тестирования.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Плюсом будет:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Опыт разработки на &lt;strong&gt;Python&lt;/strong&gt; или серверном &lt;strong&gt;Javascript&lt;/strong&gt;
&lt;em&gt;(nodejs)&lt;/em&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="usloviia-dlia-oboikh-vakansii"&gt;Условия для обоих вакансий&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Зарплата в диапазоне &lt;strong&gt;\$2500-4000&lt;/strong&gt; в месяц по результатам
    собеседования;&lt;/li&gt;
&lt;li&gt;Полный рабочий день в &lt;strong&gt;Киевском офисе&lt;/strong&gt;, иногородним помощь с
    переездом;&lt;/li&gt;
&lt;li&gt;За успешную рекомендацию специалиста по данным вакансиям компания
    выплачивает&amp;nbsp;&lt;strong&gt;бонус в размере $1000&lt;/strong&gt; так что сообщите своим
    знакомым, кому-то это может быть интересно.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="zainteresovalo"&gt;Заинтересовало?&lt;/h2&gt;
&lt;div class="card orange darken-3"&gt;
&lt;p&gt;&lt;div class="card-content white-text center"&gt;
&lt;strong&gt;Вакансии более не актуальны&lt;/strong&gt;
&lt;/div&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;Не лишним будет, если кроме резюме Вы напишите - почему Вам нравится
серверная разработка на Python или PHP и почему Вам интересна данная
вакансия. Плюс упомяните, пожалуйста, что Вы узнали о данной вакансии
через &lt;strong&gt;Insight IT&lt;/strong&gt;.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Thu, 20 Sep 2012 20:16:00 +0400</pubDate><guid>tag:www.insight-it.ru,2012-09-20:vacancy/2012/vakansii-php-i-python-razrabotchiki-v-kieve/</guid><category>css</category><category>Git</category><category>html</category><category>JavaScript</category><category>Level UP</category><category>Linux</category><category>MongoDB</category><category>MySQL</category><category>node.js</category><category>PHP</category><category>Python</category><category>вакансии</category><category>Киев</category></item><item><title>Архитектура Tumblr</title><link>https://www.insight-it.ru//highload/2012/arkhitektura-tumblr/</link><description>&lt;p&gt;&lt;a href="https://www.insight-it.ru/goto/e90ae6ea/" rel="nofollow" target="_blank" title="http://www.tumblr.com"&gt;&lt;strong&gt;Tumblr&lt;/strong&gt;&lt;/a&gt; - одна из самых популярных в мире
платформ для блоггинга, которая делает ставку на привлекательный внешний
вид, юзабилити и дружелюбное сообщество. Хоть проект и не особо на слуху
в России, цифры говорят сами за себя: 24й по посещаемости сайт в США
с&amp;nbsp;15 миллиардами просмотров страниц в месяц. Хотите познакомиться с
историей этого проекта, выросшего из простого стартапа?
&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 id="vvedenie"&gt;Введение&lt;/h2&gt;
&lt;p&gt;Как и всем успешным стартапам, Tumblr удалось преодолеть опасную пропать
между начинающим проектом и широко известной компанией. Поиск правильных
людей, эволюция инфраструктуры, поддержка старых решений, паника по
поводу значительного роста посещаемости от месяца к месяцу, при этом в
команде только 4 технических специалиста - все это заставляло
руководство Tumblr принимать тяжелые решения о том над чем стоит
работать, а над чем - нет. Сейчас же технический персонал расширился до
20 человек и у них достаточно энергии для преодоления всех текущих
проблем и разработки новых интересных технических решений.&lt;/p&gt;
&lt;p&gt;Поначалу Tumblr был вполне типичным большим &lt;a href="/tag/lamp/"&gt;LAMP&lt;/a&gt;
приложением. Сейчас же они двигаются в направлении модели распределенных
сервисов, построенных вокруг существенно менее распространенных
технологий. Основные усилия сейчас вкладываются в постепенный уход от
&lt;a href="/tag/php/"&gt;PHP&lt;/a&gt; в пользу более "правильных" и "современных" решений,
оформленных в виде сервисов. Параллельно с переходом к новым технологиям
идут изменения и в команде проекта: от небольшой группы энтузиастов к
полноценной команде разработчиков, имеющей четкую структуру и сферы
ответственности, но тем не менее жаждущей реализовывать новый функционал
и обустраивать совершенно новую инфраструктуру проекта.&lt;/p&gt;
&lt;h2 id="platforma"&gt;Платформа&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/tag/centos/"&gt;CentOS&lt;/a&gt; на серверах, &lt;a href="/tag/mac-os-x/"&gt;Mac OS X&lt;/a&gt; для
    разработки&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/apache/"&gt;Apache&lt;/a&gt; - основной веб-сервер&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/php/"&gt;PHP&lt;/a&gt;, &lt;a href="/tag/scala/"&gt;Scala&lt;/a&gt;, &lt;a href="/tag/ruby/"&gt;Ruby&lt;/a&gt; - языки
    программирования&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/finagle/"&gt;Finagle&lt;/a&gt;&amp;nbsp;- асинхронный RPC сервер и клиент&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/mysql/"&gt;MySQL&lt;/a&gt;, &lt;a href="/tag/hbase/"&gt;HBase&lt;/a&gt;&amp;nbsp;- СУБД&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/memcached/"&gt;memcached&lt;/a&gt;,&amp;nbsp;&lt;a href="/tag/redis/"&gt;Redis&lt;/a&gt;&amp;nbsp;- кэширование&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/varnish/"&gt;Varnish&lt;/a&gt;, &lt;a href="/tag/nginx/"&gt;nginx&lt;/a&gt; - отдача статики&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/haproxy/"&gt;HAProxy&lt;/a&gt; - балансировка нагрузки&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/kestrel/"&gt;kestrel&lt;/a&gt;, &lt;a href="/tag/gearman/"&gt;gearman&lt;/a&gt; - очередь задач&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/thrift/"&gt;Thrift&lt;/a&gt; - сериализация&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/kafka/"&gt;Kafka&lt;/a&gt; - распределенная шина сообщений&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/hadoop/"&gt;Hadoop&lt;/a&gt; - обработка статистики&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/zookeeper/"&gt;ZooKeeper&lt;/a&gt; - хранение конфигурации и состояний
    системы&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/git/"&gt;git&lt;/a&gt; - система контроля версий&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/jenkins/"&gt;Jenkins&lt;/a&gt; - непрерывное тестирование&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="statistika"&gt;Статистика&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Около 500 миллионов просмотров страниц в день&lt;/li&gt;
&lt;li&gt;Более 15 миллиардов просмотров страниц в месяц&lt;/li&gt;
&lt;li&gt;Посещаемость растет примерно на 30% в месяц&lt;/li&gt;
&lt;li&gt;Пиковые нагрузки порядка 40 тысяч запросов в секунду&lt;/li&gt;
&lt;li&gt;Около 20 технических специалистов в команде&lt;/li&gt;
&lt;li&gt;Каждый день создается около 50Гб новых постов и 2.7Тб обновлений списков
последователей&lt;/li&gt;
&lt;li&gt;Более 1Тб статистики обрабатывается в &lt;a href="/tag/hadoop/"&gt;Hadoop&lt;/a&gt; ежедневно&lt;/li&gt;
&lt;li&gt;Используется порядка 1000 серверов:&lt;ul&gt;
&lt;li&gt;500 веб-серверов c Apache и PHP-приложением&lt;/li&gt;
&lt;li&gt;200 серверов баз данных (существенная их часть - резервные)&lt;ul&gt;
&lt;li&gt;47 пулов&lt;/li&gt;
&lt;li&gt;30 партиций (шардов)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;30 серверов &lt;a href="/tag/memcached/"&gt;memcached&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;25 серверов Redis&lt;/li&gt;
&lt;li&gt;15 серверов Varnish&lt;/li&gt;
&lt;li&gt;25 серверов HAProxy&lt;/li&gt;
&lt;li&gt;8 серверов nginx&lt;/li&gt;
&lt;li&gt;14 серверов для очередей задач&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="tipichnoe-ispolzovanie"&gt;Типичное использование&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Tumblr&lt;/strong&gt; используется несколько по-другому, чем другие социальные
сети:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;При более чем 50 миллионах постов в день, каждый из них попадает в
среднем к нескольким сотням читателей. Это и не несколько
пользователей с миллионами читателей (например, популярные личности
в Twitter) и не миллиарды личных сообщений.&lt;/li&gt;
&lt;li&gt;Ориентированность на длинные публичные сообщения, полные интересной
информацией и картинками/видео, заставляет пользователей проводить
долгие часы каждый день за чтением Tumblr.&lt;/li&gt;
&lt;li&gt;Большинство активных пользователей подписывается на сотни других
блоггеров, что практически гарантирует много страниц нового контента
при каждом заходе на сайт. В других социальных сетях поток новых
сообщений переполнен ненужным контентом и толком не читается.&lt;/li&gt;
&lt;li&gt;Как следствие, при сложившемся количестве пользователей, средней
аудиторией каждого и высокой активностью написания постов, системе
приходится обрабатывать и доставлять огромное количество информации.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Публичные блоги называют Tumblelog'ами, они не так динамичны и легко
кэшируются.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Сложнее всего масштабировать Dashboard, страницу, где пользователи в
реальном времени читают что нового у блоггеров, на которых они
подписаны:&lt;ul&gt;
&lt;li&gt;Кэширование практически бесполезно, так как для активных
пользователей запросы редко повторяются.&lt;/li&gt;
&lt;li&gt;Информация должна отображаться в реальном времени, быть целостной и
не "задерживаться".&lt;/li&gt;
&lt;li&gt;Около 70% просмотров страниц приходится именно на Dashboard, почти
все пользователи им пользуются.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="staraia-arkhitektura"&gt;Старая архитектура&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Когда проект только начинался, Tumblr размещался в Rackspace и последние выдавали каждому блогу с собственным доменом A-запись. Когда они переросли Rackspace, они не смогли полноценно мигрировать в новый
датацентр, в том числе из-за количества пользователей. Это было в 2007
году, но у них по-прежнему часть доменов ведут на Rackspace и
перенаправляются в новый датацентр с помощью HAProxy и Varnish. Подобных
"унаследованных" проблем у проекта очень много.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;С технической точки зрения проект прошел по пути типичной эволюции
&lt;strong&gt;LAMP&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Исторически разработан на &lt;strong&gt;PHP&lt;/strong&gt;, все началось с веб-сервера,
сервера баз данных и начало потихоньку развиваться.&lt;/li&gt;
&lt;li&gt;Чтобы справляться с нагрузкой они начали использовать memcache,
затем добавили кэширование целых страниц и статических файлов, потом
поставили HAProxy перед кэшами, после чего сделали партиционирование
на уровне &lt;strong&gt;MySQL&lt;/strong&gt;, что сильно облегчило им жизнь.&lt;/li&gt;
&lt;li&gt;Они делали все, чтобы выжать максимум из каждого сервера.&lt;/li&gt;
&lt;li&gt;Было разработано два сервиса на C: генератор уникальных
идентификаторов на основе HTTP и libevent, а также
&lt;a href="https://www.insight-it.ru/goto/533d5aae/" rel="nofollow" target="_blank" title="http://engineering.tumblr.com/post/7819252942/staircar-redis-powered-notifications"&gt;Staircar&lt;/a&gt;,
использующий Redis для обеспечения уведомлений в реальном времени на
Dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Dashboard использует подход
&lt;a href="https://www.insight-it.ru/goto/f4d9020c/" rel="nofollow" target="_blank" title="http://www2.parc.com/istl/projects/ia/papers/sg-sigir92/sigir92.html"&gt;"разбрасывать-собирать"&lt;/a&gt;,
так как из-за отсортировонности данных по времени традиционные схемы
партиционирования работали не очень хорошо. По их прогнозам текущая
реализация позволит им рости еще в течении полугода.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="novaia-arkhitektura"&gt;Новая архитектура&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Приоритетным направлением стали технологии, основанные на JVM, по
причине более быстрой разработки и доступности квалифицированных
кадров. Мотивация несколько спорная, особенно если учесть, что речь
идет в первую очередь о &lt;a href="/tag/scala/"&gt;Scala&lt;/a&gt;, а не
о&amp;nbsp;&lt;a href="/tag/scala/"&gt;Java&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Основная цель - вынести все из PHP приложения в отдельные сервисы, что
сделает его лишь тонким клиентом к внутреннему API.&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Почему выбор пал именно на &lt;strong&gt;Scala&lt;/strong&gt; и &lt;strong&gt;Finagle&lt;/strong&gt;?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Многие разработчики имели опыт с Ruby и PHP, так что Scala был
привлекательным (цитата, логики мало)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.insight-it.ru/goto/d7e3c54e/" rel="nofollow" target="_blank" title="https://github.com/twitter/finagle"&gt;Finagle&lt;/a&gt; был одним из основных
факторов в пользу JVM: это библиотека, разработанная в Twitter,
которая решает большинство распределенных задач вроде маршрутизации
запросов и обнаружение/регистрацию сервисов - не пришлось
реализовывать это все с нуля.&lt;/li&gt;
&lt;li&gt;В Scala не принято использовать общие состояния, что избавляет
разработчиков от забот с потоками выполнения и блокировками.&lt;/li&gt;
&lt;li&gt;Им очень нравится Thrift в роли программного интерфейса из-за его
высокой производительности (он кроссплатформенный и к JVM никак не
относится)&lt;/li&gt;
&lt;li&gt;Нравится &lt;a href="/tag/netty/"&gt;Netty&lt;/a&gt;, но не хочется связываться с Java, еще
один аргумент в пользу Scala.&lt;/li&gt;
&lt;li&gt;Рассматривали &lt;a href="/tag/node-js/"&gt;Node.js&lt;/a&gt;, но отказались так как под
JVM проще найти разработчиков, а также из-за отсутствия стандартов,
"лучших практик" и большого количества качественно протестированного
кода.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Старые внутренние сервисы также переписываются с C + libevent на Scala + Fingle.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Был создан общий каркас для построения внутренних сервисов:&lt;ul&gt;
&lt;li&gt;Много усилий было приложено для автоматизации управления
распределенной системой.&lt;/li&gt;
&lt;li&gt;Создан аналог скаффолдинга - используется некий шаблон для создания
каждого нового сервиса.&lt;/li&gt;
&lt;li&gt;Все сервисы выглядят одинаково с точки зрения системного
администратора: получение статистики, мониторинг, запуск и остановка
реализованы одинаково для всех сервисов.&lt;/li&gt;
&lt;li&gt;Созданы простые инструменты для сборки сервисов без вникания в
детали используемых стандартных решений.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Используется 6 внутренних сервисов, над которыми работает отдельная
команд. На запуск сервиса с нуля уходит около 2-3 недель.&lt;/li&gt;
&lt;li&gt;Новые, нереляционные СУБД, такие как HBase и Redis, вводятся в
эксплуатацию, но основным хранилищем по-прежнему остается сильно
партиционированный MySQL.&lt;/li&gt;
&lt;li&gt;HBase используется для сервиса сокращенных ссылок для постов, а также
всех исторических данных и аналитики. HBase хорошо справляется с
ситуациями, где необходимы миллионы операций записи в секунду, но он не
достаточно стабилен, чтобы полностью заменить проверенное временем
решение на MySQL в критичных для бизнеса задачах.&lt;/li&gt;
&lt;li&gt;Партиционированный MySQL плохо справляется с отсортированными по времени данными, так как один из серверов всегда оказывается существенно более "горячим", чем остальными. Также сталкивались с значительными задержками в репликации из-за большого количества параллельных операций добавления данных.&lt;/li&gt;
&lt;li&gt;Используется 25 серверов Redis с 8-32 процессами на каждом, что означает
порядка 300-400 экземпляров Redis в сумме.&lt;ul&gt;
&lt;li&gt;Используется для уведомлений в реальном времени на Dashboard (о
событиях вроде "кому-то понравился Ваш пост").&lt;/li&gt;
&lt;li&gt;Высокое соотношений операций записи к операциям чтения сделало MySQL
не очень подходящим кандидатом.&lt;/li&gt;
&lt;li&gt;Уведомления не так критичны, их потеря допустима, что позволило
отключить персистентность Redis.&lt;/li&gt;
&lt;li&gt;Был создан интерфейс между Redis и отложенными задачами в Finagle.&lt;/li&gt;
&lt;li&gt;Сервис коротких ссылок также использует Redis как кэш, а HBase для
постоянного хранения.&lt;/li&gt;
&lt;li&gt;Вторичный индекс Dashboard также построен вокруг Redis.&lt;/li&gt;
&lt;li&gt;Redis также используется для хранения задач Gearman, для чего был
написан memcache proxy на основе Finale.&lt;/li&gt;
&lt;li&gt;Постепенно отказываются от memcached в пользу Redis в роли основного
кэша. Производительность у них сопоставима.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Внутренним сервисам необходим доступ к потоку всех событий в системе
(создание, редактирование и удаление постов, нравится или не нравится и
т.п.), для чего была созданна внутренняя шина сообщений &lt;em&gt;(англ.
firehose, пожарный шланг)&lt;/em&gt;:&lt;ul&gt;
&lt;li&gt;Пробовали использовать в этой роли Scribe, но так как оно по сути
свелось к пропусканию логов через grep в реальном времени - нагрузки
оно не выдержало.&lt;/li&gt;
&lt;li&gt;Текущая реализация основана на Kafka, решению аналогичной задачи от
LinkedIn на Scala.&lt;/li&gt;
&lt;li&gt;MySQL также не рассматривался из-за большой доли операций записи.&lt;/li&gt;
&lt;li&gt;Внутри сервисы используют HTTP потоки для чтения данных, хотя Thrift
интерфейс также используется.&lt;/li&gt;
&lt;li&gt;Поток сообщений хранит события за последнюю неделю с возможностью
указать момент времени с которого считывать данные при открытии
соединения.&lt;/li&gt;
&lt;li&gt;Поддерживается абстракция "группы потребителей", которая позволяет
группе клиентов вместе обрабатывать один поток данных вместе и
независимо, то есть одно и то же сообщение не попадет дважды к
клиентам из одной группы.&lt;/li&gt;
&lt;li&gt;ZooKeeper используется для периодического сохранения текущей позиции
каждого клиента в потоке.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Новая архитектура Dashboard основана на принципе ячеек или ящиков
входящих сообщений:&lt;ul&gt;
&lt;li&gt;Каждая "ячейка" отвечает за группу пользователей и читает новые события
с шины сообщений, если один из её пользователей-подопечных подписан на
автора только что опубликованного поста, то пост добавляется в "почтовый
ящик" подписанного пользователя.&lt;/li&gt;
&lt;li&gt;Когда пользователь заходит в Dashboard его запрос попадает в его ячейку,
которая возвращает ему нужную часть непрочитанных постов.&lt;/li&gt;
&lt;li&gt;Каждая ячейка состоит из трех групп серверов:&lt;ul&gt;
&lt;li&gt;HBase для постоянного хранения копий постов и почтовых ящиков;&lt;/li&gt;
&lt;li&gt;Redis для кэширование свежих данных;&lt;/li&gt;
&lt;li&gt;Сервис, читающий данные из шины и предоставляющий доступ к ящикам
посредством Thrift.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;В HBase используется две таблицы:&lt;ul&gt;
&lt;li&gt;Отсортированный &lt;strong&gt;список идентификаторов постов&lt;/strong&gt; для каждого
пользователя в ячейке, именно в том виде, как они будут отображены в
итоге.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Копии всех постов&lt;/strong&gt; по идентификаторам, что позволяет выдать все
данные для отрисовки Dashboard без обращений к серверам вне одной
ячейки.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ячейки представляют собой независимые единицы, что позволяет легко
масштабировать систему при росте числа пользователей.&lt;/li&gt;
&lt;li&gt;Платой за относительно безболезненность масштабирования является
чрезвычайная избыточность данных: при том что ежедневно создается лишь
50Гб постов, суммарный объем данных в ячейках растет на 2.7Тб в день.&lt;/li&gt;
&lt;li&gt;Альтернативой было бы использование общего кластера со всеми постами, но
тогда он бы стал единственной точкой отказа и потребовалось бы делать
дополнительные удаленные запросы. Помимо этого выигрыш по объему был бы
не велик - списки идентификаторов занимают значительно больше места, чем
сами посты.&lt;/li&gt;
&lt;li&gt;Пользователи, которые подписаны или на которых подписаны миллионы других
пользователей, обрабатываются отдельно - страницы с их постами
генерируются не заранее (как описывалось выше), а при поступлении
запроса - это позволяет не тратить впустую много ресурсов (этот подход
называется выборочная материализация).&lt;/li&gt;
&lt;li&gt;Количество пользователей в одной ячейке позволяет управлять балансом
между уровнем надежности и стоимостью содержания этой подсистемы.&lt;/li&gt;
&lt;li&gt;Параллельное чтение их шины сообщений оказывает серьезную нагрузку на
сеть, в дальнейшем из ячеек можно будет составить иерархию: только часть
будет читать напрямую из шины сообщений, а остальным сообщения будут
ретранслироваться.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Tumblr географически по-прежнему находится в одном датацентре (если не
считать незначительное присутствие в Rackspace), распределение по
нескольким лишь в планах.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="razvertyvanie"&gt;Развертывание&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Начиналось как несколько rsync-скриптов для распространения
    PHP-приложения. Как только машин стало больше 200 такой подход стал
    занимать слишком много времени.&lt;/li&gt;
&lt;li&gt;Следующий вариант был основан на &lt;a href="/tag/capistrano/"&gt;Capistrano&lt;/a&gt;:
    были созданы три стадии процесса развертывания (разработка,
    тестирование, боевой). Неплохо справлялся с десятками серверов, но
    на сотнях также был слишком медленным, так как основывался на SSH.&lt;/li&gt;
&lt;li&gt;Итоговый вариант основан на &lt;strong&gt;Func&lt;/strong&gt;, решении от
    &lt;a href="/tag/redhat/"&gt;RedHat&lt;/a&gt;, позволившим заменить &lt;a href="/tag/ssh/"&gt;SSH&lt;/a&gt; на
    более легковесный протокол.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="razrabotka"&gt;Разработка&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Поначалу философия была такова, что каждый мог использовать любые
технологии, которые считал уместным. Но довольно скоро пришлось
стандартизировать стек технологий, чтобы было легче нанимать и вводить в
работу новых сотрудников, а также для более оперативного решения
технических проблем.&lt;/li&gt;
&lt;li&gt;Каждый разработчик имеет одинаковую заранее настроенную рабочую станцию,
которая обновляется посредством &lt;a href="/tag/puppet/"&gt;Puppet&lt;/a&gt;:&lt;ul&gt;
&lt;li&gt;Настроена публикация изменений, тестирование и развертывание новых
версий.&lt;/li&gt;
&lt;li&gt;Разработчики используют vim и Textmate.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Новый PHP код систематически инспектируется другими разработчиками.&lt;/li&gt;
&lt;li&gt;Внутренние сервисы подвергаются непрерывному тестированию посредством
Jenkins.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="struktura-komand"&gt;Структура команд&lt;/h2&gt;
&lt;p&gt;Проект разбит на 6 команд:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Инфраструктура:&lt;/strong&gt;&amp;nbsp;все, что ниже 5 уровня по модели OSI -
    маршрутизация, TCP/IP, DNS, оборудование и.т.п.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Платформа:&lt;/strong&gt;&amp;nbsp;разработка основного приложения, партиционирование
    SQL, взаимодействие сервисов.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Надежность (SRE):&lt;/strong&gt;&amp;nbsp;сфокусирована на текущие потребности с точки
    зрения надежности и масштабируемости.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Сервисы:&lt;/strong&gt;&amp;nbsp;занимается более стратегической разработкой того, что
    понадобится через один-два месяца.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Эксплуатация:&lt;/strong&gt;&amp;nbsp;отвечает за обнаружение и реагирование на
    проблемы, плюс тонкая настройка.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="naim"&gt;Найм&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;На интервью они обычно избегают математики и головоломок, основной
    упор идет в основном именно на те вещи, которым придется заниматься
    кандидату.&lt;/li&gt;
&lt;li&gt;Основной вопрос: будет ли он успешно решать поставленные задачи?
    Цель в том, чтобы найти отличных людей, а не в том, чтобы никого не
    брать.&lt;/li&gt;
&lt;li&gt;Разработчиков обязательно просят привести пример своего кода, даже
    во время телефонных интервью.&lt;/li&gt;
&lt;li&gt;Во время интервью кандидатов не ограничивают в наборе инструментов,
    можно даже гуглить.&lt;/li&gt;
&lt;li&gt;Поиск людей с опытом в крупных проектах достаточно сложен, так как
    всего нескольких компаниях по всему миру решают подобные проблемы.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="podvodim-itogi"&gt;Подводим итоги&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Автоматизация - ключ к успеху крупного проекта.&lt;/li&gt;
&lt;li&gt;При партиционировании MySQL может масштабироваться, но лишь при
    преобладании операций чтения.&lt;/li&gt;
&lt;li&gt;Redis с отключенной персистентностью легко может заменить memcached.&lt;/li&gt;
&lt;li&gt;Scala достойно себя проявляет в роли языка программирования для
    внутренних сервисов, во многом благодаря обширной Java-экосистеме.&lt;/li&gt;
&lt;li&gt;Внедряйте новые технологии постепенно, поначалу работать с HBase и
    Redis было очень болезненно, они были включены в основной стек
    технологий только после испытаний в некритичных сервисах и
    подпроектах, где цена ошибки не так велика.&lt;/li&gt;
&lt;li&gt;Проект должен строиться вокруг навыков его команды, а не наоборот.&lt;/li&gt;
&lt;li&gt;Нужно нанимать людей только если они вписываются в команду и в
    состоянии довести работу до результата.&lt;/li&gt;
&lt;li&gt;При выборе технологического стека одну из ключевых ролей играет
    доступность соответствующих специалистов на кадровом рынке.&lt;/li&gt;
&lt;li&gt;Читайте публикации и статьи в блогах. Ключевые аспекты архитектуры,
    включая "ячейки" и частичную материализацию были позаимствованы из
    внешних источников.&lt;/li&gt;
&lt;li&gt;Поспрашивайте своих коллег, кто-то из них мог общаться с
    специалистами из
    &lt;a href="https://www.insight-it.ru/highload/2010/arkhitektura-facebook/"&gt;Facebook&lt;/a&gt;,
    &lt;a href="https://www.insight-it.ru/highload/2011/arkhitektura-twitter-dva-goda-spustya/"&gt;Twitter&lt;/a&gt;,
    &lt;a href="https://www.insight-it.ru/highload/2011/arkhitektura-google-2011/"&gt;Google&lt;/a&gt;
    или
    &lt;a href="https://www.insight-it.ru/highload/2008/arkhitektura-linkedin/"&gt;LinkedIn&lt;/a&gt; -
    если нет прямого доступа, всегда можно получить нужную информацию
    через одно-два "рукопожатия".&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Статья написана на основе &lt;a href="https://www.insight-it.ru/goto/1444dc9b/" rel="nofollow" target="_blank" title="http://highscalability.com/blog/2012/2/13/tumblr-architecture-15-billion-page-views-a-month-and-harder.html"&gt;интервью&lt;/a&gt;&amp;ensp;&lt;a href="https://www.insight-it.ru/goto/f1d04e95/" rel="nofollow" target="_blank" title="https://www.linkedin.com/in/bmatheny"&gt;Blake Matheny&lt;/a&gt;, директора по разработке платформы Tumblr.&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Tue, 21 Feb 2012 16:29:00 +0400</pubDate><guid>tag:www.insight-it.ru,2012-02-21:highload/2012/arkhitektura-tumblr/</guid><category>Apache</category><category>Capistrano</category><category>CentOS</category><category>Finagle</category><category>Func</category><category>gearman</category><category>Git</category><category>Hadoop</category><category>HAProxy</category><category>HBase</category><category>jenkins</category><category>kafka</category><category>Kestrel</category><category>LAMP</category><category>Mac OS X</category><category>Memcached</category><category>MySQL</category><category>nginx</category><category>PHP</category><category>puppet</category><category>Redis</category><category>Ruby</category><category>Scala</category><category>Thrift</category><category>Tumblr</category><category>Varnish</category><category>ZooKeeper</category></item><item><title>Архитектура DISQUS</title><link>https://www.insight-it.ru//highload/2011/arkhitektura-disqus/</link><description>&lt;p&gt;&lt;img alt="DISQUS" class="left" src="https://www.insight-it.ru/images/disqus.jpg" title="DISQUS"/&gt;
&lt;a href="https://www.insight-it.ru/goto/a754581e/" rel="nofollow" target="_blank" title="https://disqus.com"&gt;DISQUS&lt;/a&gt; - самая популярная система
комментирования и одновременно самое большое в мире Django-приложение.
Она установлена более чем на полумиллионе сайтов и блогов, в том числе и
очень крупных, таких как Engadget, CNN, MTV, IGN. Основной особенностью
в её реализации является тот факт, что DISQUS не является тем сайтом,
который хотят увидеть пользователи, он лишь предоставляет механизмы
комментирования, авторизации и интеграции с социальными сетями. Пики
нагрузки возникают одновременно c появлением какой-то шумихи в
Интернете, что достаточно непредсказуемо. Как же им удается справляться
с этой ситуацией?&lt;!--more--&gt;&lt;/p&gt;
&lt;h2 id="platforma"&gt;Платформа&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="/tag/linux/"&gt;Linux&lt;/a&gt; - операционная система&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/python/"&gt;Python&lt;/a&gt; - язык программирования&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/django/"&gt;Django&lt;/a&gt; - основной framework&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/apache/"&gt;Apache 2.2&lt;/a&gt; +&amp;nbsp;&lt;a href="/tag/wsgi/"&gt;mod_wsgi&lt;/a&gt; - веб-сервер&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/postgresql/"&gt;PostgreSQL&lt;/a&gt; - СУБД&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/memcached/"&gt;memcached&lt;/a&gt; - кэширование&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/haproxy/"&gt;HAProxy&lt;/a&gt; - балансировка нагрузки&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/slony/"&gt;Slony&lt;/a&gt; - репликация данных&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/heartbeat/"&gt;heartbeat&lt;/a&gt; - обеспечение
    доступности&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="statistika"&gt;Статистика&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;До 17 тысяч запросов в секунду&lt;/li&gt;
&lt;li&gt;500 000 сайтов&lt;/li&gt;
&lt;li&gt;15 миллионов зарегистрированных пользователей&lt;/li&gt;
&lt;li&gt;75 миллионов комментариев&lt;/li&gt;
&lt;li&gt;250 миллионов посетителей (на август 2010г.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="osnovnye-trudnosti"&gt;Основные трудности&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Непредсказуемость нагрузки (основными причинами шумихи в Интернете
    являются катастрофы и выходки знаменитостей)&lt;/li&gt;
&lt;li&gt;Обсуждения никогда не теряют актуальность (нельзя держать в кэше все
    дискуссии с 2008 года)&lt;/li&gt;
&lt;li&gt;Нельзя угадать на каком сайте из тысяч возникнет пик трафика&lt;/li&gt;
&lt;li&gt;Персональные настройки, динамическое разбиение на страницы и
    сортировки снижают эффективность кэширования&lt;/li&gt;
&lt;li&gt;Высокая доступность (из-за разнообразия сайтов и их аудитории сложно
    запланировать технические работы)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="arkhitektura"&gt;Архитектура&lt;/h2&gt;
&lt;p&gt;&lt;img alt="Архитектура DISQUS" class="responsive-img" src="https://www.insight-it.ru/images/disqus_architecture.jpeg" title="Архитектура DISQUS"/&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Оборудование&lt;/strong&gt;, в сумме около 100 серверов:&lt;ul&gt;
&lt;li&gt;30% веб-серверов (Apache + &lt;code&gt;mod_wsgi&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;10% серверов баз данных (PostgreSQL)&lt;/li&gt;
&lt;li&gt;25% кэш-серверов (memcached)&lt;/li&gt;
&lt;li&gt;20% балансировка нагрузки и обеспечение доступности (HAProxy +
    heartbeat)&lt;/li&gt;
&lt;li&gt;15% прочие сервера (Python скрипты)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Балансировка нагрузки&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;HAProxy:&lt;ul&gt;
&lt;li&gt;Высокая производительность&lt;/li&gt;
&lt;li&gt;Интеллектуальная проверка доступности&lt;/li&gt;
&lt;li&gt;Неплохая статистика&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Репликация&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Используется Slony-I&lt;/li&gt;
&lt;li&gt;Основана на триггерах&lt;/li&gt;
&lt;li&gt;Master/Slave для обеспечения большего объема операций чтения&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Высокая доступность&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;heartbeat&lt;/li&gt;
&lt;li&gt;Пассивная копия мастер баз данных на случай сбоя основной&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Партиционирование&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Реализовано на уровне кода&lt;/li&gt;
&lt;li&gt;Простая реализация, быстрые положительные результаты&lt;/li&gt;
&lt;li&gt;Два метода разделения данных:&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Вертикальное:&lt;/em&gt;&lt;ul&gt;
&lt;li&gt;Создание нескольких таблиц с меньшим количеством колонок
    вместо одной (она же нормализация)&lt;/li&gt;
&lt;li&gt;Позволяет разделять базы данных&lt;/li&gt;
&lt;li&gt;Данные объединяются в коде (медленнее, чем на уровне
    СУБД, но не намного)&lt;/li&gt;
&lt;li&gt;Бартер производительности на масштабируемость&lt;/li&gt;
&lt;li&gt;Более эффективное кэшировние&lt;/li&gt;
&lt;li&gt;Механизм роутеров в Django позволяет достаточно легко
    реализовать данный функционал&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Горизонтальное:&lt;/em&gt;&lt;ul&gt;
&lt;li&gt;Некоторые сайты имеют очень большие массивы данных&lt;/li&gt;
&lt;li&gt;Партнеры требуют повышенного уровня доступности&lt;/li&gt;
&lt;li&gt;Помогает снижать загрузку по записи на мастер базе
    данных&lt;/li&gt;
&lt;li&gt;В основном используется все же вертикальное
    партиционирование&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Производительность базы данных&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Особое внимание уделяется тому, чтобы индексы помещались в
    оперативную память&lt;/li&gt;
&lt;li&gt;Логирование медленных запросов (автоматизировано с помощью
    syslog-ng + pgFouine + cron)&lt;/li&gt;
&lt;li&gt;Использование пулов соединений (Django не умеет этого,
    используется pgbouncer, позволяет экономить на ресурсоемких
    операциях установления и прекращения соединений)&lt;/li&gt;
&lt;li&gt;Оптимизация QuerySet'ов:&lt;ul&gt;
&lt;li&gt;Не используется чистый SQL&lt;/li&gt;
&lt;li&gt;Встроенный кэш позволяет выделять части выборки&lt;/li&gt;
&lt;li&gt;Но это не всегда нужно, они убрали этот кэш&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Атомарные операции:&lt;ul&gt;
&lt;li&gt;Поддерживают консистентность данных&lt;/li&gt;
&lt;li&gt;Использование update(), так как save() не является
    thread-safe&lt;/li&gt;
&lt;li&gt;Отлично работают для таких вещей, как счетчики&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Транзакции:&lt;ul&gt;
&lt;li&gt;TransactionMiddleware поначалу использовалось, но со
    временем стало обузой&lt;/li&gt;
&lt;li&gt;В &lt;code&gt;postgrrsql_psycopg2&lt;/code&gt; есть опция autocommit:&lt;ul&gt;
&lt;li&gt;Это означает что каждый запрос выполняется в отдельной
    транзакции&lt;/li&gt;
&lt;li&gt;Обработка каждого пользовательского HTTP-запроса не
    начинает новую транзакцию&lt;/li&gt;
&lt;li&gt;Но все же транзакции из нескольких операций записи в
    СУБД нужны (сохранение нескольких объектов одновременно
    и полный откат в случае ошибки)&lt;/li&gt;
&lt;li&gt;В итоге все HTTP-запросы по-умолчанию начинаются в
    режиме autocommit, но в случае необходимости
    переключаются в транзакционный режим&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Отложенные сигналы&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Постановка в очередь низкоприоритетных задач (даже если они не
    длинные по времени)&lt;/li&gt;
&lt;li&gt;Асинхронные сигналы очень удобны для разработчика (но не так,
    как настоящие сигналы)&lt;/li&gt;
&lt;li&gt;Модели отправляются в очередь в сериализованном виде&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Кэширование&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Используется memcached&lt;/li&gt;
&lt;li&gt;Новый pylibmcна основе libmemcached в качестве клиента (проекты
    django-pylibmc и django-newcache)&lt;/li&gt;
&lt;li&gt;Настраиваемые алгоритмы поведения клиента&lt;/li&gt;
&lt;li&gt;Используется &lt;code&gt;_auto_reject_hosts&lt;/code&gt; и &lt;code&gt;_retry_timeout&lt;/code&gt; для
    предотвращения повторных подключений к вышедшим из строя
    кэш-серверам&lt;/li&gt;
&lt;li&gt;Алгоритм размещения ключей: консистентное хэширование на основе
    libketama&lt;/li&gt;
&lt;li&gt;Существует проблема, когда одно очень часто используемое
    значение в кэше инвалидируется:&lt;ul&gt;
&lt;li&gt;Множество клиентов одновременно пытаются получить новое
    значение из СУБД одновременно&lt;/li&gt;
&lt;li&gt;В большинстве случаев правильным решением было бы вернуть
    большинству устаревшие данные и позволить одному клиенту
    обновить кэш&lt;/li&gt;
&lt;li&gt;django-newcache и MintCache умеют это делать&lt;/li&gt;
&lt;li&gt;Заполнение кэша новым значением вместо удаления при
    инвалидации также помогает избежать этой проблемы&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Мониторинг&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Информация о производительности запросов к БД, внешних вызовов и
    рендеринге шаблонов записывается через собственный middleware&lt;/li&gt;
&lt;li&gt;Сбор и отображение с помощью Ganglia&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Отключение функционала&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Необходим способ быстро отключить новый функционал, если
    оказывается, что он работает не так, как планировалось&lt;/li&gt;
&lt;li&gt;Система должна срабатывать мгновенно, по всем серверам, без
    записи на диск&lt;/li&gt;
&lt;li&gt;Позволяет запускать новые возможности постепенно, лишь для части
    аудитории&lt;/li&gt;
&lt;li&gt;Позволяет постоянно использовать основную ветку кода&lt;/li&gt;
&lt;li&gt;Аналогичная система используется и в &lt;a href="/tag/facebook/"&gt;Facebook&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Масштабирование команды разработчиков&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Небольшая команда&lt;/li&gt;
&lt;li&gt;Месячная аудитория / количество разработчиков = 40 миллионов&lt;/li&gt;
&lt;li&gt;Это означает:&lt;ul&gt;
&lt;li&gt;Автоматическое тестирование&lt;/li&gt;
&lt;li&gt;И максимально простой процесс разработки&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Новый сотрудник может начать работать уже через несколько минут,
    нужно лишь:&lt;ul&gt;
&lt;li&gt;Установить и настроить PostgreSQL&lt;/li&gt;
&lt;li&gt;Скачать исходный код из &lt;a href="/tag/git/"&gt;git&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;С помощью pip и virtualenv установить зависимости&lt;/li&gt;
&lt;li&gt;Изменить настройки в settings.py&lt;/li&gt;
&lt;li&gt;Выполнить автоматическое создание структуры данных
    средствами Django&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Непрерывное тестирование&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Ежедневное развертывание с помощью &lt;a href="/tag/fabric/"&gt;Fabric&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/tag/hudson/"&gt;Hudson&lt;/a&gt; обеспечивает регулярно осуществляет и
    тестирует сборки&lt;/li&gt;
&lt;li&gt;Интегрирован &lt;a href="/tag/selenium/"&gt;Selenium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Быстрое тестирование с помощью &lt;a href="/tag/pyflakes/"&gt;Pyflakes&lt;/a&gt; и
    post-commit hooks&lt;/li&gt;
&lt;li&gt;70 тысяч строк Python кода, 73% покрытие тестами, прогон всех
    тестов занимает 20 минут&lt;/li&gt;
&lt;li&gt;Собственная система исполнения тестов с поддержкой XML,
    Selenium, подсчета количества запросов, тестирования
    Master/Slave базы данных и интеграцией с очередью&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Отслеживание проблем и задач&lt;/strong&gt;:&lt;ul&gt;
&lt;li&gt;Переключились с Trac на Redmine (из-за поддержки под-задач)&lt;/li&gt;
&lt;li&gt;Отправка исключений на e-mail - плохая идея&lt;/li&gt;
&lt;li&gt;Раньше использовали django-db-log, но теперь опубликовали свою
    систему сбора ошибок и логов под названием
    &lt;a href="https://www.insight-it.ru/goto/2e33ac0/" rel="nofollow" target="_blank" title="https://github.com/dcramer/django-sentry"&gt;Sentry&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="delaem-vyvody"&gt;Делаем выводы&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Язык программирования, каким бы он ни был, не является проблемой&lt;/li&gt;
&lt;li&gt;Django в целом очень хорош (но приходится все же использовать набор
    собственных патчей)&lt;/li&gt;
&lt;li&gt;Даже при использовании низкопроизводительного framework можно
    построить масштабируемую систему&lt;/li&gt;
&lt;li&gt;Вертикальное партиционирование позволяет пожертвовать
    производительностью в пользу масштабируемости&lt;/li&gt;
&lt;li&gt;Даже небольшой командой разработчиков можно добиться высоких
    результатов, если не пренебрегать автоматизацией тестирования&lt;/li&gt;
&lt;li&gt;Большое значение имеет возможность вовремя отслеживать и оперативно
    реагировать на сбои&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="istochnik-informatsii"&gt;Источник информации&lt;/h2&gt;
&lt;p&gt;Данная статья написана на основе выступления Jason Yan и David Cramer на
DjangoConf 2010. В презентации можно найти примеры кода, ссылки на
упоминаемые проекты и дополнительные материалы:&lt;/p&gt;
&lt;div class="video-container no-controls"&gt;
&lt;iframe allowfullscreen="" frameborder="0" height="355" marginheight="0" marginwidth="0" scrolling="no" src="//www.slideshare.net/slideshow/embed_code/key/21F2PzBmYATx2Y" width="425"&gt; &lt;/iframe&gt;
&lt;/div&gt;
&lt;p&gt;&lt;em&gt;Другие статьи по масштабируемости высоконагруженных систем можно
почитать &lt;a href="https://www.insight-it.ru/highload/"&gt;в соответствующем разделе&lt;/a&gt;, а вовремя узнавать о
новых - &lt;a href="/feed/"&gt;подписавшись на RSS&lt;/a&gt;. Вчера, кстати, прикрутил DISQUS к
Insight IT, приглашаю постоянных читателей и всех остальных
потестировать :)&lt;/em&gt;&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Wed, 02 Mar 2011 03:37:00 +0300</pubDate><guid>tag:www.insight-it.ru,2011-03-02:highload/2011/arkhitektura-disqus/</guid><category>Apache</category><category>DISQUS</category><category>django</category><category>Fabric</category><category>Ganglia</category><category>Git</category><category>HAProxy</category><category>heartbeat</category><category>Hudson</category><category>Linux</category><category>Memcached</category><category>pgbouncer</category><category>pgFouine</category><category>PostgreSQL</category><category>Pyflakes</category><category>Python</category><category>Selenium</category><category>Slony</category><category>syslog-ng</category><category>WSGI</category><category>Архитектура DISQUS</category><category>Масштабируемость</category></item><item><title>Мероприятия всякие разные</title><link>https://www.insight-it.ru//event/2010/meropriyatiya-vsyakie-raznye/</link><description>&lt;p&gt;Не знаю как во всем в мире, но в Москве пора айтишных и не очень
конференций и мероприятий - это осень. Посещать их я еще не совсем
обленился, а вот с написанием отчетов все как-то не складывалось. К
сожалению, бюджет не позволил сходить на платные мероприятия, особенно
Highload++. В общем в итоге я решил написать этот краткий обзорный пост
по мероприятиям, на которые меня занесло этой осенью. Обо многом пишу
спустя большое количество времени - возможны неточности и провалы в
памяти.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3 id="mailru-technology-forum"&gt;&lt;a href="https://www.insight-it.ru/goto/24f5cd74/" rel="nofollow" target="_blank" title="http://techforum.mail.ru/"&gt;Mail.ru Technology Forum&lt;/a&gt;&lt;/h3&gt;
&lt;div class="right"&gt;
&lt;div class="card light-blue"&gt;
&lt;div class="card-content white-text"&gt;
14 сентября
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Честно говоря я подъехал на мероприятие лишь к обеду и не досидел до
конца, так что могу лишь прокомментировать середину, то есть самый
разгар.&lt;/p&gt;
&lt;p&gt;В первую очередь я пошел в технологическую секцию, где Tom
Preston-Werner, сооснователь и тех. директор проекта
&lt;a href="https://www.insight-it.ru/goto/ecdadcf9/" rel="nofollow" target="_blank" title="http://www.github.com"&gt;GitHub&lt;/a&gt;, рассказывал о том, как устроен их
проект, какие технологии и костыли они используют. Если в двух словах,
то у них используются три протокола: http, git и ssh, для каждого
используется свой маршрут обработки запроса внутри системы. Основными
продуктами, которые они используют являются &lt;a href="/tag/ruby-on-rails/"&gt;Ruby on Rails&lt;/a&gt;, &lt;a href="/tag/unicorn/"&gt;Unicorn&lt;/a&gt;, &lt;a href="/tag/haproxy/"&gt;HAProxy&lt;/a&gt;, и собственно git и sshd. Вообще возможно стоило бы под эту историю написать отдельный пост - детали явно выходят за рамки данного повествования, а доклад и правда был интересным.
Постараюсь вернуться к этой истории как только появится возможность.&lt;/p&gt;
&lt;p&gt;Следующими в этом зале выступали представители самого mail.ru - честно
говоря у меня хватило терпения слушать их очередное расхваливание
Imagine Framework,&amp;nbsp; который можно посмотреть только устроившись к ним на
работу, только первые минут 15 наверное и я благополучно перекочевал во
второй зал, где основной тематикой были социальные игры. Вообще за
последний год мне довелось немного поработать в данной области и секция
могла бы оказаться интересной, но качество докладов тоже было не на
высоте - ничего нового ни про монетизацию, ни про привлечение аудитории
услышать не удалось. В основном доклады представляли собой либо кейсы,
основанные на конкретных не очень успешных приложениях, либо на каких-то
общих рекомендациях и так лежащих на поверхности.&lt;/p&gt;
&lt;p&gt;Кстати еще на одном из докладов представители мэйла заикались о некой
NoSQL базе данных их разработки, которую они опубликовали под opensource
лицензией - впоследствии попытался найти, но на
http://opensource.mail.ru какая-то другая муть расположена, а гуглится
что-то совсем не то. Если кто в курсе - поделитесь ссылкой, пожалуйста.&lt;/p&gt;
&lt;h3 id="mit-way-by-richard-kivel"&gt;&lt;a href="https://www.insight-it.ru/goto/13d0a982/" rel="nofollow" target="_blank" title="http://www.mitef.ru/index.php?option=com_content&amp;amp;view=article&amp;amp;id=238:spb-forum-09-2010&amp;amp;catid=3:upcoming-events-&amp;amp;Itemid=71"&gt;"MIT Way" by Richard Kivel&lt;/a&gt;&lt;/h3&gt;
&lt;div class="right"&gt;
&lt;div class="card light-blue"&gt;
&lt;div class="card-content white-text"&gt;
20 сентября
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Ричард в целом продемонстрировал себя как успешного бизнесмена в сфере
информационных и био технологий, но при этом практическая ценность его
выступления была невелика. Он является презедентом MIT Enterprise Forum,
а также председателем правления Rhapsody Biologics. Выступление
проходило в здание ГУ-ВШЭ при поддержке HSE Inc.&lt;/p&gt;
&lt;p&gt;Основными моментами его выступления были следующие тезисы:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Один из основных ресурсов бизнесмена - сеть его знакомств и деловых
    контактов, особенно если речь идет о международном бизнесе.&lt;/li&gt;
&lt;li&gt;Нельзя бояться ошибиться, когда пытаешься создать успешный бизнес -
    у большинства людей это получается далеко не с первой и не со второй
    попытки.&lt;/li&gt;
&lt;li&gt;Очень важно уметь нанимать людей, которые умнее тебя - если ты
    будешь самым интеллектуалом в офисе, то врядли твой бизнес сможет
    работать самостоятельно.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Все просто и понятно, но все же еще раз обратить внимание на данные
вопросы не помешало, да и дополнительная возможность послушать вживую
выступление на качественном английском никогда не бывает лишней.&lt;/p&gt;
&lt;p&gt;В итоге правда оказалось, что основная цель данной лекции была вовсе не
научить делать технологический бизнес, а привлечь дополнительных
участников в сообщество MIT EF, представительство которого недавно
открылось и в России. Мотивацией для присоединения к сообществу было как
раз расширение сети бизнес-знакомств и контактов, особенно зарубежом.
Членские взносы составляют довольно приличную сумму по меркам московских
студентов (которых было большинство в зале) - что-то в районе 150\$/год.&lt;/p&gt;
&lt;h3 id="startup-weekend-brainstorm"&gt;&lt;a href="https://www.insight-it.ru/goto/dbd42edb/" rel="nofollow" target="_blank" title="http://moscow.startupweekend.org/archives/655"&gt;Startup Weekend Brainstorm&lt;/a&gt;&lt;/h3&gt;
&lt;div class="right"&gt;
&lt;div class="card light-blue"&gt;
&lt;div class="card-content white-text"&gt;
25 сентября
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Мероприятие являлось по сути подготовкой к самому Startup Weekend, о
котором я напишу чуть ниже. Организатором обоих мероприятий является
компания &lt;a href="https://www.insight-it.ru/goto/ef462f5b/" rel="nofollow" target="_blank" title="http://www.glavstart.ru"&gt;Главстарт&lt;/a&gt;, целью которой является
расширение рынка технологических стартапов, для чего они проводят эти
самые мероприятия, занимаются подбором экспертов и менторов, а также
помогают проектам получить посевные инвестиции.&lt;/p&gt;
&lt;p&gt;Как не трудно догадаться, подготовительная часть под названием
Брейншторм направлена на генерацию идей для интернет-проектов.
Участников мероприятия разбили на группы по интересам, около 20 человек
на группу, где под руководством массовика-затейника и эксперта они
придумывали различные идеи проектов, сервисов, целевых аудиторий и их
потребностей и проблем. За почти целый день у каждой группы получилось
около 10 более-менее продуманных идей, из которых гипотетически могли бы
вырости проекты на следующем этапе - самом Startup Weekend.&lt;/p&gt;
&lt;p&gt;Сами идеи проектов позвольте не озвучивать - многое не помню, да и
большинство из не прошедшх отбор были на грани бреда.&lt;/p&gt;
&lt;h3 id="yet-another-conference"&gt;&lt;a href="https://www.insight-it.ru/goto/50b6b9aa/" rel="nofollow" target="_blank" title="http://company.yandex.ru/public/yac/"&gt;Yet Another Conference&lt;/a&gt;&lt;/h3&gt;
&lt;div class="right"&gt;
&lt;div class="card light-blue"&gt;
&lt;div class="card-content white-text"&gt;
1 октября
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Наверное самое серьезное из мероприятий, попавших в данный обзор.
Организатором конференции являлся Яндекс, попал я опять не к самому
открытию ибо пробки и проблемы с парковкой. С организационной точки
зрения все замечательно, особенно для бесплатной конференции, разве что
еду в перерывах сметали слишком быстро :).&lt;/p&gt;
&lt;p&gt;Первый доклад, на который я пришел где-то к середине, вел инженер из
Google и рассказывал про data races и инструмент для их поиска
ThreadSanitizer - вроде все понятно и на самом деле слабо пересекается с
областью моих интересов. Вторым докладом в этой секции шел Intel и уже
через 15 секунд после начала стало понятно, что будет сплошная реклама
их линейки проектов для разработки многопоточных приложений - сразу же
встал и сбежал в соседнюю секцию.&lt;/p&gt;
&lt;p&gt;В другом зале была самореклама уже продукта Яндекса, но уже несколько
более завуалированная. Речь шла об их собственном веб-сервере Phantom,
который они используют в баннерокрутилке. Основной его фишкой является
приоритезация хэндлеров запросов в рамках одного сервера. Написан с нуля
на плюсах, с использованием корутин и чуть ли не вообще без
использования каких-либо библиотек. Основной плюс: в отличии от других
докладчиков, рекламирующих свое детище, они хотябы обещали открыть
исходные коды продукта как только допилят поддержку протокола FastCGI.&lt;/p&gt;
&lt;p&gt;После перерыва я вернулся в первый зал, где началась длинная секция про
системы хранения и обработки большого объема данных, я прослушал три
доклада:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href="/tag/apache-hadoop/"&gt;Apache Hadoop&lt;/a&gt; и прочие проекты вокруг него,
    выступал Константин Швачко из Yahoo.&lt;/strong&gt; Жалко, что в этом проекте так
    мало всего изменилось за тот год, что я с ним не работал, даже
    решение проблемных ситуаций с NameNode толком не решили видимо.
    Слушал и думал "сколько же я уже раз это все слышал и сам
    рассказывал другим".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Собственная реализация Map Reduce от Яндекса, Александр
    Дмитриев.&lt;/strong&gt; Визуально красиво сделанная презентация, судя по
    твиттеру очень многим понравилось, правда за этим всем терялась суть
    доклада - слушал честно говоря краем уха, так как судя по всему
    публиковать в opensource данный проект они пока не планируют.
    Специфичная реализация публично-известного подхода, реально
    приспособленная только под конкретные задачи Яндекса - впечатление
    осталось именно такое.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Евгений Поляков из Яндекса рассказывал о распределенной
    хэш-таблице &lt;a href="https://www.insight-it.ru/goto/8c78fdc4/" rel="nofollow" target="_blank" title="http://www.ioremap.net/projects/elliptics"&gt;Elliptics Network&lt;/a&gt;.&lt;/strong&gt; Об Эллиптикс я ни разу ранее не слышал, а докладчик рассказывал очень вкусно о
    данном проекте. Основным плюсом данной системы хранения данных
    является модульность: особенно интересна возможность использовать
    различные технологии записи данных на диск, а также различные
    интерфейсы и протоколы, с помощью которых можно получать доступ к
    данным. Постараюсь на досуге подробнее изучить вопрос и если
    обнаружится что-то интересное - опубликовать свое более детальное
    впечатление о данном проекте.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Поводом сбежать с данной секции стал некий разработчик системы
статистики для ЖЖ из SUP Fabrik - молодой человек еле ворочал языком,
что делало практически невозможным понимание сути доклада. В другом зале
как раз началась медийная секция, опять полная саморекламы. Докладчик из
проекта &lt;a href="https://www.insight-it.ru/goto/b986924b/" rel="nofollow" target="_blank" title="http://www.videomost.com"&gt;videomost.com&lt;/a&gt; (видео-конференции) в
целом сосредоточил свое внимание на том, что видео-конференции - это
очень сложно, что популярные технологии, часто используемые в
видео-трансляциях, там работают плохо - и вообще будущее за
проприетарными специализированными протоколами, кодеками и системами. В
повестке доклада значились способы обхода firewall'ов и NAT'а - но в
докладе все ограничилось лишь большой красивой диаграммкой и фразой
что-то в духе "в нашем проекте аж 14 способов решать эти проблемы", без
каких-либо деталей.&lt;/p&gt;
&lt;p&gt;Второй доклад медийной секции вел Richard Cole, продукт менеджер из
Skype, показывал много красивых фотографий с людьми, пользующимися Skype
в разных ситуациях. По делу у него был только одно сообщение: скоро для
широкой публики будет доступен их &lt;a href="https://www.insight-it.ru/goto/51f3342e/" rel="nofollow" target="_blank" title="http://developer.skype.com/"&gt;SDK&lt;/a&gt;,
который сейчас находится в стадии бета-тестирования.&lt;/p&gt;
&lt;h3 id="startup-weekend"&gt;&lt;a href="https://www.insight-it.ru/goto/f568665e/" rel="nofollow" target="_blank" title="http://moscow.startupweekend.org/"&gt;Startup Weekend&lt;/a&gt;&lt;/h3&gt;
&lt;div class="right"&gt;
&lt;div class="card light-blue"&gt;
&lt;div class="card-content white-text"&gt;
1-3 октября
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;Это мероприятие еще не закончилось, я написал этот пост как раз во
второй день - по идее в самый разгар. Как уже возможно стало понятно:
основная суть мероприятия заключается в превращении идей
интернет-проектов в готовые команды и прототипы. По идее здесь можно
найти недостающих членов команды, получить советы экспертов, заключить
менторское соглашение и найти посевного инвестора. Вчера были
выступления представителей идей/проектов, сегодня - приехали "эксперты":
сначала выступали в elevator pitch, потом общение с представителями
проектов в формате speeddating, потом консультации по расписанию.
Выглядит это все хаотично, организаторы пытаются каким-то образом
способствовать созданию проектов, но все равно мотивации явно не
хватает, чтобы по сути с незнакомыми людьми сделать хоть сколько-нибудь
стоящий проект. Что из всего этого выйдет станет ясно завтра, возможно
обновлю пост, если будет что сказать.&lt;/p&gt;
&lt;h2 id="zakliuchenie_1"&gt;Заключение&lt;/h2&gt;
&lt;p&gt;В целом это очень здорово, что количество и качество подобных
мероприятий в России лишь растет с каждым годом. Полезность конечно не
всегда высока, но часто выносишь что-то новое и интересное для себя.
Расстраивает разве что тот факт, что количество откровенно рекламных
докладов очень велико, но для бесплатных мероприятий это вполне
объяснимо и терпимо.&lt;/p&gt;
&lt;p&gt;В планах посещения мероприятий в этом году остался разве что Google
Developer Day, подтверждение участия еще не пришло, но надеюсь все же
попасть и не забыть написать отчет.&lt;/p&gt;
&lt;p&gt;Если Вы дочитали до конца, но не подписаны на RSS - &lt;a href="/feed/"&gt;сейчас самое подходящее время, чтобы это сделать&lt;/a&gt; :)&lt;/p&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Иван Блинков</dc:creator><pubDate>Sat, 02 Oct 2010 17:44:00 +0400</pubDate><guid>tag:www.insight-it.ru,2010-10-02:event/2010/meropriyatiya-vsyakie-raznye/</guid><category>Apache Hadoop</category><category>Brainstorm</category><category>Git</category><category>GitHub</category><category>HAProxy</category><category>Imagine Framework</category><category>Mail.ru</category><category>Mail.ru Technology Forum</category><category>Map Reduce</category><category>MIT</category><category>Phantom</category><category>Richard Kivel</category><category>Ruby on Rails</category><category>sshd</category><category>Startup Weekend</category><category>ThreadSanitizer</category><category>YAC</category><category>Yet Another Conference</category><category>конференция</category><category>мероприятия</category><category>разработка</category><category>хранилища данных</category></item></channel></rss>