• Преимущества переезда на ПМЖ в Берлин для ИТ-специалистов

    Куда податься программисту и разработчику на европейском континенте? Германия — одно из лучших направлений для ИТ-специалистов. А Берлин так вообще является вторым мегаполисом в Европе по количеству стартапов. Я собрала самую важную информацию по немецкой столице, которая будет интересна читателям Хабра. Уверена, многим будет интересен Берлин не только с точки зрения заработка. Он ещё является настоящим культурным молодежным центром Евросоюза. В нем создана вся инфраструктура для комфортной работы и предпринимательства в секторе стартапов.

    Краткая характеристика Берлина


    Берлин является вторым по населению городом Евросоюза. В нём проживает почти 4 миллиона человек. Если взять агломерацию вокруг него, то она составит более 6 миллионов жителей. На текущий момент немецкая столица также является второй после Лондона крупнейшей экосистемой ИТ-отрасли. По некоторым данным, выходцев из постсоветских стран в Берлине более 100000 человек. Они объединились в различные сообщества по интересам. Поэтому в свободное от работы время экспат сможет найти себе собеседников и приятелей среди своих соотечественников.

    image
    Читать дальше →
  • Нет денег. У кого?

      Как же утомили рассказы про то что нет денег. Когда я это слышу, непременно хочется спросить «а их нет у кого?».

      Представим себе вымышленную страну. Если у 80% населения страны нет денег, то где они? Правильно — у оставшихся 20%. При постоянном объёме денежной массы страны это именно так. Это элементарная логика.

      image

      Читать дальше →
    • Настраиваем свои девайсы для удаленной работы, подкастинга, видео и стриминга

      • Translation
      Недавно я снова начал транслировать и публиковать свои видео на канале в youtube. В процессе я осознал, как много сил и времени вложил чтобы получить стоящий набор девайсов — не только для трансляций, но и для любого, кто работает удаленно и участвует в видео звонках каждый день.

      Я потратил довольно много времени на своё увлечение освещением и ĸамерами. А теперь хотел бы помочь вам — новым стримерам, подĸастерам, удаленным сотрудникам или всем, ĸто хочет повысить уровень их оборудования.

      Оцените несколько разных вариантов для удаленной работы и трансляций.

      Должен заметить, что я пользуюсь Маком, поэтому буду больше сфокусирован на нём. И еще, это всё партнерские ссылки. Можете легко обойти их если не нравится!


      Читать дальше →
    • Как NLP-технологии ABBYY научились мониторить новости и управлять рисками

        Круг задач, которые можно решить с помощью технологий ABBYY, пополнился еще одной интересной возможностью. Мы обучили свой движок работе банковского андеррайтера – человека, который из гигантского потока новостей вылавливает события о контрагентах и оценивает риски.

        Сейчас такие системы на базе технологий ABBYY используют уже несколько крупных российских банков. Мы хотим рассказать о нюансах внедрения этого решения – довольно нетривиальных и неожиданных вызовах, с которыми столкнулись наши онтоинженеры.
        Читать дальше →
        • +14
        • 3.3k
        • 6
      • Управляя коллективом, нарушьте все правила


          В искусстве управления много противоречивых рецептов, и лучшие в мире менеджеры придерживаются своих собственных правил. Правы ли они и почему процесс найма в лидирующих на рынке компаниях устроен так, а не иначе? Нужно ли всеми силами пытаться преодолеть свои недостатки? Почему самоуправляемые команды часто не работают? На кого нужно тратить больше времени менеджеру — на лучших или худших сотрудников? Что за странные вопросы на собеседованиях Google? Прав ли начальник, когда указывает, как мне делать мою работу? Как вообще оценить, насколько я хорош как менеджер?

          Если ответы на эти вопросы вас интересуют, то вам стоит почитать книгу Маркуса Бакингема и Курта Коффмана «Сначала нарушьте все правила: Что лучшие в мире менеджеры делают по-другому». Эта книга могла бы стать для меня настольной, но перечитывать нет времени, поэтому я сделал выжимку, которой и хочу с вами поделиться.
          Читать дальше →
        • «Универсал» в команде разработки: польза или вред?

            image

            Всем привет! Меня зовут Людмила Макарова, я менеджер разработки в УБРиР и треть моей команды – «универсалы».

            Признайте: каждый Tech Lead мечтает о кросс-функциональности внутри своей команды. Ведь это так круто, когда один человек способен заменить трех, да еще и сделать это качественно, не сдвигая сроки. И, что немаловажно, это обеспечивает экономию ресурсов!
            Звучит очень заманчиво, но так ли это на самом деле? Давайте попробуем разобраться.
            Читать дальше →
          • PHP-Дайджест № 169 (26 ноября – 9 декабря 2019)


              Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4, PhpStorm 2019.3, InfectionPHP и другие релизы, статистика версий PHP, об использовании FFI, видео с прошедших конференций и митапов, порция полезных инструментов, и многое другое.

              Приятного чтения!


              Читать дальше →
            • Microservices. Как правильно делать и когда применять?



                Автор: Вячеслав Михайлов



                Монолитные приложения и их проблемы



                Все прекрасно знают, что такое монолитное приложение: все мы делали такие двух- или трехслойные приложения с классической архитектурой:





                Для маленьких и простых приложений такая архитектура работает прекрасно, но, допустим, вы хотите улучшить приложение, добавляя в него новые сервисы и логику. Возможно, у вас даже есть другое приложение, которое работает с теми же данными (например, мобильный клиент), тогда архитектура приложения немного поменяется:





                Так или иначе, по мере роста и развития приложения, вы сталкиваетесь с проблемами монолитных архитектур:



                • сложность системы постоянно растет;
                • поддерживать ее все сложнее и сложнее;
                • разобраться в ней трудно — особенно если система переходила из поколения в поколение, логика забывалась, люди уходили и приходили, а комментариев и тестов нет);
                • много ошибок;
                • мало тестов — монолит не разобрать и не протестировать, поэтому обычно есть только UI-тесты, поддержка которых обычно занимает много времени;
                • дорого вносить изменения;
                • застревание на технологиях (например, я работал в компании, где с 2003 г. технологии до сих пор не изменились).


                Рано или поздно вы понимаете, что уже ничего не можете сделать со своей монолитной системой. Заказчик, конечно, разочарован: он не понимает, почему добавление простейшей функции требует нескольких недель разработки, а затем стабилизации, тестирования и т. д. Наверняка многие знакомы с этими проблемами.


                Читать дальше →
                • 0
                • 47.3k
                • 6
              • Про зеркала репозиториев Centos и выбор лучшего из них

                  В прошлом году мы организовали у себя в сети общедоступные зеркала для нескольких Linux дистрибутивов. Это не сложный процесс и для больших проектов, вроде Ubuntu, почти полностью автоматизированный. В других случаях необходимо тем или иным способом связаться с проектом, например, в списке рассылки и явно высказать своё желание.

                  yum repolist

                  Технически это rsync, обычно по расписанию. Кто-то для этого предоставляет готовый набор скриптов, как Fedora, а кто-то просто говорит что надо синхронизироваться вот с этого сервера и рекомендуемый набор параметров. Самый затратный ресурс это место, мы недавно добрались до 4 терабайт и это дорого в нашем случае для того что не генерирует никакой прибыли. Взамен мы получили локальную доступность используемых нами дистрибутивов, это позволило упростить первоначальную настройку серверов исключив из неё обязательный доступ к Интернет. А ещё конечно мы рады что приобщились к чем-то большому, даже если наше участие в этом не сильно заметно.

                  Наше зеркало публичное, с него могут получать обновления все желающие, что собственно и происходит если судить по статистике обращений. В основном это Россия, но не только. Про то как так получается и как вообще происходит выбор конкретного сервера для обновлений на примере Centos седьмой версии этот пост.
                  Читать дальше →
                • Как добавить проверки в NoVerify, не написав ни строчки Go-кода

                    В статическом анализаторе NoVerify появилась киллер-фича: декларативный способ описания инспекций, который не требует программирования на Go и компиляции кода.


                    Чтобы вас заинтриговать, покажу описание простой, но полезной инспекции:


                    /** @warning duplicated sub-expressions inside boolean expression */
                    $x && $x;

                    Эта инспекция находит все выражения логического &&, где левый и правый операнд идентичны.


                    NoVerify — статический анализатор для PHP, написанный на Go. Почитать о нём можно в статье «NoVerify: линтер для PHP от Команды ВКонтакте». А в этом обзоре я расскажу о новой функциональности и том, как мы к ней пришли.


                    Читать дальше →
                    • +33
                    • 3.5k
                    • 7
                  • Представлена программа очистки мировых рек от мусора


                      На реке Кланг, в Малайзии

                      Год назад мы рассказывали о глобальном проекте очистки мировых океанов. Фонд Ocean Cleanup был основан молодым голландским пареньком, и, собрав несколько миллионов пожертвований, запустил несколько гигантских автономных понтонов на солнечных батареях, собирающих пластик, плавающий около поверхности воды. У проекта нашлось немало критиков, в основном говорящих, что даже такой системой океан не очистить. Особенно если каждый год в него прибывает несколько новых миллионов тонн мусора.


                      Теперь Боян Слат, молодой изобретатель и руководитель фонда, займется устранением еще и этой проблемы. Ocean Cleanup объединяется с государственными организациями, некоммерческими фондами и мэрами городов, чтобы очищать самые загрязненные реки в метрополиях. Для этого на днях в Нидерландах был представлен их новый автономный агрегат – The Interceptor.

                      Читать дальше →
                    • Понимание разницы между СI и СD: «если что-то вызывает боль, делайте это почаще»

                      • Translation
                      • Tutorial
                      Disclaimer. Костис Капелонис — Developer advocate (человек, защищающий и отстаивающий принципы программной разработки) Codefresh, первой платформы CI/CD для Kubernetes и контейнеров. Миссия Codefresh «Автоматизировать и упрости всё, от кода до облака». Как инженер-программист, Костис имеет многолетний опыт контейнеризации приложений, построения конвейеров CI/CD и разработки приложений Java. Он живет в Греции и любит кататься на роликах.

                      Как гласит пословица, «если что-то вызывает боль, делайте это почаще». Непрерывная интеграция — это, по сути, повторение шага интегрирования с высокой частотой, чтобы облегчить вызываемую ею «боль». Статья именно об этом — о «боли» разработки и способах её уменьшить.

                      Существует много информации о непрерывной интеграции (CI) и непрерывной доставке (CD). Публикации в блогах с помощью технических терминов пытаются объяснить, что означают методологии CI/CD, что они делают и как они могут помочь вашей компании. К сожалению, часто обе эти методологии связывают с конкретными инструментами или даже поставщиками ПО. Типичный разговор на эту тему в компании звучит так:

                      — Вы используете непрерывную интеграцию в вашей команде?
                      — Да, конечно, мы используем инструмент X!

                      Позвольте мне раскрыть вам маленький секрет. Непрерывная интеграция и доставка – это два подхода к разработке кода, которые совершенно не связаны с конкретным инструментом или поставщиком. Несмотря на то, что существуют инструменты и решения, которые могут помочь вам в обеих случаях (например, Codefresh), в действительности компания может практиковать CI / CD, используя только сценарии bash и однострочники Perl. Ээто не очень практично, но, безусловно, вполне возможно.

                      Поэтому, вместо того, чтобы попадать в общую ловушку объяснения сути CI/CD с помощью инструментов и технических терминов, мы объясним, что представляют собой эти методологии, опираясь на самый важный фактор процесса разработки – людей!
                      Читать дальше →
                    • Longhorn, распределённое хранилище для K8s от Rancher, передано в CNCF

                        Компания Rancher Labs, специализирующаяся на решениях и услугах для Kubernetes, объявила о передаче своего Open Source-хранилища для постоянных данных Longhorn в некоммерческую организацию CNCF, ответственную за развитие Kubernetes, Prometheus и ряда других проектов.



                        О проекте и его статусе


                        Longhorn был представлен в апреле 2017 года и называется распределённым блочным хранилищем для кластеров Kubernetes. Среди его главных особенностей — отказоустойчивость (нет единой точки отказа) и ориентированность на применение в enterprise, инкрементальные снапшоты, бэкапы на дополнительные хранилища (NFS или совместимые с S3), автоматизированные обновления без простоя в работе, простой в использовании GUI.
                        Читать дальше →
                        • +39
                        • 7.4k
                        • 9
                      • Распределенное логирование и трассировка для микросервисов

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

                          Если логирование хорошо организовано, то позволяет понимать, что, когда и как идет не так, как задумано, и передавать нужную информацию людям, которым предстоит эти ошибки исправлять. Для системы, в которой каждую секунду отправляется 100 тысяч сообщений в 10 дата-центрах на 190 стран, а 350 инженеров каждый день что-то деплоят, система логирования особенно важна.



                          Иван Летенко — тимлид и разработчик в Infobip. Чтобы решить проблему централизованной обработки и трассировки логов в микросервисной архитектуре при таких огромных нагрузках, в компании пробовали различные комбинации стека ELK, Graylog, Neo4j и MongoDB. В итоге, спустя много грабель, написали свой лог-сервис на Elasticsearch, а как БД для дополнительной информации взяли PostgreSQL.

                          Под катом подробно, с примерами и графиками: архитектура и эволюция системы, грабли, логирование и трассировка, метрики и мониторинг, практика работы с кластерами Elasticsearch и их администрирования в условиях ограниченных ресурсов.
                          Читать дальше →
                          • +36
                          • 10.1k
                          • 3
                        • RabbitMQ против Kafka: отказоустойчивость и высокая доступность в кластерах

                          • Translation


                          Отказоустойчивость и высокая доступность — большие темы, так что посвятим RabbitMQ и Kafka отдельные статьи. Данная статья о RabbitMQ, а следующая — о Kafka, в сравнении с RabbitMQ. Статья длинная, так что устраивайтесь поудобнее.

                          Рассмотрим стратегии отказоустойчивости, согласованности и высокой доступности (HA), а также компромиссы, на которые приходится идти в каждой стратегии. RabbitMQ может работать на кластере узлов — и тогда классифицируется как распределенная система. Когда речь заходит о распределенных системах, мы часто говорим о согласованности и доступности.

                          Эти понятия описывают, как система ведет себя при сбое. Сбой сетевого соединения, сбой сервера, сбой жесткого диска, временная недоступность сервера из-за сборки мусора, потеря пакетов или замедление сетевого соединения. Все это может привести к потере данных или конфликтам. Оказывается, практически невозможно поднять систему, одновременно и полностью непротиворечивую (без потери данных, без расхождения данных), и доступную (будет принимать операции чтения и записи) для всех вариантов сбоя.
                          Читать дальше →
                          • +44
                          • 28.8k
                          • 4
                        • Работа с ошибками в Go 1.13

                          • Translation
                          • Tutorial

                          В последнее десятилетие мы успешно пользовались тем, что Go обрабатывает ошибки как значения. Хотя в стандартной библиотеке была минимальная поддержка ошибок: лишь функции errors.New и fmt.Errorf, которые генерируют ошибку, содержащую только сообщение — встроенный интерфейс позволяет Go-программистам добавлять любую информацию. Нужен лишь тип, реализующий метод Error:

                          type QueryError struct {
                              Query string
                              Err   error
                          }
                          
                          func (e *QueryError) Error() string { return e.Query + ": " + e.Err.Error() }
                          Читать дальше →
                        • Разворачиваем среду для работы с микросервисами. Часть 1 установка Kubernetes HA на bare metal (Debian)

                          • Tutorial


                          Здравствуйте уважаемые читатели Хабра!


                          Этой публикацией я хочу начать цикл статей про развертывание полноценной среды оркестрации контейнерами Kubernetes, которая будет готова к эксплуатации и запуску приложений.
                          Я хочу рассказать не просто про то, как развернуть кластер Kubernetes, но и про то, как настроить кластер после установки, как добавить в него удобных инструментов и дополнений для использования микросервисной архитектуры.


                          Данный цикл будет состоять минимум из четырех статей:


                          1. В первой из них я расскажу, как на голое железо установить отказоустойчивый кластер kubernetes, как установить стандартный дашборд и настроить доступ к нему, как установить ingress контроллер.
                          2. Во второй статье я расскажу, как развернуть отказоустойчивый кластер Ceph и как начать использовать RBD тома в нашем кластере Kubernetes. Также немного затрону остальные виды стораджей (storages) и более подробно рассмотрю local-storage. Дополнительно расскажу, как на базе созданного кластера CEPH организовать отказоустойчивое хранилище S3
                          3. В третьей статье я расскажу, как в нашем кластере Kubernetes развернуть отказоустойчивый кластер MySql, а именно — Percona XtraDB Cluster on Kubernetes. И также опишу все проблемы с которыми мы столкнулись, когда решили перенести БД в kubernetes.
                          4. В четвертой статье я постараюсь собрать все вместе и рассказать, как задеплоить и запустить приложение, которое будет использовать БД и тома ceph. Расскажу, как настроить ingress контроллер для доступа к нашему приложению извне и сервис автоматического заказа сертификатов от Let's Encrypt. Еще — как автоматически поддерживать данные сертификаты в актуальном состоянии. Также немного затронем тему RBAC в контексте доступа до панели управления. Расскажу в двух словах про Helm и его установку.
                            Если Вам интересна информация данных публикаций, то — добро пожаловать!
                          Читать дальше →
                          • +14
                          • 28.6k
                          • 4
                        • Разработка гибридных PHP/Go приложений с использованием RoadRunner

                            Классическое PHP-приложение — однопоточность, тяжелая загрузка (если вы, конечно, не пишите на микрофреймворках) и неизбежная смерть процесса после каждого запроса… Такое приложение тяжелое и медленное, но мы можем дать ему вторую жизнь гибридизацией. Чтобы ускорить — демонизируем и оптимизируем утечки памяти, чтобы добиться большей производительности — внедрим собственный сервер РНР-приложений RoadRunner на Golang, чтобы добавить гибкости — упростим PHP-код, расширим стек и разделим ответственность между сервером и приложением. По сути, заставим наше приложение работать, как если бы мы писали его на Java или другом языке.

                            Благодаря гибридизации ранее медленное приложение перестало страдать 502 ошибками под нагрузками, уменьшилось среднее время ответа на запросы, производительность увеличилась, а деплой и сборка стали проще за счет унификации приложения и избавления от лишней обвязки в виде nginx + php-fpm.


                            Антон Титов (Lachezis) — технический директор и соучредитель SpiralScout LLC с опытом активной коммерческой разработки на PHP в 12 лет. Последние несколько лет активно внедряет Golang в стек разработки компании. Об одном из примеров Антон рассказал на PHP Russia 2019.
                            Читать дальше →
                            • +42
                            • 12.7k
                            • 3
                          • Как создать простой микросервис на Golang и gRPC и выполнить его контейнеризацию с помощью Docker

                            Привет, Хабр! представляю вашему вниманию перевод статьи «Go, gRPC and Docker» автора Mat Evans.

                            Существует множество статей о совместном использовании Go и Docker. Создавать контейнеры, способные взаимодействовать с клиентами и между собой, очень легко. Далее следует небольшой пример того, как это делается на базовом уровне.
                            Читать дальше →
                            • +23
                            • 16k
                            • 6
                          • How to use PHP to implement microservices?

                              Swoft


                              Why should talk service governance?


                              With the increasing popularity of the Internet, the traditional MVC architecture has become more and more bloated and very difficult to maintain as the scale of applications continues to expand.


                              We need to take actions to split a large system into multiple applications according to business characteristics. For example, a large e-commerce system may include user system, product system, order system, evaluation system, etc., and we can separate them into multiple individual applications. The characteristics of multi-application architecture are applications run independently and they are unable to call each other.

                              Read more →