1. 프로젝트 개요: 왜 만들었는가?

MMORPG 유저들에게 '일일/주간 숙제(퀘스트)' 관리는 필수적이지만 번거로운 일입니다. 단순히 체크리스트를 제공하는 것을 넘어, 공식 홈페이지의 데이터와 AI 요약 기술을 결합하여 유저의 편의성을 극대화하는 것을 목표로 프로젝트를 시작했습니다.

2. 전체 아키텍처 및 기술 스택

정적 파일(React)과 API 서버(Spring Boot)를 분리하여 확장성과 보안을 동시에 챙겼습니다.

  • Backend: Java 17, Spring Boot 3.3, Spring Data JPA
  • Security: Spring Security (JWT + OAuth2)
  • Database: MariaDB 10.11 (RDS)
  • Infrastructure: AWS (EC2, S3, CloudFront, SSM, CodeDeploy)
  • External API: Claude API (LLM), Jsoup (Crawling)

3. 핵심 기술 포인트 (Deep Dive)

① Jsoup을 활용한 신뢰성 있는 캐릭터 인증

단순히 아이디만 입력하는 방식은 타인의 캐릭터를 사칭할 위험이 있습니다. 이를 해결하기 위해 공식 홈페이지의 특정 게시글에 댓글을 작성하게 하고, 서버에서 Jsoup으로 이를 크롤링하여 소유권을 검증하는 로직을 구현했습니다. 외부 웹 데이터의 정적 분석을 통해 보안성을 높인 시도였습니다.

② Claude API 기반 공지사항 자동 요약 시스템

게임 공지사항은 길고 가독성이 떨어지는 경우가 많습니다. 3시간마다 크롤링한 데이터를 **Claude API (Haiku 모델)**에 전달하여 핵심 내용만 3줄로 자동 요약해 제공합니다. 최신 LLM 기술을 서비스 로직에 자연스럽게 녹여낸 기능입니다.

③ 스케줄링을 활용한 데이터 무결성 관리

게임의 정기 점검 시간(매주 수요일 오전 5시)에 맞춰 퀘스트 진행률이 초기화되어야 합니다. Spring의 @Scheduled 기능을 활용하여 서버 부하를 최소화하면서도 정확한 시점에 데이터 초기화가 이루어지도록 설계했습니다.


4. 인프라 및 운영 효율화

  • CI/CD 파이프라인: GitHub Actions와 AWS CodeDeploy를 연동하여 코드 수정부터 배포까지의 과정을 자동화했습니다. 이를 통해 개발 생산성을 크게 향상시켰습니다.
  • 보안 관리: DB 접속 정보나 API 키와 같은 민감한 설정값은 application.yml에 직접 노출하지 않고, AWS SSM Parameter Store를 통해 주입받아 보안 사고를 방지했습니다.
  • 비용 및 성능 최적화: EC2 t4g(Graviton2) 인스턴스를 활용하여 성능 대비 비용 효율을 극대화했습니다.

5. 기술적 도전과 해결

프로젝트 진행 중 CORS 문제OAuth2 인증 흐름에서 발생한 토큰 전달 이슈가 가장 큰 고민이었습니다.

  • 해결: React와 Spring Boot 사이의 보안 필터를 조정하고, CloudFront를 통해 도메인을 통합하거나 적절한 Proxy 설정을 통해 문제를 해결했습니다.
  • 또한, 백엔드 개발자로서 도메인 중심의 설계를 지향하며 각 서비스 계층이 명확한 책임(Responsibility)을 갖도록 리팩토링하는 과정에 공을 들였습니다.

6. 마무리하며

이번 프로젝트는 단순히 기능을 구현하는 것을 넘어, 사용자가 정말 필요로 하는 기능이 무엇인지 고민하고 이를 기술적으로 구현해 보는 귀중한 경험이었습니다. 특히 외부 API와의 연동 및 AWS를 활용한 안정적인 배포 경험은 실제 운영 가능한 서비스를 구축하는 데 큰 자산이 되었습니다.

더 자세한 코드는 저의 GitHub 레포지토리에서 확인하실 수 있습니다.

📌 GitHub Link: https://github.com/wjsskagur/AION2_QuestCheck

반응형

+ Recent posts