1. 어려웠던 부분 : 오늘은 내일 발표를 위해 여러가지 테스트를 해보았다. 우리가 아직 생각하지 않았던 부분이 동시성제어 문제였는데, 분명히 터질거라고 예상은 하고 있었다. 먼저 아래와 같은 실험을 해봤다.
1. 한 방에 4명이 맥시멈이다. 일단 3명을 입장시켜 놓고 나머지 1자리를 두고 3명이 동시에 입장해보기.
- 이 실험은 다행히 문제없이 통과되었다.
2. 방을 3-4개 만들어 놓고 동시에 시작해보기
- 오! 터졌다 ^^! 어떤 방은 시작이되고 어떤 방은 제대로 시작이 되지 않는다. 웹소켓에 게임의 기본설정 정보를 gameStartSet이라는 Repository에 저장하고 있는데 그부분에서 터지는 것 같다!
일단 여러 자료를 통해 동시성제어엔 비관적락과 낙관적락이 있다는 것은 알았고, 우린 이 정보를 Redis에 저장하고 있기 때문에 Redis에서 동시성제어 하는 법을 열심히 구글링해 보았다.
구글링을 통해 첫번째로 아래의 방법을 시도했다.
1. @EnableTransactionManagement 을 붙이고 Redisconfig 파일에 아래 코드 추가하기 -> 실패 ! 여전히 오류 발생
@Bean
public PlatformTransactionManager transactionManager() {
return new JpaTransactionManager();
}
위 방법 참고자료 : https://wildeveloperetrain.tistory.com/137
2. SessionCallBack 사용 - 이부분 코드는 팀원분한테 있어서 나중에 업로드 할 예정
결과적으로 위 콘솔에 뜬 에러는 사라지긴 했지만, 여전히 게임 동시시작에 문제가 있고, 몇 번의 테스트 후 서버가 먹통이 되고 다운되어 버렸다.
어떻게 수정해야할지 아직 잡히지 않아서 더 공부하고 적용해 봐야할 것 같다.
2. 느낀 점 : 거의다 끝났다고 생각했지만, 역시나 끝은 없다. 너무 어렵다 ㅎㅎㅎ 하하핳 !!
3. 새로 알게 된 내용 : 지난번에 팀원분이 CI/CD 테스트를 여러번 하셨던 적이 있는데 그때도 서버가 다운되어 버리는 문제가 있었다. 이번에도 여러번 테스트를하니 서버가 그냥 먹통이 되어버렸다. 이럴때 해결 방법 ! 일단 AWS에 가서 먹통이 되어버린 인스턴스를 중지시킨다. 그리고 다시 새로운 인스턴스를 생성하고 생성중이 뜨면 다시 중지시키고 원래 먹통이라 중지시켰던 인스턴스를 다시 재부팅한다. 신기하게도 먹힘... ! 원래 협업에선 이렇게 안할텐데 제대로된 방법을 모르겠다 ㅎ...
4. 셀프칭찬 (오늘 잘한 일) : 팀원들과 같이 동시성제어에 관련된 비관적락 낙관적락 트랜잭션 등에 관한 공부를했다. 어제부터 집안일 때문에 중간 중간 집중이 되지 않았지만, 최대한 팀원들한테 티 안내고 피해주지 않으려고 정말 많이 노력했다 ! 프로젝트가 끝나면 바로 고모가 좋아하셨던 꽃을 사서 인사드리러 가야지! 이효리가 한 말중에 그런 말이 있다. 다른사람은 몰라도 나 자신은 내가 노력한 걸 알아주면 된다고. 잘 하고 있어! 끝까지 잘 하자 !
5. 내일 할 일 : 중간 회고 발표 / 피드백 정리하기
[오늘 공부한 부분]
- 동시성 제어 - 비관적 락 / 낙관적 락 ( 우테코 짱 )
- https://www.youtube.com/watch?v=w6sFR3ZM64c
https://www.youtube.com/watch?v=ZXV6ZqMyJLg
https://www.youtube.com/watch?v=onBpJRDSZGA
'TIL (Today I Learned)' 카테고리의 다른 글
[71] WIL 실전프로젝트 3주차 회고 (0) | 2023.01.22 |
---|---|
[70] TIL 중간회고 발표 (0) | 2023.01.21 |
[68] TIL 중간발표 전 Test ! (0) | 2023.01.20 |
[67] TIL CI/CD 생각보다 잘 안되네 (0) | 2023.01.19 |
[66] TIL null값이 떠요! (0) | 2023.01.18 |