본문 바로가기

카테고리 없음

Wanted Preonboarding - 2주차(1)

서비스 도중에 의도치 않은 클라이언트의 종료로 인해 진행중이던 데이터가 소실되는 경우를 어떻게 처리하느냐가 이번 과제의 핵심이었다.

 

근본적으로는 Front-end에서의 처리를 포함하면 사실 방법은 많다. Back-end에서 제한하고서 생각했을때는 별로 방법이 없다. ssh처럼 인풋마다 네트워크를 통해 해당 내용을 전달하고자 한다면, http의 무거운 헤더로 인해 너무 비효율적이게 될 것이다.

 

결국 Header를 불필요하게 자주 보내지 않고 실제 사용자 데이터만을 간단하게 받을 방법이 필요한데, Long-polling이나 Websocket이 이에 적격이다. 둘다 기초는 Http에 두고 있는 만큼, 원래의 코드에 추가하기도 어렵지 않다.

 

사실 이 부분은 Http에 대한 의존성을 포기하면 상당히 쉽게 해결될 수 있다. 단순히 "저장되지 않은 작업 내용"이 저장 버튼을 누르기 전까지의 작업 내용이라고 한다면, 단순히 message broker나 application level의 proxy같은 실제 서버와 직접적인 통신을 하는 것이 아닌, 중개하는 장치가 있다면, 간단할 것이다. http의 request 전체가 무거우니, 캐싱용 데이터만 가벼운 프로토콜로 보내놓고, 나중에 최종적으로 저장하고자 할때에 Http 요청 한번으로 다 해결할수 있는 방법이다. 심지어 이 경우에는 중개하는 장치가 사용자와 연결이 끊겼다는 것을 감지하는 경우 직접 저장도 요청할 수 있다.

 

그런의미에서 이번 과제는 백엔드 개발자로서 간단한 클라이언트를 제작할 수 있는지에 대한 질문을 우리에게 던진 것이라 생각이된다.