https://github.com/nbalance97/java-chess/tree/step4

 

GitHub - nbalance97/java-chess: 체스 게임 구현을 위한 저장소

체스 게임 구현을 위한 저장소. Contribute to nbalance97/java-chess development by creating an account on GitHub.

github.com

 


미션 진행


4, 5단계에서는 web ui 적용 및 데이터베이스와 연동하여 게임 진행 상황을 저장/불러오는 기능을 구현해야만 했다😆

 

web ui를 구현하기 위해 html은 템플릿 언어를 사용하였으며, sparkjava를 사용하여 서버를 구성하였다. 미션에서 웹 서버와 연동하여 작업한건 처음이라 많이 어색하여 이번 미션에서도 기능을 구현하는데 급급하였다😂

 

우선, Application에서는 각각의 url에 맞추어서 url에 따라 함수를 호출하도록 구현하였다.

 

 

또한, Controller에서는 Service를 가지고 있고, Service의 메소드를 호출하는 방식으로 구현하였다. 

 

Controller에서 move에 대한 처리

기존까지는 Service에서 ChessGame을 가지고 있는 구조였는데, 이러한 구조는 여러 대의 서버를 두게 된다면 문제가 있다고 한다. 각각의 서버가 ChessGame을 갖는다고 할 때, 하나의 서버의 ChessGame이 수정되면, 전체 서버의 ChessGame을 다 바꾸어주어야 하는 문제점이 생기므로 일관된 상태를 유지하기 위해 Service에 존재하는 ChessGame을 삭제하고, 데이터베이스에서 그때마다 불러오는 방식으로 코드를 변경하였다.

 

필요할 때마다 ChessGame을 load해 온다.

컨트롤러의 역할이 많이 모호하다고 느껴졌는데, 이번 체스 미션을 진행하면서 컨트롤러의 역할을 어느정도 정리할 수 있어서 좋았다. 컨트롤러에서는 사용자의 요청에 맞게 Service에게 기능을 수행하도록 명령하고, 수행 결과를 받아서 전달하는 역할이라고 정리하였다. 기존까지는 밋밋한 콘솔에서만 개발을 하다가 웹으로 옮겨서 해보니 신기함과 동시에 내가 왜 백엔드 개발을 하고 있는지 상기하게 되는 계기가 된 것 같다. 전체적으로 힘들었지만 재밌는 경험이었다. 

+ Recent posts