대시보드는 다양한 Question들을 한데 모아서 시각화한 중앙 관제판 개념으로, 대시보드 내의 Question들에 일괄적으로 적용할 수 있는 Filter가 존재한다. 이번에는 Question과 대시보드에서 사용되는 변수와 필터를 알아보도록 한다. FilterQuestion에 적용할 수 있는 '어떤 값을 나타낼 지'를 결정하는 변수Metabase에서는 대시보드 widget 형태로 filter를 지원한다. 대시보드 편집 모드로 전환하면 아래같이 다양한 타입의 filter를 생성할 수 있다. 이렇게 Filter를 만든 뒤, 대시보드의 각 Question에 대해 적용하도록 바인딩을 해주어야 한다. 바인딩이 되면, 대시보드상의 filter를 지정함과 동시에 바인딩된 모든 쿼리에 필터가 적용되는 것이다. 대시..
전체보기
우리 회사의 다양한 서비스는 여러 AWS 계정과 다양한 리전에 걸쳐 운영하고 있다.각 리전·계정별로 산재한 리소스 현황과 CloudWatch Alarm 내역을 파악하려면 매번 콘솔을 오가야 했는데, 이 과정이 번거롭고 실시간 모니터링도 쉽지 않았다.이에 대해서 cloudwatch alarm이 발생하면 DevOps 팀이 사용하는 DB의 내부로 발생 내역 데이터를 저장하고, 주기적으로 구글 시트로 데이터를 추가해서 시트에서 차트를 그려내서 모니터링하도록 구성을 했었다.하지만 여전히 여러 이슈에 부딪쳤고, 개선안을 탐색하게 되었다.DB 데이터의 수동 추출 : DB의 데이터를 수동으로 csv로 뽑아, 직접 시트에 데이터를 추가해주어야 하는 번거로운 작업느린 시각화 랜더링 : 데이터 양이 증가함에 따라 필터를 통..

앞서 Terraform cloud를 소개하며 Workspace에서 AWS 인프라를 Apply하는 것을 알아보았다. 이 과정에서 AWS Credential을 Workspace에 변수로 두어서 적용했는데, 이렇게 장기 Credential을 발급하고 입력해두는 것은 여러 단점들을 가지고 있긴하다.Credential의 노출 : Credential 자체를 직접적으로 삽입해주기에 노출이 발생할 수 있다.주기적인 교체작업 : 장기 Credential을 보다 안전하게 사용하기 위해서는 주기적인 Credential 교체작업이 필요하다.이를 해결하기 위해 Terraform Cloud에서는 Dynamic Provider Credential 기능을 제공한다.Terraform을 통해 구성할 수 있는 다양한 CSP들에 대한 Pr..

앞서 우리는 로컬에서 Terraform 코드를 작성하고, CLI를 통해 적용(Apply)하면서 Terraform을 사용하고 있었다.인프라를 코드로 관리하는 IaC에 목적에 맞게 사용되긴하지만, 팀 간의 협업 속에서 상태(state)관리와 자동화 파이프라인 등에 있어서 분명 아쉬운 부분이 존재했다. 서비스 개발운영에서는 Jenkins나 Github Actions, ArgoCD와 같은 툴들을 통해 통합 빌드/배포 과정을 구현해왔지만, 인프라 개발운영 부문에서는 최적화된 플랫폼은 CSP 별로 존재하는 IaC 서비스외에는 마땅히 존재하는 것이 없었다. 이에 등장한 Terraform Cloud를 알아보도록 한다. Terraform CloudHashicorp에서 운영하는 Managed 서비스 플랫폼으로, 개인을 넘..

AWS CognitoCognito는 사용자 인증을 위한 서비스로 'User Pool'에 등록된 사용자를 인증하고, OAuth나 OpenID Connect 표준에 따라 Access/ID/Refresh Token을 발급해준다.이 Token을 통해 Application이나 서비스 API에 접근할 수 있도록 인증/인가할 수 있고, 'Identity Pool'과 연동해서 AWS 리소스 접근 권한도 관리할 수 있다. 이번에는 Lambda와 Integration된 API Gateway와 Cognito를 통해 JWT 토큰을 발급받아 API gateway의 API들에 접근하도록하는 아키텍처를 구성해보도록 한다. 사용자가 Cognito로 부터 인증 Token을 발급 받고,API Gateway에 연결된 각 리소스와 메소드..

기존 프로젝트에서 사용했던 Elastic Transcoder는 Rekognition API(FaceSearch)를 통해 비디오에서 특정얼굴이 탐색된 구간(timestamp)들을 하나로 묶어주는 'Clip Stitching'을 수행하기 위해 포함되던 서비스였다. 최근 확인한 바로 Elastic Transcoder가 2025년 11월로 서비스 종료한다는 이슈가 있었다.그에 따라 이 서비스를 대체할 것을 찾아야했고, 공식에서 대체 서비스로 추천해주는 MediaConvert를 찾게되었다. MediaConvert는 기존의 Elastic Transcoder가 지원했던 영상관련 트랜스코딩 등의 기능을 그대로 가지고 있고, 자막이나 워터마크같이 더 확장된 기능들을 지원하고있다.기존 Elastic Transcoder에..

App-of-AppsApp들을 관리하기 위한 App이라는 의미로, argoCD와 같은 GitOps에서 '상위' App이 다수의 '하위' App들을 묶어서 관리하는 구조App들 간의 계층을 둔 구조로 보면 된다. 이때, 상위 App을 "Root App"이라 하며, 하위 Application을 포함한 구조를 가진다. 간단하게 보면 계층화된 회사의 구조로 볼 수도 있다. CEO와 각 부서별로 부서장의 관계에서, CEO는 전사 전략을 세우고, 각 부서장들에 세부적인 수행내용을 지시하고, 부서장들은 각자 프론트엔드/백엔드/DB등의 세부적인 본인 부서들을 운영하는 것이다. 아래와 같은 서비스들을 배치하는 쿠버네티스 클러스터를 예로 들어보자..└── deploy └── kubernetes ├──..

앞서 쿠버네티스 클러스터에서 Prometheus를 구축할 수 있는 Prometheus Operator에 대해서 개략적으로만 알아보았다.Prometheus Operator의 CRD들을 통해 간편하게 Prometheus 스택을 설치하고, 서비스 중단없이 스크래핑 대상을 추가할 수 있는 등의 장점을 봤는데, 이번에는 직접 Prometheus에 스크래핑 Job을 동적으로 추가할 수 있도록 알아본다. Exporter하드웨어나 프로세스로부터의 Metric을 수집해서 Prometheus가 스크래핑해갈 수 있도록 서빙하는 객체Application이나 시스템이 자체적으로 노출하지 않는 내부의 지표들을 Prometheus가 이해할 수 있는 포맷으로 변환해준다.즉, 현지어(각 Application 별 Metric)를 영어(..