Pull to refresh
37
0

User

Send message

Яндекс выложил в опенсорс YDB

Reading time 16 min
Views 139K
Сегодня мы выложили в опенсорс систему управления базами данных YDB — плод многолетнего опыта Яндекса в разработке систем хранения и обработки данных. Исходный код, документация, SDK и все инструменты для работы с базой опубликованы на GitHub под лицензией Apache 2.0. Развернуть базу можно как на собственных, так и на сторонних серверах — в том числе в любых облачных сервисах.



YDB решает задачи в одной из самых критичных областей — позволяет создавать интерактивные приложения, которые можно быстро масштабировать по нагрузке и по объёму данных. Мы разрабатывали её, исходя из ключевых требований к сервисам Яндекса. Во-первых, это катастрофоустойчивость, то есть возможность продолжить работу без деградации при отключении одного из дата-центров. Во-вторых, это масштабируемость на десятки тысяч серверов на чтение и на запись. В-третьих, это строгая консистентность данных.

В посте я расскажу об истории развития технологий баз данных, о том, зачем использовать YDB, как её применяют текущие пользователи и какие плюсы для всех несёт выход в опенсорс. А во второй половине поста поговорим о разных вариантах развёртывания.
Читать дальше →
Total votes 335: ↑332 and ↓3 +329
Comments 135

Разделяй и Властвуй. Разбор задач

Reading time 5 min
Views 15K


Решение задач с помощью метода "Разделяй и Властвуй" или по-английски "Divide and Conquer" является одним из базовых методов по ускорению алгоритмов. Примером тому служит переход от квадратичной сложности пузырьковой сортировки или сортировки вставками к сложности \inline O(n\log{n}) при сортировке слиянием. Или переход от линейной сложности к логарифмической, при реализации поиска элемента в отсортированном массиве (см. бинарный поиск).


В этой статье мы рассмотрим два примера задач с пояснениями и кодом, в которых будет использоваться этот подход.

Читать дальше →
Total votes 13: ↑12 and ↓1 +11
Comments 2

Рекомендательные системы: проблемы и методы решения. Часть 1

Reading time 14 min
Views 23K

Привет! Я хочу рассказать вам о рекомендательных алгоритмах. Мы в Prequel создаем фильтры и эффекты для редактирования фото и видео. Создаем давно, и постепенно этих эффектов стало очень много. А с ними и пользовательского контента. Мы захотели помочь с выбором из этого многообразия, для чего нам и понадобилась система рекомендаций. Если масштабы вашей системы такие, что пользователям сложно в ней ориентироваться, возможно, что рекомендации могут помочь и вам.

Задуманный систем оказался слишком объемным для одной статьи, поэтому мы разбили его на две части. Перед вами первая, она посвящена постановке задачи и базовым методам решения. В этой части мы разберем коллаборативные модели от матричного разложения (на примере ALS) до neural collaborative filtering. Кроме того, будет небольшой обзор метрик и техник борьбы с проблемой холодного старта.

Читать далее
Total votes 9: ↑9 and ↓0 +9
Comments 4

Анатомия каналов в Go

Reading time 34 min
Views 153K

Привет, Хабр! Представляю вашему вниманию перевод статьи "Anatomy of Channels in Go" автора Uday Hiwarale.


Что такое каналы?


Канал — это объект связи, с помощью которого горутины обмениваются данными. Технически это конвейер (или труба), откуда можно считывать или помещать данные. То есть одна горутина может отправить данные в канал, а другая — считать помещенные в этот канал данные.


Создание канала


Go для создания канала предоставляет ключевое слово chan. Канал может передавать данные только одного типа, данные других типов через это канал передавать невозможно.

Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Comments 6

Рекомендательные системы: проблемы и методы решения. Часть 2

Reading time 15 min
Views 14K

Привет! Меня зовут Екатерина Ванская, и я занимаюсь data science в компании Prequel. В этой статье я продолжу обзор рекомендательных алгоритмов, которым мы начали в предыдущем моем материале

(вот ссылка на первую часть).

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

Читать далее
Total votes 5: ↑5 and ↓0 +5
Comments 6

Наш опыт создания API Gateway

Reading time 6 min
Views 23K
Некоторые компании, в том числе наш заказчик, развивают продукт через партнерскую сеть. Например, крупные интернет-магазины интегрированы со службой доставки — вы заказываете товар и вскоре получаете трекинговый номер посылки. Другой пример — вместе с авиабилетом вы покупаете страховку или билет на аэроэкспресс.

Для этого используется один API, который нужно выдать партнерам через API Gateway. Эту задачу мы и решили. В этой статье расскажем подробности.

Дано: экосистема и API-портал с интерфейсом, где пользователи зарегистрированы, получают информацию и т.п. Нам нужно сделать удобный и надежный API Gateway. В процессе нам нужно было обеспечить

  • регистрацию,
  • контроль подключения к API,
  • мониторинг того, как пользователи используют конечную систему,
  • учёт бизнес-показателей.



В статье мы расскажем о нашем опыте создания API Gateway, в ходе которого мы решали следующие задачи:

  • аутентификация пользователя,
  • авторизация пользователя,
  • модификация исходного запроса,
  • проксирование запроса,
  • постобработка ответа.

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

Облачные API Gateway: зачем нужны подобные сервисы и чем они отличаются у разных платформ

Reading time 8 min
Views 23K

Добро пожаловать в современный интернет, где большая часть взаимодействия приходится на интерфейсы прикладного программирования — API. На API держится цифровой бизнес: с ними стало возможным предоставлять и получать услуги через приложения и подключённые к Сети устройства. Платёжные системы? Работают через API. Интерактивная карта, показывающая, как добраться от метро до офиса? Снова API. Даже бэкенд строится на API. 

Похоже, мы окружены — значит, придётся разбираться. Что такое API, на Хабре уже рассказывали, а я предлагаю рассмотреть поподробнее реализацию API Gateway на облачных платформах.

Читать далее
Total votes 14: ↑14 and ↓0 +14
Comments 0

А нужен ли Redis или хватит PostgreSQL

Reading time 3 min
Views 18K
image

Есть проверенная архитектура, которую я видел много раз для поддержки ваших веб-сервисов и приложений:

  • PostgreSQL для хранения данных
  • Redis для координации очередей фоновых заданий (и некоторых ограниченных атомарных операций)

Redis — это фантастика, но что, если бы я сказал вам, что его наиболее распространенные варианты использования этого стека на самом деле могут быть достигнуты с использованием только PostgreSQL?

Сценарий 1: очередь заданий


Пожалуй, наиболее частое использование Redis, которое я видел, — это координация отправки заданий из вашего веб-сервиса в пул фоновых воркеров. Идея состоит в том, что вы хотите записать желание выполнить какое-то фоновое задание (возможно, с некоторыми входными данными) и гарантировать, что только один из многих ваших фоновых воркеров выполнит его. Redis помогает в этом, поскольку предоставляет богатый набор атомарных операций для своих структур данных.
Читать дальше →
Total votes 27: ↑25 and ↓2 +23
Comments 10

Платформа Netflix Cosmos

Reading time 12 min
Views 5.8K

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

В этой статье мы расскажем, почему мы решили создать платформу Netflix Cosmos, как она работает, а также поделимся полезным опытом, который мы накопили в ходе проекта.

Читать перевод далее
Total votes 21: ↑20 and ↓1 +19
Comments 0

Синхронизация команды со SCRUM

Reading time 6 min
Views 15K
Как мне кажется, одна их самых больших проблем в скраме — это полный рассинхрон между людьми в команде. Мне пока не удавалось увидеть ни одного стабильного решения этой проблемы. Конечно, есть стандартные инструменты, но далеко не всегда они дают ответы на все вопросы и закрывают все дыры.


Предлагаю зайти к нам в гости и посмотреть как с проблемой синхронизации внутри себя борется команда “Онлайн-ипотеки” компании “Альфа-Банк”.
Читать дальше →
Total votes 25: ↑24 and ↓1 +23
Comments 12

Почему обратная связь так важна и как правильно ее использовать в scrum-командах, чтобы получить максимум эффекта

Reading time 6 min
Views 8.1K

Всем привет! Меня зовут Мария Фомина, я являюсь scrum-мастером в компании «Ренессанс страхование». Моя статья включает в себя две части: первая посвящена определению обратной связи, ее основным видам и критериям, моделям использования и распространённым ошибкам при применении техник, а также советам, как можно принимать обратную связь.

Во второй части вы узнаете секреты создания и проведения эффективного тренинга в scrum-командах по обратной связи.

Что такое обратная связь (далее по тексту обратная связь – ОС)? Под обратной связью понимается информация о том, как объект обратной связи проявляется и как это влияет на других людей, команду, разрабатываемый продукт, организацию. Не стоит путать это с неконструктивной и субъективной критикой, разного рода манипуляциями, выраженными в том числе в словесной форме, а также оценочным суждением, приказами и побуждениями к действию.

Какие виды обратной связи нам известны? Вы скорее всего встречали обширное количество видов, но я бы предложила опираться на нижеизложенные вариации:

Читать далее
Total votes 6: ↑4 and ↓2 +2
Comments 1

Как мы теперь договариваемся о новом бизнесе на берегу: юнит-тесты в реальном мире

Reading time 8 min
Views 14K


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

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

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

И вот в какой-то момент к нам в гости завалился человек, который посвятил полжизни конфликтам учредителей. Первая мысль была: «Ну, это не про нас». А потом здравый смысл пересилил, и мы попробовали его механику договорки. И знаете, что? Отдаёт мазохизмом, но удивительно хорошо работает. В общем, давайте покажу, как выглядит очень далёкий, но всё же аналог юнит-тестов сотрудничества нескольких предпринимателей.
Читать дальше →
Total votes 53: ↑53 and ↓0 +53
Comments 14

Гайд начинающего тимлида

Reading time 14 min
Views 51K

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

Всё это я проговаривал на вебинаре в Хекслете тут https://www.youtube.com/watch?v=y_HkXvFovAc

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

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

Читать далее
Total votes 51: ↑49 and ↓2 +47
Comments 16

Архитектура in-memory СУБД: 10 лет опыта в одной статье

Reading time 14 min
Views 23K
image

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

В статье я рассуждаю об архитектурных принципах решений в оперативной памяти. Как можно взять лучшее от in-memory мира — производительность невероятного уровня — и не жертвовать достоинствами дисковых реляционных систем. В первую очередь, надежность — как можно быть уверенным в сохранности данных.

Этот рассказ сжимает 10 лет опыта работы с in-memory решениями в один текст. Порог входа максимально низкий. Чтобы получить пользу от прочтения, вам не нужно иметь столько же лет опыта, достаточно базового понимания IT.
Читать дальше →
Total votes 57: ↑57 and ↓0 +57
Comments 18

Приложение двенадцати факторов — The Twelve-Factor App

Reading time 22 min
Views 68K
Уважаемые читатели! Представляю вашему вниманию перевод методологии создания веб-приложений The Twelve-Factor App от разработчиков платформы Heroku. Мои комментарии скрыты спойлерами по ходу статьи.

Введение


В наши дни программное обеспечение обычно распространяется в виде сервисов, называемых веб-приложения (web apps) или software-as-a-service (SaaS). Приложение двенадцати факторов — это методология для создания SaaS-приложений, которые:

  • Используют декларативный формат для описания процесса установки и настройки, что сводит к минимуму затраты времени и ресурсов для новых разработчиков, подключенных к проекту;
  • Имеют соглашение с операционной системой, предполагающее максимальную переносимость между средами выполнения;
  • Подходят для развертывания на современных облачных платформах, устраняя необходимость в серверах и системном администрировании;
  • Сводят к минимуму расхождения между средой разработки и средой выполнения, что позволяет использовать непрерывное развертывание (continuous deployment) для максимальной гибкости;
  • И могут масштабироваться без существенных изменений в инструментах, архитектуре и практике разработки.

Методология двенадцати факторов может быть применена для приложений, написанных на любом языке программирования, и которые используют любые комбинации сторонних служб (backing services) (базы данных, очереди сообщений, кэш-памяти, и т.д.).
Читать дальше →
Total votes 23: ↑22 and ↓1 +21
Comments 5

Стратегии деплоя в Kubernetes: rolling, recreate, blue/green, canary, dark (A/B-тестирование)

Reading time 5 min
Views 68K
Прим. перев.: Этот обзорный материал от Weaveworks знакомит с наиболее популярными стратегиями выката приложений и рассказывает о возможности реализации наиболее продвинутых из них с помощью Kubernetes-оператора Flagger. Он написан простым языком и содержит наглядные схемы, позволяющие разобраться в вопросе даже начинающим инженерам.


Схема взята из другого обзора стратегий выката, сделанного в Container Solutions

Одной из самых больших проблем при разработке cloud native-приложений сегодня является ускорение деплоя. При микросервисном подходе разработчики уже работают с полностью модульными приложениями и проектируют их, позволяя различным командам одновременно писать код и вносить изменения в приложение.

Более короткие и частые развертывания имеют следующие преимущества:

  • Сокращается время выхода на рынок.
  • Новые функции быстрее попадают к пользователям.
  • Отклики пользователей быстрее доходят до команды разработчиков. Это означает, что команда может дополнять функции и исправлять проблемы более оперативно.
  • Повышается моральный дух разработчиков: с большим количеством функций в разработке интереснее работать.
Читать дальше →
Total votes 43: ↑40 and ↓3 +37
Comments 3

Reactor, WebFlux, Kotlin Coroutines, или Асинхронность на простом примере

Reading time 12 min
Views 20K


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


В JVM-мире всё немного сложнее. Есть огромное количество фреймворков и библиотек, блокирующих потоки при использовании. Так и сама stdlib может делать то же самое порой. Да и в Java нет аналогичного механизма, похожего на горутины в Golang.


Тем не менее, JVM активно развивается и появляются новые интересные возможности. Есть Kotlin с корутинами, которые по своему использованию очень похожи на горутины из Golang (хоть и реализованы совершенно по-другому). Есть JEP Loom, который в будущем привнесёт fibers в JVM. Один из самых популярных веб-фреймворков — Spring — не так давно добавил возможность создавать полностью неблокирующие сервисы на Webflux. А с недавним релизом Spring boot 2.2 интеграция с Kotlin стала ещё лучше.


Предлагаю на примере небольшого сервиса по переводу денег с одной карты на другую самим написать приложение на Spring boot 2.2 и Kotlin для интеграции с несколькими внешними сервисами.

Читать дальше →
Total votes 35: ↑34 and ↓1 +33
Comments 15

kotlinx.coroutines 1.4.0: представляем StateFlow и SharedFlow

Reading time 5 min
Views 9.1K

Сегодня мы с радостью объявляем о выходе версии 1.4.0 библиотеки Kotlin Coroutines. Основными новшествами этого релиза стали StateFlow и SharedFlow, которые теперь являются стабильными API-интерфейсами. StateFlow и SharedFlow предназначены для использования в тех случаях, когда требуется управление состоянием в контексте асинхронного выполнения с применением Kotlin Coroutines.

(Примечание: перевод статьи от 30 октября 2020г.)

Читать далее
Total votes 7: ↑6 and ↓1 +5
Comments 4

Как давать обратную связь: 9 правил

Reading time 4 min
Views 78K
Исследования показали: получив конструктивный фидбек, сотрудники работают лучше. Если обратной связи нет, появляется стресс: трудно понять, хорошо ли ты справляешься и куда двигаться дальше. Возникает «кризис признания» – а там не за углом и выгорание.

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


Читать дальше →
Total votes 29: ↑25 and ↓4 +21
Comments 13

Что посмотреть на карантине? Подборка материалов от Технострима (часть 1)

Reading time 4 min
Views 8.8K

Сидение на необъявленном карантине можно провести с пользой, совершенствуя тело и разум. О первом мы, возможно, когда-нибудь поговорим, а пока предлагаем вам пищу для ума: подборку разноплановых интересных материалов в виде двух курсов и двух интервью.
Total votes 27: ↑26 and ↓1 +25
Comments 5

Information

Rating
Does not participate
Location
Россия
Date of birth
Registered
Activity