본문 바로가기
반응형

전체글412

CloudWatch를 이용한 RDS (PostgreSQL) 스케줄링 시작/종료 운영되는 환경 (live, production, real 등) 외에, 테스트 용도로 사용되는 환경(dev, qa)은 꼭 24시간 무중단으로 서비스를 할 필요가 없습니다. 그래서 실제 업무시간을 제외하고는 해당 서비스를 종료하여 비용을 절감할 필요가 있습니다. (굳이 사용하지 않는 시간대에 비용을 낭비할 필요는 없겠죠?) 그래서 이번 시간의 목표는 다음과 같습니다. CloudWatch Event를 이용하여 매주 월~금 오전 09:00 에 RDS가 재시작 되도록 스케줄링 한다 매주 월~금 오후 08:00 에 RDS가 정지 되도록 스케줄링 한다. 금요일 오후 8시에 종료되고 월요일 오전 9시에 시작이기 때문에 주말 동안은 계속 종료 상태를 유지합니다. 전체 구조는 다음과 같습니다. 자 그럼 바로 시작해보겠습니.. 2021. 5. 11.
M1 맥북 개발 환경 세팅 애플의 M1 맥북이 나오면서 많은 개발자분들이 굉장한 성능 차이를 체감하게 되시는데요. 저 역시도 최근에 맥미니를 구매해서 사용중인데, 비슷한 가격대의 맥북 프로에 비해서 훨씬 더 쾌적하게 개발을 하고 있습니다. 다만 기존 맥북의 설치앱들을 그대로 마이그레이션 하다보니 Intel 버전의 앱들도 그대로 설치되어 M1 성능을 체감못하는 경우도 있습니다. 그래서 M1에 맞게 기존 앱들을 교체가 필요합니다. 이번 시간에는 M1 을 위한 개발환경 설정을 진행해보겠습니다. 저같은 경우 회사 업무에서는 Intel 맥북 (2019 맥북 프로) 를 사용하지만, 집에서는 M1 맥미니를 사용중입니다. 아직까지 VPN, 보안 프로그램, 패키지등 개발에 필요한 여러 환경에서 100% M1 맥북을 지원한다는 보장이 없기 때문인데.. 2021. 5. 9.
PostgreSQL RDS Slow 쿼리 Slack으로 알람 보내기 서비스를 운영하다보면 여러가지 이유로 서버 장애가 발생합니다. 그 중 가장 빈도수가 높은 원인은 DB의 슬로우쿼리일텐데요. 어떤 쿼리가 언제, 얼마나 긴시간동안 수행되었는지에 대해 알람을 받거나 모니터링이 되어야 서비스에 이슈가 될만한 쿼리들을 지속적으로 탐지하고 개선이 가능하기 때문입니다. 이번 시간에는 AWS RDS PostgreSQL에서 슬로우 쿼리에 대한 로그를 남기고 이에 대해 슬랙 알람을 보내도록 설정하는 방법을 진행하겠습니다. 이번 시간에는 PostgreSQL로 진행하지만 MySQL도 DB 파라미터 설정등에 차이가 있지만, 전체 Flow는 거의 흡사하니 참고해서 진행 가능하실것 같습니다. 전체적인 구조는 다음과 같습니다. 한번 이렇게 구성하고 나면 이후에 CloudWatch에 적재된 슬로우 .. 2021. 5. 8.
nodeenv를 활용한 프로젝트별 node 가상 환경 관리 Node에는 nvm 이나 n을 통해 동적으로 로컬 PC의 Node 버전을 변경할 수 있는데요. 다만 애초에 여러 프로젝트를 서로 다른 버전으로 동시에 사용하는 경우에는 매번 버전을 변경하는 것도 상당히 귀찮은 일입니다. 이를테면 다음과 같은 경우입니다. 회사의 프로젝트는 node 12를 쓴다 개인 프로젝트는 최신 버전인 node 16을 쓰고 싶다. 주말마다하는 사이드 프로젝트는 14를 쓰기로 했다. 이렇게 될 경우 매번 PC의 node 버전을 변경해야하는데요. 출근 전에는 node 16으로 출근 하면 node 12로 행여나 회사내 node 프로젝트들도 버전이 서로 다르면 이때도 계속 프로젝트 실행때마다 nvm 이나 n으로 버전을 변경해야합니다. 퇴근 하면 다시 node 16으로 주말 에는 node 14로.. 2021. 5. 2.
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.

728x90