пятница, 8 февраля 2019 г.

Selenoid/Moon

      Раньше у людей отвечающих за QA инфраструктуру было любимое развлечение - по приходу в новую компанию руками разворачивать инфраструктуру для Selenium автотестов. Сделать это хорошо довольно сложно а времени на поддержку инфраструктурных проектов вечно не хватает. Поэтому веселье обычно растягивалось минимум на пол года. Сейчас похоже лавочку прикрыли.  С приходом кубера в широкие массы развернуть Selenoid можно не запачкав ручки - все за вас сделает Moon. По крайней мере обещает что сделает :-)

вторник, 5 февраля 2019 г.

CLR via C# by Jeffrey Richter

       Наконец-то дочитал книгу CLR via C# by Jeffrey Richter. Скажу честно - дочитал через силу. Прям заставлял себя дочитывать.  В книге очень много воды и сомнительных рекомендаций по оптимизации.  Временами автор даже сваливается в какие-то внутри мелкософтовские разборки(как например при обсуждении EAP - event based asynchronous pattern).  
      В общем из плюсов - очень много информации по .NET CLR в одном месте, объяснены некоторые интересные аспекты работы .NET CLR. Из минусов - очень много воды, объяснения очевиднейших вещей, пересказывания мануалов. В общем временами читается как инструкция к стиральной машинке. 
        Если говорить о том мнении которое я составил о C# после прочтения этой книги: C# и его runtime писались с оглядкой на Java, и они всегда старались сделать немного лучше чем сделано в Java.  Иногда это получалось, но в некоторых случаях Java выигрывает за  счет открытости платформы и того что более качественные идеи рождаются и реализуются в community. 
     Параллельное программирование на .NET никогда не будет таким же эффективным как в Golang или другими языками где идея легковесных потоков была заложена с основания языка. Причина этого не в технологиях - я уверен что в microsoft достаточно компетенции написать scheduler легковесных потоков  а в legacy - то что раньше было возможно запускать потоки операционной системы с разными контекстами (правами, приоритетами и тд). И каждый раз при переключении на другой таск ThreadPool обязан все эти огромные структуры данных копировать. Добавьте к этому поддержку иерархической системы тасков которая требует большого количества памяти и хранение не перехваченных exceptions. 
       В общем отказаться от поддержки всего этого они не могут, а без этого просто взять и вкрутить планировщик легковесных потоков в существующий runtime будет очень трудно/не возможно.

среда, 30 января 2019 г.

Thanos

       Сегодня открыл для себя Thanos - инструмент для масштабирования Prometheus через federation (не знаю русскоязычного аналога этого глагола).  В свое время когда мы строили мониторинг Lazada на Prometheus нам очень не хватало инструмента подобного Thanos. Prometheus превосходный инструмент, но он не поддерживает HA из коробки, да и масштабируется только через ручное шардирование нагрузки на несколько истансов. По сути все работало превосходно пока все метрики помещались на один сервер и его мощности хватало и на запись собираемых метрик и на обработку входящих звапросов. Дальше начинались танцы с бубнами. 
         Сейчас судя по всему это уже позади.  Если говорить по простому: Thanos это инструмент который позволяет поставить рядом два Prometheus сервера и построить высоко доступный (HA) сервер мониторинга.  Также он позволяет масштабировать Prometheus через федерирование.  Дело осталось за малым - чтобы это все работало так же красиво как об этом пишут его создатели. 

вторник, 15 января 2019 г.

Как работает ApplePay

     Не так давно мне пришлось вплотную столкнуться с ApplePay, хотя вообще я с платежками давно уже не работаю. Попытался понять как работает ApplePay и с удивлением обнаружил что  нормального технического описания нет. Есть куча маркетингового булшита и отдельных догадок.  Единственное что я нашел - https://medium.freecodecamp.org/how-apple-pay-works-under-the-hood-8c3978238324  Это тоже не официальная документация, но выглядит вполне правдоподобно.
       Если в двух словах - когда вы добавляете карточку в ApplePay, Apple валидирует данные и отправляет к МПС(Visa/MasterCard) запрос на генерацию секретного токена(DAN - device account number), который по сути представляет "фейковый" номер кредитной карточки. Этот фейковый номер запоминается в устройстве. Во время транзакции iphone "прикидывается" этой фейковой карточкой и NFC терминал передает этот номер карты в МПС. МПС подменяет фейковый номер карточки реальным номером карточки добавленной ранее в ApplePay. Дальше транзакция проходит как обычно.  
        

понедельник, 24 сентября 2018 г.

Go Meetup в Mail.ru

      Вчера рассказал на Go Meetup в Mail.ru о том как мы в Ozon.Travel переходим с C# на Golang, о некоторых типовых ошибках и возникающих сложностях.
      Доклад опубликован на Github: https://github.com/yvasiyarov/meetup-23-09-2018
Его можно посмотреть прямо тут - https://go-talks.appspot.com/github.com/yvasiyarov/meetup-23-09-2018/index.slide#1

воскресенье, 26 августа 2018 г.

Яндекс

       В свое время после прочтения Яндекс. Книга я стал горячим адептом продуктов яндекса. Даже поставил себе яндекс браузер и сделал Яндекс поиском по умолчанию.  Но сейчас могу сказать что я весьма разочаровался в том как Яндекс ведет дела на своем рынке. Зачастую Яндекс пользуется своим доминирующим положением на рынке российского интернета и ведет себя по хамски. Из последнего что меня взбесило - это Яндекс Советник. По сути эта штука крадет пользователей у магазинов. Когда ты приходишь в свой любимый магазин и хочешь купить XXX, а тебе тут всплывает окно и говорит - а вот там-то ты можешь купить XXX на 100 рублей дешевле. В такой ситуации даже самый лояльный пользователь может уйти в другое место.
        На первый взгляд это может показаться благородным делом - Яндекс помогает несмышленым пользователям с экономить деньги. Прям таки рыцарь на белом коне. Но тут важно понимать что Яндекс получает совсем не маленькую денежку за каждый такой переход. Ну и хрен бы с ним подумаете вы. Но тут есть важный момент -  предлагая более низкую цену Яндекс Советник абсолютно игнорирует другой важный фактор - качество сервиса. Если ты предоставляешь качественный сервис, пост продажно обслуживание и тд - ты не можешь демпинговать. Тебе нужно с чего-то платить зарплату сотрудникам службы поддержки пользователей, сотрудникам службы контроля качества и тд. Но если ты будешь всю свою маржу отдавать(сначала скинуть цену чтобы оказаться самым дешевым а потом еще заплатить за переход Яндексу) то ты будешь вынужден снижать качество обслуживания. Либо работать в убыток. А по другому никак.
         Получается что преследую на первый взгляд благородную цель Яндекс попросту набивает себе карманы и способствует к тому чтобы на рынке остались только компании типа плеер.ру - которые всегда на сто рублей дешевле но предоставляют не самый качественный сервис.  В общем для себя я решил - пора обратно переходить на гугл. И сносить яндекс браузер. 

Zappos.Доставляя счастье

       В своем списке для чтения я стараюсь чередовать техническую и не техническую литературу.  Одной из последних не технических книг которую я прочитал была книга "Zappos. Доставляя счастье" от Тони Шея. Книга очень легко читается, можно сказать взахлеб. Временами эта книга даже ощущается не как деловая литература а как приключенческий роман. Но при этом я могу сказать что я также почерпнул из нее много нового. https://docs.google.com/document/d/1-9odADCVK6uBR2eCXvm7v-IdT_t3fljTM0GvoE8zvkY/edit?usp=sharing  - пометки которые я сделал сам для себя. расшарил их со всеми на тот случай если они кому-то покажутся полезными. 
        В общем и целом книга стоящая, возможно через некоторое время я даже захочу ее перечитать (со мной такое бывает).