회고록 - CRUD 게시판+ 인기 게시판 조회 서비스(redis적용)

Seoyeon·2025년 7월 8일

회고록

목록 보기
1/5

프로젝트 개요

  • 프로젝트 명: CRUD 게시판+ 인기 게시판 조회 서비스(redis적용)
  • 진행 기간: 2025.06.22-2025.07.06
  • 사용 기술 스택: Spring Boot, Spring Data JPA, MySQL, Docker, AWS EC2, GitHub Actions
  • 간단 설명:
    • (예: 관리자 전용 ASMR 생성 API 서버 개발)
    • CRUD 기능이 포함된 게시판을 구현하고, 게시글 조회 시 작성시간과 조회수가 기록되며 조회할 때마다 조회수가 증가하도록 구현함.
    • Redis 캐시를 활용해 조회수 기준 상위 5개 게시글을 /api/posts/popular 엔드포인트를 통해 빠르게 조회할 수 있도록 구성함.

주요 기능

  • 회원가입 / 로그인 (JWT)
  • 인증/인가 처리
  • CRUD 기능 (예: 게시글, 상품 등)
  • 관리자 기능
  • 외부 API 연동 (예: GPT, SUNO)
  • Swagger 연동
  • CI/CD (GitHub Actions → EC2)
  • Docker + HTTPS 배포
  • 기타:

프로젝트 구조

📦project-root
 ┣ 📂domain              (Post)
 ┣ 📂dto                 (PostForm)
 ┣ 📂controller          (PostApiController, RootController)
 ┣ 📂service             (PostService)
 ┣ 📂repository          (PostRepository)
 ┣ 📂config              (RedisConfig)
 ┗ 📜Application.java    SpringBootApplication 시작점

트러블슈팅 & 기술 이슈

1. 이슈 제목 (500 오류 발생)

  • 현상: https://도메인/api/posts는 접속되는데 https://도메인/api/posts/popular는 접속 안됌
  • 원인 분석: SPRING_DATA_REDIS_HOST이게 localhost 로 되어있었는데
  • 해결 방법: docker에서는 Localhost가 자기 컨테이너를 의미하기 때문에 이미지 밖에 있는 localhost redis를 사용하려면 ip주소로 변경하거나 host.docker.internal 로 사용해야 하였음

2. 이슈 제목(/health 적용 안됨)

  • 현상:
    ALB(또는 헬스 체크 시스템)에서 http://도메인:8080/ 에 GET 요청을 보내 헬스 체크를 시도
  • 원인 분석: ALB에서 설정한 헬스 체크 경로는 루트(/)라 하지만 초기 Spring Boot 프로젝트에는 해당 경로를 처리하는 컨트롤러가 없어 404 오류가 발생했고, 그로 인해 인스턴스가 unhealthy 상태로 판별되어 https적용 안되었었다.
  • 해결 방법: 루트 경로에 헬스 체크용 컨트롤러(/health) 추가

아쉬웠던 점

  • 같은 오류가 반복될때 초반에는 그냥 매번 검색하느랴 시간 소요가 많이 되었었다…다음에는 정리해두고 자주 발생되는 오류는 빠르게 해결할수있도록 하면 개발 속도가 확 단축될것같다.

좋았던 점 & 성장 포인트

  • 배포를 배우고 혼자 스스로한 처음 프로젝트라 배포에 감 잡고 실전에 한걸음 다가갈수있었던것같습니다.그리고 배포가 가능하구나 하는 자신감도 아주 조금은 생긴것같았고, 오류 대처법 및 배포에 보다 익숙해진것같아서 이 프로젝트를 통해 크게 성장할수있었던것같습니다.

다음 프로젝트에 적용할 것들

  • 게시글 작성/삭제 권한 …추가 가능하다면
  • 혹은 과제2 스케줄링: 게시글 자동 백업 (.csv)이거 적용해서 해보기?

화면 예시 or Swagger 캡처

이미지 첨부 or Swagger 주소

https://backendteamb.site/api/posts/popular


회고 한 줄 요약

예: 이번 프로젝트를 통해 실전 백엔드 개발과 배포의 전체 흐름을 처음부터 끝까지 경험할 수 있었다.

이번 프로젝트를 통해 실전 백엔드 개발시 기획자가 배우지않은 기술을 요구했을때, 새로운 기술을 배우고 적용이 마냥 불가능하지는 않겠구나를 깨닫게 된 프로젝트 같습니다.

0개의 댓글