# Intro

The Media Magic platform is built using two infrastructure libraries:

1. Terraform

Terraform is what we used originally for the Media Magic project. And certain components still remain in Terraform. These include the Postgres Database, the Kubernetes cluster itself, and the Google Cloud basic setup.

2. Pulumi

Pulumi was introduced in order to take some of the repetative tasks out of creating infrastructure for each service.

It was introduced to create some consistency between all of the services, and to create an abstraction for services infrastructure. This allows us to pull in a library and configure the basic details, instead of re-writing, or copy and pasting yaml files, or Terraform files.

The aim is to move all of the infrastructure to Pulumi, and to remove the Terraform code.

## The library

The library of infrastructure components can be located in `libs/infrastructure-components`.

This library wraps around Pulumi's Go SDK, and creates a series of abstractions, which make it easy to extend and customise.

There are multiple levels in which you can use this library. Depending on how custom you need your infrastructure code to be.

## Contents

1. [Creating your first service](/product-docs/libs/infrastructure-components/docs/creating-your-first-service.md)
2. [The Library](/product-docs/libs/infrastructure-components/docs/the-library.md)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.mediamagic.dev/product-docs/libs/infrastructure-components/docs/intro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
