PostgreSQL22 CloudWatch를 이용한 RDS (PostgreSQL) 스케줄링 시작/종료 운영되는 환경 (live, production, real 등) 외에, 테스트 용도로 사용되는 환경(dev, qa)은 꼭 24시간 무중단으로 서비스를 할 필요가 없습니다. 그래서 실제 업무시간을 제외하고는 해당 서비스를 종료하여 비용을 절감할 필요가 있습니다. (굳이 사용하지 않는 시간대에 비용을 낭비할 필요는 없겠죠?) 그래서 이번 시간의 목표는 다음과 같습니다. CloudWatch Event를 이용하여 매주 월~금 오전 09:00 에 RDS가 재시작 되도록 스케줄링 한다 매주 월~금 오후 08:00 에 RDS가 정지 되도록 스케줄링 한다. 금요일 오후 8시에 종료되고 월요일 오전 9시에 시작이기 때문에 주말 동안은 계속 종료 상태를 유지합니다. 전체 구조는 다음과 같습니다. 자 그럼 바로 시작해보겠습니.. 2021. 5. 11. PostgreSQL RDS Slow 쿼리 Slack으로 알람 보내기 서비스를 운영하다보면 여러가지 이유로 서버 장애가 발생합니다. 그 중 가장 빈도수가 높은 원인은 DB의 슬로우쿼리일텐데요. 어떤 쿼리가 언제, 얼마나 긴시간동안 수행되었는지에 대해 알람을 받거나 모니터링이 되어야 서비스에 이슈가 될만한 쿼리들을 지속적으로 탐지하고 개선이 가능하기 때문입니다. 이번 시간에는 AWS RDS PostgreSQL에서 슬로우 쿼리에 대한 로그를 남기고 이에 대해 슬랙 알람을 보내도록 설정하는 방법을 진행하겠습니다. 이번 시간에는 PostgreSQL로 진행하지만 MySQL도 DB 파라미터 설정등에 차이가 있지만, 전체 Flow는 거의 흡사하니 참고해서 진행 가능하실것 같습니다. 전체적인 구조는 다음과 같습니다. 한번 이렇게 구성하고 나면 이후에 CloudWatch에 적재된 슬로우 .. 2021. 5. 8. TypeORM에서 Camelcase 필드를 Snake 컬럼에 매핑하기 일반적으로 PostgreSQL을 비롯한 Database의 컬럼 명명 (Naming) 규칙은 snake, 애플리케이션 코드의 필드 명명 규칙은 Camelcase 입니다. Entity Table 둘 간에 명명 규칙이 달라 일반적인 ORM 들 (JPA등) 에서는 이들간의 불일치 해소를 위한 명명 전략 (Naming Strategy)를 지원하는데요. TypeORM에서는 이 기능이 공식적인 지원이 없어서, 별도의 패키지를 사용해야만 합니다. 해결책 npm 패키지 중 typeorm-naming-strategies 를 사용하면 이 문제를 아주 쉽게 해결할 수 있습니다. 먼저 아래와 같이 프로젝트 패키지에 포함시키시고, npm install typeorm-naming-strategies --save TypeORM 전역.. 2021. 4. 27. PostgreSQL 데이터 Client에서 KST로 확인하기 (feat. DataGrip) PostgreSQL에서는 보편적으로 UTC로 시간 데이터를 저장후, 애플리케이션 / Gui Client에서의 타임존에 맞춰 노출시키는 방식을 선택하는데요. 해당 컬럼의 타입이 timestamp with time zone 로 되어있어야만 합니다. Client Timezone에 따라 자동 전환이 되다보니 서버 애플리케이션에서 접속 하게 되면 UTC가 KST로 잘 전환이되어 노출 되는데요. 반면에 DB Gui Client로 접근할 경우 Client Timezone을 기본값으로 세팅하면 KST 전환이 안되는데요. 그래서 JetBrains사의 데이터 전문 도구인 DataGrip 혹은 IntelliJ의 Database Client에서 Client Timezone을 설정하는 방법을 소개드립니다. as-is 먼저 현재.. 2021. 4. 24. 이전 1 2 3 4 다음