Forwarded from Архив программиста
Сайфан_Д_Осваиваем_Kubernetes_Оркестрация.pdf
8.9 MB
Осваиваем Kubernetes. Оркестрация контейнерных архитектур - 2019
#kubernetes
#kubernetes
Forwarded from Архитектура ИТ-решений
Новая серия коротких заметок от Кента Бека (пока не закончена), того самого, придумавшего 20 лет назад XP - экстремальное программирование, про взаимодействия двух категорий людей: тех которые что-то хотят и других, которые могут это реализовать. Ну и структурные изменения, в которых иногда нуждается развиваемая система https://medium.com/@kentbeck_7670/software-design-is-human-relationships-part-1-of-3-perspective-1bcd53855557
Medium
Software Design is Human Relationships: Part 1 of 3, Perspective
Actually 2 human relationships, but we’ll get to that.
Очередной эксплойт в докере, затрагивающий все версии: https://www.openwall.com/lists/oss-security/2019/05/28/1
#refactoring #ddd
Новая статья от Фаулера про зависимость стоимости софта от его качества: https://martinfowler.com/articles/is-quality-worth-cost.html Забавно то, что, несмотря на очевидную правоту автора в долгосрочной перспективе, целесообразность всех этих ваших clean code'ов и DDD выглядит очень сомнительно на раннем этапе ЖЦ продукта.
Говорят, есть статистика, что только один из 10 стартапов выживает. Готов спорить, что это явно не те, кто начинали с карт контекстов и полотен на UML, но это уже совсем другая история 😉
Новая статья от Фаулера про зависимость стоимости софта от его качества: https://martinfowler.com/articles/is-quality-worth-cost.html Забавно то, что, несмотря на очевидную правоту автора в долгосрочной перспективе, целесообразность всех этих ваших clean code'ов и DDD выглядит очень сомнительно на раннем этапе ЖЦ продукта.
Говорят, есть статистика, что только один из 10 стартапов выживает. Готов спорить, что это явно не те, кто начинали с карт контекстов и полотен на UML, но это уже совсем другая история 😉
martinfowler.com
Is High Quality Software Worth the Cost?
We usually perceive that it costs more to get higher quality, but software internal quality actually reduces costs.
Forwarded from Enterprise Containers
На прошлой неделе состоялась флагманская европейская конференция CNCF - KubeCon 2019. Огромное количество участников, спикеров и множество стендов. Видно как организаторы пытаются справится с наплывом участников. Если в некоторых организационных моментах были огрехи, то уж качество и количество докладов компенсировано с лихвой. По ссылки видео всех презентаций (334 доклада) https://www.youtube.com/playlist?list=PLj6h78yzYM2PpmMAnvpvsnR4c27wJePh3
YouTube
KubeCon + CloudNativeCon Europe 2019 (Barcelona) - YouTube
Forwarded from AvitoTech
А/B эксперименты — ключевой инструмент принятия решений в Авито. Мы работаем с ним с помощью единой платформы. Она помогает быстро запускать эксперименты, контролирует нежелательные пересечения экспериментов, считает метрики, статистические тесты и визуализирует результаты.
Старший аналитик Данила Леньков рассказал в блоге на Хабре, как платформа устроена и показал интересные технические детали → http://bit.ly/abplatform
Старший аналитик Данила Леньков рассказал в блоге на Хабре, как платформа устроена и показал интересные технические детали → http://bit.ly/abplatform
Тут GridGain запускает step-by-step гайд: https://gridgain.timepad.ru/event/989686/ Выглядит интересно
gridgain.timepad.ru
Воркшоп Apache Ignite. Настройки и работа с API шаг за шагом / События на TimePad.ru
Вместе с Дмитрием Павловым (Apache Ignite committer, PMC) разберем API продукта для хранения и обработки данных, научимся запускать и настраивать кластер, разберем частые ошибки в настройке. В качестве примера используем приложение для платежных карт.
Forwarded from Господин Архитектор
Программисту на заметку: как быть, если вы не согласны с решением, которое предлагает руководитель, менеджмент, архитектор, лид? Существует действенный метод, который в долгой перспективе, вероятно, единственно правильный. Называется DAC: disagree and commit. Другими словами, следует быть максимально красноречивым в фазе, когда идёт обсуждение, но когда решение было принято, надо перестать спорить и приложить максимум усилий к реализации именно этого варианта как своего собственного, даже если ты на 200% с ним не согласен https://en.m.wikipedia.org/wiki/Disagree_and_commit
Wikipedia
Disagree and commit
management principle for group decision-making
Forwarded from HABR FEED + OPENNET
[Перевод] Представлен Polaris для поддержания кластеров Kubernetes в здоровом состоянии
https://habr.com/ru/post/454706/
Tags: Блог компании Флант, Системное администрирование, DevOps, Kubernetes, лучшие практики, ReactiveOps
Author Smetankk on #habrahabr
https://habr.com/ru/post/454706/
Tags: Блог компании Флант, Системное администрирование, DevOps, Kubernetes, лучшие практики, ReactiveOps
Author Smetankk on #habrahabr
Хабр
Представлен Polaris для поддержания кластеров Kubernetes в здоровом состоянии
Прим. перев.: Оригинал этого текста написал Rob Scott — ведущий SRE-инженер компании ReactiveOps, которая и стоит за разработкой анонсируемого проекта. Нам очень...
HABR FEED + OPENNET
[Перевод] Представлен Polaris для поддержания кластеров Kubernetes в здоровом состоянии https://habr.com/ru/post/454706/ Tags: Блог компании Флант, Системное администрирование, DevOps, Kubernetes, лучшие практики, ReactiveOps Author Smetankk on #habrahabr
Офигительная штука, которую обязательно надо попробовать... но что-то кол-во куберовских дашбордов медленно, но верно растет. Омниканальность, вернись! Я все прощу!
#codereview
Тут дяденька пишет серию постов про кодревью: https://www.michaelagreiler.com/code-review-blog-post-series/ можно почитать и что-то внедрить(если еще нет или не устраивает свое)
Тут дяденька пишет серию постов про кодревью: https://www.michaelagreiler.com/code-review-blog-post-series/ можно почитать и что-то внедрить(если еще нет или не устраивает свое)
Michaela Greiler
The Ultimate Code Review Blog Post Series - Dr. McKayla
In this code review blog post series, I share my experience and the lessons from analyzing thousands of code reviews and working with hundreds of engineers.
I hate overtime
Утро начинается с плохих новостей: Oracle отказался опенсорсить JavaEE, что, вполне вероятно, убъет ее: https://headcrashing.wordpress.com/2019/05/03/negotiations-failed-how-oracle-killed-java-ee/ Но, что-то мне подсказывает, что жать F to pay respect пока…
Похоже, что подвижки все-таки есть: https://www.infoq.com/podcasts/milinkovich-jakarta-ee
InfoQ
Mike Milinkovich, Director of the Eclipse Foundation, Discusses the Journey to Jakarta EE 8
Today on the podcast, Wes Reisz talks with Mike Milinkovich, the executive director for the Eclipse Foundation. The Eclipse Foundation was chosen to govern the evolution of Oracle’s Java EE to Jakarta EE. The two discuss the project, the recent news about…
Кароч, парни, последнее время очень бомбит от отсутствия понимания каких-то основных вещей у коллег, так что в ближайшее время будет несколько постов от Кэпа, но, может кому-то пригодится(ну или хотя бы сочувствие вызовет😁)
Начнем с главного:
Замечательно, если ваш проект написан на bleeding edge технологиях, но все это не будет иметь никакого смысла, если при первом же инциденте вы не сможете провести инвестигейт потому что вы забыли добавить логирование.
Вы молодец, если ваша доменная модель идеально продумана, но все это вам не поможет если копируете сборки на сервер или мигрируете базу руками.
Кароч, вас ожидает фиаско, если в первую очередь вы не позаботитесь об инфраструктуре проекта. Первым же(фигурально) коммитом должно улететь логгирование и мониторинг, а в первом PR обязательно должно присутствовать решение по миграции базы и IaC. Да, возможно, сначала это будет логирование в файл и пачка шеллскриптов(если у вас, конечно, уже нет общего решения, но это отдельная история) Боб Мартин и https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt вам в помощь. Смысл в том, что говнокод можно переписать, но переписывать будет некому если поцоны стерлись от постоянных овертаймов на релизах и инвестигейтах в MSA/SOA где половина сервисов не пишет логи, а вторая половина не прокидывает correlationId
Замечательно, если ваш проект написан на bleeding edge технологиях, но все это не будет иметь никакого смысла, если при первом же инциденте вы не сможете провести инвестигейт потому что вы забыли добавить логирование.
Вы молодец, если ваша доменная модель идеально продумана, но все это вам не поможет если копируете сборки на сервер или мигрируете базу руками.
Кароч, вас ожидает фиаско, если в первую очередь вы не позаботитесь об инфраструктуре проекта. Первым же(фигурально) коммитом должно улететь логгирование и мониторинг, а в первом PR обязательно должно присутствовать решение по миграции базы и IaC. Да, возможно, сначала это будет логирование в файл и пачка шеллскриптов(если у вас, конечно, уже нет общего решения, но это отдельная история) Боб Мартин и https://sites.google.com/site/unclebobconsultingllc/a-mess-is-not-a-technical-debt вам в помощь. Смысл в том, что говнокод можно переписать, но переписывать будет некому если поцоны стерлись от постоянных овертаймов на релизах и инвестигейтах в MSA/SOA где половина сервисов не пишет логи, а вторая половина не прокидывает correlationId
Google
Clean Coder - A Mess is not a Technical Debt.
Posted by Uncle Bob on 09/22/2009
The term Technical Debt was created by Ward Cunningham to describe the engineering trade-off’s that software developers and business stakeholders must often make in order to meet schedules and customer expectations. In short…
The term Technical Debt was created by Ward Cunningham to describe the engineering trade-off’s that software developers and business stakeholders must often make in order to meet schedules and customer expectations. In short…
Forwarded from FEDOR BORSHEV
Управление командой: военное и мирное время
Важная метафора в управлении командой — военное и мирное время. Война — это время напряжения всех сил: чаты в телеграме, ежедневные планы, быстрые и грязные фиксы в коде.
В мирное время всё, спокойно — планы больше растянуты по времени, коллеги не отвлекают друг-друга по пустякам. Больше внимания уделяется качеству кода и процессам, происходящим в команде.
Война — не так уж и плохо: она кратковременно ускоряет производство, объединяя команду вокруг одной конкретной задачи. На войне можно быстро получить грязный продукт, который срочно нужен.
Люди, которые пережили вместе военное время, начинают относиться друг к другу по другому. Лично я вообще не даю рекомендаций людям, не зная их поведения в военное время.
Воевать хорошо раз в пару месяцев, не чаще. Частые войны выматывают команду и продукт — копится усталость и техдолг.
Важный навык CTO — не начинать войны по пустякам. Если вы собираетесь занять личные ресурсы у участников своей команды (а возможно и у их близких) — уж потрудитесь убедиться, что бизнес получит от этого соответствующую прибыль.
Важная метафора в управлении командой — военное и мирное время. Война — это время напряжения всех сил: чаты в телеграме, ежедневные планы, быстрые и грязные фиксы в коде.
В мирное время всё, спокойно — планы больше растянуты по времени, коллеги не отвлекают друг-друга по пустякам. Больше внимания уделяется качеству кода и процессам, происходящим в команде.
Война — не так уж и плохо: она кратковременно ускоряет производство, объединяя команду вокруг одной конкретной задачи. На войне можно быстро получить грязный продукт, который срочно нужен.
Люди, которые пережили вместе военное время, начинают относиться друг к другу по другому. Лично я вообще не даю рекомендаций людям, не зная их поведения в военное время.
Воевать хорошо раз в пару месяцев, не чаще. Частые войны выматывают команду и продукт — копится усталость и техдолг.
Важный навык CTO — не начинать войны по пустякам. Если вы собираетесь занять личные ресурсы у участников своей команды (а возможно и у их близких) — уж потрудитесь убедиться, что бизнес получит от этого соответствующую прибыль.
Forwarded from oleg_log (Oleg Kovalov)
Semantic это такая штука, для парсинга, анализа и сравнения кода на разных языках(Ruby, JS, TS, Python, Go, so on).
И вот они написали оду Хаскеллу, если кратко:
> Why is Semantic written in Haskell?
<...> In Haskell, control flow is not dictated by the language, but by the data structures used. The same syntax is used for nondeterministic and backtracking computations, for concurrency and parallelism, and for traditional imperative blocks: user-defined interpretation functions, rather than built-in language semantics, determine the way that code is executed. This would be nearly impossible to implement in a language like Go, given its limited support for abstraction and polymorphism, and a maintenance nightmare in Java: every single one of our 20k lines of code would need to be rewritten as a data structure rather than a function. This is simply not a realistic task in other languages; even functional languages like OCaml and Swift lack this level of abstraction.
https://github.com/github/semantic/blob/master/docs/why-haskell.md
И вот они написали оду Хаскеллу, если кратко:
> Why is Semantic written in Haskell?
<...> In Haskell, control flow is not dictated by the language, but by the data structures used. The same syntax is used for nondeterministic and backtracking computations, for concurrency and parallelism, and for traditional imperative blocks: user-defined interpretation functions, rather than built-in language semantics, determine the way that code is executed. This would be nearly impossible to implement in a language like Go, given its limited support for abstraction and polymorphism, and a maintenance nightmare in Java: every single one of our 20k lines of code would need to be rewritten as a data structure rather than a function. This is simply not a realistic task in other languages; even functional languages like OCaml and Swift lack this level of abstraction.
https://github.com/github/semantic/blob/master/docs/why-haskell.md
GitHub
semantic/docs/why-haskell.md at main · github/semantic
Parsing, analyzing, and comparing source code across many languages - github/semantic
FEDOR BORSHEV
Управление командой: военное и мирное время Важная метафора в управлении командой — военное и мирное время. Война — это время напряжения всех сил: чаты в телеграме, ежедневные планы, быстрые и грязные фиксы в коде. В мирное время всё, спокойно — планы больше…
Очень удачно совпал пост коллеги про войны и мой цикл батхертов)
Войны неизбежны. Они обязательно случаются и, да, они могут быть полезны для понимания поведения коллег в экстренных ситуациях(всегда полезно знать, на кого можно положиться, а кто в 6 встанет и уйдет и хоть трава не расти)
Но! Ни в коем случае на войну не берут новобранцев. В хотфиксах всегда(!) должны участвовать люди знающие кодовую базу и, тем более, понимающие флоу бизнес-процессов. Нет ничего страшнее ньюкамера, который патчит прод в самом хрупком и, по счастливой случайности, бизнес-критикал месте. В итоге вы получите только окончательно поломанный сервис, фрустрирующего сотрудника и недовольных клиентов
Войны неизбежны. Они обязательно случаются и, да, они могут быть полезны для понимания поведения коллег в экстренных ситуациях(всегда полезно знать, на кого можно положиться, а кто в 6 встанет и уйдет и хоть трава не расти)
Но! Ни в коем случае на войну не берут новобранцев. В хотфиксах всегда(!) должны участвовать люди знающие кодовую базу и, тем более, понимающие флоу бизнес-процессов. Нет ничего страшнее ньюкамера, который патчит прод в самом хрупком и, по счастливой случайности, бизнес-критикал месте. В итоге вы получите только окончательно поломанный сервис, фрустрирующего сотрудника и недовольных клиентов
Нашел тут на просторах жуйреактора прикольную картинку: http://img0.reactor.cc/pics/post/full/it-%D1%8E%D0%BC%D0%BE%D1%80-geek-5239530.png
Forwarded from Технологический Болт Генона
CodeFest выложил видео
CodeFest 2019 #Backend
https://www.youtube.com/watch?v=Nkb-cl8oWLg&list=PL8761XQAJnrZrLWgseZEH1PQKSwqh6FQ0
CodeFest 2019 #Frontend
https://www.youtube.com/watch?v=57ghglfohmk&list=PL8761XQAJnrZZ2IB-VIvbuCpQxp890Gns
CodeFest 2019 #QA
https://www.youtube.com/watch?v=yPU7sYMGIgM&list=PL8761XQAJnrYdOtgSsBtUCoBImqBuEyMc
CodeFest 2019 #Projects
https://www.youtube.com/watch?v=eVtFRBTKoPo&list=PL8761XQAJnraw0hWiCxO6bWRpPqBknA8r
CodeFest 2019 #Products
https://www.youtube.com/watch?v=uUg_halSAIs&list=PL8761XQAJnrZwAm6BdJdIIA0noL7-dnmZ
CodeFest 2019 #Teamlead
https://www.youtube.com/watch?v=hUvfjVRNHDs&list=PL8761XQAJnrbquWpwUNLNVitf0sXHse23
CodeFest 2019 #Design
https://www.youtube.com/watch?v=nQ3jgdOOwA8&list=PL8761XQAJnraFjqzGGYvIZDL005X3b5WL
CodeFest 2019 #DataScience
https://www.youtube.com/watch?v=ZljB8aPY4TE&list=PL8761XQAJnrZaezGvMIvOhi3zgd3FDn7B
CodeFest 2019 #Mobile
https://www.youtube.com/watch?v=WfRLSd6qesU&list=PL8761XQAJnrah-rGgkpZ5BkYVJKzNNODw
CodeFest 2019 #Квартирники
https://www.youtube.com/watch?v=h48ycbRFDsU&list=PL8761XQAJnrZfNIn-wFbe5VRW0AvYAAh9
CodeFestest 2019 #Future
https://www.youtube.com/watch?v=jTxqXwHY-ig&list=PL8761XQAJnrYwno51MgjuEWmczp2WL8mH
CodeFest 2019 #Backend
https://www.youtube.com/watch?v=Nkb-cl8oWLg&list=PL8761XQAJnrZrLWgseZEH1PQKSwqh6FQ0
CodeFest 2019 #Frontend
https://www.youtube.com/watch?v=57ghglfohmk&list=PL8761XQAJnrZZ2IB-VIvbuCpQxp890Gns
CodeFest 2019 #QA
https://www.youtube.com/watch?v=yPU7sYMGIgM&list=PL8761XQAJnrYdOtgSsBtUCoBImqBuEyMc
CodeFest 2019 #Projects
https://www.youtube.com/watch?v=eVtFRBTKoPo&list=PL8761XQAJnraw0hWiCxO6bWRpPqBknA8r
CodeFest 2019 #Products
https://www.youtube.com/watch?v=uUg_halSAIs&list=PL8761XQAJnrZwAm6BdJdIIA0noL7-dnmZ
CodeFest 2019 #Teamlead
https://www.youtube.com/watch?v=hUvfjVRNHDs&list=PL8761XQAJnrbquWpwUNLNVitf0sXHse23
CodeFest 2019 #Design
https://www.youtube.com/watch?v=nQ3jgdOOwA8&list=PL8761XQAJnraFjqzGGYvIZDL005X3b5WL
CodeFest 2019 #DataScience
https://www.youtube.com/watch?v=ZljB8aPY4TE&list=PL8761XQAJnrZaezGvMIvOhi3zgd3FDn7B
CodeFest 2019 #Mobile
https://www.youtube.com/watch?v=WfRLSd6qesU&list=PL8761XQAJnrah-rGgkpZ5BkYVJKzNNODw
CodeFest 2019 #Квартирники
https://www.youtube.com/watch?v=h48ycbRFDsU&list=PL8761XQAJnrZfNIn-wFbe5VRW0AvYAAh9
CodeFestest 2019 #Future
https://www.youtube.com/watch?v=jTxqXwHY-ig&list=PL8761XQAJnrYwno51MgjuEWmczp2WL8mH
YouTube
#Backend, Александр Тоболь, TCP умер или будущее сетевых протоколов
Александр Тоболь
Одноклассники
TCP умер или будущее сетевых протоколов
В докладе мы поговорим про эволюцию и настройки сетевого стека TCP/IP в linux и Android, iOS в контексте мобильных сетей, разберем проблемы TCP в плохих сетях, я поделюсь опытом ОК в…
Одноклассники
TCP умер или будущее сетевых протоколов
В докладе мы поговорим про эволюцию и настройки сетевого стека TCP/IP в linux и Android, iOS в контексте мобильных сетей, разберем проблемы TCP в плохих сетях, я поделюсь опытом ОК в…
Привет, котаны! Пятничные мемы будут чуть позже, а пока мы продолжаем КВН.
Вот вы успешно пережили первый релиз и выпустились в прод, тем самым внедрясь в IT-ландшафт вашей компании. Вместе с вами, скорее всего, таких бедолаг еще N и еще M на подходе. И вот этот момент настал! Прилетает первый кросс-сервисный баг. Мы идем в логи(мы же все логируем, да?!) и выясняем, что в наш сервис запрос пришел от сервиса А, а в сервис А пришел от В а в..ну вы поняли. Причем мы-то "нормальные", мы в кассандру логируем с Id пользователя и таймстампом, а вот парни из А пишут в скуль и по имейлу юзера, а поцоны из В ваще в файл и там только урл запроса и время.
И вот прошел час, мы продрались через всю цепочку вызовов и дошли до сервиса Х, где...какой-то п$др решил писать логи в /dev/null.
Кароч, парни, рано или поздно придется стандартизировать инфраструктуру, и лучше это сделать раньше, т.е. при появлении нескольких активно общающихся между собой приложенек. Причем, касательно логирования, "сделать"-- это не значит кинуть эластик на тачку и сказать всем "я сделаль!". Необходимо определить ответственных за core(devOps культура вам в помощь), объявить новую подсистему де-юре стандартом(т.е. сервисы логирующие не так в прод просто не допускаются!) + необходимо сделать использование и подключение новой подсистемы удобной для внедрения и использования. Как минимум, написать(или найти) пакеты для подключения логирования для ваших сервисов, обладающих всем необходимым функционалом (correlationId, например)
В последствии можно сделать еще удобнее, создав сервисный каркас, а, когда ваше IT еще подрастет, то замутить Distributed Tracing, но удобные логи со связями — это мастхев.
P.S. все это справедливо для любой распределенной архитектуры, но, кмк, наиболее актуально для SOA с ее сильной связностью сервисов
P.P.S. где-то на хабре был чеклист, где инженер писал вещи без которых он сервисы в прод не пускает. Найду — поделюсь
Вот вы успешно пережили первый релиз и выпустились в прод, тем самым внедрясь в IT-ландшафт вашей компании. Вместе с вами, скорее всего, таких бедолаг еще N и еще M на подходе. И вот этот момент настал! Прилетает первый кросс-сервисный баг. Мы идем в логи(мы же все логируем, да?!) и выясняем, что в наш сервис запрос пришел от сервиса А, а в сервис А пришел от В а в..ну вы поняли. Причем мы-то "нормальные", мы в кассандру логируем с Id пользователя и таймстампом, а вот парни из А пишут в скуль и по имейлу юзера, а поцоны из В ваще в файл и там только урл запроса и время.
И вот прошел час, мы продрались через всю цепочку вызовов и дошли до сервиса Х, где...какой-то п$др решил писать логи в /dev/null.
Кароч, парни, рано или поздно придется стандартизировать инфраструктуру, и лучше это сделать раньше, т.е. при появлении нескольких активно общающихся между собой приложенек. Причем, касательно логирования, "сделать"-- это не значит кинуть эластик на тачку и сказать всем "я сделаль!". Необходимо определить ответственных за core(devOps культура вам в помощь), объявить новую подсистему де-юре стандартом(т.е. сервисы логирующие не так в прод просто не допускаются!) + необходимо сделать использование и подключение новой подсистемы удобной для внедрения и использования. Как минимум, написать(или найти) пакеты для подключения логирования для ваших сервисов, обладающих всем необходимым функционалом (correlationId, например)
В последствии можно сделать еще удобнее, создав сервисный каркас, а, когда ваше IT еще подрастет, то замутить Distributed Tracing, но удобные логи со связями — это мастхев.
P.S. все это справедливо для любой распределенной архитектуры, но, кмк, наиболее актуально для SOA с ее сильной связностью сервисов
P.P.S. где-то на хабре был чеклист, где инженер писал вещи без которых он сервисы в прод не пускает. Найду — поделюсь