전체 글(77)
-
AWS 비용 절감하기 (비용 폭탄)
현재 개인 플젝인 Flicker 를 AWS에 운영중인데, 비용 폭탄을 맞았다. (지난 달 대비 3배로 요금이 부과됨)비용 알림을 걸어놓지 않고, 한달 간 방치해둔 내 잘못이다... 이 비용 폭탄의 원인과 해결 방법, 그리고 수행한 재발 방지 조치에 대해 적어보고자 한다. 인프라 구성이 달라질 게 없어서 방심했는데, 금액이 지난달 같은 날 대비 3배가 나왔다. (약 28만원 ㅠㅠ) 원인 분석1. AWS CLI로 확인 서비스 별로 보니 RDS 가 $149.90 으로 압도적으로 높았고, 전월 대비 728% 증가했다.RDS 하나에 이 정도가 붙으려면 여러 개 인스턴스가 떠 있어야 한다고 생각해서, 확인했다.aws rds describe-db-instances --db-instance-identifier sns..
2026.08.25 -
[Flicker] DB Connection Pool 고갈 장애 모니터링 및 해결 방안
Flicker 프로젝트에 모니터링을 붙이고 나니 그래프가 잘 그려지는 건 좋은데,정작 아무 일도 안 일어나니 잘 동작하는 건지 알 수가 없었다. 그래서 일부러 장애를 만들어보기로 했다. 첫 번째 대상은 커넥션 풀로 정해 k6 부하테스트를 진행했다.*프로젝트 링크 : https://github.com/sns-service 왜 커넥션 풀인가Spring Boot는 HikariCP라는 커넥션 풀을 쓴다. DB 커넥션을 매번 새로 맺으면 비용이 비싸서, 미리 DB 커넥션을 여러 개 만들어두고 돌려쓰는 구조다. (기본 10개)문제는 이 10개가 다 쓰이는 중일 때다. 11번째 요청이 오면 누군가 커넥션을 반납할 때까지 기다린다. 반납이 안 되면? 설정된 시간(기본 30초)만큼 기다리다 예외를 던진다. 이게 커넥션 ..
2026.07.07 -
Terraform Network 모듈 설계 ㅡ VPC부터 SG까지 의존성 사슬 그리기
지난 글에서 ECR 모듈로 테라폼의 기초를 익혔다면, 이번에는 좀 더 복잡한 네트워크(Network) 모듈을 설계할 차례다.네트워크 모듈의 리소스는 아래와 같다.VPC, Subnet, IGW, NAT, EIP, Route Table, Route Table Association, Security Group의존성 사슬도 길어져 어디서부터 손대야 할지 막막한 단계였다.이번 글은 모듈 코드 자체보다 의사결정에 비중을 둔다. (코드는 Terraform 문서가 더 잘 설명하기에)내가 정리해두고 싶은 건 "왜 이렇게 골랐는가" 이다. 그림부터Flicker가 필요로 하는 네트워크 구조는 이렇다. Internet | I..
2026.06.13 -
[IaC] Terraform으로 인프라 코드화하기
Flicker 인프라는 AWS 에 띄워져있다. 최근에 인프라를 코드로 작성하는 IaC(Infrastructure as a Code) 가 유행이고,원래도 Terraform 에 관심이 있어 이번 기회에 Flicker 인프라를 전부 코드화하는 작업을 해보기로 했다. GitHub 링크https://github.com/sns-service/flicker-infra IaC(Terraform) 도입 배경정답 : "재현성, 협업, 버전 관리" 외에도, 내가 인프라를 코드로 옮긴 이유는 아래와 같다.이전에 만든 리소스를, 오늘 보면 왜 만든지 기억이 나지 않음.따라서 "이거 지워도 되나?" 라는 질문에 답을 하지 못함.또한 Git 로그를 통해 인프라 변경 이력(생성 목적, 관련 PR 등)을 명확히 추적할 수 있게 됐고,..
2026.06.13 -
사이드 프로젝트에 블루/그린 배포 붙여보기 — 9초의 벽
지난 주에 GitHub Actions로 EC2 배포 자동화를 끝냈는데, 컨테이너 교체할 때 매번 5초쯤 끊김이 있었다. main에 푸시하면 1m 40초 만에 자동 배포되는 건 좋은데, 그 사이에 누가 접속하면 5xx 상태코드를 받는다.사이드 프로젝트라 사용자는 사실 나뿐이지만, 인프라 직무 전환을 준비 중이라 블루/그린 패턴은 꼭 한번 만들어봐야 했다. 이번 주에 시도했고, 결론부터 말하면 9초로 끝났다.0초가 목표였는데. 어디까지 갔고 어디서 막혔는지 적어둔다. 큰 그림같은 EC2 안에 컨테이너를 두 벌 띄울 자리를 만든다.blue = 포트 8080green = 포트 8081ALB는 둘 중 한쪽에만 트래픽을 보낸다. 배포할 땐 노는 쪽에 새 버전을 올리고, 헬스체크가 통과하면 ALB 리스너를 그쪽으로 ..
2026.06.03 -
OIDC + SSM으로 SSH 없이 EC2 배포하기
Flicker 사이드 프로젝트를 GitHub Actions로 자동 배포하면서, SSH 키 관리하기가 불편했다.EC2에서 22번 포트 열어두는 것도 찜찜하고, GitHub Secrets에 private key 통째로 박는 것도 그렇고. 그래서 이번에 다 갈아엎으면서 두 가지를 시도했다.AWS 엑세스 키 대신 GitHub OIDC로 임시 자격증명 받기EC2 SSH 대신 SSM(Session Manager) 으로 명령 전송결과적으로 키를 따로 관리하지 않아도 됐고, EC2 보안 그룹에서도 22번 포트를 닫을 수 있게 되었다. 왜 OIDC인가?*OIDC(OpenIDConnect)는 토큰 기반 인증이다 : ID Token(JWT)JWT 안에는 개념적으로 repo, 브랜치, workflow 같은 정보가 들어있다. ..
2026.05.28