✔️AWS 21

[AWS, Post-mortem] AWS SQS visibility timeout 에러와 이별한 방법 (feat. 장애 부검)

최근 사내 블로그에 글을 썼다. 여기 그 링크를 첨부한다. #7. AI 분석 장애 부검 안녕하세요. Deep Bio Backend Engineer 정현정입니다.👩‍💻 medium.com 위 글과 연관된 블로그 글: 1 [AWS, Post-mortem] EC2 리소스 과다 사용으로 인한 인스턴스 상태 확인 실패 문제와 SQS dead-letter queues 2 [Dev Culture] 내가 경험하고 배운 Project Post-mortem 문화 3 [AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 1) Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기(aws-nodejs-typescript사용) 4 [AWS] S..

Dev/DevOps, Infra 2023.05.13

[AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 2) AWS Lambda에서 slack alert 보내기

SQS(dead-letter queue) event 발생 시 Lambda를 사용해서 Slack alert를 보내고 PostgresQL에 쿼리를 실행하도록 설정하는 방법을 아래 3가지 순서로 기록해보고자 한다. AWS Lambda를 Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기 AWS Lambda에서 slack alert 보내기 AWS Lambda에서 PostgresDB로 쿼리 실행하기 완성 시 전체적인 구조는 다음과 같으며 aws credential은 미리 되어있다고 가정한다. 이번에는 에 대한 내용이다. 1. slack webhook 생성 우선 slack webhook을 생성하여 해당 slack url을 얻은 뒤 환경변수를 활용한다. 1) Slack에서 ..

Dev/DevOps, Infra 2022.05.07

[AWS] SQS event - Lambda - Slack 알람 - PostgresQL 쿼리 실행 1) Serverless framework를 사용해서 local에서 개발하고 cli로 쉽게 배포하기(aws-nodejs-typescript사용)

origin SQS로 들어온 task(message)를 정상적으로 처리하지 못할 경우 그 횟수가 maxReceiveCount를 초과하게 되면 Dead-letter queue로 옮겨진다. dead-letter queue로 옮겨진 메시지에 대해서는 slack 등 개발자가 상황을 바로 알 수 있도록 alert를 보내고, 또 유저에게도 해당 task의 처리가 실패하였을 때 나타나는 데이터를 보여주는 것이 필요할 때가 있다. 그래서 SQS(dead-letter queue) event 발생시 Lambda를 사용해서 Slack alert를 보내고 PostgresQL에 쿼리를 실행하도록 설정하는 방법을 아래 3가지 순서로 기록해보고자 한다. AWS Lambda를 Serverless framework를 사용해서 loca..

Dev/DevOps, Infra 2022.05.07

[Docker, AWS] Docker log를 AWS Cloudwatch에서 보기

EC2에서 docker를 실행시키는 경우 container의 log가 EC2 자체에 저장된다. 즉, container의 로그는 /var/lib/docker/containers/[contianer ID]/container-cached.log 에 모이게 되는데, 이렇게 되면 instance에 직접 들어가서 docker logs [container ID] 로 확인하거나 저 파일에 들어가서 로그를 하나하나 확인해야 한다. 그래서 효율적인 로그 관리를 위해서는 container의 log를 cloudwatch로 실시간 export 하는 과정이 필요하다. 그리고 추가적으로 Cloudwatch에는 Log groups이 있고 그 안에 Log Streams이 있고 각 stream안에 log들이 모이게 되는데 이 때 Log..

Dev/DevOps, Infra 2021.10.22

[AWS, Post-mortem] EC2 리소스 과다 사용으로 인한 인스턴스 상태 확인 실패 문제와 SQS dead-letter queues

AI 분석이 필요한 메세지가 AWS standard SQS에 들어오면 AI analyzer가 해당 메세지를 가져가서 분석을 시작하는 형태의 서비스가 있습니다. 이런 서비스에서 AI 분석 도중 EC2가 멈추고 Status check에서도 instance reachability check failed가 뜨는 경우가 발생할 때 어떤 식으로 대응을 해 나갈 것인지 고민하는 과정을 가졌습니다. 그리고 그 과정에서 알게된 SQS dead-letter queues에 대해서 정리하였습니다. AI analyzer가 도커 형태로 띄워져 있는 EC2 서버의 유형은 아래와 같다. 인스턴스 GPU vCPU 메모리 (GiB) GPU 메모리(GiB) 스토리지(GB) 네트워크 성능(Gbps) g4dn.4xlarge 1 16 64 1..

Dev/DevOps, Infra 2021.09.12

[HTTP, AWS] 3xx 대 Status와 Lambda@Edge

3xx - Redirection 서버가 클라이언트의 요청을 완료하기 위해 유저 에이전트(웹 브라우저)의 추가 조치가 필요할 때 3xx 대 status code와 함께 client 에게 다시 보내는 것이다. 리다이렉션의 이해 웹 브라우저는 3xx 대 status code 가 있는 응답 결과에 Location 헤더가 있으면 Location 위치로 자동 이동하는데, 이를 리다이렉트라고 한다. 리다이렉트의 흐름을 보면, 3xx status code 300: Multiple Choices 사용하지 않는다. 영구 리다이렉션: 특정 리소스의 URI가 영구적으로 이동하여 이 리다이렉션은 영원히 지속된다. 그리고 검색 엔진도 이런 리다이렉션을 인지한다. 301: Moved Permanently 리다이렉트시 요청 메서드가..

Dev/DevOps, Infra 2021.06.24

[DevOps] CI/CD 파이프라인 구축하기

1. CICD 파이프라인을 어떻게 구축하고 있을까? 몇 기업들의 빌드/배포 자동화 파이프라인 구축에 대해서 알아보았고, 그 중 가장 자세하고, 도움이 되었던 글은 하루에 1000번 배포하는 조직 되기 | 뱅크샐러드 이다. 파이프라인 재구축 전 상황과 pain point, 그래서 어떻게 변경했는지, 현재 어떤 식으로 운영되고 있는지가 자세히 설명되어져 있었기 때문이다. 예전에는 아래와 같은 AWS의 서비스를 사용하여 CodeBuild: 소스 코드를 컴파일하는 단계에서부터 테스트 후 배포까지의 단계를 지원하는 CI 서비스. Github과의 연결을 통해 빌드를 시작할 수 있으며 Codepipeline과 연결하여 커밋이 발생할 때마다 자동으로 빌드를 수행할 수 있음. 코드에 대한 빌드와 테스트 또한 사전 구성된..

Dev/DevOps, Infra 2021.05.16

[(IaC)Terraform] Terraform Variables 활용하기

Terraform은 HCL 문법을 가진 언어로, 변수를 정의하고 주입해서 사용할 수 있다. 지원하는 type들은 www.terraform.io/docs/language/values/variables.html에서 확인 할 수 있다. 1. Variables를 사용하는 이유 일반적으로 코드작업을 할 때 변수를 사용하는 것처럼 매번 변수 대신 해당하는 값을 직접 적어주면 너무 불편하다. 게다가 여러 서비스가 연결되어 작동하는 인프라인 경우 변수가 매우 편리하다. 2. 변수 정의하기 해당 인프라 코드, 즉 .tf 파일 어디서나 변수를 정의할 수는 있지만 보통 variables.tf 파일을 따로 만들어 그 파일에 정의하는게 편하다. variable ["변수명"] { type = [타입] default = [defa..

Dev/DevOps, Infra 2021.05.10

[(IaC)Terraform] Terraform Backend 활용하기

[AWS][Network][(IaC)Terraform] AWS Network의 구성 요소와 생성처럼 terraform apply를 하는 경우, 리소스가 생성된 후 terraform.tfstate 파일이 생성된다. 이 파일의 내용(terraform metadata; terraform knows what infrastructure it controls)이 terraform state이다. 즉, 내가 실행한 apply의 결과를 저장해놓은 상태이다. (여기서 상태란 terraform apply를 했을 시점의 상태이지, 현재 인프라의 상태를 반영해주는 것은 아니다. ) 이 state는 backend에도 저장 될 수 있다. backend가 뭐지?? 그리고 이는 어떻게 활용되고 왜 사용될까? 어떻게 쓰는걸까? 1. ..

Dev/DevOps, Infra 2021.05.09