TGViewer
Channel Public Channel
I hate overtime

I hate overtime

@overtimehate

Some DevOps, SRE and IT development stuff
Subscribers
848
Photos
129
Videos
4
Links
961

Showing posts older than #1231 · Back to latest

Older Posts 20 shown
Post #1230 2.5K
#api
Тут пришлось посмотреть несколько открытых API стандартов(Cisco, Microsoft, Atlassian, Heroku, Google и др). У всех у них много общего, но есть и интересные особенности. Дальше озвучу несколько инсайтов:

1. Все, за редким исключением юзают ETag'и для кеширования. ETag — отличный инструмент, который, впрочем, всегда казался мне немного маргинальным. Однако же, оказывается, это не так и все его активно используют
2. У Adidas отличное API. Не, серьезно, почитайте! Тут вам и HATEOAS и HAL и еще куча всего полезного
3. Почти у всех есть поддержка long-running operations, а вот batching многие обходят стороной. Мне это кажется странным, т.к. поддержка батчевых операций всегда казалась мне признаком зрелого API
4. У всех, конечно же, присутствует базовая гигиена а-ля стандартные форматы ошибок, пейджинг, фильтрация и т.д. Кто-то придумывает свои велосипеды типа Facebook projections, кто-то даже пытается это стандартизировать(привет OData). А что если я скажу, что есть RFC на API-ошибки и на кросс-ресурсные ссылки? Лично для меня это стало большим открытием
5. Мне очень понравилась идея использования content negotiation для версионирования API. Идея простая: клиент передает версию апи в заголовке Content-Type (например Content-Type: application/vnd.example.resource+json; version=2.1.3) и API обязано отдать ответ версии не ниже указанной или 406
6. Если для Вас отключение устаревшего API является большой проблемой, то замечательный Sunset Header может немного подсластить пилюлю
7. Если у вас часто тянут толстые ресурсы, то советую подсмотреть концепцию Delta queries. Это позволит ценой небольшого оверхеда отдавать только ту часть информации, которая изменилась с последнего запроса
8. Ну и закончу, пожалуй, мегахоливарным твитом Филдинга про версионирование. Похоже батя REST'а категорически против версий в url, что не мешает подавляющему большинству API версионироваться именно через url

Если Вы знаете\хотите поделиться своим крутым стандартом API(не важно REST\SOAP\(g)RPC\else) кидайте в комменты, Родина вас не забудет)
GitHub GitHub - CiscoDevNet/api-design-guide: Guidelines for designing REST APIs at Cisco Guidelines for designing REST APIs at Cisco. Contribute to CiscoDevNet/api-design-guide development by creating an account on GitHub.
Post #1229 1.73K
Жиза
Post #1228 2.06K
#management
Пришлось мне тут на днях не очень технически подкованному коллеге объяснять как устроен наш релизный цикл. Для восприятия, конечно же лучше подходит формат картинки, но, как оказалось, нарисовать релизный цикл так, что бы это не превратилось в суп из стрелочек, квадратиков и т.д. довольно сложно.
Перепробовав несколько разных вариантов, нашел вот это. Имхо, если у Вас нет такой картинки, то надо срочно нарисовать, потому что, во-первых, это просто красиво! Для сравнения, аналогичная по смыслу sequence диаграмма выглядит как помесь ежа с ужом(длинная и со стрелками во все стороны). Рисуется все это великолепие за пол часа в draw.io
Post #1227 1.71K

Forwarded from Kaznacheev Feed

#книги
Microservices Patterns - Chris Richardson

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

🤔Кому интересно: разработчикам и архитекторам, занимающимся построением микросервисных систем.

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

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

👎Как гласит название - это книга с примерами на Java. И это как раз та книга, где от их изобилия становится неприятно. Кроме того, автор постоянно рекламирует фреймворк, который разработан его собственным стартапом. В этом, в принципе, ничего плохого нет, но половина из примеров на Java являются примерами по решению задач с использованием этого фреймворка. С какого-то момента я просто начал проматывать листинги, так как толку от них для меня никакого.

Кроме того, что свойственно Java разработке, автор во многих местах начинает очень сильно переусложнять. Главы 4, 5, 6 прямо-таки отличный пример того, почему не стоит применять микросервисную архитектуру - в них показано, как простейшие для монолита вещи можно настолько усложнить, что разгребать придется введением дополнительных паттернов, которые, в свою очередь, придется разгребать еще несколько глав. При этом я так и не увидел, чтобы проблемы тех же распределенных транзакций были решены. Автор оперирует оркестрируемыми сагами так, как будто это простейший в реализации паттерн, учитывая предлагаемые над ним надстройки для приближенного выполнения ACID требований.

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

👷‍♂️В книге уделяется много внимания объяснению паттернов и дается много примеров их реализации (хоть и на Java). В целом много информации, покрывающей полный цикл разработки микросервисных приложений, начиная от архитектуры и декомпозиции, заканчивая тестированием, развертыванием, мониторингом и запуском в облачных средах. Хорошее пособие для разработчиков микросенвисов, а также неплохая матчасть по этой теме, здорово упорядочивающаяся знания.

В целом книга интересная и довольно хорошая в плане пользы для читателя. Даже несмотря на огромное количество Java листингов, рекламы и явного переусложнения некоторых решений, материал все еще очень полезен для людей, испытывающих проблемы в поддержании и реализации микросервисных систем. Читать однозначно стоит, более того, книга построена таким образом, что к ней можно возвращаться за какими-то уточнениями по реализации паттернов, в конце по ним есть удобный указатель.
Manning Publications Microservices Patterns - Chris Richardson This clearly-written practical guide offers experience-driven advice to help you design, implement, test, and deploy your microservices-based application.
Post #1226 1.11K

Forwarded from oleg_log (Oleg Kovalov)

По поводу последнего (S02E15) выпуска @generictalks

Дебаг кубов. Я не знаю, что может быть лучше этого. Удивите и скиньте, если есть.

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

https://learnk8s.io/troubleshooting-deployments
LearnKube A visual guide on troubleshooting Kubernetes deployments Troubleshooting in Kubernetes can be a daunting task. In this article you will learn how to diagnose issues in Pods, Services and Ingress.
Post #1225 1.48K
Post #1224 1.18K

Forwarded from Админим с Буквой (bykva)

А еще я каким-то образом вдруг сделал вклад в опенсорс и написал (ну не только я, а еще с помощью моих коллег из ситимобил) ansible роли для разворачивания victoriametrics.

https://github.com/VictoriaMetrics/ansible-playbooks
GitHub GitHub - VictoriaMetrics/ansible-playbooks: Ansible Playbooks for Victoria Metrics monorepo Ansible Playbooks for Victoria Metrics monorepo. Contribute to VictoriaMetrics/ansible-playbooks development by creating an account on GitHub.
Post #1223 2.89K
#api
Нашел шикарное(хоть и древнее) эссе про дизайн Rest api от чувака который работал над Red Hat Enterprise Virtualization API. Очень рекомендую, узнал много интересного!
Например, вы знали, что если вам нужно уметь работать с версиями ресурсов, то в Rest'е есть нативный механизм для этого под названием variants?
Или про Link headers, позволяющие получить все ссылки из ответа на запрос без парсинга самого ответа?
Post #1221 1.31K
Post #1218 2.46K
Ехехехе, кажется сегодня вместо пятничных мемов у нас будет рубрика "я у мамы орхитектор"
Многие не любят крон джобы, и заслуженно! У них много недостатков: их сложно мониторить, нагрузка плохо распределяется и тд и тп. Так же я видел кучу различных способов нивелировать эти недостатки: кто-то запихивает крон в приложения(здрасьте Quartz и robfig/cron), кто-то пытается использовать более современные инструменты(k8s cronjob и systemd timers), но то что я тут нашел на одном из проектов просто должно войти в историю!
Парни сделали отдельный (микро-)сервис, который при старте читает конфиг с расписаниями и по расписанию начинает через синхронное http api(КАРЛ!) дергать другие сервисы, таким образом оркестрируя выполнение отложенных/переодических задач
Вот такой вот нехитрый способ ценой связности всех сервисов, отказоустойчивости и, пожалуй, логики сэкономить немножко бойлерплейта
Post #1216 845

Forwarded from Человек и машина

#машины_разное

Во время своего выступления Дор Лаор, СЕО Scylla анонсировал новый проект Circe, который в корне меняет структуру консенсуса ScyllaDB.

Взамен Paxos в ядро этого немалоизвестного конкурента Cassandra и DynamoDB будет использоваться Raft, что по словам Дора сделано в угоду консистентности и позволяет быстрее синхронизировать новые узлы в кластере.

Интересно попробовать собрать POSIX FS over Scylla... когда-нибудь.
ScyllaDB Making ScyllaDB a Monstrous Database: Introducing Project Circe - ScyllaDB Project Circe is a year-long initiative to make ScyllaDB even more of a monstrous database, improving performance, scalability and elasticity.
Post #1213 928

Forwarded from oleg_log (Oleg Kovalov)

Пссс, я тут недавно запостил давно начатый клиент для Redis на Go.

Зачем? Хотелось и другое не нравилось. У кого там были идеи по апи или еще какие-то боли из прода, подкиньте коментов/аргументов/ишью. Можно в лс. (Особо активных позову потом в чат организации)

Лайк-подписка на вырост https://github.com/cristalhq/redis
GitHub GitHub - cristalhq/redis: WIP. Redis client for Go WIP. Redis client for Go. Contribute to cristalhq/redis development by creating an account on GitHub.
Post #1212 1.02K
#dotnet #staticanalysis
Котаны, у Facebook есть замечательный static analysis тул под названием Infer. Если верить фейсбуку, там под капотом мат. аппарат, который позволяет детектить до 80% багла до прода.
Исторически тул работал для Java, C и Objective-C, но фейсбук внезапно добавил поддержку C# Додиезеры, возрадуйтесь!
Fbinfer Infer Static Analyzer | Infer | Infer A tool to detect bugs in Java and C/C++/Objective-C code before it ships
Post #1211 1K
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →