diff --git a/questions/databases.md b/questions/databases.md
index fe56c1b..826845d 100644
--- a/questions/databases.md
+++ b/questions/databases.md
@@ -66,4 +66,17 @@ SHOW SLAVE STATUSG
Prometheus использует TSDB (time series database).
+
+
+3. Что такое VACUUM в PostgreSQL?
+
+
+ Ответ
+
+VACUUM высвобождает пространство, занимаемое «мёртвыми» кортежами. При обычных операциях PostgreSQL кортежи, удалённые или устаревшие в результате обновления, физически не удаляются из таблицы; они сохраняются в ней, пока не будет выполнена команда VACUUM. Таким образом, периодически необходимо выполнять VACUUM, особенно для часто изменяемых таблиц.
+
+Без параметра команда VACUUM обрабатывает все таблицы в текущей базе данных, которые может очистить текущий пользователь. Если в параметре передаётся имя таблицы, VACUUM обрабатывает только эту таблицу.
+
+Простая команда VACUUM (без FULL) только высвобождает пространство и делает его доступным для повторного использования. Эта форма команды может работать параллельно с обычными операциями чтения и записи таблицы, так она не требует исключительной блокировки. Однако освобождённое место не возвращается операционной системе (в большинстве случаев); оно просто остаётся доступным для размещения данных этой же таблицы. VACUUM FULL переписывает всё содержимое таблицы в новый файл на диске, не содержащий ничего лишнего, что позволяет возвратить неиспользованное пространство операционной системе. Эта форма работает намного медленнее и запрашивает исключительную блокировку для каждой обрабатываемой таблицы.
+
\ No newline at end of file
diff --git a/questions/terraform.md b/questions/terraform.md
index 2d5f0b8..88b613d 100644
--- a/questions/terraform.md
+++ b/questions/terraform.md
@@ -25,15 +25,17 @@
Зависит от требованиям к хранению состояния.
-- AWS S3 — Standard (с locking через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
+- AWS S3 — Standard (с блокировкой через DynamoDB). Сохраняет состояние в виде заданного ключа в заданном сегменте на Amazon S3. Этот бэкэнд также поддерживает блокировку состояния и проверку согласованности через DynamoDB.
- terraform enterprise — Standard (без блокировки).
-- etcd — Standard (без лока). Сохраняет состояние в etcd 2.x по заданному пути.
+- etcd — Standard (без блокировки). Сохраняет состояние в etcd 2.x по заданному пути.
- etcdv3 — Standard (с блокировкой). Сохраняет состояние в хранилище etcd в виде K/V с заданным префиксом.
-- gcs — Standard (с локом). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.
+- gcs — Standard (с блокировкой). Сохраняет состояние как объект в настраиваемом префиксе в заданном сегменте в Google Cloud Storage (GCS). Этот бэкэнд также поддерживает блокировку состояния.
+
+- Gitlab Terraform state (с блокировкой). Хранит состояние в Gitlab Terraform state хранилище, используя HTTP протокол и права Gitlab для доступа.
Существуют также и другие Backend для Terraform.
@@ -131,3 +133,51 @@ echo 'yamldecode(file("filename.yaml"))' | terraform console
[Workspaces](https://developer.hashicorp.com/terraform/language/state/workspaces#using-workspaces) в Terraform - это возможность управления state файлами. Workspace содержит все что необходимо для управления набором инфраструктуры, а отдельные рабочие области функционируют как полностью отдельные рабочие каталоги. С помощью Workspaces возможно управлять несколькими средами инфраструктуры.
+
+11. Для чего нужен terragrunt?
+
+
+ Ответ
+
+Terragrunt — это обертка для Terraform, позволяющая решать проблемы, связанные с масштабированием и переиспользованием кода для настройки инфраструктуры. Он позволяет повторно использовать конфигурационные параметры и поддерживает многоуровневые конфигурации и зависимости.
+
+
+
+12. Чем отличается `count` от `for_each`?
+
+
+ Ответ
+
+`count` — это итерация по списку, который содержит целочисленные элементы, `for_each` — это итерация по корневым ключам словаря, которые могут содержать данные любого типа.
+
+```
+resource "aws_instance" "web" {
+ count = 3
+
+ instance_type = "t2.micro"
+ ami = data.aws_ami.debian_buster.id
+ tags = {
+ Name = "WebServer-${count.index + 1}"
+ }
+}
+```
+Описание ресурса выше создаст 3 одинаковых EC2 инстанса, изменив имя с указанием номера текущего состояния счётчика. `count` начинает отсчет с 0, поэтому чтобы 1 EC2 инстанс был с индексом 1 в имени ему прибавили `1`.
+
+```
+resource "aws_instance" "server" {
+ for_each = {
+ web = { type = "t2.micro", public_ip = true },
+ db = { type = "m5.large", public_ip = false }
+ }
+
+ instance_type = each.value["type"]
+ ami = data.aws_ami.debian_buster.id
+ associate_public_ip_address = each.value["public_ip"]
+ tags = {
+ Name = "each.key"
+ }
+}
+```
+Ресурс выше создаст 2 EC2 инстанса с итерацией по ключам `each.key` и использовав значения вложенных словарей в конфигурации EC2.
+
+