Redis 캐싱 도입기: 예상과 다른 결과와 문제 해결 과정 (151 → 146 TPS)
·
Jungle
캐싱을 도입하면 당연히 성능이 향상될 거라고 생각했는데, 실제로는 TPS가 151에서 146으로 오히려 떨어지는 예상치 못한 결과를 마주했다. 이번 포스트에서는 Redis 캐싱 도입 과정에서 겪은 문제들과 해결 과정을 솔직하게 공유해보려고 한다.🎯 캐싱 도입 목표기존 문제점상품 상세 정보 조회(ProductService.getProductDetail) 같은 자주 호출되는 API가 매번 데이터베이스를 조회불필요한 DB 부하 발생응답 속도 저하예상 효과DB 조회 횟수 감소로 응답 시간 단축서버 리소스 절약전체적인 TPS 향상하지만 현실은 예상과 달랐다...🔧 Redis 캐싱 구현1. 캐시 설정 구성CacheConfig.java 생성@Configuration@EnableCachingpublic class ..
TIO 성능 테스트: EC2 업그레이드로 144 TPS 달성하기
·
Jungle
TIO 성능 테스트: EC2 업그레이드로 144 TPS 달성하기TPS가 뭔가요?TPS(Transactions Per Second)와 RPS(Requests Per Second)를 헷갈리기 쉬운데, 간단히 설명하면:RPS: HTTP 요청 수 (기술적 관점)TPS: 비즈니스 트랜잭션 수 (사용자 관점)실제로는: 1명의 사용자가 쇼핑하면 여러 개의 HTTP 요청이 발생예를 들어, 70 TPS = 초당 70명이 쇼핑 완료, 269 RPS = 초당 269개의 HTTP 요청 처리기존 테스트와 뭐가 다른가?기존 테스트 (사용자 여정 중심)// 40명이 동시에 접속해서 22분간 쇼핑scenarios: { default: { executor: 'constant-vus', vus: 40, /..
AWS의 인프라 구조(Regions, AZ, LZ, PoP/ EdgeLocations)
·
AWS
지금은 없어진 지도이지만, AWS의 인프라 스트럭쳐를 가장 잘 보여주는 이 미지이다.Regions 빌더 계정의 콘솔 상단을 눌러보면 리전의 리스트가 나온다.(보이는게 전부가 아니다)현재 (25년 8월) 기준, AWS는 37개의 리전을 운영중이다.리전은 각각 고유한 이름을 가지고있는데, (ex. 서울: ap-northeast-2) 이 러한 고유명칭은 코드에서 활용된다.그럼 이 리전은 뭘까?결론만 말하자면, 데이터센터를 클러스터링 한 지역이다.기본적으로 AWS는 리전 범위로 서비스가 제공된다.한 리전에서 서비스를 구축하고 다른 리전에서 서비스를 구축하려고 시도한다면 새롭게 서비스를 시작하는 것과 같다.리전의 선택 조건만일 서비스를 새로 하려면 어떤 기준으로 어디의 리전을 선택할 것인가? 미국? 유럽? 아..
이미지 트러블슈팅 완전정복: S3 리전 오류, Mixed Content, Next.js 최적화
·
Jungle
🚨 문제 상황 개요CSS와 HTML 404 문제를 해결하고 나니, 이번엔 새로운 문제들이 나를 반겼다. 이미지 관련 문제들이 연쇄적으로 발생하면서 하루 종일 삽질을 하게 되었다.주요 오류들:/_next/image?url=...&w=1920&q=75 → 400 Bad Request/api/home/products → 404 Not Found/api/avatars/latest-info → 404 Not FoundMixed Content 보안 오류분명히 모든 설정을 다 했는데 왜 이런 일이 생기는 걸까? 시간 순서대로 문제들을 하나씩 해결해보자.🔍 1단계: S3 리전 오류 문제문제 발견브라우저 개발자 도구를 보니 이런 요청이 실패하고 있었다:/_next/image?url=https%3A%2F%2Ftio-i..
프론트엔드 인프라 트러블슈팅(Tailwind CSS import 문법 오류, CSS 파일 해시 불일치, CloudFront DefaultRootObject 설정)
·
Jungle
현상CSS 파일을 전혀 인식하지 못하는 듯한 모습분석시도 (수동으로 빌드해보기)EC2 내부에서 git pull 받아와 수동으로 npm build 수행함원인globals.css 파일의 @import 문 형식 오류.Tailwind CSS의 버전이 3.x → 4.0으로 올라가면서, build를 위한 import문이 저렇게 구분해서 정리하는게 아닌 @tailwindcss 이렇게 하나만 적어주면 된다고 한다.수정하고 빌드했을 때,0바이트 짜리의 CSS 파일은 사라지고, 정상 배포되는 모습을 확인했다.CloudFront의 캐싱도 무효화 처리해준다아직도실제로 있는 CSS 파일은 6273f2f26c30c4e1.css, ed4700d621702d51.css 두 파일 이나, 아직도 서버에서는 0f6b13800efcb7a3..
Spring 서버 AWS 인프라 트러블슈팅: Secrets Manager 연동 및 보안 그룹 최적화
·
Jungle
🚨 문제 상황 요약발생 시간: 2025년 7월 2일 새벽 3시 ~ 오전 9시 (총 6시간)주요 증상: Spring Boot 애플리케이션 시작 실패, EC2 인스턴스 무한 재시작근본 원인: AWS Secrets Manager 접근 권한 부족 및 보안 그룹 설정 혼재새벽 3시부터 9시까지의 사투 기록... 정신없이 조치하느라 모든 과정을 기록하지는 못했지만, 기억나는 대로 정리해보았다.📋 발단: 개발 환경 구성 중 발생한 이슈초기 상황목적: 프론트엔드 개발을 위해 각 팀원이 로컬에서 서버 DB에 접근할 수 있도록 환경 구성방법: SSM 포트포워딩을 통해 AWS RDS를 온프레미스 MySQL처럼 사용문제 발생: 새벽 2~3시경 현아로부터 "Spring 부팅 속도가 느려지고 가끔 끊긴다"는 이슈 접수초기 진..
FrontEnd 마이그레이션(CDN → SSR, Amplify 시도 but 결국 EC2)
·
Jungle
📊 현재 구현 상태현재 Next.js 설정 분석:• Next.js 15.3.4 사용 (최신 버전)• 클라이언트 사이드 렌더링(CSR) 위주• API 호출: axios + @tanstack/react-query• 환경변수: NEXT_PUBLIC_API_URL (클라이언트 노출)⚡ SSR 마이그레이션이 필요한 이유기존 프론트엔드 CI/CD (CSR 전용): GitHub Push → Next.js Build (정적) → S3 업로드 → CloudFront 무효화문제점:• ❌ SSR 불가능: output: 'export' 설정으로 정적 파일만 생성• ❌ SEO 제한: 검색엔진이 빈 페이지만 크롤링• ❌ 초기 로딩 느림: JavaScript 다운로드 후 렌더링• ❌ 소셜 공유 제한: 동적 메타태그 불가1. SE..
RDS 인스턴스 업그레이드(DB Connection Error)
·
Jungle
배경저 연결 제한이 60인데, 실제 팀원들이 포트포워딩을 통한 연결로 개발을 하다보니 툭하면 제한을 넘어가서 connection error 로 연결이 끊기는 상황이 발생하기 시작함.15,406개의 제품 이미지를 외부 URL에서 S3로 마이그레이션하는 작업을 진행하던 중, 심각한 성능 문제에 직면했습니다. 각 제품마다 최대 5개의 이미지(img1~img5)를 처리해야 하는 대규모작업이었습니다.발생한 문제들1. MySQL 연결 수 한계 도달sql-- SHOW PROCESSLIST 결과'10631','admin','10.0.167.55:35642','tryiton_db','Query','711','Waiting for table metadata lock''10746','admin','10.0.167.55:43..
S3 / CloudFront AccessDenied 문제 해결 (URL 리라이팅, CloudFront function)
·
Jungle
문제점: 링크를 직접 입력해서 이동 시도하면 AccessDenied메인에서 마이페이지(/mypage)나, 제품을 눌러 상세페이지(/details)로 이동하면 정상적으로 보이나, 주소창에 직접 입력해서 이동을 시도하면 위의 사진이 노출됨.실제 파일이 있는데 AccessDenied가 뜨는 원인1. S3 버킷 권한 문제파일은 존재하지만 퍼블릭 읽기 권한이 없음버킷 정책이나 객체 ACL 설정 문제2. S3 버킷 정책 확인{ "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::tio-frontend-assets-jungle8t..
파이썬 인스턴스 스펙(인스턴스 유형, 스토리지) 변경하기
·
Jungle
기존까지 인프라 구축하는동안에는 모델을 돌리기위한 환경 스펙이 어느정도가 되는지 몰라서 일단 프리티어 기준으로 t2.micro, 8GiB의 EC2 환경설정 토대만 만들어놨었다.팀장인 성광이가 모델 올릴 준비가 되었다고 해서 원하는 인스턴스 유형과, 용량을 맞춰서 기존 EC2를 갈아끼우려고한다.전체 과정 요약:인스턴스 중지 (인스턴스 유형 변경 시에만 필요)인스턴스 유형 변경EBS 볼륨 크기 확장인스턴스 시작파일시스템 확장1. 롤링 업데이트 방식 (무중단)bash# 1단계: 첫 번째 인스턴스 중지 및 변경aws ec2 stop-instances --instance-ids i-첫번째인스턴스ID --region ap-northeast-2# 인스턴스 유형 변경aws ec2 modify-instance-attri..