
AI에게 부탁했더니 Terraform 코드가 순식간에 나왔다. 하지만, 그것으로 정말 인프라를 이해할 수 있을까?
요약
AI가 생성한 Terraform 코드는 구문적으로 완벽할 수 있지만, 인프라의 구조적 이해 없이는 운영 환경에서 심각한 문제를 초래할 수 있습니다. 보안, 비용, 가용성 등 현장의 문맥을 파악하는 능력이 AI 활용의 핵심임을 강조합니다.
핵심 포인트
- AI 생성 코드는 구문은 정확하나 인프라 간의 관계 이해가 부족할 수 있음
- 보안 그룹 설정 시 0.0.0.0/0 허용과 같은 보안 취약점 주의 필요
- NAT Gateway 등 리소스 구성 시 비용 최적화 검토 필수
- AI를 도구로 활용하되 인프라의 원리와 문맥을 이해하는 능력이 중요
며칠 전, 작은 실험을 했습니다.
ChatGPT에게 "EC2 인스턴스를 Terraform으로 만들어줘. 퍼블릭 서브넷(Public Subnet)에 두고, SSH가 가능하게 해줘"라고만 입력해 보았습니다.
30초도 채 되지 않아, main.tf 코드가 나왔습니다. VPC, 서브넷(Subnet), 보안 그룹(Security Group), 키 페어(Key Pair). 필요한 리소스가 한 세트로 갖춰져 있었습니다.
솔직히 처음에는 "대단하다"라고 생각했습니다. 하지만 동시에 조금 무서워졌습니다.
"이것을 보고 인프라를 '알았다'고 착각하는 사람이 늘어나지 않을까" 하고 말입니다.
이 기사는 AI 활용을 부정하고 싶은 것이 아닙니다. 저 자신도 일상적으로 사용하고 있습니다. 다만, 현장에서 목격해 온 "AI 코드 때문에 막히는 패턴"을 바탕으로 솔직한 이야기를 하고 싶습니다.
이 기사를 읽으면 다음과 같은 것들을 할 수 있게 됩니다.
- AI가 생성한 Terraform 코드의 함정을 구체적으로 파악할 수 있다
- "쓸 줄 아는 사람"과 "이해하고 있는 사람"의 차이를 언어화할 수 있다
- AI를 올바르게 활용하면서 인프라 이해를 심화하는 학습법을 알 수 있다
AI가 생성하는 Terraform 코드는 확실히 수준이 높습니다.
예를 들어 "ALB와 ECS Fargate로 간단한 Web App 구성을 만들어줘"라고 물으면, 다음과 같은 코드가 나옵니다.
resource "aws_lb" "app" {
name = "app-alb"
internal = false
...
구문은 올바릅니다. AWS의 사양에도 부합합니다. terraform plan도 통과합니다.
하지만 이것을 "돌리기만" 하고 끝내는 사람이 현장에서 막힙니다.
운영 환경에 가까운 구성으로 terraform apply를 실행했을 때, 다음과 같은 에러가 발생했다고 가정해 봅시다.
Error: InvalidParameterException: The provided target group does not have the same VPC as the load balancer.
이 에러는 VPC 설정을 제대로 이해하고 있다면 "ALB와 타겟 그룹(Target Group)의 VPC가 다르다"는 것을 즉시 알 수 있습니다. 하지만 코드를 복사하기만 했다면, VPC와 서브넷의 관계가 머릿속에 들어있지 않기 때문에 어디를 고쳐야 할지조차 모르게 됩니다.
AI가 생성하는 보안 그룹(Security Group)은 동작 확인을 우선시하여 0.0.0.0/0을 허용하는 코드를 내놓을 때가 있습니다.
resource "aws_security_group_rule" "allow_ssh" {
type = "ingress"
from_port = 22
...
"인터넷 전체에 SSH를 열어두어서는 안 된다"라는 기초 지식이 없다면, 이것을 운영 환경에 적용해 버리고 맙니다. 실제로 이런 인시던트(Incident)는 일어나고 있습니다.
NAT Gateway 구성을 AI에게 물었을 때, 아무것도 지정하지 않으면 멀티 AZ(Multi-AZ) 구성의 코드가 나올 때가 있습니다.
resource "aws_nat_gateway" "az_a" {
allocation_id = aws_eip.az_a.id
subnet_id = aws_subnet.public_a.id
...
NAT Gateway는 하나당 약 $30~$50/월 + 데이터 전송 비용이 발생합니다. 가용성을 위해 2개를 세우면 개발 환경에서도 월 $100를 넘길 가능성이 있습니다.
"왜 이 구성을 하는가"를 이해하고 있지 않으면, 비용 검토조차 할 수 없습니다.
AI는 코드를 쓰는 것은 잘하지만, 문맥을 읽는 것은 서툽니다.
- 이 시스템의 가용성 요구사항은 어느 정도인가
- 개발 환경과 운영 환경에서 구성을 바꿔야 하는가
- 보안 요구사항은 무엇을 지켜야 하는가
- 비용의 상한선은 어디인가
이러한 "현장의 문맥"은 AI에게 알려주지 않으면 반영되지 않습니다. 그리고 이것을 "가르칠 수 있는 사람"이 되기 위해서는 인프라의 기초 지식이 필요합니다.
AI와 인프라 엔지니어의 관계를 정리하면 다음과 같습니다.
AI는 중간 단계인 "코드 생성"을 담당하는 도구입니다. 요구사항 정리와 리뷰는 인간이 합니다.
AI 시대에 벌어지는 격차는 스킬이 아니라 이해의 깊이라고 느끼고 있습니다.
| 관점 | AI 코드를 붙여넣기만 하는 사람 | 이해하고 사용하는 사람 |
|---|---|---|
| 에러 대응 | "왜 안 돌아가는지" 모름 | 원인을 추측하여 수정할 수 있음 |
| ... |
현장에서의 리뷰나 고객에 대한 설명 시, 이 차이가 나타납니다.
AI는 당신의 실력을 증명해주지 않습니다. 그것은 스스로 해야만 합니다.
「그러니까 AI를 쓰지 마라」는 뜻이 아닙니다. 오히려 반대입니다. AI를 사용하면서 이해를 깊게 하는 학습 방법이 있습니다.
AI가 내놓은 코드를 의미를 파악하며 직접 손으로 다시 타이핑한다. 복사해서 붙여넣기(Copy-paste) 하지 않고, 한 줄씩 의미를 확인한다. 번거로워 보이지만, 이것이 가장 확실하게 습득됩니다.
코드를 작성하게 한 뒤에 "이 코드에서 VPC와 서브넷 (Subnet)의 역할을 설명해줘"라고 다시 질문한다. 그러면 AI는 친절하게 해설해 줍니다. 생성 도구로서뿐만 아니라, 학습 보조 도구로서 사용하는 것이 효과적입니다.
보안 그룹 (Security Group) 규칙을 변경하여 통신이 끊기는 것을 확인한다. NAT 게이트웨이 (NAT Gateway)를 삭제하여 프라이빗 서브넷 (Private Subnet)에서의 통신이 어떻게 변하는지 살펴본다.
작동하고 있는 상태만 보고 있어서는 구조를 이해할 수 없습니다. 부수고, 고치는 경험이 이해를 만듭니다.
이 기사에서는 다음 내용을 해설했습니다.
- AI가 생성하는 Terraform 코드에는 에러 대응, 보안, 비용 측면의 함정이 있다
- AI는 "현장의 문맥"을 읽지 못하기 때문에, 요구사항 정리와 리뷰는 인간이 담당해야 한다
- AI를 사경 (写経, 직접 타이핑하기)·대화·파괴 실험의 학습 도구로 사용함으로써 이해를 깊게 할 수 있다
AI 코드가 순식간에 나오는 시대이기 때문에, 오히려 "왜 그 코드인가"를 설명할 수 있는 사람의 가치가 높아지고 있습니다.
우선 한 가지, AI가 내놓은 코드를 사경(写経)해 보세요. 그것만으로도 보이는 풍경이 달라집니다.
의문점이나 "나는 이렇게 사용하고 있다"라는 내용이 있다면, 꼭 댓글로 알려주세요!
핸즈온 랩 (Hands-on Lab)에서는 미경험자라도 "만들면서 배운다"를 모토로 하는 IT 핸즈온 이벤트를 정기적으로 개최하고 있습니다.
재미있으셨다면
"👇좋아요"로 응원해 주세요
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기