매달 초가 되면 저는 습관처럼 AWS 청구서를 엽니다. 예전 회사에서 월 청구액이 예상보다 40% 넘게 튀어나온 적이 있었는데, 그때 원인을 추적하면서 알게 된 게 하나 있습니다. AWS 요금은 큰 실수 하나로 터지는 게 아니라, 아무도 안 보는 작은 낭비들이 조용히 쌓여서 터진다는 겁니다.이번 글은 제가 실무에서 실제로 잡아냈던 AWS 비용 낭비 포인트들을 정리한 것입니다. 콘솔에서 바로 확인할 수 있는 것들 위주라, 오늘 점심시간에 하나씩 열어보면서 따라 해볼 수 있는 수준으로 썼습니다.사진: Unsplash의 Growtika0. 시작은 무조건 비용 가시화부터비용 절감 얘기를 하면 다들 인스턴스 줄이는 것부터 떠올리는데, 순서가 틀렸습니다. 뭐가 얼마나 나가는지 모르는 상태에서 줄이는 건 감으로 하는..
서버리스 Dependency 설치 (feat: lambda) 공부정리중 목차 실행 확인 환경파일 확인 python 도구를 이용하여 dependency 파일 한번에 설치하기 실행확인 내가 짜놓은 코드가 servelress 파일이 제대로 동작하는지 확인하는 방법 offline 도 있다고 들었지만, 현재 내가 배우고 있는 교제에서는 docker의 public.ecr.aws/lambda/nodejs:[node버전] 의 방법을 이용하여 테스트가 가능하다 # nodejs 18버전 app.handle 이 실행파일인 경우 docker run -it -p 8080:8080 -v $PWD:/var/task public.ecr.aws/lambda/nodejs:18 app.handler # curl test curl loca..
서버리스 이미지 최적화 (Serverless Image Optimizer) 목표 서버리스 이미지 최적화 만들기를 통하여서 aws serverless 아키텍쳐 이해 serverless 프레임워크 이해 typescript 로 작성하며, typescript 이해 이미지 최적화 아키텍쳐 온디멘드 방식 -> 이미지 업로드 즉시 처리하여 s3 에 업로드 이벤트 직접 호출 방식 이벤트 구독 방식 필수 설치 serverless framework aws cli option 설치 direnv 환경설정 aws cli 설치 # aws cli 설치 brew install awscli # aws 인증 설정 aws configure # AWS Key ID : [AWS Console IAM 에서 발급받은 Key ID] # AWS S..
RDS Proxy 는 2019년 12월에 발표된 AWS 의 서비스입니다. 관계형 DB의 connection 을 관리해주는 서비스인데, 사실 Java 개발자들은 이게 왜 필요하지 싶겠지만, 서버리스( 예 : Lambda ) 나 php, ruby 같은 언어에서는 이부분이 상당히 머리 아픈 구석이었습니다. 구글링을 해보면 여러가지 사례들이 있습니다. 우리도 해당 사례들과 비교해보며 서버에 스트레스 테스트를 해보았지만, 앞선 업체들과는 다른 양상을 보여 도입에 대한 고민을 엄청 했습니다. 저희 같은 경우는 PHP Laravel을 AWS ECS Fargate 에 올린 상태입니다. 즉 DB pool 관리는 안해주는 대환장 파티이다. 이번에 RDS Proxy를 적용하며 바뀐 DB 메트릭을 공개하려고 한다. 자신이 서..
CodePipeline과 Slack Bot으로 스마트하게 배포하는 구조를 정리한다. 핵심은 배포 직전에 Slack에서 사람이 승인하도록 만드는 것이다.만들고 싶었던 흐름GitHub push 하면 Docker 자동 빌드 및 테스트빌드가 완료되면 배포 직전에 confirm을 Slack Bot으로 받기Slack에서 최종 컨펌을 하면 배포 시작배포가 완료 및 실패가 되면 Slack으로 알림 받기트리거는 GitHub Actions vs CodePipeline빌드 트리거는 GitHub Actions와 CodePipeline으로 하는 방법 2가지가 있다.트리거 종류로는 비용이 바뀌지 않으니 CodePipeline에서 처리하는 것이 관리적 측면에서 좋다고 판단했다. AWS 리소스 접근 권한을 IAM 역할로 처리할 수 ..
ECS Fargate로 컨테이너를 운영하면서 정리한 순서와 개념이다. 서버를 직접 관리하지 않고 컨테이너만 올리면 되는 게 Fargate의 핵심이다.CODE 영역Dockerfile 생성buildspec.yaml 작성AWS 영역 준비 순서클러스터 생성리포지토리(ECR) 생성작업 정의(Task Definition) 생성보안 그룹(SG) 생성Application Load Balancer 생성 (미리 해둬야 편함)Target Group 생성 (로드밸런서 생성할 때 미리 생성, 필수는 아님)서비스 및 작업 생성ALB를 먼저 만들어두라는 게 실무 팁이다. 서비스를 생성하는 화면에서 ALB를 고르게 되는데, 그 자리에서 새로 만들려면 화면을 왔다 갔다 해야 한다.서비스와 작업의 차이서비스는 항상 돌아가는 개념작업(T..
