
개요기존 서비스가 지속적인 개발 단계에서 완전한 유지보수 단계로 전환되면서, 새로운 기능이나 콘텐츠가 더 이상 추가되지 않아 MAU/DAU가 크게 감소했다. 반면, 기능 추가가 활발하던 시절에 확장한 서버와 DB 스펙은 그대로 유지되어 인프라 비용은 오히려 증가했다. 결과적으로 월 비용은 약 2천 달러에서 3천 달러로 40~50% 가까이 상승했다. 사용량은 줄었는데 비용은 오르는 상황이 반복되자, 실장님께서 회의 때마다 시간이 날 때 비용 구조를 한번 점검해보자고 언급하셨고, 마침 맡고 있던 MVP 개발이 마무리되면서 본격적으로 비용 절감 작업을 시작할 수 있었다. 우선 하이퍼빌링 계정을 전달받아 전체 AWS 리소스를 분석하기 시작했는데, 큰 문제는 두 가지였다. 첫째, 리소스에 태깅이 제대로 되어 있지..

개요사실 로그 파이프라인은 인프라 초기 설계 단계에서 함께 고민했어야 했지만, ECS 기반 인프라를 구성할 당시에는 방법을 몰라 한동안 손대지 못하고 있었다. 그 대신 임시 방편으로 로그를 데이터베이스에 저장하고, 단순히 스택 트레이스를 확인할 수 있게만 만들어둔 상태였다. 하지만 로그를 DB에 저장하는 방식은 여러모로 바람직하지 않다.첫째, 서비스 로직에 필요한 DB 커넥션 풀을 로그 기록 때문에 점유하게 된다.둘째, 불필요한 DB I/O가 발생해 비용 낭비로 이어진다.셋째, 로그는 개발자나 운영자를 위한 정보인데, 이를 위해 운영 데이터 저장소의 용량을 소모하게 된다.그리고 마지막으로, 검색과 필터링도 DB 쿼리로 해야 하기 때문에, 로그 시스템 고유의 장점인 빠른 탐색/집계 기능을 기대하기 어렵다...

개요원래는 teleport를 도입하면서 접근제어와 감사로그를 함께 해결하려고 했다. 그러나 teleport를 쿠버네티스 외부 환경에서 구축하려면 인증 서버와 Bastion 서버, EC2 인스턴스 두 개가 필수적으로 필요했다. 비용이 엄청 크진 않지만, AWS 인프라 관리는 내가 하지만 비용을 다른 팀에서 부담하는 모순적인 구조라 인프라를 마구마구 늘릴수가 없었다. 그래서 접근제어는 SSM 기반 접근 방식을 이용하기로 했다. 조금 손이 가긴 하지만 보안적으로 가장 안전하다.어떻게 구축했는지는 이전 글에 있다.Private Subnet에 있는 AWS RDS에 접근하기 2. Bastion + SSM with. DBeaver 그렇다면 감사로그는 어떻게 찍어야할까? 다행히 PostgresSQL에서 제공하는 방식이..

개요이전 글 : Private Subnet에 있는 AWS RDS에 접근하기 1. Bastion + SSH with. DBeaver bastion 점프 서버와 SSH만을 이용해서 상용 DB에 접근하게 된다면, 팀원들이 각각 로컬에 pem key를 갖고 있어야 한다는 너무나 큰 문제가 있다. 이 문제의 가장 보편적인 대안인 AWS SSM을 이용한 방식을 사용해보려고 한다. AWS SSM은 SSH만 쓰는 것 보다 어떤 측면에서는 더 쉽고 간단하며, 더 많은 관리자로서의 기능을 제공한다. 하나씩 알아보자. 1. AWS SSM 이란?https://docs.aws.amazon.com/ko_kr/systems-manager/latest/userguide/session-manager.htmlSession Manage..

개요PO분이 급하게 도메인을 만들고 정리하시느라 AWS가 아닌 GoDaddy에서 도메인 이름을 발급받으셨다. 거기다 상용 AWS 계정이 승인이 안나서 cloudflare에 모든 서브도메인 라우팅을 설정해두셨다. 추가적으로 SSL 인증서까지 cloudflare 에서 적용하셨다. AWS 상용 계정이 승인되고나서 도메인 서버, SSL 인증서를 마이그레이션해야했다. 처음에 언뜻 듣기로는 아 이거 뭐 금방하지라는 생각으로 모든 권한을 넘겨받았다. 그리고 바로 일이 터졌는데... 별일은 아니고 좀 오래걸렸다. 차근차근 방법을 알아보자cloudflare 설정 일시중지 혹은 삭제하기가장 먼저 해야할 내용은 아니지만 반드시 알아야할 설정이 여기있어서 처음에 뒀다. cloudflare는 CDN 역할만 해주는게 아니라 네임..

개요현재 프로젝트에서 파일 저장소로 S3를 사용하고 있다. 파일을 저장하면서 몇 가지 요구 사항이 붙게 됐다. 1. 업데이트를 하면 파일이 새로 업로드됨2. 그런데 업데이트 하기 전 파일로 롤백하려는 요구 사항이 있을 수 있음3. 그럼 업데이트된 파일을 어떻게 관리할 것인가? 사용하지 않는 파일에 아이디를 일일히 부여하는게 맞는가? 그럼 로우가 계속 늘어날텐데?4. 그러면 삭제 정책이 필요한데, 얼마나 저장할 것이며 어떻게 삭제할 것인가? 스케줄러를 돌리는 것도 말이 안되지 않나? 이런식으로 계속 꼬리질문이 나오는 상황에서 S3를 뒤져보던 중 객체 버저닝이란 것을 알게 됐다.https://docs.aws.amazon.com/ko_kr/AmazonS3/latest/userguide/versioning-w..

개요기존 서비스에서는 EKS + ArgoCD를 이용한 GitOps를 구축해놨었다. 그런데, 새로운 프로젝트에서는 ECS를 쓰면서 CI/CD를 아예 갈아치워야 하는 상황이 됐다. ECS 환경에서도 ArgoCD를 할 수 있다고는 하는데... 하는 방법이 구체적으로 나와있지 않았다. ArgoCD 메인테이너가 해준 설명 : https://github.com/argoproj/argo-cd/discussions/17843 어떻게해야하나 찾아보니까... GitHub Actions에서 ECS용 워크플로우를 만들어놔서 ArgoCD보다 더 쉽게 CI/CD를 구축할 수 있었다. 원리는 Task Definition에 명시해둔 이미지 이름을 변경하고 Task를 재실행시켜서 재배포하는 방식이다. 준비물은 Task Definit..

개요새로운 서비스가 시작하면서 AWS관리부터 devOps, BE 개발을 전반적으로 다 관리하고 있다. 그러다보니 서버 설정을 만질때가 많은데, 그중에서 관리가 특히 필요한 것들이 외부 API 키나 DB 커넥션 관련 정보다. 1. 누출되면 데이터를 싹 털릴 수도 있고, 무분별한 사용으로 비용이 치솟을 수 있는 것들.2. 기간 만료/갱신 등으로 인해 수시로 변경되고, 서버 프로필 별로 따로 관리가 필요한 것들. 이런 것들을 한번에 관리할 수 있도록 서비스를 지원하는게 AWS Parameter Store다. 이번 포스팅에는 아래와 같이 사용법을 정리해보려고 한다. 1. Terraform으로 db관련 간단한 파라미터를 등록2. ECS Task의 IAM 정책에 ssm 작업 추가3. SpringBoot 3.0에서..
- Total
- Today
- Yesterday
- object
- ChatGPT
- Kotlin
- Log
- AWS
- terraform
- ecs
- lambda
- elasticsearch
- serverless
- 후쿠오카
- CloudFront
- EKS
- 람다
- springboot
- JWT
- docker
- AWS EC2
- AOP
- 후기
- GIT
- 오블완
- 티스토리챌린지
- CORS
- 스프링부트
- cache
- java
- S3
- Spring
- OpenAI
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |