Optimizing_Your_Apache_Kafka_Deployment_White_Paper.pdf
1.4 MB
Forwarded from Архитектура ИТ-решений
SystemsInnovation.io (есть такая сетевая организация) объявила о доступности своей главной книжки Systems Thinking Guide (под лицензией creative commons) Скачать или полистать можно здесь: https://systemsinnovation.io/systems-thinking-guide/ если кому интересно
Forwarded from dd if=/dev/stuff of=/dev/tg
Статья о функциональной архитектуре от Скотта Влашина:
https://increment.com/software-architecture/primer-on-functional-architecture
TL;DR: принципы функционального программирования — использование функций как основных строительных блоков, композиция, чистота — могут быть применены не только для решения тактических задач в прикладном коде, но и для построения более общей, стратегической картины решения целиком. Скотт Влашин в деталях описывает свой подход — построение крупномасштабных «функций»-воркфлоу, применение слоистой архитектуры (onion architecture), определение ограничений (boundaries) и использование событий как входных и выходных точек решения. В конце затрагивается тема функционального фронтэнда на примере Elm и рекламируется книга автора «Domain Modeling Made Functional».
https://increment.com/software-architecture/primer-on-functional-architecture
TL;DR: принципы функционального программирования — использование функций как основных строительных блоков, композиция, чистота — могут быть применены не только для решения тактических задач в прикладном коде, но и для построения более общей, стратегической картины решения целиком. Скотт Влашин в деталях описывает свой подход — построение крупномасштабных «функций»-воркфлоу, применение слоистой архитектуры (onion architecture), определение ограничений (boundaries) и использование событий как входных и выходных точек решения. В конце затрагивается тема функционального фронтэнда на примере Elm и рекламируется книга автора «Domain Modeling Made Functional».
Increment
A primer on functional architecture – Increment: Software Architecture
Approachable ideas and best practices to help engineering teams apply the principles of functional programming to high-level design and architecture.
dd if=/dev/stuff of=/dev/tg
Статья о функциональной архитектуре от Скотта Влашина: https://increment.com/software-architecture/primer-on-functional-architecture TL;DR: принципы функционального программирования — использование функций как основных строительных блоков, композиция, чистота…
В продолжение кину еще бородатую статью про функциональную архитектуру на Free-контейнерах и ее продолжение.
Очень красиво строятся NLayer архитектуры и подмешиваются сторонние эффекты(типа логирования), которые в ООП пришлось бы делать АОПом или еще что-то придумывать. Кароч рекомендую
Очень красиво строятся NLayer архитектуры и подмешиваются сторонние эффекты(типа логирования), которые в ООП пришлось бы делать АОПом или еще что-то придумывать. Кароч рекомендую
John A De Goes
A Modern Architecture for FP
Death to IO monads: FP has better tools that point the way towards the future.
Очередной туториал от Фланта. На этот раз про Эластик
Хабр
Как мы Elasticsearch в порядок приводили: разделение данных, очистка, бэкапы
Эта статья — практическая история о том, как мы столкнулись с проблемой разделения логов, хранимых в Elasticsearch, из-за которой пришлось поменять подход к бэкапам и управлению...
Forwarded from kamyshev.code
Разбиение монолита на части
При разделение монолита на части возникает проблема, что транзакции уровня базы данных становятся невозможны. Решение — распределенные транзакции. Этот механизм позволяет получить достаточно надежные транзакции для разделённых сервисов. А во многих случаях, стоит вовсе отказаться от транзакций и разработать самовостанавливающуюся систему (например, попытки записи могут повторяться несколько раз, пока не получится).
В микросервисной архитектуре не так просто реализовать отчеты. Мы не можем просто сделать большой запрос к единой базе данных и получить результат. Есть четыре варианта:
+ каждый сервис может слать свои данные для отчетов в сервис отчетов;
+ сервис отчетов может ходить к остальным сервисам за данными;
+ если сервисы общаются через события, то сервис отчетов может просто подписаться на эти события;
+ сервис отчетов может брать бекапы разных сервисов и генерировать отчеты на основе этих данных (так делает Netflix).
#микросервисы
При разделение монолита на части возникает проблема, что транзакции уровня базы данных становятся невозможны. Решение — распределенные транзакции. Этот механизм позволяет получить достаточно надежные транзакции для разделённых сервисов. А во многих случаях, стоит вовсе отказаться от транзакций и разработать самовостанавливающуюся систему (например, попытки записи могут повторяться несколько раз, пока не получится).
В микросервисной архитектуре не так просто реализовать отчеты. Мы не можем просто сделать большой запрос к единой базе данных и получить результат. Есть четыре варианта:
+ каждый сервис может слать свои данные для отчетов в сервис отчетов;
+ сервис отчетов может ходить к остальным сервисам за данными;
+ если сервисы общаются через события, то сервис отчетов может просто подписаться на эти события;
+ сервис отчетов может брать бекапы разных сервисов и генерировать отчеты на основе этих данных (так делает Netflix).
#микросервисы
Уже очень давно люблю просить кандидатов на собесе сравнить ленивую и энергичную модель вычислений(у нас используются обе). И, если с энергичной-то все ясно, то с ленивой не все так очевидно. Вот тут вот, наверно, одна из лучших статей на эту тему: https://apfelmus.nfshost.com/articles/lazy-eval-modular-code.html
Nfshost
apfelmus - Writing More Modular Code with Lazy Evaluation
Lazy evaluation is the most widely used method for executing Haskell program code on a computer. In this tutorial, we explain how it leads to more modular code. In particular, it allows us to program with infinite lists.
Forwarded from Инжиниринг Данных
Если вы работаете с Big Data, то вы часто работаете с продуктами Apache (Hadoop, Hive, Kafka). Так же вы слышали про Data Lake, особенно в контексте облака, где много инструментов, чтобы быстро его создать. Когда мы храним данные в озере данных, или вообще работает с большими данными, важно использовать правильный формат данных. Вот хорошая статья про Apache Parquet. Отличная компрессия (10x) и возможность партиционирования, сделала это формат лидером.
Medium
Apache Parquet: How to be a hero with the open-source columnar data format
Apache Parquet file format for Google BigQuery, Azure Data Lakes, Amazon Athena, and Redshift Spectrum.
Forwarded from Generative Anton
Jetbrains организовали миленький квест с призами. Удачи в решении)
Twitter
JetBrains
JetBrains Quest begins… #JetBrainsQuest 48 61 76 65 20 79 6f 75 20 73 65 65 6e 20 74 68 65 20 73 6f 75 72 63 65 20 63 6f 64 65 20 6f 66 20 74 68 65 20 4a 65 74 42 72 61 69 6e 73 20 77 65 62 73 69 74 65 3f
Оказывается у Confluent есть подкаст про Кафку. Причем, достаточно старый. Если кто катает до галеры по часу, то зацените))
Buzzsprout
Streaming Audio: a Confluent podcast about Apache Kafka
Streaming Audio is a podcast from Confluent, the team that built Apache Kafka®️. Host Tim Berglund (Senior Director of Developer Experience, Confluent) and guests unpack a variety of topics surrounding Apache Kafka, event stream processing and real-time data.…
#dotnet #async
Очень классный гайд по дотнетовым таскам(а-ля джавовые/скаловые future).
Тут и немного истории и мат.часть и подводные камни.
Я бы еще добавил сюда FRP для полноты картины(вот, например, годное интро), но даже без этого всем дотнетчикам и сочувствующим must read
P.S. упоминаемый там "документ"
Очень классный гайд по дотнетовым таскам(а-ля джавовые/скаловые future).
Тут и немного истории и мат.часть и подводные камни.
Я бы еще добавил сюда FRP для полноты картины(вот, например, годное интро), но даже без этого всем дотнетчикам и сочувствующим must read
P.S. упоминаемый там "документ"
Хабр
Async programming in .NET: Best practices
Появление async/await в C# привело к пересмотру того, как писать простой и корректный параллельный код. Зачастую, используя асинхронное программирование, програм...
Наверняка многих из-за короновируса перевели на удаленку. В связи с этим, ловите несколько советов от трелло как правильно комуницировать онлайн.
З.ы. обычно я пролистываю такой контент неглядя, но тут получилось интересно: я вот всегда к удаленке относился скорее негативно, но и ЧСХ мнение по поводу коммуникаций у меня всегда было полностью полярным(никогда не приветствовал болтовню на митах и всегда был за максимально лаконичные диалоги). Т.о., артикл заставил меня задуматься, что возможно я просто душный)) Поэтому я и решил поделиться: может и вас это заставит что-то переосмыслить)))
З.ы. обычно я пролистываю такой контент неглядя, но тут получилось интересно: я вот всегда к удаленке относился скорее негативно, но и ЧСХ мнение по поводу коммуникаций у меня всегда было полностью полярным(никогда не приветствовал болтовню на митах и всегда был за максимально лаконичные диалоги). Т.о., артикл заставил меня задуматься, что возможно я просто душный)) Поэтому я и решил поделиться: может и вас это заставит что-то переосмыслить)))
Work Life by Atlassian
4 ways to make strong connections as a remote worker
Successfully working remotely is more than just working at home. Here are 4 quick tips to help make the remote work process more effective.
#sre
Лазил тут по интернетам в поисках ответа на вопрос "как правильно дизайнить приложение с метриками" и наткнулся на бомбическую статью по Metrics Driven Development.
Тут и практики и примеры и крутые ссылки, кароч очень рекомендую!
З.Ы. собственно сам вопрос: есть 2 стула, на одном injection точеного metricsExposer'а во все места где что-то нужно заэкспоузить, на другом — прикрутить какое-то апи к модулям, которые должны торчать метриками и собирать через это апи значения метрик в каком-то специальном инфраструктурном слое...запилю-ка опрос
Лазил тут по интернетам в поисках ответа на вопрос "как правильно дизайнить приложение с метриками" и наткнулся на бомбическую статью по Metrics Driven Development.
Тут и практики и примеры и крутые ссылки, кароч очень рекомендую!
З.Ы. собственно сам вопрос: есть 2 стула, на одном injection точеного metricsExposer'а во все места где что-то нужно заэкспоузить, на другом — прикрутить какое-то апи к модулям, которые должны торчать метриками и собирать через это апи значения метрик в каком-то специальном инфраструктурном слое...запилю-ка опрос
Kevin Sookocheff
Metrics-Driven Development
Metrics-Driven Development is an emerging term developing from the
practices of continuous integration, continuous delivery, dev ops, and
agile software methodologies. This article serves to define what
metrics-driven development is, why it is useful, and…
practices of continuous integration, continuous delivery, dev ops, and
agile software methodologies. This article serves to define what
metrics-driven development is, why it is useful, and…
Forwarded from Пятничный деплой
Хорошая статья про обмен знаниями https://habr.com/ru/company/oleg-bunin/blog/492478/
Хабр
Без управления знаниями больно: 5 основных последствий отсутствия системы
Toyota — мировой лидер автомобилестроения, один из самых дорогих автомобильных брендов и синоним слова «качество». Toyota известна своей сложной производственной...
I hate overtime
Так как же быть?
#sre #observability
Спасибо огромное, котаны, за ваше участие! Ваше мнение очень важно и интересно, но я все-таки присоединюсь к меньшинству.
Поясню свою позицию: допустим мы не инжектим условный Coda Hale Metrics в наш условный ApiClient и хотим собирать метрики по уходящим через этот клиент запросам. Скорее всего метрика будет не одна, а несколько. Возможно среди них будет гистограмма(т.е вот где-то тут уже придется навернуть все эти скользящие окна и т.д.). Потом мы все это добро прячем под отдельный интерфейс и получаем...тот же самый Coda Hale Metrics, только изобретенный заново.
Если я что-то не понимаю, то го в комменты.
З.Ы. вот вам шикарнейший гайд по обзервабилити от Digital Ocean
Спасибо огромное, котаны, за ваше участие! Ваше мнение очень важно и интересно, но я все-таки присоединюсь к меньшинству.
Поясню свою позицию: допустим мы не инжектим условный Coda Hale Metrics в наш условный ApiClient и хотим собирать метрики по уходящим через этот клиент запросам. Скорее всего метрика будет не одна, а несколько. Возможно среди них будет гистограмма(т.е вот где-то тут уже придется навернуть все эти скользящие окна и т.д.). Потом мы все это добро прячем под отдельный интерфейс и получаем...тот же самый Coda Hale Metrics, только изобретенный заново.
Если я что-то не понимаю, то го в комменты.
З.Ы. вот вам шикарнейший гайд по обзервабилити от Digital Ocean
Digitalocean
Tags | Community | DigitalOcean
What are you interested in? Dive into our library of open source resources by choosing a specific tag below.
Для тех кто из-за карантина уже научил кота плясать, построил 3хэтажный карточный домик с террасой и сделал всякие другие нужные и полезные вещи вот тут вот в открытом доступе лежит книга type driven development with Idris.
Почему стоит почитать:
1. Это, наверное, первый "мейнстримовый"(неакадимический) язык с зависимыми типами
2. Idris -- реально странный! Там типы как first class citizen(можно передавать в функцию, возвращать и т.д.). Все функции тотальные и нет исключений.
3. А еще(имхо, самое важное) автор уверяет, что книжка-то не про идрис, а про программирование через типы. Т.е. про то как подружиться с компилятором на столько, что бы он помогал писать код, а не просто орал в конце "rejected!!1". Собственно ради этого люди и идут в функциональщину
Почему стоит почитать:
1. Это, наверное, первый "мейнстримовый"(неакадимический) язык с зависимыми типами
2. Idris -- реально странный! Там типы как first class citizen(можно передавать в функцию, возвращать и т.д.). Все функции тотальные и нет исключений.
3. А еще(имхо, самое важное) автор уверяет, что книжка-то не про идрис, а про программирование через типы. Т.е. про то как подружиться с компилятором на столько, что бы он помогал писать код, а не просто орал в конце "rejected!!1". Собственно ради этого люди и идут в функциональщину