как CD pipeline знает адреса серверов? В современном "облачном" окружении они часто меняются, нужен какой-то метод для их динамического получения
как обеспечить бесперебойную работу приложения во время деплоя?
Что за паттерн "Api service", который какие-то DTO отдает?
Делать это нужно в Application, вызвать 2 агрегата последовательно. Не нужно делать это ответственностью Order.
interface StoreApiServiceInterface
{
public function retrieveActiveStore(DateTimeImmutable $currentTime): ?StoreDTO;
}
namespace App\Store\Application\Api;namespace App\Store\Application\Api;
use App\Store\Application\UseCase\Get\Active\GetActiveStoreQuery;
use App\Store\Application\UseCase\Get\Active\GetActiveStoreQueryHandler;
use App\Store\Domain\ReadModel\StoreReadModel;
final class StoreApiService implements StoreApiServiceInterface
{
private GetActiveStoreQueryHandler $storeQueryHandler;
public function __construct(GetActiveStoreQueryHandler $storeQueryHandler)
{
$this->storeQueryHandler = $storeQueryHandler;
}
public function retrieveActiveStore(DateTimeImmutable $currentTime): ?StoreDTO
{
$query = new GetActiveStoreQuery();
$query->currentTime = $currentTime;
$resultCollection = $this->storeQueryHandler->handle($query);
if ($resultCollection->isEmpty()) {
return null;
}
/** @var StoreReadModel $store */
$store = $resultCollection->getFirstElement();
return new StoreDTO(
$store->id,
$store->name,
);
}
}
Для модуля - два отдельных сервиса?
На практике сталкивался только с тем что всякие фоновые процессы помещали обычно в тот же контейнер что и веб приложении и за процессом обычно присматривал supervisor. Насколько знаю это не совсем правильная практика, рекомендуются под каждый процесс по контейнеру. А не будет ли это слишком накладно по ресурсам? И насколько понимаю тогда под фоновые процессы надо создавать отдельный docker image(php-cli) Надо ли в связи с этим тогда переделывать архитектуру приложения?