Pull to refresh
-7
0
Клёпов Алексей @XelaVopelk

User

Send message

Подборка 150+ ресурсов для управления и работы IT-команды

Reading time7 min
Views9.7K

Привет! На связи компания KODE. Мы занимаемся разработкой цифровых продуктов для государства и крупного бизнеса в России и Европе с 2013 года.

Руководители наших отделов собрали полноценную библиотеку IT-компании: сайты, блоги, книги, онлайн-курсы, подкасты, Telegram- и YouTube-каналы. Подборка будет полезна менеджерам, аналитикам, разработчикам, дизайнерам и QA.

Читать далее
Total votes 3: ↑1 and ↓2+1
Comments2

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

Reading time20 min
Views12K

Разработка корпоративных приложений со сложной бизнес-логикой всегда несет за собой немалые затраты. Причём львиная доля затрат приходится не на саму разработку, а на поддержку кода приложения: добавление нового функционала, поиск и исправление допущенных ошибок, рефакторинг и т.п. Мне как разработчику ПО всегда хотелось найти “серебряную пулю” для вопросов, возникающих при конструировании кода приложений, как написать потенциально сложное приложение, чтобы его было поддерживать как можно легче и дешевле. В этой статье хочу поделиться практическими знаниями о проектировании архитектуры кода программного обеспечения, полученными из опыта.

Читать далее
Total votes 14: ↑9 and ↓5+5
Comments9

Разумное АОП для поклонников IOC-контейнеров

Reading time8 min
Views19K
Я очень не люблю boilerplate. Такой код скучно писать, уныло сопровождать и модифицировать. Совсем мне не нравится, когда тот самый bolierplate перемешан с бизнес-логикой приложения. Очень хорошо проблему описал krestjaninoff еще 5 лет назад. Если вы не знакомы с парадигмой AOP, прочитайте материал по ссылке, он раскрывает тему.

Как на момент прочтения этой статьи, так и сейчас меня не устраивают ни PostSharp ни Spring. Зато за прошедшее время в .NET появились другие инструменты, позволяющие вытащить «левый» код из бизнес-логики, оформить его отдельными переиспользуемыми модулями и описать декларативно, не скатываясь при этом в переписывание результирующего IL и прочую содомию.

Речь пойдет о проекте Castle.DynamicProxy и его применении в разработке корпоративных приложений.
Следуй за белым кроликом
Total votes 11: ↑11 and ↓0+11
Comments29

Настройка распределенной трассировки в Kubernetes с OpenTracing, Jaeger и Ingress-NGINX

Reading time7 min
Views10K

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

Распределённая трассировка (Distributed Tracing) - это метод, используемый для мониторинга приложений. Для микросервисов он просто незаменим.

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

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

Heap-таблицы и forwarded-записи в SQL Server

Reading time5 min
Views6.4K

В SQL Server наименьшая единица хранения — это страница в 8 КБ с 96-байтовым заголовком, в котором хранится системная информация. 

Данные в таблицах могут быть организованы двумя способами:

Кластерный индекс  (clustered index)

Данные хранятся в виде B+ — дерева в соответствии с заданным ключом кластерного индекса. SQL Server сохраняет строки в правильной логической последовательности.

Куча (heap)

Куча — это таблица без кластерного индекса. Данные в куче хранятся без какого-либо логического порядка. Между страницами нет никакой связи. Хотя для кучи можно создать некластерный индекс, который будет содержать физический адрес исходных данных. В некластерном индексе для каждой записи содержится номер файла, номер страницы и номер слота внутри этой страницы.

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

Как ухаживать за грядкой Redis'а и как сохранить урожай?

Reading time10 min
Views14K

Чуть более года назад мне посчастливилось погрузиться в углублённое изучение Redis. Всё, что я знал про него на тот момент, это две команды — get и set. Примерно в это же время у нас начался плавный переход со Standalone Redis на Redis Cluster.

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

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

Настройка CI/CD скриптов миграции БД с нуля с использованием GitLab и Liquibase

Reading time20 min
Views23K

Добрый день, уважаемые читатели. Совсем недавно мне пришлось осваивать новую для себя область CI/CD, настраивая с нуля доставку скриптов миграции базы данных в одном из проектов. При этом было тяжело преодолеть самый первый этап "глаза боятся", когда задача вроде бы ясна, а с чего начать, не знаешь. Однако вопрос оказался на поверку значительно проще, чем казалось изначально, давая при этом неоспоримые преимущества ценой нескольких часов работы и не требуя никаких дополнительных средств, кроме обозначенных в заголовке.

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

Читать далее
Total votes 4: ↑3 and ↓1+4
Comments5

Липкие сессии для самых маленьких [Часть 2], или Как понять Kubernetes и преисполниться в своём познании

Reading time8 min
Views20K

Липкие сессии (Sticky-session) — это особый вид балансировки нагрузки, при которой трафик поступает на один определенный сервер группы. Как правило, перед группой серверов находится балансировщик нагрузки (NginxHAProxy), который и устанавливает правила распределения трафика на доступные сервера.

В первой части цикла мы уже разобрали как создавать липкие сессии с помощью Nginx. Во второй части разберем создание подобной балансировки средствами Kubernetes.

Так как статьи в основном направлены на начинающих - придется коснуться основ kubernetes. Да-да, я знаю в интернете полно материала для изучения куба. Но здесь будет минимум душной теории и максимум практики. Лучше один раз развернуть тестовое приложение в кластере и понять основные принципы, чем читать тонну скучных мануалов.

Преисполниться
Total votes 49: ↑48 and ↓1+52
Comments2

Назад к микросервисам вместе с Istio. Часть 1

Reading time13 min
Views159K


Прим. перев.: Service mesh'и определённо стали актуальным решением в современной инфраструктуре для приложений, следующих микросервисной архитектуре. Хотя Istio может быть на слуху у многих DevOps-инженеров, это довольно новый продукт, который, будучи комплексным в смысле предоставляемых возможностей, может потребовать значительного времени для знакомства. Немецкий инженер Rinor Maloku, отвечающий за облачные вычисления для крупных клиентов в телекоммуникационной компании Orange Networks, написал замечательный цикл материалов, что позволяют достаточно быстро и глубоко погрузиться в Istio. Начинает же он свой рассказ с того, что вообще умеет Istio и как на это можно быстро посмотреть собственными глазами.

Istio — Open Source-проект, разработанный при сотрудничестве команд из Google, IBM и Lyft. Он решает сложности, возникающие в приложениях, основанных на микросервисах, например, такие как:
Читать дальше →
Total votes 33: ↑32 and ↓1+31
Comments7

Почему принципы SOLID не являются надежным решением для разработки программного обеспечения

Reading time6 min
Views12K

Роберт Мартин представил принципы SOLID в 2000 году, когда объектно-ориентированное программирование стало настоящим искусством для программистов. Каждый хочет создать что-то долговечное, которое можно использовать повторно, насколько это возможно, с минимальными изменениями, которые потребуются в будущем. SOLID - идеальное название для этого.

Фактически, объектно-ориентированное программирование работает лучше всего, когда мы можем отделить то, что останется, от того, что изменится. Принципы SOLID помогают разделять это.

Мне лично нравится идея, лежащая в основе принципов SOLID и я многому из нее научился.

Читать далее
Total votes 27: ↑16 and ↓11+6
Comments21

Техдолг — нельзя копить, закрывать

Reading time4 min
Views13K

Технический долг по аналитике — это любая отсутствующая документация на функционал, который поставлен в промышленную среду.

Давайте разберемся на простом жизненном примере, почему важно не копить техдолг?

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

Однажды в летний жаркий день вы едете на машине в отпуск, и кондиционер не охлаждает, пошел ливень, а дворники не помогают, да еще порвался ремень ГРМ, и машина остановилась. Выглядит как самый худший день в жизни, остается только ждать эвакуатор.

Читать далее
Total votes 11: ↑8 and ↓3+10
Comments17

Почему в Visual Studio стек вызовов асинхронного кода иногда перевёрнут?

Reading time5 min
Views6.4K

Вместе с моим коллегой Евгением мы потратили много времени. Приложение обрабатывает тысячи запросов в асинхронном конвейере, полном async/await. Во время нашего исследования мы получили странные вызовы, они выглядели как бы “перевернутыми”. Специально к старту нового потока курса по разработке на C#, рассказываем, почему вызовы могут оказаться перевёрнутыми даже в Visual Studio.

Читать далее
Total votes 11: ↑9 and ↓2+9
Comments2

Как перестать DDoS-ить чужой API и начать жить

Reading time6 min
Views5.4K

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

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

– А у нас нет мышей! – А мы заведём… Какая польза от архитектора решений

Reading time8 min
Views12K

Приветствую, хабровчане. В далёком 1998-м я поступил в вуз на инженера-программиста и ещё в первом семестре реализовал свой первый коммерческий программный проект. Нет, это не курсовая для сокурсников, как вы могли бы подумать. Это была простенькая система складского учета для знакомых коммерсантов (работает, кстати, и поныне). Забавно, но она и стала тем триггером, который через пару лет надолго привел меня в коммерческую продуктовую разработку сперва на позицию разработчика, потом тимлида, аналитика…

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

Читать далее
Total votes 11: ↑9 and ↓2+14
Comments13

Сборник диаграмм классификаций баз данных

Reading time1 min
Views3.3K

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

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

Замечания и предложения приветствуются.

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

Git на практике

Reading time9 min
Views167K
Существует замечательная книга Pro Git, в которой подробно описаны все команды и возможности гита. Но после ее прочтения у многих остается непонимание того, как это все использовать на практике. В частности, у программистов разного уровня часто возникают вопросы о том, как работать с ветками в Git, когда их заводить и как мержить между собой. Порой мне попадались очень «оригинальные» и неоправданно усложненные схемы работы с гитом. В то время как в сообществе программистов уже сформировалась схема работы с гитом и ветками в нем. В этой статье я хочу дать краткий обзор основных моментов при работе с Git, и описать «классическую» схему работы с ветками. Многое из того что описано в этой статье будет справедливо и для других систем управления версиями.
Читать дальше →
Total votes 21: ↑8 and ↓13-5
Comments50

Полезные консольные Linux утилиты

Reading time13 min
Views117K

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


Осторожно много скриншотов. Добавил до ката утилиту binenv.


binenv — cамая интересная утилита для установки новых популярных программ в linux, но которых нет в пакетном менеджере.

Читать дальше →
Total votes 96: ↑92 and ↓4+110
Comments110

20 лучших практик по работе с Dockerfile

Reading time13 min
Views37K

Эта статья содержит рекомендации по написанию Dockerfile и принципам безопасности контейнеров и некоторые другие связанные темы, например про оптимизацию образов.

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

К счастью, большинство потенциальных проблем мы можем решить еще на этапе разработки.

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

Читать далее
Total votes 38: ↑36 and ↓2+40
Comments22

Коммиты — это снимки, а не различия

Reading time14 min
Views48K

Git имеет репутацию запутывающего инструмента. Пользователи натыкаются на терминологию и формулировки, которые вводят в заблуждение. Это более всего проявляется в "перезаписывающих" историю командах, таких как git cherry-pick или git rebase. По моему опыту, первопричина путаницы — интерпретация коммитов как различий, которые можно перетасовать. Однако коммиты это не различия, а снимки! Я считаю, что Git станет понятным, если поднять занавес и посмотреть, как он хранит данные репозитория. Изучив модель хранения данных мы посмотрим, как новый взгляд помогает понять команды, такие как git cherry-pick и git rebase.

Читать далее
Total votes 35: ↑29 and ↓6+36
Comments55

Что такое качество кода и зачем его измерять

Reading time5 min
Views44K

Измеримость и определение качества кода это вечная тема в мире программирования. Думаю все специалисты которые уже имеют опыт с большими проектами с многолетней историей не сомневаются в необходимости поддерживать код в качественном состоянии. Но не всегда достаточно времени для того чтобы выяснить какие характеристики важны именно в этом проекте. В этой статье не будет описано как нужно писать и оформлять код и нужны ли пробелы вокруг скобок. Сегодня я постараюсь выделить самые важные аспекты которым стоит уделять внимание и на что они могут повлиять, а какие допустимые пределы и как за ними следить решать Вам.
Читать дальше →
Total votes 23: ↑17 and ↓6+11
Comments6

Information

Rating
Does not participate
Registered
Activity

Specialization

Software Architect, Database Developer