대규모 트래픽 경험이 없는 서비스를 위한 실험 도구, tmula
·
프로젝트/Product
배경작은 서비스에서는 대규모 트래픽을 직접 경험하기 어려운 데 비해, 개발자에게는 해당 경험이 꽤나 요구되는 편입니다. 예를 들어, 채용 공고를 보다 보면 "대규모 트래픽 경험이 있는 분"이라는 문장을 어렵지 않게 발견할 수 있습니다. 물론 해당 경험은 필요한 경험이라고 생각합니다. 많은 사용자가 동시에 들어오는 환경에서는 작은 트래픽에서는 보이지 않던 문제를 맞닥뜨릴 수 있습니다. 예를 들면 DB connection pool이 먼저 막힐 수도 있고, 특정 API만 느려질 수도 있고, 사용자의 흐름이 한곳으로 몰리면서 예상하지 못한 장애가 발생할 수도 있습니다. 저는 이런 문제들을 다양한 케이스에서 직접 겪어보고 싶었습니다.하지만 그저 그런 트래픽이 아닌, 욕심을 더 부려보고 싶었습니다. 단순히 트래픽을..
Cache를 이용한 DB CPU Resource 안정화 - 쿼리 최적화만이 답이 아니었다
·
Basic/Database
CPU 스파이크 발생운영 하는 프로젝트의 Task 대시보드는 실무진들이 출근 후 가장 먼저 확인하는 화면입니다. 미납, 견적, 만기, 납기, 해지예정, 해지완료 등 여러 타입의 태스크 건수를 오피스별로 집계해서 보여주는, 일종의 업무 시작점 같은 페이지입니다. 모니터링 도중 매일 출근 시간대인 오전 10시에서 12시(EST) 사이에 운영 DB의 CPU 사용률이 75%를 넘어 최대 99.5%까지 치솟는 상황을 발견하게 되었습니다. CloudWatch의 CPUUtilization은 전체 vCPU 대비 백분율이라 이론상 100%가 상한인데, 99.5%의 수치는 전체 코어가 포화되었다고 볼 수 있습니다. CPU가 이 수준에 도달하면 DB 응답 지연이 발생하여 대시보드뿐 아니라 서비스 전반에 영향을 줄 수 있는 ..
비개발자를 위한 Gemini CLI Linear MCP 연동 자동화
·
Server/ETC.
스크립트 Gemini CLI + Linear MCP 자동 설정 스크립트 (비개발자용)Gemini CLI + Linear MCP 자동 설정 스크립트 (비개발자용). GitHub Gist: instantly share code, notes, and snippets.gist.github.com 현재 상황저희는 팀에서 Linear를 사용하고 있습니다. 디자이너분은 이슈 확인을 위해 매번 브라우저를 열고, Linear에 접속해서, 이슈를 찾고, 상태를 바꾸는 과정을 반복하고 계셨습니다. 아무래도 이 과정이 불편하고 귀찮음이 있다보니, Linear 최신화가 매 번 이뤄지진 않고 있었습니다.Gemini CLI에 Linear MCP를 연동하면 터미널에서 자연어로 이슈를 다룰 수 있습니다. "내 이슈 보여줘", "이 이..
2025년 회고
·
회고록/회고
40여 곳의 기업에 지원했다. 두 번의 이직을 거치며 부족한 부분을 채웠고, 운으로 다가온 기회들을 알아보고 감사할 수 있었다. 다만 비즈니스에 영향을 주는 개발자가 되겠다는 욕심에 기본을 놓치는 아쉬운 판단도 했다. 반쯤은 성공적인 2025년이었다. 커리어2024년 6월에 진행된 이직은 설렘보다는 걱정이 앞섰다. 잘하는 사람들 사이에서 성과를 내야 한다는 부담에 주춤거렸지만, 주변의 격려와 무엇보다 대표님께 배우고 싶다는 욕심으로 내디딜 수 있었다. 돌이켜 보면 그 1년은 많은 걸 배운 시기였다. 끊임없이 ‘왜’를 물어야 했고, 괜찮을 거라는 방심이 곧 장애로 이어질 수 있음을 알게 됐다. 경쟁사의 유저 환경과 마케팅은 납득이 가지 않았지만, 내 생각을 비웃듯 그들이 하는 대로 따라 했더니 성과가 났다..
운영중인 AWS ECR를 Terraform으로 가져오기
·
Server/Infra
현재 상황 상황이미 EC2, RDS, VPC 등 대부분의 AWS 리소스를 사용하고 있었고, 현재 Terraform으로 하나씩 전환을 진행했습니다. 그중 한 번은 기록을 남기는 게 좋다는 생각이 들었고, 마지막으로 남아있는 ECR 저장소를 Infrastructure as Code로 전환하며 글을 남기기로 했습니다.Terraformer를 사용하지 않은 이유고민했던 포인트창업 단계의 스타트업이라 AWS Resource 개수가 많지 않았고, 모두 파악이 가능했습니다.예를 들어 ECR 저장소는 2개밖에 되지 않았습니다.AWS CLI 학습 기회라고 생각했습니다.1. Terraform 준비도구 설치 확인# AWS CLI 버전 확인~ aws --versionaws-cli/2.25.13 Python/3.12.9 Darw..
EC2환경에서의 무중단 배포, ubuntu nginx setup 기록
·
Server/Infra
EC2 환경에서 Nginx 무중단 배포 설정기존에 배포되어 있는 서비스들은 모두 EC2에 직접 jar 파일을 배포하는 방식으로, 중단 배포를 진행하고 있었습니다.이러한 문제를 해결하기 위해서 신규 서버부터는 Docker, Nginx를 활용하여 무중단 배포 환경을 구축하려고 합니다.ECS를 활용하면 더 편리하고, 가용성 있는 환경을 구축할 수 있겠지만, 스타트업의 특성상 MVP 서비스를 위해 ECS의 비용을 지출하는 것이 과한 소비라고 판단했습니다.추후에 다시 Nginx를 구축해야 하는 일이 발생할 수 있기 때문에, 이에 대한 글을 작성해놓으려고 합니다.ubuntu 환경Nginx 설치 및 서비스 활성화먼저 패키지 저장소 업데이트를 진행합니다.sudo apt-get update -qq이후, Nginx를 설치..
멱등성을 위한 테스트 (feat. 복합 유니크 설정)
·
Basic/Database
멱등성이란 동일한 연산을 여러 번 수행해도 결과가 달라지지 않는 성질을 의미합니다. 데이터 파이프라인에서 동일한 작업을 여러 번 수행해도 결과가 변하지 않는 멱등성(Idempotency)을 고려하며 개발을 진행해야 합니다. 예를 들어, API 호출이나 파일 처리로 데이터베이스에 데이터를 삽입할 때, 동일한 요청을 반복해도 중복 데이터가 추가되거나 기존 데이터가 변경되어서는 안 됩니다. 이를 위해 다양한 방식이 존재하지만, 이번에는 데이터베이스를 사용하여 여러 방법을 테스트하고 이에 따른 결과가 어떻게 되었는지 공유해보려고 합니다.1. 실험 환경 및 설계환경서버: Apple OS, M2 Pro, 16GB MemoryS/W 버전: Spring Boot, PostgreSQL, JdbcTemplate데이터 스키..
데이터베이스 복합 인덱스 설정에 대하여
·
Basic/Database
데이터베이스의 성능 최적화를 위하여, 가장 유용한 요소는 "인덱싱"으로 조회시 여러 컬럼을 조건으로 필터링 하기 때문에, 해당 조건에 해당하는 컬럼을 묶어 생성하는 "복합 인덱스"는 다중 조건 쿼리의 성능을 향상시킨다. 복합 인덱스란, 여러 컬럼을 인덱스에 저장하는 것을 뜻하는데, 이를 설정할 때 컬럼의 순서에 따라서도 성능에 유의미한 결과를 낳는다고 한다.`Leftmost Prefix Principle`라고 불리는, 왼쪽 순서에 들어가는 컬럼일수록 우선순위를 갖는다고 보면 될 것 같다.(A, B) 라는 열에 인덱스를 생성하면 인덱스는 먼저 A열 기준으로 정렬되고, A의 각 값 내에서는 B열 기준으로 정렬된다.하지만, B만 조건으로 검색하고 인덱스는 (A, B)를 진행할 경우 A를 건너 뛴 B에 대한 인..
코드플리
코드 플레이 리스트