본문 바로가기
반응형

DevOps86

docker-compose clean restart 하기 docker를 사용하다보면 한번씩 전체 컨테이너를 싹 다 지우고, 깔끔하게 다시 시작하고 싶을때가 있습니다. FATAL: database files are incompatible with server DETAIL: The data directory was initialized by PostgreSQL version xx, which is not compatible with this version yy 언제든 삭제해도 되는 데이터가 아니라, 실제로 계속 저장이 되어야 한다면 Volume에 있는 모든 데이터들을 백업해놓고 진행하셔야 합니다. 지금 같은 경우는 테스트 코드로만 수행될 컨테이너들이라서 바로 삭제할 수 있었습니다. 먼저 기존의 도커 컨테이너를 모두 삭제합니다. (물론 실행중인 컨테이너가 있다면 d.. 2021. 10. 4.
Github Pull Request시 Jest & Docker Test Code 수행하기 테스트 코드를 작성과 함께 항상 해주어야하는 기반 작업중 하나가 Pull Request와 Develop & Master 브랜치 Push시에 전체 테스트 코드가 수행되도록 테스트 자동화 환경을 구축 하는 것입니다. 그래야만, Pull Request의 코드리뷰를 진행할때 기존 기능이 정상작동하는 것을 믿고 리뷰만 진행할 수 있기 때문입니다. 이를 위해 젠킨스와 같은 설치형 CI를 써도 되지만, 배포용도가 아닌 코드리뷰로 요청온 Pull Request는 무조건 전체 테스트를 수행한다로 본다면 Github Action은 꽤나 좋은 선택지입니다. 그래서 이번 시간에는 Jest & Docker 환경에서 Pull Reqeust 발생시 Github Action으로 테스트 수행과 결과를 알려주는 환경을 구성해보겠습니다... 2021. 10. 1.
CloudWatch 이상 지표를 슬랙 알람으로 받기 (feat. SNS, Lambda) AWS 서비스를 이용하면 CloudWatch를 통해 서비스의 이상 지표를 손쉽게 확인할 수 있습니다. 이를테면 다음과 같은 경우인데요. 평소보다 로드밸런서로 들어오는 요청양이 2배이상 높다거나 RDS의 CPU가 60%이상이 된다거나 RDS에 사용중인 Connection이 갑자기 줄어든다거나 등등의 경우입니다. 이때 별도의 알람을 붙여놓지 않는다면 서비스가 죽고 나서야 알게 됩니다. 그래서 위와 같이 이상지표가 발생하면 즉시 Slack 등 메신저를 통해 알람을 받아야만 하는데요. AWS에서는 SNS와 Lambda를 통해 CloudWatch의 이상 지표를 손쉽게 알람을 받을 수 있습니다. 이번 시간에는 CloudWatch와 SNS, Lambda를 활용해 이상 지표 알람 서비스를 만들어보겠습니다. 1. SNS.. 2021. 7. 17.
URL Encoding 된 CSV 파일 한줄로 decode 하기 (feat. Python3) 간혹 DB에 URL을 저장하다보면 다음과 같이 Encoding된 내용으로 저장할 경우가 있습니다. (DB 데이터를 CSV로 뽑아낸 경우) 저장 자체에는 문제가 없지만, 이 데이터를 운영 이슈로 뽑아서 제출하거나 비개발팀에 제출해야할 경우 디코딩을 해야하는데요. 굳이 여러 과정을 거치기 보다는 Python3의 urllib 을 이용해서 한번에 csv 파일을 전환합니다. 1. 스크립트 파이썬에서 URL 을 디코딩하는 간단한 코드는 다음과 같이 작성할 수 있습니다. from urllib.parse import unquote s = 'id%253D184ff84d27c3613d%26quality%3Dmedium' unquote(unquote(s)) 이렇게 할 경우 다음과 같이 디코딩된 결과를 볼 수 있습니다. 'i.. 2021. 6. 27.
스케일링 가능한 Ngrinder 환경 구축하기 (feat. AWS Beanstalk) 네이버의 Ngrinder는 대표적인 성능 부하 테스트 도구입니다. 개인적으로는 다른 테스트 도구들에 비해서 설치 과정이 조금 번거롭다는 단점에 비해 사용성과 UI/UX가 너무 직관적이라는 장점으로 인해서 오랫동안 애정하고 있는 제품인데요. 서버 퍼포먼스 테스트 툴 사용후기 설치형을 지원하다보니 동적으로 Agent 수를 늘리고싶을때마다 설치된 이미지로 서버를 재생성하는 방식으로 늘리는게 참 불편했습니다. 이럴 경우 AWS를 통해서는 보통 2가지 방법으로 해결할 수 있는데, 오토스케일링 그룹 Beanstalk 등 동적으로 동일한 서버 환경을 편하게 증설할 수 있습니다. 이번 시간에는 AWS Beanstalk을 이용하여 스케일링 가능한 Ngrinder 환경 구축하기를 진행해보겠습니다. 1. EC2에 Contr.. 2021. 6. 18.
Pinpoint APM Node 사용하기 지난 시간에 이어, 설치된 Pinpoint Node 의 기본적인 사용법과 장단점을 배워보겠습니다. 1. 로컬 프로젝트에서 접근하기 저는 로컬 개발을 위해 nodemon을 사용하고 있어, nodemon.json에 다음과 같이 설정을 해서 접근할 수 있습니다. { "env": { "PINPOINT_COLLECTOR_IP":"ec2 ip", "PINPOINT_SAMPLING_RATE":"1", "PINPOINT_APPLICATION_NAME":"pinpoint-node", "PINPOINT_AGENT_ID": "local" } } 물론 Pinpoint Collector의 방화벽 (Security Group) 에 현재 로컬 PC의 IP가 인바운드에 등록 (포트: 9991 ~ 9993) 되어 있어야 합니다. 위 .. 2021. 5. 30.

728x90