본문으로 바로가기
Portfolio
홈으로
backend2025.05 ~ 2025.07

Newgnal Backend

뉴스 데이터를 수집·분석하고 모바일 앱에 제공하는 Spring Boot 기반 백엔드 시스템입니다. 인증, 게시글/댓글, 좋아요, 신고, 크롤링 및 분석 서비스 연동까지 담당했습니다.

담당 역할: 게시글, 댓글, 대댓글, 좋아요, 신고 기능의 API 설계 및 구현을 담당했습니다. 인증 구조 연동, 응답 DTO 개선, 예외 처리, Docker 기반 실행 환경 이해와 배포 구조 파악에도 참여했습니다.

GitHubSlides
// 아키텍처
아키텍처 구성도

React Native 기반 모바일 앱의 요청을 Spring Boot 백엔드가 처리하고, OAuth2 + JWT + Spring Security 기반 인증, Redis/MySQL 데이터 처리, 뉴스 크롤링 스케줄러와 분석 서비스 연동 구조로 구성했습니다.

설계 근거

인증, API, 스케줄링을 Spring Boot 중심으로 통합해 개발 생산성과 유지보수성을 확보했습니다. Redis와 MySQL을 분리해 빠른 접근과 영속 데이터 저장 역할을 분담했고, 크롤링과 분석 기능을 분리해 기능 확장성과 책임 분리를 확보했습니다. Docker Compose를 통해 실행 환경을 통일하고 배포 재현성을 확보했습니다.

// 기술 스택
Spring BootREST API 및 전체 백엔드 애플리케이션 구현

인증, 데이터 접근, 예외 처리, 구조화된 서버 개발에 적합하며 팀 전체가 익숙한 생태계였기 때문에 선택했습니다.

Spring Security / OAuth2 / JWT로그인 및 인증/인가 처리

토큰 기반 인증 구조를 안정적으로 구현할 수 있고, Spring Boot와의 통합이 자연스러워 선택했습니다.

JPA / MySQL게시글, 댓글, 신고 등 핵심 데이터 저장

관계형 데이터 모델링과 CRUD 개발에 적합하고, 데이터 간 연관관계를 명확하게 표현할 수 있어 선택했습니다.

Redis빠른 데이터 접근 보조

DB 부하를 줄이고 응답 성능을 보완하기 위해 사용했습니다. 인메모리 특성상 자주 조회되는 데이터 캐싱에 적합했습니다.

Selenium + Scheduler뉴스 크롤링 자동화

주기적인 데이터 수집 작업을 사용자 요청과 분리하기 위해 스케줄러 기반으로 구성했습니다.

Docker Compose개발/배포 실행 환경 통일

팀원 간 환경 차이로 인한 오류를 줄이고 재현 가능한 실행 환경을 만들기 위해 사용했습니다.

GitHub Actions빌드 및 배포 자동화

수동 배포를 줄이고 반복 가능한 배포 흐름을 만들기 위해 도입했습니다.

// 문제 해결 경험
이슈
팀원별 개발환경 차이로 인해 같은 코드도 실행 결과가 다르게 나오는 문제가 자주 발생했습니다.
분석
문제의 원인은 기능 코드 자체보다 Java 버전, 의존성, 실행 방식 차이 등 환경 불일치에 있었습니다.
해결
Docker를 단순 배포 도구가 아니라 개발환경을 표준화하는 도구로 보고 실행 환경을 통일하는 방향으로 접근했습니다. Docker Compose로 전체 스택의 실행 환경을 코드로 정의해 팀 전체가 동일한 환경에서 개발하도록 기준을 세웠습니다.
결과
환경 차이로 인한 오류를 줄이는 기준을 세울 수 있었고, 협업에서 실행 환경 통일의 중요성을 체감했습니다.
// 회고

개선점

게시글, 댓글, 좋아요, 신고 등 커뮤니티 핵심 기능을 안정적으로 구현했고, 뉴스 크롤링 및 분석 서비스 연동 구조를 통해 단순 CRUD를 넘어선 백엔드 아키텍처를 경험했습니다.

아쉬운 점

초반에는 Docker를 배포용으로만 생각해 개발환경 통일에 적극적으로 활용하지 못했고, 그 결과 환경 차이로 인한 오류 대응에 시간이 많이 들었습니다.

향후 방향

서비스 규모가 커진다면 크롤링, 분석, API 서버를 더 분리하고, 비동기 처리, 캐시 전략 고도화, 모니터링 체계 강화까지 확장할 계획입니다.