본문 바로가기

분류 전체보기127

실수할 여지를 주지않기 모든 것은 변한다.서비스도 그렇고 그 서비스의 기반이 되는 소프트웨어도 마찬가지이다.그러면서 우리는 크고작은 실수를 만들곤 한다. 예를 들어DB 테이블에 대한 Model 클래스에는 새로운 필드를 추가하였지만, DB 테이블에는 컬럼을 추가하지 않거나개발 환경에는 환경 변수 설정을 추가했지만 운영 환경에서는 하지 않거나 개발 프로세스가 잘 정립되어있다면 실수를 어느정도 관리할 순 있지만모든 것이 자동화 되어있지 않는한(심지어 자동화를 하였어도) 사람이 하는 일이다보니 늦든 빠르든 언젠가는 실수가 생긴다.급하게 일을 끝내려 하거나(이것만 끝내고 집에 가야지~) 관련된 업무와 관련된 모르는 지식이 있거나 (아니 이런게 있었어요?)  그렇지만 나의 멘탈과 안정적인 서비스를 위해서는 크든 사소하든 실수는 되도록 없.. 2023. 4. 1.
[AWS] EC2 인스턴스 스토리지 용량 Slack 알람 세팅하기 최근에 EC2 인스턴스에서 기동 중인 백오피스 툴이 스토리지 용량이 꽉차서 제대로 동작하지 않았던 적이 있다. 원인을 파악하고 EBS 용량을 증가시키는 동안 백오피스 툴을 사용할 수 없었는데 사후에 대처를 잘하는 것도 중요하지만, 사전에 미리 위험을 감지할 수 있는 시스템을 구축하는 것도 중요하다. 이번 포스팅에서는 crontab을 통해 주기적으로 파이썬 스크립트를 통해 EC2 인스턴스의 스토리지 용량을 확인하고 용량이 모자른다고 판단되면 Slack 알람을 보내는 예제에 대해 알아보겠다. (OS는 Ubuntu 기반으로 설명한다) EC2 인스턴스에 CloudWatch Agent를 설치하여 CloudWatch 알람을 받는 방식도 있지만, 단순히 스토리지 용량을 모니터링하기 위함이라면 어쩌면 배보다 배꼽이 더.. 2023. 3. 12.
새로운 기술을 제안할 때는... 요즘은 도서 및 온라인 강의 사이트, 기술 블로그 뿐만 아니라 재직자 교육기관 등이 활발하게 운영되고 있기 때문에 의지만 있다면 새로운 기술이나 내가 몰랐던 라이브러리들을 접하는게 어렵지 않다. 개발자로서 새로운 기술을 배우거나 Cool한 라이브러리를 발견하고 써보는건 매우 짜릿한 경험이다. "이 좋은걸 나만 알 수 없지!" 여러분은 이 좋은 기술을 우리 프로젝트에서도 도입하면 어떨까라는 이타적인 생각에 신나게 PR을 올린다. 하지만 돌아오는건 우려와 반대의 코멘트들 뿐... 그리고 여러분은 "아니 이 좋은 걸 왜 해보지도 않고 무조건 반대를 하지..."라고 생각하며 속으로 씁쓸함을 삼킨다. (정성적, 정량적인 이유가 충분하다는 조건하에) 여러분의 동기와 엔지니어링 관점에서 새로운 기술을 적용하는 것은 .. 2023. 2. 23.
[Redis] 많은 키를 삭제할 때는 UNLINK Redis의 key를 삭제할 때는 주로 DEL 커맨드를 사용한다. DEL key [key ...] Redis 1.0.0 부터 사용되던 커맨드이고 SET과 더불어 Redis 예제에서 자주 사용되는 예제이기 때문에 Redis를 사용한 서버 애플리케이션 개발 시 DEL 커맨드가 자주 사용된다. DEL 커맨드 외에도 Redis는 4.0.0 버전부터 UNLINK 라는 커맨드가 있는데 DEL과 동일하게 특정 key를 삭제하는 기능을 수행한다. UNLINK 커맨드의 차이점은 여러 key를 삭제할 때 DEL 커맨드의 경우 O(N) (n은 삭제할 key의 수) 의 시간 복잡도를 갖는데에 반해, UNLINK 커맨드는 삭제할 key의 수에 상관없이 O(1)의 시간 복잡도를 갖는다. UNLINK 라는 이름처럼 실제로 key를.. 2023. 2. 12.
[SQS] 메세지 지연 시키기 (+ 15분을 넘어서) SQS 같은 경우 delay queues 라고하는 Consumer에게 메세지 노출을 지연시킬 수 있는 기능을 제공한다. 지연은 최대 15분까지 가능하다. (Visibility Timeout과는 다른 개념이기 때문에 명확하게 차이를 인지해야한다) 이 기능을 사용하면 메세지에 지연을 줄 수 있기 때문에 예약 실행 기능(정해진 시간 뒤에 특정 기능이 실행되어야하는 기능)을 개발할 때 사용될 수 있다. 예를 들어 '회원 가입 후 5분 뒤에 가입 축하 메세지를 보내기' 와 같은 기능이 있을 수 있는데, 회원 가입 도메인 이벤트에 대한 SQS 메세지 or 가입 축하 메세지 전송 SQS 메세지를 5분의 지연을 설정하고 enqueue 하면 5분 뒤에 메세지 핸들러에서 해당 메세지를 consume 하여 대상 유저에게 가.. 2023. 2. 4.
[SQS] Visibility Timeout Consumer가 Queue에서 메세지를 consume 하고 처리를 한 뒤, 해당 메세지를 acknowledge(delete)를 하기 전까지는 메세지는 Queue에 계속 남아있는다. 특정 Consumer가 메세지를 consume 하고 모든 처리가 끝날 때까지 다른 Consumer에서 동일 메세지를 consume하는 것을 막기위해서 SQS에서는 Visibility Timeout을 설정한다. 메세지가 consume 된 뒤에 다른 Consumer에게 다시 보여지기 위한 시간이라고 생각하면 될 것이다. (하지만 이는 메세지가 두 번 전달되는 것을 막기 위함은 아니다) 기본값은 30초이며, 0초~12시간 까지 설정 가능하다. 관련하여 메세지 수의 제한을 확인해야하는데, 제한을 확인하기 전에 짧게 메세지의 상태에 .. 2023. 2. 4.