#Terraform(테라폼)
#DevOps(데브옵스)
#infra(인프라)
‘Terraform(테라폼)’은 클라우드 환경, MSA 환경, 대규모 infra(인프라) 환경 중 하나라도 해당된다면, 필수로 도입되어야 한다고 하는데요. 그 이유는 억대 단위 사용자를 커버할 수 있고, infra(인프라) 구축도 단 8시간 만에 가능하기 때문입니다. 이렇게 DevOps(데브옵스) 엔지니어 라면 꼭 알아야하는 ‘Terraform(테라폼)’ 자세히 알아볼까요?
1.Terraform이란?
‘Terraform(테라폼)’은 HashiCorp에서 만든 것으로, DevOps(데브옵스) 엔지니어가 선언적 구성 언어를 사용하여 데이터 센터 인프라를 정의하고 프로비저닝할 수 있는 Infrastructure as Code(IaC) 도구입니다. Terraform이 다른 IaC 도구와 차별화되는 주요 이유 중 하나는 AWS, Azure, Google Cloud 등 다양한 클라우드 공급자를 관리할 수 있는 기능 때문인데요. 이러한 유연성 덕분에 DevOps(데브옵스) 엔지니어들은 여러 클라우드 환경에서 인프라의 일관성을 유지하여 원활한 마이그레이션과 확장성을 실현할 수 있습니다.
2. Terraform은 Cloudformation과 어떻게 다를까요?
Terraform과 AWS CloudFormation은 모두 코드 도구로서의 인프라이지만 몇 가지 주요 차이점이 있습니다. CloudFormation은 AWS에 특화된 반면 Terraform은 클라우드에 독립적이므로 AWS, Azure, Google Cloud 등 여러 클라우드 플랫폼에서 리소스를 관리하는 데 사용합니다. 그래서 Terraform은 멀티 클라우드 환경을 갖춘 조직에 더 적합하고 사용하기 좋습니다. Terraform을 사용하면 단일 도구와 구성을 사용하여 여러 클라우드 공급자의 리소스를 관리할 수 있는데요. 이러한 유연성은 특히 다중 클라우드 전략을 가지고 있거나 여러 클라우드 플랫폼을 사용하는 DevOps(데브옵스) 조직 및 기업에 매우 적합합니다.
3. DevOps(데브옵스)에 Terraform도입하면 좋은 점을 좀 더 자세히 알아볼까요?
1) 인프라 구축 소요 시간 감소
Terraform(테라폼) 도입 전에는 개발, 테스트, 운영 서버 구축을 위해서 7일 정도 소요가 되는데요. Terraform(테라폼)을 도입하게 되면 IaC의 장점인 형상 관리의 인프라를 템플릿화하여 단 8시간 만에 전 환경에 인프라 구축 완료할 수 있습니다.
2) 장애 상황 대비
Terraform(테라폼) 도입 전에는 장애가 발생한 인프라를 직접 찾아 수동으로 대응해야 하고, 정상화까지 시간 예측도 어렵습니다. 그러나 Terraform(테라폼)을 도입하게 되면 장애 발생 원인만 찾으면 정상화한 인프라에 신규 배포 진행하여 분 단위로의 다운 타임 절감이 가능합니다.
3) 형상 관리 의 효율성
Terraform(테라폼) 도입 전에는 콘솔로 클릭하여 사용할 경우, 형상 관리가 매우 어렵습니다. 반면 Terraform(테라폼)을 도입하게 되면, 코드 단위로 작성되어 있어 버전별 관리 및 코드 리뷰까지도 가능해 효율적인 협업이 가능합니다.
4. ‘Terraform(테라폼)’ , 네카라쿠배급 대규모 인프라에서는 어떻게 사용할까요?
네카라쿠배급 대규모 인프라를 처리하고 싶은 DevOps(데브옵스) 엔지니어라면 AWS 인프라 구성부터 배포, 운영까지 DevOps의 풀 사이클을 경험해야합니다. 단순한 인프라 프로비저닝만 하는 것이 아닌 빌드, 배포 관점까지 종합적으로 구성한 DevOps(데브옵스) 엔지니어 풀 프로세스를 커버하는 경험이 필요한데요. 이런 풀프로세스에 대해 좀 더 자세히 알려드리겠습니다.
STEP 1. Terraform으로 AWS 인프라 구성하기(네트워크)
Opensource인 Atlantis와 Github의 Terraform Repository를 연동 해보고 PR이 올라가면 자동으로 인프라 변경점을 보여주도록 구성해야 합니다. 테라폼 코드 협업을 위한 형상 관리 툴인 Atlantis 사용 방법과 CICD 파이프라인 자동화를 손쉽게 구축할 수 있습니다.
STEP 2. Terraform으로 AWS 인프라 구성하기(권한과 민감정보)
민감정보를 KMS, IAM, SOPS를 사용해서 암호화할 수 있도록 구성하고 Atlantis와 Terraform이 이를 복호화해서 리소스를 생성해 보아야합니다. 그리고 Github에서는 민감정보가 암호화돼서 식별되지 않도록 관리하는 것이 중요합니다.
STEP 3. Terraform으로 Github 관리하기
Terraform으로 Github 관리하면 Github Action에서 사용하는 민감정보를 Terraform 소스 코드의 SOPS를 통해 관리가 가능하며, 유저에게 권한을 부여하지 않고 IaC로 관리할 수 있도록 구성할 수 있습니다.
STEP 4. Terraform으로 배포 환경 구성하기
Terraform으로 배포 환경 구성하면 Jenkins를 구성하고 Codebuild와 연동하고, Codebuild를 통해 Application을 ECS, EC2, EKS에 배포할 수 있도록 파이프라인 구성할 수 있습니다.
4. 이렇게 DevOps(데브옵스)에 이점이 많은 ‘Terraform(테라폼)’ 제대로 배우고 싶다면?
앞선 모든 과정을 포함해서, 외부 모니터링 SaaS 활용법까지 알차게 담은 강의를 이번 패스트캠퍼스에서 런칭을 했습니다! 일반적인 강의에서는 절대 찾아볼 수 없는, 대규모 인프라 구축을 위한 Terraform 활용 방법을 DevOps(데브옵스) 풀 프로세스에 바로 적용할 수 있도록 알려주는데요. 억대 단위의 사용자부터 백만 단위의 트래픽까지 커버해본, 국내 탑티어 DevOps(데브옵스) 개발 리드가 국내 유일 실무 수준의 깊은 활용을 담은 Terraform 활용법을 알려드리니 놓치지 마세요!