Pull to refresh
-3
0
Send message

Руководство по Kubernetes, часть 1: приложения, микросервисы и контейнеры

Reading time16 min
Views161K
По нашей просьбе Хабр создал хаб Kubernetes и нам приятно разместить первую публикацию в нём. Подписывайтесь!

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


Читать дальше →
Total votes 36: ↑34 and ↓2+32
Comments18

Руководство по Kubernetes, часть 2: создание кластера и работа с ним

Reading time22 min
Views105K
В прошлый раз мы рассмотрели два подхода к работе с микросервисами. В частности, один из них подразумевает применение контейнеров Docker, в которых можно выполнять код микросервисов и вспомогательных программ. Сегодня же мы, используя уже имеющиеся у нас образы контейнеров, займёмся работой с Kubernetes.


Читать дальше →
Total votes 29: ↑27 and ↓2+25
Comments6

Consumer-Driven Contracts как способ развития сервиса

Reading time24 min
Views11K

— Секрет успеха поставщика заключается в том, чтобы обеспечить потребителей качественным товаром… ой, то есть сервисом. Ну и еще важно не пускаться во все тяжкие с нарушением обратной совместимости.
Уолтер Уайт


От переводчика


Что это


Это перевод статьи, описывающей шаблон Consumer-Driven Contracts (CDC).
Оригинал опубликован на сайте Мартина Фаулера за авторством Яна Робинсона.


Зачем это


В микросервисной архитектуре зависимости между сервисами являются источником проблем. Шаблон CDC помогает решать эти проблемы способом, устраивающим и разработчиков сервиса, и его потребителей. Фаулер ссылается на Consumer-Driven Contracts в своей ключевой статье по микросервисной архитектуре: Microservices.


Для кого это


Статья будет особенно полезна командам, разрабатывающим сервисы для нескольких потребителей в рамках одной организации, и командам-потребителям таких сервисов.

Читать дальше →
Total votes 9: ↑8 and ↓1+7
Comments2

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

Reading time16 min
Views32K

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


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


image
Узнать про саги
Total votes 44: ↑44 and ↓0+44
Comments19

Чистая архитектура на PHP. Как её измерять и контролировать?

Reading time24 min
Views24K

Предисловие


Как ты уже понял из названия, говорить я тут собрался о самом, что ни на есть, “высоком” — Чистой архитектуре. А толчком к развитию всей этой истории послужила книга Роберта Мартина “Чистая архитектура”. Если еще не читал, осмелюсь порекомендовать! Автор раскрывает много важных тем, активно делится своим богатым жизненным опытом (из проф. области естественно) и сделанными на его основе выводами, эпизодически вплетает в главы истории о том, как виртуозно говнокодили (ну и не только, конечно же) наши отцы и деды в далёких 60-х, 70-х, 80-х и даже лихих 90-х, как по крупинкам собирали всеми любимые принципы SOLID и их аналоги в мире компонентов, и чему научились за прошедшие полвека. В процессе чтения книги хорошо прослеживается линия развития индустрии разработки ПО, типичные проблемы, с которыми пацанам приходилось сталкиваться, и способы их решения.

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

Мне кажется, статья будет полезна всем. Те, кто с книгой уже знаком, смогут освежить в своей памяти некоторые ее моменты, или просто пропустить первую часть и сразу приступить к знакомству с инструментом. Те, кто ранее книгу не читал, возможно, и в первой части найдут для себя что-то новое.
Читать дальше →
Total votes 36: ↑33 and ↓3+30
Comments23

Не боги горшки обжигают

Reading time7 min
Views6K

На пороге создания нового проекта


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


Silla Niza

Внедрение собственной системы мониторинга на примере
Total votes 24: ↑19 and ↓5+14
Comments8

Что такое Entity System Framework и зачем он нужен в геймдеве?

Reading time18 min
Views50K
На Хабре уже есть очень много интересных статей про создание игры с нуля, но мало статей, описывающих что делать, чтобы своя любимая поделка не превратилась во Франкенштейна и дошла до вменяемого состояния. Автор оригинальной статьи рассказывает, как эволюционировал код игрового движка от кучи хлама в основном цикле к продуманной, расширяемой архитектуре, использующей Entity Component System. В статье много кода, который почти весь часто повторяется — но я не стал его выбрасывать, поскольку с ним будет понятнее, какие изменения вносит автор и как это отражается на всей структуре. Статья рассчитана на новичков, вроде меня, которые уже настрочили несколько «гениальных» прототипов, но теперь не знают, как разобраться в их коде.
Читать дальше →
Total votes 19: ↑19 and ↓0+19
Comments12

Ура!

Reading time1 min
Views3.6K
Сегодня мы сняли пароль, чтобы Федор Смирнов, наш бывший коллега, согласно позывам другого бывшего коллеги, Александра Бурмистрова, не спрашивал больше пароли от сайта у наших друзей. Просить пароли у взрослых людей – это некрасиво, как минимум, и неудобно, пожалуй.

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

Если где-то видно битую ссылку, ошибку 500 – пишите в комментариях, будем править; тоже самое относится к опечаткам на сайте.
Total votes 4: ↑4 and ↓0+4
Comments26

Поиск и исправление багов в исходниках PHP

Reading time6 min
Views17K


Честно предупреждаю: воспринимайте этот текст с определённой долей скептицизма. Я лишь недавно начал знакомство с внутренностями PHP, но хотел бы рассказать вам о том, что творится за кулисами бага #75237.

Total votes 70: ↑68 and ↓2+66
Comments11

CDR. Сохранить и приумножить

Reading time5 min
Views14K
image

Очень часто, созданию базы данных CDR отводится мало места в описаниях настройки. Как правило, все сводится к цитате SQL команд и обещанию, что если кинуть ее в консоль то «все будет ОК».
Читать дальше →
Total votes 7: ↑7 and ↓0+7
Comments23

PHP extension. Пишем простой массив с Traversable и ArrayAccess

Reading time26 min
Views10K
В этой статье предлагаю на примере простого массива рассмотреть как именно работают внутренние интерфейсы Traversable и ArrayAccess.

Сразу приведу список ресурсов, на которые далее по тексту будет множество ссылок.

И про платформу: я писал код по ubuntu, так что для других linux дистрибутивов (да и OS X) понадобится минимум изменений (поменять apt-get). Если хотите писать под Windows, то придется поискать информацию в других интернетах (все равно никто не пишет код по windows).

Картинки не будет. Приступаем.
Total votes 29: ↑29 and ↓0+29
Comments5

Разбор задач 3-го квалификационного раунда Russian Code Cup 2015

Reading time4 min
Views7.8K


В воскресенье 31 мая прошел последний 3-й квалификационный раунд RCC 2015. Первым за 1 минуту и 49 секунд решил задачу A (Покупка велосипеда) Григорий Резников (grikukan), он же раньше всех справился с задачами B (Цифровые корни) и C (Две улитки) — 7:26 и 18:39 соответственно. Адам Бардашевич (subscriber) раньше всех решил задачу D (Игровые автоматы) за 14 минут и 20 секунд. 

Олег Меркурьев (Merkurev) стал первым при решении последней задачи E (Интернетопровод) — 1 час и 1 минута. По итогам 3-го раунда первую строчку в турнирной таблице занял Евстропов Глеб (GlebsHP) из Москвы.

Немного фактов: в раунде сразились 3762 программиста, из них хотя бы одно правильное решение прислали 664. Всего за раунд было прислано 3536 решений. 202 лучших участника было квалифицировано (200-е место поделили 3 участника). 3 участника были дисквалифицированы жюри. 604 участника, прошедшие квалификацию в трех раундах, сразятся 14 июня за звание финалиста. Все участники отборочного раунда получат онлайн-сертификаты, а 200 лучших из них получат футболки RCC 2015.
Читать дальше →
Total votes 28: ↑26 and ↓2+24
Comments0

Изучаем PHP изнутри. Zval

Reading time10 min
Views50K
Эта статья базируется на главе Zvals книги PHP Internals Book, переводом которой на русский язык я сейчас занимаюсь [1]. Книга ориентирована в первую очередь на C-программистов, желающих писать свои расширения для PHP, но, я уверен, что она окажется полезной и для PHP-разработчиков, так как описывает внутреннюю логику работы интерпретатора. В статье я оставил только базовую теорию, которая должна быть понятна всем разработчикам (даже не знакомым с PHP или C). За более полным изложением материала обратитесь к книге.

Задачка для привлечения внимания. Каким будет результат выполнения следующего кода?
$obj1 = new StdClass();
$obj2 = new StdClass();

$obj1->value = 1;
$obj2->value = 1;

function f1($o) {
  $o = 100;
}

function f2($o) {
  $o->value = 100;
}

f1($obj1);
f2($obj2);

var_dump($obj1);
var_dump($obj2);


Ответ
object(stdClass)#1 (1) { [«value»]=> int(1) }
object(stdClass)#2 (1) { [«value»]=> int(100) }

Если вы точно определили ответ и можете объяснить почему он будет именно таким, то, наверное, вы не узнаете из этой статьи ничего нового, иначе — вам определенно стоит прочитать эту статью, чтобы углубить свои знания.
Читать дальше →
Total votes 54: ↑47 and ↓7+40
Comments37

Information

Rating
Does not participate
Registered
Activity