Pull to refresh
0
0
Send message

Как работать с деньгами, или денежные суммы в бэкенд-разработке

Reading time5 min
Views11K

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

Читать далее

Как позвонить всем вокруг

Reading time11 min
Views65K

Мы в Postuf большие поклонники франшизы Watch Dogs - приключенческой видеоигры, в которой главный герой в лице Эйдена Пирса, имея доступ к вымышленной системе ctOS, способен проворачивать со своего смартфона разные хакерские трюки. Однажды нам стало интересно, возможно ли в реальной жизни повторить трюк звонка на телефоны находящихся рядом людей.

Оказалось, возможно

Распределённые транзакции Kafka + PostgreSQL средствами Spring

Reading time9 min
Views34K

Как известно, во многих IT-проектах есть типичная задача -  транзакционная обработка данных в интеграционных сценариях, когда необходимо согласованно отправить или принять данные из внешней системы и при этом обновить собственное состояние приложения.

Особенно интересной эта задача становится, когда для интеграции используется Kafka, так как она имеет свои ограничения, касающиеся реализации транзакционности. Вообще, сейчас Kafka достаточно широко применяется именно  в качестве платформы для асинхронной интеграции, это справедливо и для проектов, которые мы в ЛАНИТ — Би Пи Эм реализуем, например, в Альфа-Банке и ВТБ. Поэтому, надеемся, данная тема будет интересна многим.

В этой статье рассмотрим подход к реализации распределённых транзакций (в рамках одного Java-приложения), которые охватывают Kafka и реляционную СУБД. Для этого воспользуемся средствами управления транзакциями, имеющимися в Spring.

Варианты с организацией eventual consistency с помощью типовых паттернов (Saga, Transactional Outbox и др.) и/или использования дополнительных платформ (Debezium, Kafka Connect и пр.) - тема для отдельной статьи (так что ждите продолжения). В этой статье тему затрагивать не будем. 

Читать далее

WebRTC для всех и каждого. Часть 2

Reading time30 min
Views18K



Привет, друзья!


Представляю вашему вниманию вторую часть перевода этой замечательной книги по WebRTC. Данная часть посвящена безопасности, процессу установки соединения и обмену медиаданными (части 4-6 оригинала).


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


Если вам это интересно, прошу под кат.

Читать дальше →

Как устроены облачные сети и чем они отличаются от On-premise

Reading time19 min
Views15K

Cloud Station — Photoshop Art by PhaseRunner

Принципы построения облачных и On-premise-сетей различаются: в облаке много новых сетевых сущностей и подходов к построению инфраструктуры. Но новое не значит сложное.

Меня зовут Болат Кажкенов, я архитектор VK Cloud. В этой статье я расскажу, чем различаются облачные и On-premise-сети, какие преимущества и недостатки есть у каждого из решений. 

Если раньше вы не работали с облачными сетями и представляете их устройство только в общих чертах, то, надеюсь, моя статья поможет вам восполнить пробелы в знаниях и проконсультировать коллег, если вдруг в вашей компании встанет вопрос о миграции в облако. Все примеры я буду показывать на нашей облачной платформе — VK Cloud.
Читать дальше →

Как мы с друзьями собрали сервис для построения маршрутов для походов и велопутешествий ActiveTrip.me

Reading time7 min
Views30K

Всем привет! Меня зовут Александр, я разработчик ActiveTrip.me — cервиса для построения маршрутов для пеших, велосипедных, водных походов и путешествий, а также для хранения и группировки интересных мест в виде меток.

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

Читать далее

Рабочий шаблон архитектурного решения

Reading time11 min
Views35K

Уже три года, как мы постепенно передаем солюшн-архитектуру в команды разработки. Приходится часто объяснять, как сделать архитектурное решение коллегам, которые раньше подобными вещами не занимались. Отсюда родилась идея этой статьи – поделиться опытом, который сложился у меня и моих коллег за 10 лет практики. Важная часть этого опыта – шаблон архитектурного решения с пояснениями как его заполнять и почему именно так. По сути, шаблон - это структура необходимых знаний. Если вы нашли ответы на все вопросы шаблона, значит вы продуманно подошли к созданию архитектуры. А еще, сделали хороший документ, с которым удобно работать.

Статья расскажет, как правильно оформить ваши мысли, и что должно содержать качественное архитектурное решение. Статья не научит делать архитектуру.

Статья будет полезна:

Аналитикам, тимлидам, программистам, которые уже делают или собираются делать архитектурные решения;

Архитекторам, чтобы улучшить качество выпускаемых документов;

Главным архитекторам с целью посмотреть «а как там у них».

Дальше, пожалуйста

Scala: Гексагональная архитектура и DDD на Free Monad в функциональном программировании

Reading time8 min
Views4.3K

Привет Хабр! Пятничного тру ФП хардкора с Free Monad, Таглес Финал, Монад трансформерами, Refined Types, Smart Constructors и прочим таким вам в ленту. Хардкор сам себя в ленту не принесет так что погнали.

Гексагональная архитектура делит наш код на три основные части.

1) Primary Adapters,

2) Secondary Adapter

3) Logic aka Domain.

Читать далее

Зачем архитектору Pet project?

Reading time6 min
Views7.1K

Эта статья – о Pet project, собственных проектах, которыми многие из нас занимаются в свободное время. Поговорим о том, нужны ли такие увлечения архитектору и как Pet project может помочь в работе. Также я расскажу о своих проектах и опыте, который я с их помощью получил. Добро пожаловать под кат!

Читать далее

Где ещё можно найти материалы про GridGain и Apache Ignite

Reading time1 min
Views1.3K

Быстрее всего статьи, написанные сотрудниками GridGain, появляются в глобальном корпоративном блоге. Короткие видео и выступления на английском языке можно найти на корпоративном канале Youtube. Apache Ignite и GridGain тьюториалы выложены здесь, а для демо отведен отдельный репозиторий.

В 2014 году компания GridGain Systems передала в Apache Software Foundation разработанный ее сотрудниками код — платформу для вычислений в оперативной памяти. Так появился Apache Ignite Сотрудники компании GridGain продолжают участвовать в развитии проекта. Если у вас есть вопрос про Apache Ignite, на user list или на Stack Overflow вам весьма вероятно ответит контрибьютор, работающий в GridGain. У русскоязычного сообщества также есть свой Телеграм-чат и Youtube-канал с записями докладов.

Читать далее

Математические аспекты хорошего кода

Reading time7 min
Views7K

Программисты постоянно стараются сделать код лучше, используя для этого различные практики. Однако само понятие хорошего кода крайне расплывчато, о чём свидетельствует одно только количество книг, посвящённых этой теме, а также их объём. Например, книга "Чистый код'' Р. Мартина содержит почти 500 страниц. Неужели нет возможности выразить хотя бы основные критерии хорошего кода короче?

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

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

Кроме того, для мышления необходимы память и время. Любая модель мышления (модель вычислений) обязана включать эти два понятия. Действительно, в машине Тьюринга роль памяти играет лента, а роль времени – головка. Аналогично, в современном компьютере эти две роли выполняют RAM и CPU, соответственно.

Итак, в нашем распоряжении три аспекта, относящиеся к мышлению: рассуждение, балансировка и природа памяти/времени. Эти аспекты напрямую относятся к самой сути программирования. Каждый из этих аспектов несёт в себе математику, которая и будет использоваться для вывода критериев хорошего кода.

Читать далее

Обзор ретро-футуристичного КПК DevTerm с Linux

Reading time6 min
Views17K

Команда ClockworkPI выпустила интересный карманный девайс с ОС Linux, который легко собирается без паяльника, имеет экран с разрешением 1280х480, предлагает богатые возможности для кастомизации и даже оснащён неожиданным диковинным модулем — термальным принтером.
Читать дальше →

Scala: Авторизация. Защита API с помошью Bearer токена

Reading time3 min
Views4.5K

В это пример я буду рассматривать только парсинг и валидацию токенов что уже пришли в мое API в Authorization хедере. Для генерации токенов, регистрации пользователей и прочего SSO есть много готовых решений которые легко установить или даже устанавливать не надо. Например, Auth0, Keyckloak, IdentityServer4. В пример е буду работать с Tapir который может использовать в качестве бекенда http4s, Akk HTTP, Netty, Finatra, Play, ZIO Http, Armeria. Я буду использовать Tapir + Http4s.

Читать далее

Как улучшить межсерверное взаимодействие и сэкономить время разработчика

Reading time11 min
Views8.3K

Привет! Я Алексей, Java-разработчик. В статье поделился опытом внедрения подхода Contract-First в backend. 

Под катом подробности:

— что такое Code-First и зачем переходить на Contract-First,

— как перестать писать API-объекты руками и сэкономить 12 человеко-недель в спринт,

— как поддерживать однотипный код и API, если у вас 100+ микросервисов и 60 бэкендеров.

Читать о внедрении Contract-First

Как устроена архитектура финтех-сервисов с uptime 99,9%

Reading time1 min
Views9.1K

Недавно мы провели IT-конференцию ЮMoneyDay, где за восемь часов в двух треках детально разобрали, что под капотом наших сервисов. Сегодня делимся докладами про архитектуру.

В первом хардкорном докладе наш архитектор рассказывает, как управлять тремя направлениями бизнеса с множеством подсистем и бизнес-процессов.

Во втором докладе руководитель департамента эксплуатации объясняет, как у нас всё работает: какое железо стоит в дата-центрах и какие технические решения мы используем для uptime 99,9%.

Заглядывайте под кат, приятного вам просмотра!

Смотреть доклады про архитектуру

План самостоятельного обучения DDD, CQRS, EventSourcing

Reading time7 min
Views60K

Если вы собрались плотно погрузиться в тему Doman Driven Design (DDD), о том как его применять, как использовать, для чего он нужен, и как с ним связаны Command and Query Responsibility Segregation (CQRS), Event Sourcing и другие термины из мира DDD то можно воспользоваться планом обучения, который последовательно погрузит вас в эти темы и поможет сориентироваться. Часть информации на русском, часть на английском языке, так как русскоязычных аналогов я не смог найти.

Погрузиться в DDD

И маленькому стартапу, и большому энтерпрайзу — Кафка, которую нужно знать

Reading time5 min
Views11K

Можно ли использовать Apache Kafka в качестве базы данных и какое у Кафки будущее? Провели небольшое интервью с нашим экспертом Георгом Гаалом. Он ответил на эти вопросы, а ещё рассказал о сильных и слабых сторонах платформы, возможностях её масштабирования и о том, кому надо изучать Кафку, а кому не стоит.

Читать далее

Как айтишнику выжить в Африке: пошаговая инструкция

Reading time11 min
Views11K

Привет, я Никита, инженер в отделе интеграции в STM Labs.


Вообще STM Labs проектирует и внедряет высоконагруженные системы собственной разработки. Но есть проекты на базе стороннего ПО. Основная задача нашего отдела — заставить чужую систему работать так, как хочет заказчик. Головной офис компании находится в Нижнем Новгороде, а заказчики — по всему миру.


Очень люблю свой нижегородский офис, но самые яркие впечатления от работы я получил не здесь. В прошлом году я пять недель работал в командировке в Африке.
Да, эта статья не про hard skills, а просто про хардкор в Конго.


Читать дальше →

Как учиться быстрее: пять научно доказанных способов ускорить запоминание информации и формирование навыков

Reading time4 min
Views32K

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

Читать далее

Information

Rating
Does not participate
Registered
Activity