terraform
저렴하게 실시간 분석 아키텍처 만들기 with aws, terraform
저렴하게 실시간 분석 아키텍처 만들기 with aws, terraform
2024.10.10서비스를 운영하며 수집되는 데이터는 방대하고 이러한 데이터들 속에서 어떻게 인사이트를 얻어서 서비스를 발전시킬 수 있을까?? 항상 진행하고 싶은 업무 중의 하나이다. 인사이트를 얻기 위해선 데이터를 분석할 수 있는 아키텍처가 필요하다. 이러한 아키텍처에서 요구되는 기능은 보통 아래와 같다. 1. 데이터 수집2. 데이터 처리 및 변환3. 변환 데이터 저장4. 데이터 분석 여기서 해당 기능들을 사용할 수 있는 다양한 서비스들을 사용할 수 있다. 하지만 나는 최대한 저렴하게 이용할 수 있는 아키텍처를 구성해보자.아키텍처 가격은 저렴하고, 확장성 있게 만들어보려고 한다. 그래서 나는 아래와 같이 선택했다. 1. 데이터 수집 -> Kinesis Data Firehose PUT API2. 데이터 처리 및 변환 ..
Terraform 모듈로 반복 리소스 선언 줄이기
Terraform 모듈로 반복 리소스 선언 줄이기
2024.10.09나는 Terraform(이하 테라폼)으로 cloud의 인프라 리소스를 관리하는 업무를 주로 맡고 있다. 테라폼은 모듈 구조를 지원하는데 활용법이 성숙도에 따라서 많이 달라진다고 느꼈다. 기존에 내가 모듈을 사용하는 방법은 여러 환경에서 환경 변수를 다르게 주입해서 리소스를 만들때 리소스 코드를 줄이기 위함이었다. 하지만 업무를 하다보니 틀은 동일하고 특정한 값만 바뀌는 리소스를 여러 개 생성하야 하는 경우가 많았다. 예를 들어서 서버리스로 서비스를 운영하는 경우 AWS 리소스인 Lambda를 주로 생성하게 된다. 그래서 나는 Lambda가 사용하는 리소스가 공통적으로 사용하는 틀을 모듈을 생성하는 방향을 생각했다. Terraform 구조 구조 자체는 간단하다. 1. 전체 리소스를 관리하는 main...
AWS S3 LifeCycle with Terraform
AWS S3 LifeCycle with Terraform
2024.09.28입사하고 빌링을 봤을 때 가장 많은 비용을 차지하는 게 S3 저장 비용이었다. 라이프 싸이클의 옵션을 알고 있었고, 비용 절감 가능성에 대해서 알고 있었다. 하지만 문제는 비즈니스의 이해였다. 객체들의 액세스 패턴을 알지 못했기에 섣불리 적용할 수 없었다. 비즈니스를 파악하고, 적용하며 얻었던 지식이다. S3 라이프 사이클 aws s3의 라이프 사이클 옵션은 aws s3 lifecycle docs에서 확인할 수 있고, 중요점만 살펴보자. 기본적으로 s3를 만들고 객체를 생성하면 Standard 객체 클래스로 생성된다. 범용성 있게 사용할 수 있는 옵션이지만 저장 가격은 높다고 볼 수 있다. (ap-northeast-2 seoul 기준 GB당 0.025USD) 그렇기에 객체 액세스 패턴을 살펴보고 가격..
Monitoring(Prometheus + Grafana) 정복하기 - 2 (EKS 수집)
Monitoring(Prometheus + Grafana) 정복하기 - 2 (EKS 수집)
2024.03.23이제 EKS를 Terraform으로 간편하게 만들고, Prometheus와 Grafana를 적용해 보자. EKS 생성 (With Terraform) Github에서 볼 수 있고 사용 방법은 README를 보기 바란다. 시간이 약 10분 정도 걸리고, 완성된 것을 볼 수 있다. EKS 세팅 (kubectl 설치 가정) 이제 로컬에서 kubectl을 사용할 수 있도록 kubeconfig를 업데이트해줘야 한다. aws eks update-kubeconfig --region region-code --name my-cluster # 서울의 경우 ap-northeast-2 사용하면 ~/. kube로 이동하면 config파일이 업데이트된 것을 볼 수 있다. 이제 EKS를 cli로 다룰 수 있게 도와주는 eksctl을..
AWS API Monitoring with terraform
AWS API Monitoring with terraform
2023.09.10소개 AWS를 사용하다 보면, 중요한 API의 경우 모니터링과 더불어 Notification이 필요할 때가 있다. 그중에 하나 예를 든다면, AccessKey 발급이다. AccessKey이 유출당했을 경우 해당 사용자 혹은 계정의 모든 API를 호출할 수 있기에 매우 위험하다. 또한 사용자가 계정을 해킹당했을 때 AccessKey를 새롭게 발급받아 사용할 수 있는 위험이 있다. 이러한 것을 알아차리기 위해서, Credential 한 것들은 Notification을 할 필요가 있다. 이번에 예시는 AccessKey를 생성했을 때 알림을 받는 것을 만들어보는 것이다. 구현 사용할 서비스들은 CloudTrail, CloudWatch Log Group, S3, EventBridge, SNS이다. 1. Cloud..
AWS Event Scheduler 구현 (EventBridge + SNS + SQS) with terraform
AWS Event Scheduler 구현 (EventBridge + SNS + SQS) with terraform
2023.08.07스케줄러 비용을 줄여보자 지금까지 경험한 서비스들은 스케줄러가 필요했다. 예를 들어서 00시에 값들을 변경, 카카오 메시지를 발송, 배치성 쿼리 등등이 존재했다. SpringBoot의 @Scheduled 어노테이션으로 구현하고 있다. 스케줄러가 동작하는 인스턴스는 Scale-Out이 되면 문제가 발생할 수 있다. 따라서 스케줄러 인스턴스는 다른 애플리케이션과 분리돼야 했다. 배치성 쿼리나, 어느 정도의 비즈니스 로직이 들어갈 수 있으므로 인스턴스의 사양을 아예 낮은 거는 사용할 수 없다. 따라서 t3.small로 결정했다. 1년 RI로 했을 때 가격은 아래와 같다. 한 달의 가격은 11.46USD 큰 비용은 아니다. 그럼에도 비용을 줄이고 싶다. 해당 이벤트를 어떻게 처리하는 것에 대한 구현은 없다. 이..