코드의 안개
Source: Dev.to
번역을 진행하려면 번역하고자 하는 전체 텍스트를 제공해 주시겠어요?
텍스트를 알려주시면 원본 형식과 마크다운을 그대로 유지하면서 한국어로 번역해 드리겠습니다.
Source: …
소개
단일 Terraform 변수에 대한 간단한 질문으로 시작합니다. 곧 수십 개의 브라우저 탭과 흩어져 있는 IDE 폴더를 뒤져가며 인프라의 실제 모습을 이해하려 애쓰게 됩니다. 당신은 멀티‑레포 구역에서 눈을 가리고 날아다니는 것이며, 겨우 생명의 끈을 찾은 듯했을 때 AI 코파일럿이 자신 있게 잘못된 정보를 제공하고 있음을 깨닫게 됩니다.
이 글은 “보이지 않는 인프라를 보이게 만들기” 시리즈의 파트 1입니다. 앞으로 네 편에 걸쳐 대규모 단일‑ 혹은 멀티‑레포 Terraform 코드 기반 인프라를 관리하는 복잡성, 현재 도구들의 한계, 그리고 정적 코드와 그 숨겨진 의미 사이의 격차를 메우기 위해 제가 만든 Infra‑Graph, 로컬‑우선 AI 기반 매핑 도구에 대해 살펴볼 것입니다. 여러 레포지토리에 걸쳐 Terraform을 관리하고 있다면, 이 시리즈가 당신을 위한 것입니다.
Source: …
멀티‑레포 구절
우리 모두 그런 경험을 해봤을 겁니다. IDE를 열어 간단히 바꿔야 할 작업—예를 들어 AWS 보안 그룹의 인그레스 규칙을 조정하는 것—을 하려는데, 현대 인프라에서는 아무 것도 고립되어 있지 않죠.
리소스 블록을 찾았지만 보안 그룹 ID가 변수로 전달되고 있었습니다. 그 변수를 따라가 terraform.tfvars 파일을 열어 보니, 실제 값이 전혀 다른 저장소에 정의된 원격‑상태 데이터 블록에서 가져와지는 것이었습니다. 이것이 바로 멀티‑레포 구절의 현실입니다. 경계를 강제하기 위한 설계 패턴이지만, 실제 운영은 미로와 같습니다.
10분도 안 되어 화면은 브라우저 탭, GitHub 검색 결과, 겹쳐진 VS Code 워크스페이스 등으로 가득 찬 압도적인 모자이크가 됩니다. 이 현상은 단순히 “컨텍스트 전환”이 아니라 탭 피로—단편화된 인프라 상태 전체를 단기 기억에 담으려는 정신적 피로입니다. 그 피로 아래에는 더 깊은 직업적 불안, 즉 버터플라이 효과에 대한 두려움이 숨어 있습니다.
terraform apply를 실행할 때마다 긴장을 합니다. 여기서 이 출력을 바꾸면, 다른 저장소에 있는 어떤 다운스트림 서비스가 깨질까? 버전 관리가 체크‑인 문화를 만들었지만, 인프라의 의미적 현실을 분산된 텍스트 파일의 벽 뒤에 숨겨버렸습니다. 여러분은 탄력적인 시스템을 설계해야 하는 아키텍트이지만, 매일 눈을 가리고 날아다니는 상황에 놓여 있습니다.
AI 코파일럿 함정
그래서, 현대 개발자라면 누구나 하는 일을 합니다: AI 코파일럿을 호출합니다. .tf 파일의 조각들을 프롬프트에 붙여넣거나, 혹은 저장소 전체를 볼 수 있는 고급 코파일럿에 “포트 80을 제거해도 안전한가요?”라고 묻습니다.
AI는 즉시 완벽한 문법과 절대적인 자신감으로 답변합니다. 접근 가능한 코드를 분석해 변경이 안전한 이유를 설명합니다. 잠시 동안 안도감을 느낍니다.
그때 Reality Check가 찾아옵니다.
AI가 별도의 AWS 계정 저장소에 정의된, 그 정확한 포트를 사용하는 문서화되지 않은 레거시 로드 밸런서에 대해 알지 못했으며, 알 수 없었다는 것을 깨닫게 됩니다. AI는 도움이 아니라 환상을 보여준 것이었습니다. 인프라에서 중요한 grounded truth가 없었기 때문에 아름답지만 위험한 거짓말을 하고 있었던 것이죠.
LLM은 강력한 추론 엔진이지만, 조각난 텍스트 파일을 입력받으면 단지 창의적인 추측을 할 뿐입니다.
“그들은 구문은 이해하지만 의미는 이해하지 못합니다.”
그들은 열린 포트가 암묵적으로 두 개의 서로 다른 리소스를 연결한다는 사실을 모릅니다.
의미 지도에 대한 필요성
그것이 전환점이었다. 나는 눈을 가리고 날아다니는 것을 멈추고 싶었으며—생산을 중단시킬 위험 없이 실제로 AI를 활용하고 싶다면—더 나은 프롬프트가 아니라 더 나은 지도가 필요하다는 것을 깨달았다. 나는 AI와 나 자신을 인프라의 실제 현실에 기반을 두게 할 방법이 필요했다.
요컨대, 나는 semantic map이 필요했다.
다음은 무엇인가
다음 글에서는 그 지도(맵)가 정확히 어떻게 생겼는지, 그리고 왜 모든 것을 바꾸는지 보여드리겠습니다.
파트 2에서 다음 내용: 내가 Terraform 인프라 영역을 어떻게 매핑했는지, 혹은 그렇게 생각했는지…
파트 1: 코드의 안개