탄력적 IP와 DNS 연동해서 EC2 만들기 1. 테라폼으로 ECS 생성 중 이슈 발생 우리 프로젝트는 AWS의 ECS를 활용하여 스프링 부트 애플리케이션을 운영하고 있다. 그리고 스프링 부트 애플리케이션에서 Zipkin의 추적 기능을 사용하기 위해서는, Zipkin 서버의 정확한 주소(엔드 포인트)가 필요했다. 그러나 테라폼으로 ECS 클러스터와 EC2 인스턴스를 재생성할 때마다 Zipkin 서버의 IP 주소가 변경되는 문제가 발생했다. 처음 고려했던 해결책 중 하나는 Application Load Balancer(ALB)를 사용하는 것이었다. 이 방식은 Zipkin 서버를 위한 별도의 ALB를 생성하고, 이 ALB의 퍼블릭 IP를 스프링 부트 애플리케이션에 설정하는 것이었다. 하지만, ALB는 주로 ..
테라폼(Terraform)
Dynamic 블록으로 AWS 서비스와 태스크 정의하기 1. ECS에서 태스크 정의와 서비스 간략 정리 ECS에서 태스크 정의와 서비스는 컨테이너 기반 애플리케이션을 배포하고 관리하는 핵심 요소다. 태스크 정의는 컨테이너의 실행 구성을 정의하며, 서비스는 여러 인스턴스에서 컨테이너를 실행하고 관리한다. 이 두 요소를 함께 사용하여 애플리케이션을 확장하고 가용성을 보장할 수 있다. 태스크 정의와 서비스는 서로 연동하여 컨테이너화된 애플리케이션을 실행하고 관리한다. 태스크 정의에서는 컨테이너 이미지, 포트 매핑, 리소스 요구 사항 등 컨테이너 실행에 필요한 정보를 정의한다. 서비스는 이러한 태스크 정의를 기반으로 컨테이너를 여러 인스턴스에 배포하고 관리한다 💡 태스크 정의에서 말하는 컨테이너 이미지란? 컨테..
테라폼을 이용해서 ECS Cluster를 생성할 때 필수적인 용량 공급자(capacity provider)를 알아보자 1. 용량 공급자란? ECS Cluster에서 용량 공급자의 역할 기존에 AWS Console을 사용해서 ECS Cluster를 생성하던 경우에는 용량 공급자가 무엇인지 모를 수 있다. 용량 공급자는 AWS ECS 클러스터에서 컨테이너 태스크가 실행될 때 사용할 컴퓨팅 리소스(예: EC2 인스턴스, Auto Scaling 그룹)를 어떻게 관리할지 결정하는 역할을 한다. 간단히 말해, 용량 공급자는 태스크가 실행되는 '환경'을 설정하고 관리하는 규칙이라고 생각할 수 있다. AWS Management Console을 통해 ECS 클러스터를 생성할 때, 대부분의 설정은 AWS가 자동으로 처리한..
Terraform에서 Launch Template, 오토 스케일링 설정하기 이번 글에서는 테라폼에서 EC2를 생성할 때 ALB를 연동하려면 필수적으로 launch template과 auto scaling이 필요하다. 각 모듈에 대해서 살펴보자. 1. ECS를 EC2 기반으로 구축할 때 ALB 연동하는 경우와 연동하지 않는 경우의 차이 AWS ECS(Elastic Container Service)를 EC2 기반으로 구축할 때, ALB(Application Load Balancer)를 연동하는 경우와 그렇지 않은 경우의 차이를 고려해야 한다. 테라폼을 사용하여 이를 구성하는 과정을 살펴보겠다. 1-1. EC2 기반 ECS 서버 구성 ALB 미연동 EC2 이 경우에는 간단한 EC2 인스턴스를 만들어주는 걸로 ..
Terraform AWS Provider 및 VPC, Subnet 설정 이전 글에서 테라폼 설치와 테라폼 명령어에 대해서 알아봤다. 이번 글에서는 AWS Provider 설정과 네트워크 설정(vpc, subnet)을 모듈화로 적용하는 방법에 대해서 알아보자 Terraform을 사용하여 AWS 리소스를 효과적으로 관리하는 방법에 대해 설명해 보겠다. 특히 AWS Provider 설정, 네트워크 설정, 그리고 모듈 외부에서 실제로 모듈을 사용하는 방법에 초점을 맞춰서 진행했다. 1. provider 설정과 네트워크 설정이 필수적인 이유 테라폼의 provider 설정 테라폼에서 provider 설정은 마치 원격 조종기와 같다고 할 수 있다. 이 설정을 통해 테라폼은 AWS와 같은 클라우드 서비스와 '대화'를 ..
MacOS에서 테라폼 설치 및 terraform 명령어 사용법 Mac M1 환경에서 테라폼을 설치하고 테라폼 파일의 코드를 파헤쳐보자 1. 설치 터미널 공식 홈페이지인 아래 링크에서 본인의 로컬 환경에 맞는 파일을 다운로드 받자. https://developer.hashicorp.com/terraform/install Install | Terraform | HashiCorp Developer Explore Terraform product documentation, tutorials, and examples. developer.hashicorp.com 나는 Mac M1을 사용하고 있기 때문에 아래 명령어로 테라폼을 설치했다. 아래 명령어를 터미널에 입력하면 설치 완료다. brew tap hashicorp/..
테라폼(Terraform)이란? 테라폼 도입 이유: 우리 프로젝트는 클라우드 네이티브 환경에서 마이크로서비스 아키텍처(MSA)를 채택하고 있다. 이 과정에서 AWS ECS와 각각의 RDS 인스턴스에 대한 비용이 예상보다 높게 나타나고 있었다. 이러한 비용 문제를 해결하고자 테라폼을 도입하기로 결정했다. 테라폼을 사용하여 AWS ECS 인스턴스의 가동 시간을 조정함으로써 비용을 절감할 수 있다. 일하는 시간 동안에는 ECS를 활성화시켜 서비스를 운영하고, 퇴근 후나 잠을 자는 비활동 시간에는 중지시켜 불필요한 비용을 줄일 계획이다. 수동으로 ECS 클러스터, 서비스, RDS 등등을 삭제 및 시작하는 시간이 너무 불 필요한 시간이고 이를 수동으로 관리하다 보면 예상치 못한 오류를 발생시킬 수도 있을 것 같아..