개요
- Terraform을 잘 사용하고 있는가?
- 수정된 IaC 구성 방안
- 보안을 강화하기 위한 방안
- + Github Action (OIDC)
- 정리
Terraform 을 잘 사용하고 있는가?
현재 우리회사에서 사용하고 있는 테라폼 구성은 아래와 같다.

2024년 8~9월 부터 Terraform을 적용을 시작하면서,
기존 Git Repository + S3 를 시작으로 Terraform Cloud를 사용하기 시작하였다.
Terraform Cloud를 사용하면서, 정말 좋은기능도 많고 추후 여러부분에서 활용할만하다고 생각했지만...
몇몇 아쉬운 부분이 발생하였다.
리소스 증감에 따른 비용추가
Terraform Cloud는 총 4가지 plan이 제공된다.

주로 FreePlan으로도 많은 것을 할 수 있으나, Resource 500 부터는 Standard Plan을 사용해야 했다.
일단... 나는 IaC를 최소비용으로 구성하고 싶은 마음이 있었다. Resource 는 아래 사유로 계속 증가하였다.
- 기존 리소스 IaC 구성 (Terraforming)
- 새로운 서비스 증가
위 2개 업무를 틈날때 마다하니... 이건 뭐 달마다 300~400$ 넘어갔다.
물론 테라폼을 비용을 지불하면서 까지 잘 사용한다면 좋지만... 내 생각에는 효율대비 비싼 것 같다.
IaC Provisioning 속도
이 부분은 솔직히 조금 불편하였다.
terraform plan 을 진행하면, 기존 S3를 State 로 사용하는것보다 2~3배 느렸다.
뭐 당연한 부분이라고 생각하지만 ( Terraform -> Terraform Cloud -> Computing -> Plan ... )
뭔가 빠르게 IaC 를 구성하는 관점에서는 조금 답답한 부분인것 같다.
의외로 너무 복잡
Terraform Cloud는 제공하는 기능이 정말 많다.
Drift, RBAC, 팀 / 조직별 권한 제어, Infra Catalog 등등 너무 많다.
하지만 현재 우리조직의 단계는 위 항목들을 적용하는 것 보단, 빠르게 인프라를 구성하고 리뷰하고 적용하는 부분이다.
굳이 저 기능까지는 필요가 없다고 생각했다.
효과적인 IaC 구성방안
그래서 우리는 Terraform Cloud를 대체할만한 제품을 찾기 시작하였다.

Attlantis 가 정답이라고 할 순 없지만, 현재 상황에서는 Terraform Cloud 보다는 더 낫다고 생각하였다.
그렇게 생각한 이유...
- 비용 절감 포인트
- GitOps 관점에서 더 쉬움
비용 절감 포인트
이건 뭐... 그냥 무료니까 (공짜가 좋음)
그리고 ECS Fargate Terraform module도 제공하니...
GitOps 관점에서 더 좋음
Terraform Cloud와 Attlantis 모두 여러 VCS와 통합이 가능하나, 동작 구성의 차이가 존재한다.
Terraform Cloud의 경우, 코드변경을 Push (Branch, Tag) 에 의해 동작이 결정된다 (Plan -> Apply)
Atlantis의 경우, PR (Pull Request) 기반의 작업 흐름을 만든다. PR을 기준으로 Plan을 실행하고 결과를 PR 댓글로 남긴다.
그 과정에서 변경사항이 Git 에 기록되면서 관리가 된다.
물론 TC (Terraform Cloud) 가 더 좋을 수는 있지만, 우리 팀에서는 Atlantis 형태가 더 조직에 성향에 맞다고 생각하였다.
보안을 강화하기 위한 방안
Terraform을 사용하다보면, 아래 처럼 Provider를 구성하기 마련이다.
### use Credentials
provider "aws" {
access_key = ....
secret_key = ....
region = "ap-northeast-2"
}
### use Profile
provider "aws" {
profile = ...
region = "ap-northeast-2"
}
근데 위 방법은 어째선지... 좀 위험할 수도 있다고 생각스...
좀더 효과적인 방안이 없을까...
IAM Role을 사용한 접근 방법

IAM Role을 사용해서 대신 Provider를 구성할 수 있다.
구성된 IAM Role은 AssumeRole 을 활용하여 관련계정에 접근하고 (Trust Relation Ship),
해당 계정은 PassRole을 사용하여 필요한 권한을 부여한다
+ Github Action (OIDC)
정리
위 구성을 Draw.io로 그려보면... (그리는거 쉽지 않네...)

'Architecture > IaC + CICD' 카테고리의 다른 글
| IaC Dream Architecture (나의 꿈 === 공상) (0) | 2025.06.21 |
|---|---|
| Atlantis (ECS Fargate) + Terragrunt 구성법 (0) | 2025.02.16 |
| Terragrunt 이슈 (terragrunt destroy) (0) | 2025.01.19 |
| 나만의 테라폼을 사용하는 방법 (굉장히 주관적) (1) | 2024.12.22 |