Use constraints with Swarm mode

In this post, i will explain you how to use constraints to limit the set of nodes where a task can be scheduled. It’s the purpose of a Swarm cluster, all your nodes can accept containers. But sometimes, you need to specify a subset of nodes for some reasons. For example, maybe all your nodes have not the same hardware and some are more powerfull. That’s where constraints appear ! They will let you specify Read more

How to add a Watermark to an image with Imagick in PHP

Basically, all that you need to add a watermark to an image is the compositeImage method from an image object. This method allows you to easily composite one image onto another. <?php // Create instance of the original image $image = new Imagick(); $image->readImage("image.jpg"); // Create instance of the Watermark image $watermark = new Imagick(); $watermark->readImage("watermark.png"); // The start coordinates where the file should be printed $x = 0; $y = 0; // Draw watermark Read more

Passing system environment variables to PHP-FPM when using NGINX

Sometimes it comes in handy to set system environment variables (env var from now on!) and get the PHP to use it for something. My tech stack is usually NGINX+PHP-FPM and if you already tried if you set a env var you probably found that it doesn’t appear on $_SERVER or in the getenv(). For this article I will be using a php file with this content: By now you probably know how to set Read more

How speeding up composer install led to reducing PHP docker image build time by up to 5 times

Have you ever profiled how long it takes for your PHP or PHP-FPM docker image to build? Probably, you have noticed that the composer install step accounts for the bulk of the image build time. In this post, I will reveal one of the effective ways that helped us reduce the docker build time by a factor of 5. We decreased it from 5 minutes to 1. he problem Brayan was discussing with us that the Read more

Паттерн: Сага

Есть приложение, к которому применялся паттерн Database per Service. Теперь у каждого сервиса приложения есть своя собственная база данных. Некоторые бизнес транзакции охватывают сразу несколько сервисов, так что нужен механизм, обеспечивающий согласованность данных между этими сервисами. Например: давайте представим, что мы разрабатываем интернет магазин, где у клиента есть кредитный лимит. Приложение должно гарантировать, что новый заказ не превышает кредитный лимит клиента. Так как Заказы и Клиенты — различные базы данных, то приложение не может использовать Read more

Шаблон распределенных транзакций Saga

Шаблон проектирования Saga — это способ управления согласованностью данных между микрослужбами в сценариях распределенных транзакций. Saga — это последовательность транзакций, которая обновляет каждую службу и публикует сообщение или событие для активации следующего шага транзакции. Если шаг завершается ошибкой, Saga выполняет компенсирующие транзакции, которые отменяют предыдущие транзакции. Контекст и проблема Транзакция — это единая единица логики или работы, которая иногда состоит из нескольких операций. В рамках транзакции событие — это изменение состояния, которое происходит с сущностью, Read more

Automatically tag latest commit deployed

As we continue working and increasing our Salesforce projects, even the dynamic deployments can grow a lot between releases (around 1 month of development). So the build at the beginning of the release may take 5 to 10 minutes to deploy and run the specific tests, but by the end of the deployment it may be taking up to 3 hours (deploying almost 10k components and running 8k unit tests). In order to be able Read more

Clean Up Your Docker Registry

Delete unused digests of docker images and save space If you’re using your docker registry to push continuous updates you’ve probably noticed that the disk mount space for the registry is gradually growing. It looks like it’s time to have a registry clean up. Here’s how to do it. First, Let’s Get Familiar With the Jargon One docker image can have multiple tags. Each image has a digest, which is a unique value. When you do continuous pushes (with Read more

Automatic Join on Eloquent Models with relations setup

Since Eloquent doesn&#039;t do a real join when using &quot;with&quot; this will add a simple join method without having to worry about the join columns since it&#039;s all stored with the models anyway. It will also select all the columns from the joined table with an added prefix of the table name.   /**     * This determines the foreign key relations automatically to prevent the need to figure out the columns.     *     * @param \Illuminate\Database\Query\Builder Read more


With Применяется для жадной загрузки. То есть вместе с самой моделью Laravel загружает и связанные данные. Это полезно, если у вас есть коллекция моделей и для каждой вы хотите загрузить связанные данные. При жадной загрузке будет выполнен только один дополнительный запрос к базе данных. Пример User > hasMany > Post: $users = User::with(‘posts’)->get(); foreach($users as $user){ $users->posts; // посты уже загружены, нет запроса в каждой итерации цикла } Has Применяется для фильтрации по связанным данным. Read more

Любишь мемасики?

Подпишись на мой телеграм-канал!