• Оркестрируемая сага или как построить бизнес-транзакции в сервисах с паттерном database per service

      Привет! Меня зовут Константин Евтеев, я работаю в Авито руководителем юнита DBA. Наша команда развивает системы хранения данных Авито, помогает в выборе или выдаче баз данных и сопутствующей инфраструктуры, поддерживает Service Level Objective для серверов баз данных, а еще мы отвечаем за эффективность использования ресурсов и мониторинг, консультируем по проектированию, а возможно и разрабатываем микросервисы, сильно завязанные на системы хранения, или сервисы для развития платформы в контексте хранилищ.


      Я хочу рассказать, как мы решили один из вызовов микросервисной архитектуры — проведение бизнес-транзакций в инфраструктуре сервисов, построенных с помощью паттерна Database per service. С докладом на эту тему я выступал на конференции Highload++ Siberia 2018.


      image
      Узнать про саги
    • Приверженцы статической и динамической типизаций никогда не поймут друг друга. И TypeScript им не поможет



        Когда мы с другом учились в школе и только мечтали стать разрабами, мы думали как сделаем вместе какую-нибудь штуковину — игру или супер-полезную программу.

        Я начал учить плюсы и C#, он — JavaScript. Закончили школу, отучились в универах, отслужили в армии, устроились на работы. Нас потаскало промышленной разработкой там и тут, и когда мы оба от нее подустали, вспомнили с чего начинали.

        Собравшись уже матерыми разрабами, мы решили, наконец, сделать свой проект — двумерную видеоигру. Так как друг был чистый фронт, а я фулстек, очевидной платформой для нас стал браузер. Раньше я разрабатывал фронт только на TypeScript, и мы подумали, никаких проблем, TS — всего-лишь надмножество JavaScript. Возьмем его и все пройдет гладко. Как бы не так. Когда мы начали обсуждать работу, столкнулись с невероятной бездной непонимания друг друга.
        Читать дальше →
      • Юнит-тестирование для чайников

        • Tutorial
        Даже если вы никогда в жизни не думали, что занимаетесь тестированием, вы это делаете. Вы собираете свое приложение, нажимаете кнопку и проверяете, соответствует ли полученный результат вашим ожиданиям. Достаточно часто в приложении можно встретить формочки с кнопкой “Test it” или классы с названием TestController или MyServiceTestClient.



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

        Оно выполняет свою задачу, но сложно для автоматизации. Как правило, тесты требуют, чтобы вся или почти вся система была развернута и сконфигурирована на машине, на которой они выполняются. Предположим, что вы разрабатываете web-приложение с UI и веб-сервисами. Минимальная комплектация, которая вам потребуется: браузер, веб-сервер, правильно настроенные веб-сервисы и база данных. На практике все еще сложнее. Разворачивать всё это на билд-сервере и всех машинах разработчиков?

        We need to go deeper
      • Соглашения по именованию CSS-сущностей и экономия времени

        • Translation
        Я слышал, как многие разработчики говорят, что ненавидят CSS. Опыт подсказывает мне, что причина здесь в том, что они не уделяют достаточно времени для того, чтобы изучить CSS. Да, речь идёт о не самом дружелюбном «языке», но он успешно используется для стилизации веб-страниц уже более 20-ти лет. Это впечатляет, и с технологиями такого уровня распространённости приходится считаться. Однако, по мере роста объема стилей, задействованных в некоем проекте, проявляется один большой минус CSS: его очень сложно поддерживать. А плохо написанные стили быстро превращаются в кошмар.

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


        Вы уже бывали в подобной ситуации, правда?
        Читать дальше →
      • Универсальный конвертер данных на платформе .Net Framework

        В этой статье я хотел бы рассказать опыт нашей команды по созданию универсального конвертера данных. На первый взгляд звучит очень просто, что тут сложного? Взять один тип данных привести к другому типу. А если данные это структура? Тоже не трудно, вы скажете, просто нужно выполнить меппинг полей. Да, просто. Но когда целевых структур несколько, все они сложные и требуется конвертация “на лету”, да еще и с обогащением данных, то как говорится “надо думать”.

        Читать дальше →
      • Суррогаты

          Бизнес не любит:

          1. 1С-Франчайзи, программистов 1С вообще, и почти все, что те делают;
          2. веб-программистов и компании, создающие и продвигающие сайты, и все продукты их работы;
          3. системы менеджмента качества и людей, которые занимаются их внедрением;
          4. бухгалтеров и бух.учет;
          5. экономистов со всеми их гигантскими экселевскими портянками;
          6. внутренние проекты развития, на которые без слез уже смотреть невозможно;
          7. Scrum и все эти доски, на которых неделями висят одни и те же стикеры;
          8. ТОС, после внедрения которого дефицитов и неликвидов становится еще больше;
          9. Контроллинг, который дает цифры позже, чем бух.учет;
          10. KPI, адекватность которого приходится доказывать самому себе каждый раз, когда приносят эти цифры;
          11. Системы мотивации, которые, как ни крути, «оклад+премия», хоть и названы модными словами, типа «грейд».

          Продолжать можно до бесконечности. Никогда не задумывались, почему бизнес всего этого не любит? Или вообще не замечали, что бизнес этого не любит?

          При этом, как ни странно, бизнес любит:

          1. повышение прибыльности бизнеса за счет автоматизации;
          2. увеличение количества лидов и рост оборота за счет правильного продвижения;
          3. повышение качества процессов производства и бизнес-процессов;
          Читать дальше →
        • Application Insights. Про аналитику и другие новые инструменты

            Около года назад я написал небольшую статью про использование превью версии Azure сервиса диагностики и мониторинга Application Insights (AI). С тех пор в AI появилось очень много интересных дополнений. И вот, чуть больше месяца назад, AI наконец получил General Availability.


            Читать дальше →
          • Всё что вы стеснялись спросить о бэкапах Microsoft SQL Server

            • Translation
            В ходе проведения презентаций о бэкапах и восстановлении баз данных SQL Server, обычно задаются два типа вопросов. Первые задаются прямо по ходу презентации из зала, вторые задаются уже после, в приватной беседе. Эти, «приватные» вопросы, зачастую более интересны и я попробую дать ответы на наиболее сложные и интересные из них, вместо того чтобы писать ещё одну статью о том как вы должны делать бэкапы, или почему вы должны делать бэкапы, или даже почему вы должны проверять свои бэкапы (но вы и вправду должны проверять свои бэкапы).
            Читать дальше →
          • Как я проходил собеседования на позицию Junior .Net Developer

              Приветствую всех. Сегодня расскажу вам как я проходил собеседования в Москве на позицию .Net Developer. Усиленно готовился к собеседованиям месяц, целыми днями сидел и смотрел вопросы и пытался отвечать на них, а также читал книжки по С#. В статье привожу интересные задачки и вопросы, которые мне задавали в разных компаниях в Москве. Заранее скажу, что я попал в ту компанию, в которой хотел. Я прошел 4 собеседования в этой компании и меня наконец то взяли! Много статей было прочитано в частности здесь и надеюсь, что эту статью тоже будут читать начинающие Net разработчики и спрашивать все в комментариях.

              Кому интересна тема прохождения собеседований, прошу под кат!
              Читать дальше →
            • Борьба с хардкодами при помощи статических анализаторов С#

                В этой статье я расскажу, как мы написали собственные анализаторы кода и чистим с их помощью нашу кодовую базу .net от наиболее острых / частых косяков. Главный посыл — сделать это довольно просто, не бойтесь писать свои анализаторы для борьбы с именно вашими багами. Вторичный посыл — попробуйте наши анализаторы и сообщите о результатах. Полное руководство я писать не буду, их довольно много в интернете, а вот небольшой обзор, что это как и с какими проблемами я столкнулся, надеюсь, окажется вам полезным.
                Читать дальше →
              • Полифазный сон — история удачного опыта

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



                  Если вас серьезно интересует полифазный сон, и вы готовы потратить несколько часов на чтение одного из самых подробных отчетов по данной теме, вам сюда: Полифазный сон. Для остальных — этот дайджест.

                  Суть полифазного сна в том, что вместо одного продолжительного сна в сутки, мы спим понемногу, несколько раз в течение дня. Одной из популярных схем полифазного сна является «Режим Uberman», предлагающий разбиение дня на 6 коротких (20-30 минут) периодов сна, чередующиеся с равномерными (около 4 часов) периодами бодрствования. Это означает, что общее время сна сокращается до 2-3 часов в сутки.

                  Нормальный человеческий сон состоит из 90-минутных циклов, и каждый такой цикл завершается фазой быстрого сна (REM). REM – наиболее важная фаза сна, именно во время нее мы видим сны, а лишение человека REM – фазы, в течение длительного времени ведет к серьезным нервным расстройствам. Во время практики полифазного сна, организм учится входить в REM немедленно после засыпания, а не в конце цикла. Поэтому первую неделю, пока организм будет адаптироваться к укороченным циклам сна, он будет испытывать повышенную нагрузку. Зато потом будет чувствовать себя отлично, возможно даже лучше, чем прежде.
                  Читать дальше →
                • Я не знаю ООП

                    Я не умею программировать на объектно-ориентированных языках. Не научился. После 5 лет промышленного программирования на Java я всё ещё не знаю, как создать хорошую систему в объектно-ориентированном стиле. Просто не понимаю.

                    Я пытался научиться, честно. Я изучал паттерны, читал код open source проектов, пытался строить в голове стройные концепции, но так и не понял принципы создания качественных объектно-ориентированных программ. Возможно кто-то другой их понял, но не я.

                    И вот несколько вещей, которые вызывают у меня непонимание.
                    Читать дальше →
                  • «Пока не село Солнце»: Стоит ли заставлять программистов работать 80 часов в неделю



                      / фото Joshua Blount CC

                      В нашем блоге на Хабре мы пишем о том, как используются облачные сервисы и каким спектром возможностей обладает IaaS. Также мы затрагиваем тему эффективной разработки сервисов и приложений, например, на прошлой неделе мы опубликовали материал, в котором дали несколько советов руководителям о том, как эффективно взаимодействовать с командой разработки.

                      Сегодня нам бы хотелось затронуть тему продолжительности рабочего дня. Один из пользователей социального сервиса Quora задал вопрос, который породил бурное обсуждение среди разработчиков. Он пытался выяснить, как заставить программистов оставаться в офисе 80 и более часов в неделю. Нас заинтересовала эта тема и мы решили посмотреть, что думают на этот счет сами разработчики.
                      Читать дальше →
                    • Федеральный закон № 243, или Тихая пенсионная реформа

                        счастливая старость

                        Началось все с того, что мне пришло письмо от знакомого. Я усомнился и пошел проверять. Уж больно неправдоподобным показалось написанное в нем.

                        Однако факт остается фактом: «… с 1 января 2014 г. будет осуществлен т. н. страховой маневр — сокращены с 6 до 2% отчисления на формирование накопительной части пенсии. Высвободившиеся 4% пойдут на финансирование страховой части.»

                        UPDATE! Весьма вероятно, что скоро сокращение будет не до двух процентов, а до нуля — смотрите обновление №3 в конце поста.

                        Ну, кто там спрашивал, от чего отвлекают наше внимание?! Здесь был горький смайлик с кривой ухмылкой.

                        Кому интересно / небезразлично, добро пожаловать под кат!
                        Читать дальше →
                      • Безрассудное поведение

                          image

                          С увлечением крутя педали, я съехал с проселочной дороги на горячий асфальт. С пригорка открылся очаровательный вид на незнакомую усадьбу. Она была трехэтажной, зато в длину простиралась на добрую сотню метров. Фасад украшали белоснежные колонны, а крыша щетинилась направленными в разные стороны телевизионными тарелками и антеннами. По периметру располагался металлический забор с колючей проволокой.
                          Читать дальше →
                        • Премьера отечественного постапокалиптического фильма «Полигон 27»

                            Сегодня автором был выложен в открытый доступ фильм «Полигон 27». Особенность его в том, что режиссером, сценаристом, оператором, композитором и специалистом по спецэффектам является один человек — Артем Мирошин, а актерами — энтузиасты из города Хабаровска.



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

                            Трейлеры и ссылка на фильм
                          • То, чего еще никто не писал про Нокиа, Элопа и горящую платформу

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

                              Традиционно, для тех кто не любит много буков, краткие (более-менее) тезисы:

                              • Будучи долгое время лидером на рынке, Нокиа сильно расслабилась и загадила свою внутреннюю инфраструктуру бюрократией, чрезмерным аутсорсингом и огромным количеством бесполезной «менеджерской прослойки».
                              • Будучи долгое время лидером, Нокиа просрала потратила много денег на ненужные операционные расходы, поглощения никому не нужных фирм и на невменяемую модель аутсорсинга.
                              • Полностью оторвавшись от реальности с уходом Йормы Оллилла, Нокиа, под управлением гениального юриста CEO Олли-Пекки Каласвуо, потратила кучу денег и усилий на создание бесполезной и неконкурентоспособной сервисной инфраструктуры Ovi. В результате этого, помимо денег, Нокиа потеряла уйму полезного времени, которое можно и нужно было потратить на развитие основного бизнеса — телефонов, софта и т.д.
                              • Бюрократия и непотопляемая менеджерская прослойка в Нокиа, последовательно мигрировала из одного передового проекта в другой, в составе одних и тех же групп лиц, самореплицируясь в виде кучи формальных дебилопроцессов комитетов и управленческих групп, немного перетасовываемых с учетом специфики. В итоге именно эта бюрократия убила и Symbian, и Ovi, и MeeGo и остальные попытки догнать уходящий поезд своими силами.
                              • Борьба с бюрократией и прослойкой в Нокиа зашла в полный тупик.
                              • У великого CEO Элопа просто не было другого выхода кроме как прибить всю старую, неповоротливую и прогнившую организацию, путем создания альянса с Майкрософтом и переходом на Windows Phone. Тем самым все старые процессы, компетенции, технологии и самое главное — люди резко стали, что называется, «не в тему». И следовательно тем самым можно было под благовидным предлогом прибить этот табун менеджеров, бесконечно рисующих фэнтезийные роадмапы с единорогами и перекладывающих бумаги с левого края стола на правый.
                              • Новая Нокиа, после 2011 года и старая Нокиа до 2011 года – это две РАЗНЫЕ организации. Их объединяет только общее название и операционка S40 для телефонов Asha.
                              • Горящая платформа, это не Symbian и не MeeGo. Горящая платформа, это то состояние в которое Нокиа загнали годы расслабленного лидерства и тупоголовые амбиции предыдущего CEO – Олли-Пекки Каласвуо с кликой подкаркивающих вице-президентов.
                              • С бюрократией и бизнес процессами, имеющимися на 2010 год, Нокиа не спас бы ни Андроид, ни половина населения Бангалора, пишущих на Qt под MeeGo. Даже если бы Apple бесплатно передал Нокиа iOS и все сервисы, то они бы выродились руками всяких Requirement Managerов в типичные Нокийские дизайн-химеры и в итоге загнулись через какое-то время.
                              • То, что сделал великий CEO Элоп – было единственно возможным разумным решением, дающим хоть какие-то шансы на выживание. Вопрос «каким образом он это сделал?», остается открытым, равно как и вопрос «поможет ли это Нокиа?» в итоге. Не следует забывать, что нынешняя Нокиа — это совершенно новая организация, поэтому глупо предполагать, что она разом вернет себе лидерство. Как и всем новым организациям ей придется за это лидерство долго бороться.
                              • Без ошибок и побед Нокиа никогда не было бы ни Андроида, ни Айфона. И Google и Apple тщательно проанализировали достоинства и недостатки более старших конкурентов перед тем как шагнуть вперед.

                              Все это в деталях — под катом. Предупреждаю что клевых картинок там нет. Сплошное графоманство и ёрничанье.
                              Читать дальше →
                            • На вооружение британской армии поступил вертолёт весом 16 граммов

                                Крошечный беспилотник PD-100 PRS Black Hornet, созданный норвежской компанией Prox Dynamics, предназначен для оперативного видеонаблюдения и разведки как внутри помещений, так и на открытом воздухе. С его помощью можно заглянуть за угол или за подозрительный куст, заранее присмотреть укрытия и пути продвижения на незнакомом поле боя. Аппарат весит 16 граммов и имеет диаметр ротора всего 120 миллиметров, но его характеристики и функционал совершенно не соответствуют игрушечным размерам.


                                Читать дальше →
                              • Солнечные затмения с расстояния 36 тыс. км или почему мы об их космосе знаем больше чем о нашем

                                  Я выбирал заголовок для этого текста из двух вариантов, но потом решил объединить. Многие уже привыкли, что я пишу о Curiosity или, в крайнем случае, о каком-нибудь достижении NASA. Сегодня я отойду от традиции, и поговорим о наболевшем родном — о русском исследовательском космосе. Нет, я не о том, что воруют и ничего не летает. Наоборот, кое-что летает, даже есть чем гордиться, хоть и не так много как хотелось бы. Я о чертовски бестолковой и зачастую провальной работе отделов по связям с общественностью нашей космической науки.
                                  image
                                  Читать дальше →
                                • MeCam — летающая камера за 49$

                                    Новый миниатюрный квадрокоптер MeCam, недавно представленный компанией Always Innovating, способен поменять наши представления о способах видео- и фотосъёмки. MeCam представляет собой летающую камеру на базе Linux, которая управляется голосом и передаёт фото и видео по Wi-Fi либо Bluetooth на iOS либо Android-устройство с возможностью последующей публикации в Youtube, Google+, Facebook либо Twitter. Также, как альтернатива управлению голосом, поддерживается функция «Follow Me», при которой квадрокоптер неотступно следует за пользователем, ориентируясь на сигнал его смартфона либо планшета. В устройство встроено 14 датчиков, позволяющие самостоятельно преодолевать препятствия, имеется система стабилизации для получения плавного изображения и возможность панорамной съёмки.
                                    Читать дальше →