[패스트캠퍼스 챌린지 8일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기 본문
[패스트캠퍼스 챌린지 8일차] '76가지 DevOps 모의 실무 예제: AWS 기반 인프라 구축부터 재해복구, 보안까지' 강의 후기
ITst 2025. 4. 8. 16:16본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
※ 챌린지 URL: https://abit.ly/lisbva
오늘의 Terraform 강의에서는 Provisioner와 Workspace 개념을 중심으로 인프라 설정 시 발생할 수 있는 세부적인 요구사항을 보다 유연하게 처리하는 방법을 학습했다. Provisioner는 Terraform이 리소스를 생성하거나 제거하는 시점에, 지정된 스크립트를 로컬 또는 원격에서 실행할 수 있도록 지원하는 기능으로, 자동화된 환경 구성에 유용하게 사용된다.
Provisioner는 크게 local-exec과 remote-exec으로 구분되며, 각각 로컬 시스템과 원격 대상 서버에서 명령을 실행하는 방식이다. 특히 remote-exec을 사용하는 경우에는 SSH나 WinRM을 통한 연결 설정이 필수적이다. 실습에서는 프로비저닝 시점에 특정 파일을 복사하거나, 서버 내에서 명령어를 실행하여 필요한 환경을 자동으로 설정하는 과정을 실습했다. 다만, Provisioner는 선언형(Infrastructure as Code) 원칙에 위배될 수 있으므로, 꼭 필요한 경우에 한해 제한적으로 사용하는 것이 바람직하다는 점도 함께 고려해야 할 부분이었다.
또한 오늘은 Terraform의 workspace 기능도 함께 다루었다. Workspace는 동일한 코드 기반에서 개발, 테스트, 운영 등 다양한 환경을 구분하여 관리할 수 있도록 해주는 기능으로, 각 환경별로 독립된 상태 파일이 생성되어 충돌 없이 안정적으로 작업을 수행할 수 있게 해준다. 실습에서는 기존에 조건문을 통해 개발/운영 환경을 분리했던 구조를 Workspace 기반으로 재구성하여, 더욱 체계적으로 환경을 관리하는 방법을 익혔다.
Workspace를 활용하면 동일한 인프라 코드를 재활용하면서도 환경 간의 설정을 유연하게 분리할 수 있다는 점에서 매우 유용하다. 예를 들어, terraform.workspace 값을 조건문에 활용하여 환경별로 EC2 인스턴스 개수를 다르게 설정하거나 태그 값을 동적으로 지정할 수 있었다. 이는 관리 효율성과 코드 재사용성을 동시에 향상시키는 실용적인 접근이라고 느꼈다.
이번 실습을 통해 Terraform이 단순히 리소스를 선언하고 배포하는 도구를 넘어, 환경 구성의 자동화와 코드 기반의 환경 분리를 지원하기도 한다는 것을 배웠다. 향후에는 Provisioner 사용 시의 보안 이슈와 실행 조건 설정 방법, 그리고 Workspace를 활용한 CI/CD 파이프라인 통합 사례 등에 대해서도 더 깊이 학습해보면 좋겠다고 생각했다.
