# საშუალო ზომის ინფრასტრუქტურა Terraform-ით

წყარო: <https://github.com/antonbabenko/terraform-best-practices/tree/master/examples/medium-terraform>

ეს Terraform კოდის სტრუქტურის მაგალითი განკუთვნილია საშუალო ზომის ინფრასტრუქტურისთვის რომელიც იყენებს შემდეგ კომპონენტებს:

* 2 AWS ანგარიშს
* 2 გამოყოფილი გარემო (`prod` და `stage` რესურსების გაზიარების გარეშე). თითოეული გარემო მუშაობს გამოყოფილ AWS ანგარიშში და მოიცავს რესურსებს ორივე რეგიონში
* თითოეული გარემო იყენებს მზა ინფრასტრუქტურის მოდულის (`alb`) განსხვავებულ ვერსიას რომლის კოდის წყაროც არის [Terraform Registry](https://registry.terraform.io/)
* თითოეული გარემო იყენებს თვითნაწერ მოდულს `modules/network` რომელიც ლოკალურად დირექტორიაში ინახება.&#x20;

{% hint style="success" %}

* იდეალურია პროექტებისთვის, სადაც ინფრასტრუქტურა ლოგიკურად არის გამოყოფილი (ცალკე AWS ანგარიშები)
* კარგია, როდესაც არ არის საჭირო AWS ანგარიშებს შორის გაზიარებული რესურსების ცვლილება (ერთი გარემო = ერთი AWS ანგარიში = ერთი მდგომარეობის ფაილი)
* კარგია, როდესაც არ არის საჭირო გარემოს შორის ცვლილებების ორკესტრირება
* კარგია, როდესაც ინფრასტრუქტურის რესურსები განსხვავებულია თითო გარემოზე დანიშნულებისამებრ და არ შეიძლება განზოგადდეს (მაგ., ზოგიერთი რესურსი არ არის ერთ გარემოში ან ზოგიერთ რეგიონში)
  {% endhint %}

{% hint style="warning" %}
რაც უფრო იზრდება პროექტი, უფრო რთული იქნება ამ გარემოს ერთმანეთთან განახლების შენარჩუნება. განიხილეთ ინფრასტრუქტურის მოდულების გამოყენება განმეორებადი ამოცანებისთვის.
{% endhint %}

##
