-
2차 프로젝트: GameLog - 전체 기능 점검
로컬 환경에서 전체 기능 점검기능 구현이 대부분 완료된 이후, 바로 배포 환경만 확인하기보다는 먼저 각자 로컬 환경에서 전체 기능을 직접 사용하면서 문제를 찾아보는 시간을 가졌다.개발 과정에서는 각자 맡은 기능을 중심으로 테스트했기 때문에, 서비스 전체를 처음부터 끝까지 사용해보면서 다른 기능과 연결했을 때 발생하는 문제를 확인할 필요가 있었다.팀원들이 각자 회원가입부터 온보딩, 게임 기록, 리뷰, 프로필, Friends 등 전체 기능을 직접 사용해보면서 여러 UI 및 기능상의 개선점을 발견했다.발견한 문제와 개선 사항회원가입이메일 중복 확인 과정에서 이메일 형식이 아닌 값도 확인할 수 있는 문제가 있었다. 이메일 형식에 대한 검증을 추가할 필요가 있었다.또한 잘못된 이메일 형식을 입력했을 때 Email..
2026.09.23
-
2차 프로젝트: GameLog - 프로필 기능 개선
이번에는 기존에 구현했던 내 프로필을 확장해 다른 사용자의 프로필도 조회할 수 있도록 개선했다. 처음에는 단순히 다른 사용자의 프로필을 보여주는 기능이라고 생각했지만, 실제로 구현해보니 인증 사용자와 조회 대상 사용자를 구분해야 하는 부분이 많아 생각보다 작업 범위가 컸다.1. 내 프로필과 타인 프로필 구분처음에는 내 프로필과 다른 사용자의 프로필을 동일한 페이지에서 처리하려고 했다. 하지만 이렇게 구현하면 다른 사람의 프로필을 조회했을 때도 프로필 수정 버튼이 노출될 수 있는 문제가 있었다.이를 해결하기 위해 /profile은 내 프로필, /profile/{userId}는 특정 사용자의 프로필을 조회하는 방식으로 구분하고, 하나의 ProfilePage에서 두 경우를 처리하도록 구조를 정리했다.또한 us..
2026.09.23
-
2차 프로젝트: GameLog - 프로필 탭 API 구현
사용자 게임 활동을 하나의 데이터로 보여주기게임 기록 서비스의 프로필 탭 API를 구현하였다.단순히 사용자의 정보를 조회하는 것이 아니라, 게임 플레이 기록과 리뷰 데이터를 조합하여 사용자의 게임 취향과 활동을 보여주는 것을 목표로 했다. 프로필 탭에서 사용자의 게임 활동을 한눈에 확인할 수 있도록 다음 정보를 제공하는 API를 구현하였다. 인생게임 5개플레이한 게임 수평균 리뷰 평점총 플레이 시간게임별 플레이 시간과 평점을 보여주는 산점도사용자의 게임 취향 요약장르별 플레이 비율최근 플레이한 게임 5개최근 작성한 리뷰 3개최종적으로 하나의 프로필 API에서 필요한 데이터를 조합하여 반환하도록 구현하였다.GET /users/me/profile1. 어떤 데이터를 보여줄지 정의프로필 화면을 구성하면서 가장 ..
2026.09.21
-
2차 프로젝트: GameLog - RailWay 배포 과정에서의 문제와 해결
1. Railway 배포 후 서버가 Online 상태에서 Crashed 되는 문제처음 Railway에 Spring Boot 애플리케이션을 배포했을 때 잠시 Online 상태가 되었지만 이후 Crashed 상태로 변경되는 문제가 발생했다.로컬에서는 Docker로 실행한 MySQL을 사용하고 있었기 때문에, 배포 환경에서도 로컬 DB 설정을 그대로 사용할 수 없었다.기존 로컬 환경에서는 다음과 같이 localhost의 MySQL을 사용하고 있었다. spring: datasource: url: jdbc:mysql://localhost:3306/gamelog 하지만 Railway에서 실행되는 애플리케이션의 localhost는 로컬 컴퓨터의 MySQL을 의미하지 않는다.따라서 Railway 프로젝트에 My..
2026.09.18
-
2차 프로젝트: GameLog - HTTP Method 설계와 테스트
1. 문제 상황게임 라이브러리에서 사용자의 게임 상태를 변경하는 API를 구현하면서 HTTP Method를 어떻게 결정할지 고민하였다.UserGame에는 다음과 같은 상태가 존재한다.플레이 상태 (PlayStatus)플레이 중 (playing)백로그 (backlog)위시리스트 (wishlist)좋아요 (liked)처음에는 상태 변경이라는 이유로 모든 API를 POST로 구현하였다.POST /games/{gameId}/play-statusPOST /games/{gameId}/playingPOST /games/{gameId}/wishlistPOST /games/{gameId}/backlogPOST /games/{gameId}/liked하지만 단순히 "상태를 변경한다"는 이유만으로 POST를 사용하는 것이 적..
2026.09.17
-
2차 프로젝트: GameLog 3일차 - 403 오류
문제 상황Postman에서 로그인 후 발급받은 accessToken을 사용해 유저 게임 라이브러리 추가 API를 호출했지만 403 Forbidden 오류가 발생했다. 다른 API는 정상적으로 동작하는 상황이었다.확인 과정SecurityConfig 확인해당 API가 인증이 필요한 API인지 확인했다..anyRequest().authenticated()로 설정되어 있어 로그인된 사용자만 접근할 수 있는 구조임을 확인했다.Controller에서 인증 사용자 확인@AuthenticationPrincipal SecurityUser user가 정상적으로 주입되는지 확인하기 위해 user를 출력했다.user가 출력되지 않아 JWT 인증 과정에 문제가 있다고 판단했다.JWT 인증 필터 확인JwtAuthenticatio..
2026.09.16
-
2차 프로젝트: GameLog 2일차
UserGame 설계 과정 — 데이터 생명주기와 책임 범위 고민게임 라이브러리와 리뷰 기능을 구현하면서 UserGame을 어떻게 관리할지 고민했다.단순히 게임을 라이브러리에 등록하고 상태를 변경하는 정도로 생각했지만, 리뷰 작성 기능까지 연결하면서 UserGame의 생성·수정·삭제 시점과 각 기능의 책임 범위를 명확하게 정할 필요가 있었다.1. 리뷰 작성과 게임 등록의 책임이 겹치는 문제팀원별로 기능을 나누어 구현하고 있었는데, 리뷰 작성 기능에서도 플레이 상태나 플레이 기록을 수정해야 했다.예를 들어 리뷰를 작성하면서 플랫폼이나 플레이 시간, 플레이 상태를 함께 입력할 수 있다.그렇다면 리뷰를 담당하는 팀원이 UserGameRepository나 UserGame을 직접 수정해야 하는데, 이렇게 되면 게임..
2026.09.15
-
2차 프로젝트: GameLog 1일차
GameLog 프로젝트 시작이번 프로젝트에서는 게임 기록 및 리뷰 서비스 GameLog를 개발한다.GameLog는 여러 플랫폼에서 플레이한 게임을 한곳에 기록하고, 플레이 경험과 리뷰 데이터를 바탕으로 나만의 게임 라이브러리를 만들고 새로운 게임을 추천받을 수 있는 서비스이다.한 게임의 기록이, 다음 인생 게임을 찾는다. 1. 문제 탐색 및 정의어떤 문제를 해결하려는가?게임을 여러 플랫폼에서 플레이하다 보면 내가 어떤 게임을 플레이했는지, 어떤 게임을 완료했는지 기록이 분산되는 문제가 있다.Steam, PlayStation, Nintendo 등 각 플랫폼에서는 자신의 게임 목록을 확인할 수 있지만, 여러 플랫폼에서 플레이한 게임 기록을 한곳에서 관리하기는 어렵다.또한 새로운 게임을 선택할 때도 수많은 게..
2026.09.14
-
백엔드 데브코스 12기 45일차
오전에는 개발자 글쓰기 특강을 들었다. 이력서, 포트폴리오, 블로그 등을 작성할 때 어떤 내용을 중심으로 작성하면 좋은지 배웠다.특히 프로젝트를 진행하면서 블로그에 글을 작성할 때, 단순히 어떤 기능을 구현했는지만 적는 것이 아니라 어떤 문제를 직면했고, 그 문제를 어떻게 해결했으며, 이후 어떻게 개선하고 발전시켰는지 성장 과정을 자세하게 기록하는 것이 좋다고 하셨다.지금까지는 프로젝트에서 구현한 기능이나 배운 내용을 중심으로 작성했다면, 이번 2차 프로젝트에서는 문제를 해결해 나가는 과정까지 좀 더 자세하게 기록해보려고 한다. 나중에 다시 봤을 때 내가 어떻게 성장했는지 확인할 수 있도록 기록을 남기는 것이 목표이다. 오후에는 2시간 동안 알고리즘 시험을 보고, 이후 3시간 동안 Web 시험을 봤다.알..
2026.09.12