Search
Write a publication
Pull to refresh
4
0

User

Send message

Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам

Level of difficultyMedium
Reading time11 min
Views150K

Рассказываем, как работать с CI/CD, о шагах при настройке сервера и о полезных командах, которые помогут в работе.

Привет! Меня зовут Николай, я Backend-разработчик в РЕЛЭКС.

В статье ты найдешь полезный теоретический материал, сравнение инструментов CI/CD и подробный гайд по сборке и развертыванию через Docker на удаленный сервер с помощью Gitlab CI/CD — на примере Spring Boot приложения.

Читать далее

Разбираемся с RabbitMQ: High Availability и High Load

Reading time8 min
Views25K

Продолжаем делиться конспектами Алексея Барабанова, IT-директора «Хлебницы». На этот раз обсудим специфику работы RabbitMQ с высокими нагрузками (High Load) и обеспечением высокой доступности (High Availability). Рассмотрим различные методы увеличения производительности и горизонтального масштабирования, разберём и настроим внутренние инструменты. Также по мере погружения постараемся изучить основные подводные камни всех подходов.

Читать далее

Построение распределенной системы очередей сообщений с RabbitMQ и Python

Reading time22 min
Views25K

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

RabbitMQ — это мощный и гибкий брокер сообщений, который широко используется для создания распределенных систем, поддерживающих обмен данных между различными компонентами приложения. Он был разработан с учетом принципов протокола Advanced Message Queuing Protocol (AMQP), что делает его стандартом в индустрии для обработки сообщений.

Читать далее

Яндекс-функции рассылают почту

Reading time5 min
Views11K
Яндекс-функции

Сегодня мы создадим т.н. Яндекс-функцию (официальное название Yandex Cloud Functions), которая вступив в сговор с сервисом почтовых рассылок SendGrid будет слать «мыло» мирно спящим пользователям (шутка — я знаю, что все мы против спама).

А ещё я противник (но без фанатизма) традиционных серверов, и сторонник т.н. serverless (бессерверных) решений, поскольку не люблю (да и толком не умею) администрировать сервера, а ещё больше — платить за то время, когда они не нагружены. Другое дело — функции. Их кто-то обслуживает без меня, а я плачу только за вызовы. В начале октября 2019 г. Яндекс представил свои Yandex Cloud Functions — кажется первый в РФ serverless. И что особо приятно — для навыков Алисы они вообще бесплатны, поэтому с тех пор находятся в поле моего периферийного зрения. Но давайте уже приступим.
Читать дальше →

Опыт 1440 миграций баз данных

Reading time6 min
Views12K


Представьте себе Oracle DBA. Ему уже за тридцать, он слегка полноват, носит жилетку, на шее у него висит секретный токен доступа ко всем базам, а в резюме полстраницы пройденных им сертификаций. Суббота. День большого релиза. Кульминация. Время накатывать изменения на базу данных. Он набирает sqlplus, нажимает ENTER и по черному экрану куда-то вверх, в пустоту, устремляются километры SQL команд. Совсем как в звездных войнах. Спустя пять минут все готово. Через час релиз завершен. Работа сделана, день удался. Теперь можно и по паре пива.
На самом деле нет

Знакомство с FastAPI

Reading time5 min
Views223K
Вместо предисловия

В нашей команде бытует хорошая практика фиксировать все изменения, которые отправляются в продакшен в гитхабовских релизах. Однако, не вся наша команда имеет доступ в гитхаб, а о релизах хочется знать всем. Так сложилась традиция релиз из гитхаба дублировать в рабочем чате команды в телеграме. Что хорошо, гитхаб позволяет с помощь маркдауна красиво оформить релиз с разделением на секции и ссылками на задачи, которые отправляются на выкатку. Что плохо, простым copy/paste всю эту красоту в телеграм не перенесёшь и приходится тратить время на довольно нудную работу по повторному оформлению релиза, но уже в телеграме. Ну а посколько программисты народ ленивый, я решил этот процесс автоматизировать.
 


Исходные данные:

  • Гитхаб умеет сообщать обо всём, что происходит в репозитории с помощью вебхуков
  • Вся необходимая для формирования релиза информация содержится в теле запроса, который кидает вебхук
  • Авторизация идёт через подпись запроса секретом, который проставляется в настройках вебхука

Соответственно, задача заключается в том, чтобы поднять HTTP API, который сможет принять POST запрос, проверить подпись, извлечь нужную информацию из тела запроса и передать её дальше по инстанции. Как тут не попробовать FastAPI, на который я давно глаз положил?


Кто такой FastAPI?


FastAPI — это фреймворк для создания лаконичных и довольно быстрых HTTP API-серверов со встроенными валидацией, сериализацией и асинхронностью,
что называется, из коробки. Стоит он на плечах двух других фреймворков: работой с web в FastAPI занимается Starlette, а за валидацию отвечает Pydantic.


Комбайн получился легким, неперегруженным и более, чем достаточным по функционалу.

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

Поднимаем кластер PostgreSQL в Docker и Testcontainers

Level of difficultyMedium
Reading time8 min
Views32K

Ранее я рассказывал о том, как запустить PostgreSQL в Docker. Тогда речь шла об использовании «ванильных» образов Postgres и поднятии одного хоста. В большинстве случаев этого достаточно как для тестов, так и для экспериментов, но нужно понимать, что в промышленной эксплуатации чаще всего используются высокодоступные (отказоустойчивые, кластеризованные) конфигурации PostgreSQL.

Сегодня я покажу, как запустить уже целый кластер PostgreSQL в Docker, а также в тестах через Testcontainers, и как вручную инициировать смену мастер-хоста.

Читать далее

Исследуем базы данных с помощью T-SQL

Reading time26 min
Views291K
Как dba и консультант по оптимизации производительности SQL Server в Ambient Consulting, я часто сталкиваюсь с необходимостью анализа узких мест производительности на экземплярах SQL Server, которые вижу первый раз в жизни. Это может быть сложной задачей. Как правило, у большинства компаний нет документации по их базам данных. А если есть, то она устарела, или же её поиск занимает несколько дней.

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

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

Как и с любыми скриптами, сначала проверьте их в тестовом окружении, прежде чем запускать в продакшене. Я бы рекомендовал вам погонять их на тестовых базах MS, таких как AdventureWorks или pubs.

Ну, хватит слов, давайте я покажу скрипты!
Читать дальше →

Пишем простой docker-compose.yml для контейнеризации приложения (React, Spring Boot, PostgreSQL, pgAdmin)

Level of difficultyEasy
Reading time21 min
Views60K

В данной статье описан простой пример написания docker-compose.yml файла на примере контейнеризации приложения с использованием Spring Boot на бэкенде, React на фронте, PostgreSQL в качестве базы данных и pgAdmin - для просмотра данных в базе.

Читать далее

Как получить доступ из одного докер-контейнера в другой докер-контейнер

Reading time4 min
Views56K

Цель этой статьи — показать как мы можем сконфигурировать два и более контейнеров, чтобы они могли взаимодействовать друг с другом. В этой статье мы сделаем следующее:

Создадим образ Docker используя простой веб-сервис с использованием Python и Flask.

Запустим два отдельных контейнера

Создадим сеть в Docker

Объединим контейнеры используя созданную сеть

Читать далее

SQL Server JSON

Reading time26 min
Views41K


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

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

Такое пафосное вступление имеет определенные на то основания, поскольку долгое время на Microsoft Connect поддержка работы с JSON на SQL Server была одной из самых востребованных фич. Шли годы и неожиданно данный функционал реализовали вместе с релизом SQL Server 2016. Забегая вперед скажу, что вышло очень даже хорошо, но Microsoft не остановилась на этом и в SQL Server 2017 существенно улучшили производительность и без того быстрого JSON парсера.
Подробнее

Автоматизация деплоя Django-приложения в маленькой команде: пошаговый гайд

Level of difficultyMedium
Reading time7 min
Views8.7K

Развёртывание ПО, или деплой (deploy) — этап в разработке, в Devops в целом, это действия, которые делают ПО готовым к использованию. Если вы умеете в грамотный деплой, масштабирование и управление конвейерами (CI/CD), то ваш софт будет конкурентоспособным.

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

Мы в digital-агентстве успешно используем GitLab CI и Docker для развёртывания ПО в разных средах. Для чего нужны эти инструменты?

GitLab CI позволяет автоматизировать процессы сборки и доставки ПО. Docker — упаковать приложение и его зависимости в контейнеры, что упрощает развёртывание и масштабирование в разных средах. Используя их, вы сократите затраты на найм и оптимизируете деплой.

В этой статье расскажу о нашем опыте и покажу примеры настройки конвейеров CI/CD, как ими управлять с помощью GitLab CI и Docker. А также дам рекомендации, как масштабировать развертывание.

Читать далее

VSСode. Как настроить окружение для разработки в Docker на удаленном сервере через SSH

Level of difficultyEasy
Reading time3 min
Views25K

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

Читать далее

История учебы Васи и конечный автомат на SQL

Level of difficultyEasy
Reading time13 min
Views3K

После выступления на PgConf2023 у меня на выходных появилось время на реализацию идеи, как реализовать логику конечного автомата на SQL в PostgreSQL. Идея применима к любой СУБД, поддерживающей агрегатные функции, определяемые пользователем. И самое грустное, что в одной из самых популярных аналитических баз данных ClickHouse, эту задачу не нашел как вообще можно решить без Python на чистом SQL, хоть автосгенерированном.

Скоро сказка сказывается, да не скоро дело делается... Жил был Вася. Описали летописцы его житие с учебой в виде таблицы. А устои в обществе где он жил, были описаны с помощью конечного автомата. И конечный автомат мудрости - finite-state machine (FSM) был задан в виде таблицы переходов между состояниями, описанными в виде логических выражений на SQL...

Читать далее

Apache Superset. Первый взгляд на BI инструмент

Level of difficultyEasy
Reading time7 min
Views93K

В последнее время изучая вакансии на сайтах по поиску работы, все чаще стал отмечать, что помимо платных инструментов BI от кандидатов требуется знание еще бесплатных платформ. Мой предыдущий опыт работы по построению графической отчетности был связан исключительно с коммерческими продуктами, поэтому я решил выделить время на ознакомление с альтернативными решениями. Выбор Superset был случайным, так как я обратил внимание на него лишь потому, что он входит в экосистему Apache. Сразу хочу оговориться, что в данной заметке не будет сравнения Superset с платными инструментами. Такое сопоставление функционала просто некорректно из-за разных “весовых категорий”. Также я не буду выделять плюсы и минусы решения по сравнению с бесплатными аналогами, так как это очень дискуссионный вопрос. Неизбежно найдутся адепты того или иного продукта, которые будут доказывать ошибочность моих суждений. Поэтому я построил публикацию в форме простого описания “нюансов”, которые я выделил для себя, начав знакомство с Superset. Читатели же сами смогут сделать свои выводы.

Читать далее

Обещания — настоящие и не очень

Level of difficultyEasy
Reading time7 min
Views16K

Хабр, привет! Меня зовут Настя Абрашитова, я руководитель службы инструментов репозитория в Яндексе. Однажды ко мне пришёл мой знакомый, назовём его Леонид. Он долгое время работал в небольшой компании. Он решил посоветоваться, стоит ли ему увольняться со своей работы или есть смысл остаться. 

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

Я решила уточнить, когда это должно случиться. Леонид немного погрустнел и сказал, что они не обсуждали конкретную дату. Более того, этот разговор проходил примерно за два года до того. Я спросила: было ли с тех пор что-то сделано, что приблизило Леонида к позиции СTO? Оказалось, что ничего.

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

Читать далее

Как фронтендер подписывать CSR учился

Level of difficultyMedium
Reading time14 min
Views6.6K

В статье рассказываю про опыт изучения Certificate Signing Request (CSR) формата. О том, что такое PEM, DER, какова структура самого CSR файла и как последний подписывается. А также поделюсь, с какими сложностями в процессе изучения я столкнулся.

Читать далее

Исходников нет, но мы не сдадимся: портируем Android без каких-либо исходников от производителя

Level of difficultyMedium
Reading time10 min
Views25K
Несмотря на то, что ядро Linux предоставляется под лицензией GPL, ушлые китайские производители зачастую не хотят публиковать исходный код ядер своих устройств. И ладно, если бы это касалось смартфонов по 2-3 тысячи рублей, но ведь даже за 8-10 тысяч вас могут обделить с «исходниками», хотя по закону это их прямая обязанность! Однако, даже отсутствие исходного кода ядра, не помешает нам портировать кастомную прошивку и подарить вторую жизнь герою нашей сегодняшней статьи — поддельной реплике Huawei P20 Pro на базе чипсета MT6580! Сегодня мы с вами: узнаем подробнее про новые смартфоны за 7-8 тысяч рублей из онлайн-магазинов, портируем прошивку crDroid простым копированием файлов и посмотрим, как работает такой девайс в 2023. Интересно? Тогда добро пожаловать под кат!

Дорогие представительницы прекрасного пола, я и TimeWeb Cloud, поздравляем вас с 8 марта!

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

Запускаем PostgreSQL в Docker: от простого к сложному

Level of difficultyEasy
Reading time12 min
Views643K

О простых и продвинутых способах запуска PostgreSQL в Docker: добавляем healthcheck, ставим на мониторинг, настраиваем параметры.

Читать далее

Его величество Пайп, или как заставить ssh tunnel открыть RDP на другом конце через альтернативный IP

Level of difficultyMedium
Reading time5 min
Views18K

Для начала, вспомним некоторые базовые вещи ОС Unix.

Любой процесс в Unix имеет три открытых файла по умолчанию (он конечно может их потом закрыть):

Читать далее

Information

Rating
Does not participate
Registered
Activity