전체 글 1345

[LocalStack] AWS - 사용 설정

개요2025.10.27-[LocalStack] 소개 및 설치에서 AWS 환경을 에뮬레이션 하는 Localstack이라는 서비스를 설치해 봤는데, 사용 방법은 무척 간단하게 정리했다.이번 글에서는 LocalStack 환경에 AWS 인프라 작업을 테스트할 때 보다 편리하게 수행하는 방법을 적어둔다. AWS CLI - Profile 구성LocalStack 환경에 AWS 테스트를 할 때는 AWS CLI를 사용할 수 있다.이전 글에서 AWS CLI 요청을 LocalStack으로 보낼 수 있도록 AWS CLI 옵션으로 --endpoint-url 지정이 필요하다고 정리했다. 하지만 모든 명령어에 --endpoint-url을 설정하는 건 번거로울 수 있다. 이럴 때는 사용자 Profile을 구성하여 번거로움을 줄일..

기타 10:08:14

[LocalStack] 소개 및 설치

개요업무에서 Terraform을 다루게 되어 학습이 필요한데, 아무래도 Terraform은 기본적으로 실제 인프라를 다루다 보니 비용이 발생하는 지점에서 테스트를 하기가 저어 되는 부분이 있다. 그래서 적절한 방법이 없을까 고민하던 중 로컬 환경에서 클라우드 서비스를 에뮬레이션 할 수 있는 LocalStack이라는 서비스를 알게 되었다.설치 방법 정도만 후다닥 적어둔다. 참고로 WSL Ubuntu에 설치할 것이다. LocalStackLocalStack은 노트북 등의 환경에서 단일 컨테이너로 실행되는 클라우드 서비스 에뮬레이터이다. 클라우드 제공업체에 연결하지 않고도 AWS 애플리케이션이나 Lambda 함수를 로컬 환경에서 실행할 수 있다.때문에 Terraform을 테스트하거나 AWS 서비스를 처음 학습..

기타 2025.10.30

[Python] textwrap.dedent - 문자열에서 같은 공백 제거

개요개발을 하다보면 어느 부분에서 로그를 출력할지 고민하게 되는데, 간혹 실제로 실행되는 SQL 실행문을 로깅하고 싶을 때가 있다. 다만 아무래도 SQL은 개행이 포함되어 있어야 가독성이 좋다보니 로깅을 하면 들여쓰기가 영 안 맞게 되는 문제가 있다. 때문에 이번 글에서는 각 행의 왼편에 같은 길이로 공백이 포함된 문자열의 공백을 제거하는 방법을 적어둔다. textwraptextwrap은 문자열을 다루는데 편리한 함수를 제공한다. 텍스트를 래핑하거나 채우는 경우인데, 만약 이보다 복잡한 작업이 필요한 경우에는 TextWrapper를 사용하는 것이 적절한다.textwrap은 텍스트를 채우거나 축약하거나, 공백을 제거하는 등의 작업을 위한 함수를 제공하고 있다. textwrap.dedenttextwrap..

Python 2025.10.29

[PostgreSQL] array 데이터 타입 다루기

개요프로그래밍을 하다 보면 당연히 배열 데이터를 많이 다루게 되는데, 간혹 배열 형식 데이터 자체를 데이터베이스에 저장할 필요가 있기도 하다. MySQL을 사용할 때는 문자열 형식으로 저장한 뒤 애플리케이션 영역에서 처리하는 방식으로 사용했는데, PostgreSQL의 경우에는 배열 형식의 데이터 타입이 존재하고 있었다.이번 글에서는 PostgreSQL에서 배열 형식의 데이터를 다뤄보도록 한다. 선언배열 타입은 데이터 타입 옆에 대괄호를 붙이거나 ARRAY 키워드를 사용해 선언한다.CREATE TABLE sal_emp ( name text, pay_by_quarter integer ARRAY, schedule text[][]);예시 쿼리의 경우에는 1차..

Database 2025.10.28

[PostgreSQL] :: - 형변환

개요일반적으로 데이터베이스에서 데이터 형을 변환할 때 CAST(value AS type)을 사용하는데, 최근 쿼리를 보니 PostgreSQL에서 제공하는 형변환 방법이 별도로 있는 것 같다.적어둔다. ::PostgreSQL은 :: 연산자를 사용해 간결하게 데이터 형변환을 수행할 수 있다.SELECT value::type# 예시SELECT CAST('2025-10-11 09:00:00' AS date) , '2025-10-11 09:00:00'::date;보면 CAST 결과와 :: 연산자의 결과가 동일한 모습을 확인할 수 있다. 참고 문서https://brownbears.tistory.com/309

Database 2025.10.27

[Grafana] 데이터 링크에 상대 경로 지정하기

개요테스트 서버에서 Grafana를 구성한 뒤 운영 서버로 옮겼더니, 드릴다운을 구현한 데이터링크가 의도한 대로 동작하지 않았다. 데이터 링크에 Grafana Host URL을 localhost:port로 지정한 게 원인이었다. 확인해 보니 Grafana URL에 해당하는 매크로는 없는 걸로 보여 상대 경로를 사용하는 게 적절한 해결책일 것 같다.구성해 보자. 상대 경로 지정2025.10.17-[Grafana] 패널에 다른 대시보드 링크 걸기에서 데이터 링크로 Grafana 내 대시보드로 이동할 때, 아래와 같은 형식으로 링크를 걸면 된다고 정리했었다.http://host:port/d/xxx/dashboard_name?orgId=1&from=now-6h&to=now만약 이동하는 대시보드가 같은 Gra..

Grafana 2025.10.24

[Grafana] Transformation - 시계열 데이터의 범례 형식 정리(?)

개요Grafana에서 대시보드를 구성하는 업무를 계속 이어나가고 있는데, Grafana는 대시보드를 로딩할 때 패널 각각 데이터 소스에 접근하여 데이터를 시각화한다. 때문에 데이터 소스 연결 과다를 방지하기 위해 하나의 패널 데이터를 여러 패널에서 참조하여 사용하는 방식으로 구성 중이다.그런데 Grafana에서 여러 시리즈를 가진 시계열 데이터는 아래와 같이 column_name metric 형식으로 시리즈가 생성된다.가시성이 좋아 보이지 않아 상등품과 관련된 데이터만 시각화하고, 범례 이름도 과일 이름만 표시되게 처리하고자 한다. 시계열 데이터 준비먼저 사용할 데이터는 아래와 같다.WITH raw AS (SELECT date '2025-08-01' + (n || 'day')::interval AS ..

Grafana 2025.10.23

[Grafana] 패널에 다른 대시보드 링크 걸기

개요대시보드를 구성하다 보면 요약된 데이터를 보다 상세한 형태로 분석할 필요가 생기기 마련이다. 이것을 드릴 다운이라고 하는데, 요약 데이터로부터 특정 기준에 따라 세부 항목으로 분석 범위를 좁혀 나가는 방식을 말한다. 분석 데이터를 세분화하여 계층적 분석을 가능하게 하고, 조건에 따른 데이터 탐색에 유용하다.이번 글에서는 Grafana 상에서 드릴 다운을 구현할 수 있도록 패널에 다른 대시보드 링크를 연결하는 방을 적어두려고 한다. 데이터 링크데이터 링크란 다른 패널, 대시보드, 외부 리소스에 연결하거나 API 호출을 트리거하는 방법을 제공한다. 데이터 링크를 사용하면 소스 패널의 컨텍스트를 쿼리 매개 변수 형태로 Grafana의 대상 대시보드, 패널로 전달할 수 있기 때문에 드릴 다운을 구현하는 방..

Grafana 2025.10.22

[Grafana] 정규표현식으로 컬럼 필터링하기

개요Grafana를 통해 데이터를 가공하다보면 컬럼에도 변경이 발생하기 마련인데, Grafana에 의해 생성된 컬럼은 일정한 명명 규칙에 따라 명명된다. 특히 여러 지표가 존재하는 시계열 데이터를 Time Series로 로드하면 'column_name metric' 형식으로 시리즈가 많이 생성되는데, 이 때 원하는 시리즈만 필터링하고 싶다면 아무래도 정규 표현식을 활용하는 방법이 간편할 것이다. 이 글에서는 컬럼 필터링 시 정규 표현식을 사용하는 방법을 적어둔다. Filter Field by nameGrafana가 제공하는 Tranformations는 이름으로 필드를 필터링하는 Filter Field by name 기능을 제공한다.Filter Field by name은 기본적으로 사용할 필드를 선택하는..

Grafana 2025.10.21

[Grafana] 테이블 데이터를 타임시리즈 패널로 그리기

개요날짜 형식이 포함된 데이터는 타임시리즈 등의 패널로 시각화하는 것이 가능해 보이는데, 실제로 시도해 보니 생각보다 수월하게 시각화되지 않았다. 이번 글에서는 관계형 데이터베이스에서 조회한 테이블 형식의 데이터를 타임시리즈 패널로 그리는 방법을 적어둔다. 예시 데이터테이블 데이터에도 다양한 형태가 있겠지만, 이번 글에서는 아래와 같은 과일 구매 현황 데이터를 사용한다고 하자. 각 열은 구매 시간(time), 구매한 과일(fruit) 그리고 구매한 수(count)를 나타낸다.데이터 쿼리는 접은글로 처리한다.더보기WITH raw AS (SELECT date '2025-08-01' + (n || 'day')::interval AS "time" , array ['사과', '딸기..

Grafana 2025.10.20