2021-22 동계 모각코 6회차 후기

GITHUB로 편집하기

V.IRACKIRACK000

6회차 (2022-01-12)

결과

오늘은 파이썬 서버와 안드로이드 클라이언트의 데이터 동기화 방식에 대해서 설계를 진행하였다. 이는 앞서 고려했던 일반적인 클라이언트와의 통신이 아니라, 파이썬 서버와 완전히 동일한 데이터 제어 권한을 갖게 하는 동기화 방식을 말한다.

파이썬 서버가 firebase와 연결되지 않았다고 가정했을 때, firebase에 연결되지 않은 서버와 연결되어 있는 여러개의 클라이언트의 데이터를 어떻게 동기화할 것인지에 관한 내용이다. 인증서 관련 문제는 없다고 보고 진행하였다. 우선, 서버가 오픈되어 내부 IP를 표시하고 있고, 그 상태에서 비밀번호를 입력하면 메인 화면을 실행할 수 있다. 이때, 비밀번호는 조금 특이한데, 로컬에 비밀번호를 저장하지 않고도 통신을 하기 위해서 고민한 결과로 다음과 같은 방법을 사용한다. 서버와 주로 통신을 할 메인 클라이언트에서 서버의 내부 IP와 아까 입력했던 비밀번호를 받아 서버에 접근을 시도한다. 내부 IP주소로 접근하여 비밀번호를 대조했을 때 일치하는 경우에는 정상적으로 잘 연결했다고 판단하도록 하는 것이다. 이는 서버를 신뢰하는 것인데, 클라이언트는 서버의 IP를 알고 연결을 시도하였으므로 이렇게 진행해도 이상이 없을 것이라 생각한다. 반면 이는 클라이언트는 신뢰하지 않는 것이 되는데, 서버의 IP만 알면 아무 클라이언트나 서버로 접근할 수 있기 때문이다. 연결이 잘 되었다고 판단한 이후에는 모든 요청에 대하여 비밀번호를 포함하여 전송하도록 하면 정상 클라이언트에게만 정보를 전달할 수 있게 된다. 서버가 먼저 정보를 보낼 수 없기 때문에 클라이언트는 일정 시간마다 계속 refresh하도록 하였으며, refresh의 결과를 fcm을 이용하여 자신이 아닌 클라이언트들에게 전달한다. 이런 방법을 사용하면 서버에서 발생한 데이터를 모든 클라이언트에게 전력 소모를 크게 하지 않고 동기화할 수 있게 된다.