오늘 한 일
- url 및 스키마 수정
- API 명세서 작성
- 자료구조 수업 (graph)
- global cors 설정 후 재배포
- 팀 README 작성
- 프로젝트 come & see 활동
느낀 점
🧩 프로젝트
- 프론트에서 중복 url이 발생할 것 같다고 하셔서 수정하는 김에 elastic ip 설정해서 재배포를 진행했다.
- 프로젝트 come & see 활동이 있어 다같이 리드미를 작성했다. 저번에 팀 규칙 및 회의록, 회고록 작성 골격을 잡아두어 팀 소개 및 백로그 정도만 추가했다.
- API 명세서를 작성했다. sample response를 추가하면 포스트맨이 자동으로 예쁘게 만들어 준다.
- cors 문제를 백엔드에서 해결하기로 해서 WebConfig 클래스를 추가하고 addCorsMappings(CorsRegistry registry) 메서드를 오버라이드 하여 재배포를 진행했다. allowed origin에 어떤 url을 추가할지 고민하다가 일단은 모두 허용하는 식으로 설정했다.
- Match가 생성되고 첫 이닝을 생성할 때 이닝의 id가 중복되는 문제가 발생했다. 게임 시작 시 이닝 데이터를 전부 삭제하는 쿼리를 날릴까 하다가, inning이 갖고있던 auto-increment id를 없애고 match_id를 pk로 설정하는 식으로 해결했다.
🛠️ 삽질로그
- url을 수정 후 재배포할 때까지는 문제가 없었는데 cross origin 설정 후 재배포하려고 하니 갑자기 JDBC connection error가 생겼다. 알고보니 mysql은 내부적으로 커넥션을 8시간 이상 사용하지 않으면 자동 종료된다고 한다.
autoReconnect=true
라는 옵션을 datasource url에 추가하여 문제를 해결했다.
- 추가로 공부해보니 트랜잭션을 사용하는 환경이라면 auto reconnect 말고 DBCP의 validationQuery를 사용하는 것이 낫다고 한다. 이 설정을 사용하면 java에서 데이터베이스를 사용하기 전에 커넥션이 정상적인지 검증할 수 있다. 그러나 이 옵션을 사용하면 사용자 쿼리 실행 전에 쿼리 실행 작업이 추가되는 것이기 때문에 db에 추가적인 부하가 생긴다. 따라서
SELECT 1
와 같이 최대한 간단한 쿼리를 사용하는 것이 좋다.
- 지금도 프로젝트 진행중이고, 코드스쿼드 끝나고도 프로젝트가 예정되어 있는데 친구가 다른 프로젝트를 제의했다. 인공지능을 이용해서 논문을 요약하는 프로젝트를 해보자고 하는데 나는 인공지능에 대해 전혀 몰라 잘 할 수 있을지 모르겠다. 일단은 코드스쿼드와 병행하기 어려울 것 같다고 말해두었다.