[오늘가챠] 성능 끌어올리기: CompletableFuture를 이용한 병렬 처리
·
◈ Yermi Project/오늘가챠🃏
유저가 사진을 촬영하고 업로드할 때, 백엔드에서는 크게 2가지 무거운 작업이 일어납니다.Cloudinary 서버로 원본 이미지 전송 (수 초 소요)GPS 위경도를 한글 지명으로 변환하는 Reverse Geocoding API 호출 (수 초 소요)이 두 가지 작업을 순차적으로 실행하면 유저는 화면이 멈춘 채로 10초 가까이 기다려야 합니다. 이를 해결하기 위해 자바의 CompletableFuture를 도입한 경험입니다.1. 기존 방식의 문제점 (순차 실행) I/O 바운드 작업들이 직렬로 연결되어 유저 경험(UX)을 심각하게 훼손하고 있었습니다. // 기존의 느린 코드 (직렬 실행)String imageUrl = cloudinaryClient.upload(request.file().getBytes()); /..
[오늘가챠] 프로젝트 오버뷰: 왜 이 스택을 선택했는가?
·
◈ Yermi Project/오늘가챠🃏
'오늘가챠'는 유저가 찍은 평범한 일상 사진을 화려한 TCG(Trading Card Game) 카드로 만들어주는 서비스입니다.단순한 이미지 업로드 게시판을 넘어서, 유저 간의 수집욕을 자극하고 실시간으로 카드를 뽑는 경험을 제공하는 것이 핵심 기획이었습니다. 이를 구현하기 위해 비용을 0원에 가깝게 유지하면서도 안정적이고 빠른 서비스를 제공할 수 있는 아키텍처 설계가 필요했습니다. 1. 기획의 제약 사항과 인프라의 조건1인 개발로 진행되는 사이드 프로젝트 특성상 다음과 같은 뚜렷한 제약 사항이 있었습니다.무자본 (비용 최적화): AWS EC2, RDS, S3를 깡통으로 세팅하면 월 최소 수만 원의 고정 비용이 발생합니다. 트래픽이 보장되지 않은 상태에서 이는 큰 부담입니다.개발 속도: 인프라 설정(Ngi..