#AWS · 146개
AWS HealthOmics 워크플로 실행과 분석
유전체 분석하는 팀과 인프라 얘기를 하다 보면 결국 "파이프라인 돌릴 서버는 누가 보나"로 넘어간다. AWS Batch 위에 Cromwell이나 Nextflow를 직접 깔아서 쓰던 팀이 관리형으로 …
Terraform state를 S3 백엔드로 안전하게 관리하기
Terraform을 혼자 쓸 때는 로컬 terraform.tfstate 파일로도 버틴다. 그런데 팀원이 둘만 넘어가도 state 파일이 서로 꼬이고, apply가 겹치면서 리소스가 중복 생성되는 사…
GitHub Actions에서 OIDC로 AWS에 키 없이 배포하기
CI에서 AWS로 배포할 때 가장 흔한 방식이 레포 Secrets에 AWS_ACCESS_KEY_ID 와 AWS_SECRET_ACCESS_KEY 를 박아두는 것이다. 운영하다 보면 이 키가 어느 레포…
PostgreSQL 대용량 테이블 RANGE 파티셔닝
로그성 테이블 하나가 수억 건으로 불어나면 조회도 느려지지만 더 성가신 건 정리다. 지난 90일만 남기고 싶은데 한 테이블에 다 들어 있으니 DELETE ... WHERE created_at ...…
AWS 퍼블릭 IPv4 과금 줄이기
얼마 전 월별 청구서를 살펴보다 'Public IPv4 Address'라는 항목이 꾸준히 올라와 있는 걸 발견했다. 2024년 2월부터 퍼블릭 IPv4 주소에 시간당 요금이 붙기 시작한 뒤로, 예전…
상위 비용 SQL을 구간별로 비교해 튜닝하기
느린 쿼리를 잡아 달라는 요청을 받으면 가장 먼저 열어 보는 뷰가 pg_stat_statements 다. 슬로우 쿼리 로그는 임계값을 넘긴 개별 실행만 남기지만, 현장에서 서버를 실제로 무겁게 만드…
PostgreSQL 쿼리가 락에 걸려 멈출 때
RDS PostgreSQL을 운영하다 보면 평소 수십 밀리초에 끝나던 UPDATE가 갑자기 몇 분씩 응답이 없는 상황을 만난다. CPU도 멀쩡하고 디스크 I/O도 한가한데 특정 테이블을 건드리는 쿼…
SQS 표준 큐 중복과 실패 다루기
SQS로 비동기 처리를 붙이고 나면 거의 비슷한 순서로 질문이 들어옵니다. "같은 메시지가 두 번 처리됐어요", "처리에 실패한 메시지가 큐를 계속 맴돌아요". 저도 주문 처리 파이프라인을 SQS로…
논리적 복제로 PostgreSQL 최소 중단 업그레이드
메이저 버전 업그레이드는 미루기 쉬운 일이다. RDS의 in-place 업그레이드는 버튼 한 번으로 끝나는 대신 그 시간만큼 DB가 멈춰 있고, 데이터가 크면 중단이 수십 분으로 늘어난다. 서비스를…
락 없이 PostgreSQL 인덱스 추가하기
운영 중인 테이블에 인덱스 하나 추가하려다 서비스가 멈춘 경험이 한 번쯤 있을 것이다. 가입자가 늘면서 느려진 쿼리를 잡으려고 인덱스를 거는데, 그냥 CREATE INDEX 를 때리면 테이블 쓰기가…
pg_stat_statements로 느린 쿼리 Top N 뽑기
운영 중인 서비스가 느려질 때 어디서부터 봐야 할지 막막한 경우가 많다. 특정 화면 하나가 아니라 서버 전체가 무겁게 느껴지면 슬로우 쿼리 로그만으로는 그림이 안 잡힌다. 나는 이럴 때 개별 쿼리 …
S3 presigned URL로 브라우저에서 직접 업로드
파일 업로드 기능을 붙일 때마다 매번 같은 고민을 한다. 사용자가 올린 수백 MB짜리 영상이나 백업 파일을 애플리케이션 서버가 한 번 받아서 다시 S3로 넘기면, 서버 네트워크와 메모리, 임시 디스…
RDS Proxy로 Lambda 커넥션 폭주 잡기
서버리스로 API를 옮기고 나면 트래픽이 몰리는 시간대에 꼭 한 번은 만나는 에러가 있다. 애플리케이션 로그에는 문제가 없는데 DB 쪽에서 FATAL: too many connections 또는 E…
Amazon EKS 1.34 표준 지원 종료 메일을 받았다면 - 확장 지원 요금과 업그레이드 선택지
EKS 클러스터를 몇 개라도 굴리고 있으면 요즘 받은편지함에 "[조치 필요] Amazon EKS Kubernetes 1.34 표준 지원 종료" 제목의 AWS Health 알림이 하나 들어와 있을 것…
쿠버네티스 PVC를 파드 중단 없이 온라인으로 확장하기 (EBS CSI, allowVolumeExpansion)
운영하다 보면 스테이트풀셋의 PVC가 어느 날 갑자기 꽉 차 있다. PostgreSQL 데이터 디렉터리든 Prometheus TSDB든, 예전 같으면 새 볼륨 붙이고 데이터 옮기고 파드 재배포하는 …
AWS Bedrock Knowledge Bases로 사내 문서 RAG 챗봇 만들기
사내 위키나 운영 문서를 뒤지다가 "이 설정 어디에 적혀 있더라" 하고 시간을 버리는 일이 잦다. 이런 문서를 검색해서 답을 만들어 주는 RAG 챗봇을 직접 짜려면 임베딩, 벡터 DB, 프롬프트 조…
EC2 메모리와 디스크 사용률이 CloudWatch에 안 보일 때: CloudWatch Agent로 커스텀 메트릭 수집하고 SSM으로 배포, 경보까지
운영 중인 EC2가 갑자기 느려져서 CloudWatch 콘솔을 열었는데, CPU 그래프만 있고 메모리와 디스크 사용률 그래프가 아예 없어서 당황한 적이 있을 것이다. 저도 처음 AWS로 넘어왔을 때…
AWS EC2 VM 비용 절감 방안
오늘은 Amazon EC2 비용을 절감하기 위한 다양한 방안을 아래에 정리했습니다. 이를 활용하여 비용 효율성을 높일 수 있습니다. 1. 적합한 인스턴스 유형 및 크기 선택 • 워크로드 분석 : 필…
[GCP] CloudCDN 또는 LB에서 AWS S3와 같은 외부 객체 스토리지(외부 백엔드) 연결 시, 404가 발생한다면.
https://cloud.google.com/cdn/docs/setting-up-cdn-with-third-party-storage?hl=ko Cloud CDN이나 LB에서 NEG를 통해 외부 백엔…
Datadog 제공 EC2 메트릭 정리
1. 배경 모니터링 목적 2. 메트릭 현황 - CPU 메트릭 설명 단위 aws.ecs.cluster.cpureservation 클러스터에서 실행 중인 Task에 의해 예약된 CPU 사용률 % aws…
Bastion 서버(EC2)를 이용한 내부망 RDS 접속 - 터널링
1. 목적 외부망 연결 가능한 EC2 베스천 서버를 통해 내부망의 RDS에 접속하는 시나리오이다. macOS에서 테스트함 2. 방법 ssh -i " 키이름 " -f -N -L 로컬포트 : RDS주소…
AWS CLI 사용시 /Users//Library/Python/3.7/bin/aws: /usr/local/opt/python/bin/python3.7: bad interpreter: No such file or directory
1. 현상 /Users/ 사용자명 /Library/Python/3.7/bin/aws: /usr/local/opt/python/bin/python3.7: bad interpreter: No such …
[AWS] Codedeploy 실행 시, "The IAM role does not give you permission to perform operations in the following AWS service: AmazonAutoScaling. Contact your AWS administrator if you need help. If you are an AWS administrator, you can grant permissions to your us
Codedeploy Blue/Green 배포 시에 다음과 같이 에러가 발생할 수 있다. "The IAM role does not give you permission to perform operati…
[Cloudwatch Logs]Destination 생성 시 유의사항.(Kinesis cross-account)
Kinesis Firehose 를 이용하여, Cloudwatch Logs Filter를 이용하여 교차계정 데어티 공유를 위해서는 아래의 단계를 진행하여야 한다. https://docs.aws.ama…