- 프로젝트 명: 크립토톡(CryptoTalk)
- 개발 인원: 1명
- 개발 기간: 2024년 12월 09일 ~ 2025년 01월 10일
- 주요 기능
- 카카오 Oauth2.0 로그인
- 가상화폐 가격 알림 서비스
- 가상화폐 지정 및 알림 가격 설정
- 실시간(또는 주기적) 가격 확인 후 알림 발송(카카오톡 메시지 활용)
- 프론트엔드:
- Thymeleaf
- Bootstrap
- 백엔드:
- Java 17
- Spring Boot 3.3.6
- 데이터베이스: MySQL 8.0
- 빌드 도구: Gradle
- 형상관리: Git
- 가상화폐 알림 전송 등록
- A. 가상화폐를 지정하고, 알림을 받을 희망하는 가격대 입력
- B. 알림 가격 설정 완료 시, 가격 도달 시점에 카카오톡으로 알림 전송
고민: 외부 API(예: 업비트)를 매번 실시간 호출할지, 혹은 일정 주기로 DB에 저장할지 결정이 필요. 실시간 API 호출 시 데이터는 최신이지만, 트래픽 증가 시 API Rate Limit에 걸릴 우려가 있음
해결:
- 주기적으로 데이터를 수집하여 DB에 저장하고, 서비스 로직은 DB 조회를 통해 시세를 가져옴
- 데이터가 100% 실시간은 아니지만, 이력 관리와 API Rate Limit 완화를 동시에 달성
- 모든 마켓 정보를 한 번에 가져오면 응답 데이터가 커서
DataBufferLimitException이 발생 - 원화 마켓만 우선 가져오도록 수정하여 문제 해결
고민:
- 비밀번호는 해시(단방향) 암호화를 사용
- 개인정보(예: 전화번호)는 복호화가 가능한 양방향 암호화 필요 → AES 알고리즘 사용
문제: AES 암호화 키를 하드코딩하면 보안 취약점 발생. 키를 애플리케이션 실행 시마다 임의 생성하면, 이전에 암호화된 데이터 복호화 불가
해결:
- 로컬 환경: 키를 환경 변수에 저장 후 애플리케이션 시작 시 로드
- 배포(클라우드) 환경: AWS Secrets Manager 등을 통해 키를 안전하게 관리
문제: Spring Security와 카카오 OAuth2 연동 과정에서 무한 리디렉션 발생.
인증 완료 후 redirect_uri 형식이 표준과 맞지 않아 인증이 실패하고 재시도 → 무한 루프
해결: Spring Security에서 요구하는 redirect_uri 형식을 준수하도록 수정.
공식 문서를 참고하여 표준 인증 흐름을 따르도록 재설정 → 문제 해결