Если вы объедините две идеи, то в итоге у каждого микросервиса будет своя собственная база данных, а у каждой базы данных будет только одна таблица.
Если у вас есть несколько микросервисов, работающих в одной учетной записи AWS, я могу понять, почему вы можете быть сбиты с толку, потому что в конечном итоге вы получите несколько таблиц в DynamodB.Я попытаюсь прояснить некоторые вопросы.
Как я могу иметь отдельные базы данных в DynamoDB?
В DynamoDB понятие «отдельные базы данных» не очень значимая идея.С точки зрения DynamoDB, каждая таблица не зависит от любой другой таблицы (в отличие от реляционной базы данных).Вам не нужно управлять оборудованием, поэтому вы не можете видеть, находятся ли ваши таблицы на одних и тех же серверах, и определенно нет понятия экземпляров базы данных.
Как я могу иметь отдельные базы данных, если у DynamoDB нет «отдельных баз данных»?
Цель не обязательно состоит в том, чтобы иметь отдельную базу данных для каждой микро-службы.Цель состоит в том, чтобы обеспечить единственную связь между микроуслугами через API, предоставляемые микроуслугами.Наличие отдельных баз данных - это один из способов обеспечить это (чтобы микросервисы не были привязаны к общему режиму внутренних данных), но это не единственный способ.
Так что мне делать?
Каждый микросервис должен иметь любые таблицы, необходимые для его функционирования.Любая таблица должна быть прочитана и записана только одним микросервисом.Чтобы обеспечить изоляцию между микроуслугами, работающими в одной и той же учетной записи AWS, вы должны использовать политики IAM, чтобы убедиться, что каждый микросервис имеет доступ только к своей собственной таблице DynamodB.В некоторых случаях может быть лучше поместить каждую микросервисную службу в свою учетную запись AWS, чтобы обеспечить даже высокий уровень разделения между ними.(Дополнительным преимуществом этого подхода является то, что если одна из учетных записей будет взломана, злоумышленник получит доступ только к одному из микросервисов.)