본문 바로가기
벡엔드

[아이디어] 일렉트론 + 웹소켓을 활용한 아키텍처

by ISA(류) 2022. 12. 7.

예전에 배달앱을 개발하면서 고민 했던 부분 중 하나인데 일렉트론으로 실현 가능하다는 것을 확인해서 추후에 참고 할 수 있게 정리해본다.

1. 소켓 통신은 커넥션을 지속적으로 유지하며 풀링 방식 보다 통신간의 리소스를 최적화 할 수 있다(커넥션 릴리즈 비용이 줄어듬) 다만 커넥션을 유지하는 리소스가 소모 되므로 많은 커넥션을 유지하고 관리하는데 어려움이 있다.

2. 소켓통신을 통하지 않고서는 클라이언트단에서 벡엔드에서의 메시지를 받을 방법이 마땅치 않다. 푸쉬 알림. 특히 배달앱의 경우 고객의 주문을 클라이언트 단에서 받고 처리하는 과정을 반복해야 하므로 지속적으로 커넥션을 유지해야 할 필요성이 있다.

3. 커넥션은 지속적으로 유지하면서 통신 리소스를 줄이는 방법의 단점은 지속적으로 통신을 주고 받는 스토어나 비즈니스의 경우에는 소켓 통신을 하는게 일반적인 http 통신을 하는 것 보다 이득이다. 다만 실시간으로 연결을 유지해야하는 모든 스토어가 http통신을 주고 받지 않는다면 소켓 연결을 유지하는 비용이 http 통신을 주고 받는 비용보다 커지는 현상이 존재한다.

4. 고객 측에서 자체적인 서버를 열고 그 서버에서 클라이언트와의 소켓 연결을 유지하는 방식으로 1대1 소켓 통신을 구현한 후 그 서버와 API 서버간의 식별이 가능하게 API 콜을 하는 구조로 하면 소켓 연결을 관리하는 리소스를 클라이언트 측에서 부담하면서 소켓 연결과 유사하게 클라이언트와 API 서버간의 통신을 주고 받는 구조. 사실상 서로 API콜을 하는 구조가 된다.

5. 다만, 개발쪽을 전혀 모르는 일반인의 경우 그런 환경을 셋팅하고 연결하는 과정 또 그것을 자동화하는게 일반적인 웹 프론트 구조로는 난해해서 접었음. 일렉트론을 확인 해본 결과 일렉트론 프로세스와 express서버를 동시에 구동하는 것이 가능함. 이를 통해서 환경설정이나 서버 설정등이 가능한 것으로 확인해서 일렉트론을 이용해서는 아이디어를 실현 가능한 것으로 결론냈다. (방화벽 등의 설정 정도는 그렇게 어렵지 않으니) 다만 추가적인 보안 이슈나 문제점이 생길 수 있을지는 모르겠다.(아이피등 식별문제가 미지수)

반응형