본문 바로가기

패스트캠퍼스/50일의 기적 AI 환급반

패스트캠퍼스 환급챌린지 13일차 : 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 강의 후기

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

https://fastcampus.info/4n8ztzq

 

 

안녕하세요 :)

오늘은 "50일의 기적 AI 환급반_ 대규모 채팅 플랫폼으로 한 번에 끝내는 실전 대용량 트래픽 커버 완전판 " 챌린지에 도전하는 열세번째 날입니다.

 

열두번째 날에는 Spock 사용을 위한 Groovy 기본 문법과 JUnit과 Spock의 차이에 대해 배웠었는데요. 오늘은 과연 어떤 내용들을 배울 수 있을지 공부하고 포스팅 하도록 하겠습니다.

 

 

오늘 학습할 내용의 제목은,

Part 2. 채팅 뼈대 프로젝트 개발 > Ch 2. Rest API와 WebSocket의 기본 >

01. Rest API와 WebSocket의 차이

입니다.


 

🌐 Rest API vs WebSocket:

     언제 어떤 통신 방식을 선택해야 할까?

  • 현대 웹 서비스에서는 다양한 클라이언트와 서버 간의 통신 방식이 존재하며, 그중 가장 많이 사용되는 두 가지 방식은 Rest APIWebSocket입니다. 이 둘은 사용하는 프로토콜, 연결 유지 방식, 그리고 실시간성 측면에서 큰 차이를 보입니다. 이번 포스팅에서는 두 기술을 비교하고, 언제 어떤 상황에서 활용하면 좋을지 정리해보겠습니다.

 

☝️ Rest API란?

  • Rest API는 특정 프로토콜에 종속되지 않는 아키텍처 스타일이지만, 대부분 HTTP를 기반으로 동작합니다.
  • URI로 리소스를 식별하고, HTTP 메서드(GET, POST, PUT, DELETE 등) 를 통해 리소스에 대한 CRUD 작업을 수행합니다.
  • 가장 큰 특징은 Stateless(무상태) 방식이라는 점입니다. 각 요청은 이전 요청과 연결되어 있지 않으며, 요청에 필요한 모든 정보를 포함해야 합니다.
  • 이 구조 덕분에 확장성이 뛰어나고, 서버는 세션을 관리하지 않아도 되기 때문에 유지보수가 용이합니다.

장점

  • HTTP 기반이라 캐싱, 보안(HTTPS), 인증(Auth, Token) 등 표준 기술 활용 가능
  • 대부분의 프론트엔드 라이브러리와 백엔드 프레임워크에서 기본 지원
  • 초기 구현과 유지보수가 상대적으로 간단

단점

  • 클라이언트가 요청을 보내야만 서버 응답을 받을 수 있는 단방향 통신
  • 실시간 데이터 반영이 어려워 polling 혹은 SSE(Server-Sent Events) 등의 우회 기술 필요

 

✌️ WebSocket이란?

  • WebSocket은 웹 환경에서 실시간 양방향 통신을 가능하게 하는 프로토콜입니다.
  • 초기에 한 번 HTTP 연결로 핸드셰이크를 수행한 뒤, WebSocket 프로토콜로 업그레이드됩니다.
  • 이 후 연결은 지속적으로 유지되며, 클라이언트와 서버 간 자유롭게 메시지를 주고받을 수 있습니다.
  • 전통적인 HTTP 통신보다 오버헤드가 적고, 텍스트 및 바이너리 형식 모두 지원합니다.

장점

  • 항상 열린 연결을 통해 서버에서 클라이언트로 데이터를 실시간 푸시 가능
  • 헤더 오버헤드가 적고, 효율적인 데이터 송수신
  • 채팅, 주식 시세, 게임 등 실시간성이 중요한 서비스에 최적화

단점

  • 상태를 유지해야 하므로 서버 리소스 소모가 큼
  • HTTP 기반이 아니므로 기존 보안, 인증 체계 적용이 복잡
  • 연결 유지, 장애 처리 등에서 개발 복잡도 증가

 

🔁 기술 선택 기준

구분 Rest API WebSocket
통신 방식 요청-응답 (단방향) 이벤트 기반 (양방향)
연결 상태 무상태 (Stateless) 상태 유지 (Stateful)
실시간성 낮음 (Polling 필요) 매우 높음 (실시간 푸시)
사용 사례 로그인, 정보 조회 채팅, 실시간 알림, 게임
구현 난이도 비교적 쉬움 상대적으로 복잡

 

🧩 실무 예시: 두 기술의 공존

현실에서는 두 기술을 혼합하여 사용하는 경우가 많습니다.

예를 들어 모바일뱅킹 앱에서는,

  • 계좌 조회, 송금, 거래내역 등은 Rest API로 구현하고,
  • 고객센터 실시간 채팅WebSocket으로 처리할 수 있습니다.

또한 하경님이 만들고 있는 채팅 애플리케이션도,

  • 회원 가입, 로그인, 로그아웃은 Rest API로 처리하고,
  • 채팅 메시지 송수신은 WebSocket을 활용합니다.

이런 방식은 복잡도는 낮추면서도 실시간성과 유연성을 모두 확보할 수 있는 좋은 전략입니다.

 

  • 이번 학습을 통해 Rest API와 WebSocket이 서로 대체재가 아닌 보완재라는 점을 깊이 이해하게 되었습니다.
  • 특히 WebSocket은 단순히 실시간 통신이 필요한 서비스뿐 아니라, 복합적인 사용자 경험을 요구하는 현대 서비스에서 점점 더 중요한 역할을 하게 될 것이라는 생각이 들었습니다.
  • 그럼에도 모든 기능을 WebSocket으로 구현하기보다는, 기능에 맞는 통신 방식을 적절히 선택하고, 유지보수성과 성능을 동시에 고려하는 판단이 개발자에게 요구된다는 사실이 인상 깊었습니다.
  • 앞으로 실시간성을 요하는 기능을 설계할 때는 반드시 WebSocket을 염두에 두되, 전체 시스템의 복잡도를 줄일 수 있는 아키텍처 설계를 함께 고민해야겠다는 생각을 하게 되었습니다.