강의

멘토링

로드맵

Inflearn brand logo image
개발 · 프로그래밍

/

백엔드

프로덕션 레벨 실시간 채팅 서버 구축: 분산 처리부터 성능 최적화까지 (Kotlin & Spring)

Spring Boot 3.x + Kotlin으로 3개 인스턴스 클러스터를 구축하고, Redis Pub/Sub 분산 메시징과 Nginx 로드밸런서를 활용하여 대용량 트래픽 처리가 가능한 확장 가능한 WebSocket 실시간 채팅 서버를 개발합니다.

(4.7) 수강평 15개

수강생 107명

  • Hong
실습 중심
서버
백엔드
백엔드개발자
아키텍처
SpringKotlinSpring Bootwebsocket

먼저 경험한 수강생들의 후기

이런 걸 배울 수 있어요

  • Redis Pub/Sub을 활용하여 여러 서버 인스턴스 간 실시간 메시지를 동기화하는 분산 메시징 시스템

  • Docker Compose로 3개 인스턴스 클러스터를 구성하고 Nginx 로드밸런서로 트래픽을 분산 처리하는 방법

  • Spring WebSocket을 이용하여 양방향 실시간 통신을 구현

  • 멀티모듈 구조로 Domain-driven Design을 적용하여 확장 가능한 서버 아키텍처를 설계하는 방법

  • Redis를 활용한 메시지 시퀀스 관리로 분산 환경에서도 메시지 순서를 보장하는 기법

  • Docker 컨테이너 기반 배포와 헬스체크, 로그 모니터링을 통한 서비스 운영 방법

  • Spring Boot 3.x + Kotlin의 최신 기능을 활용한 모던 백엔드 개발 방법

  • 메시지 중복 처리 방지, 세션 정리, 리소스 해제 등 안정적인 서비스 운영을 위한 방어 코딩 기법

이 강의를 통해 여러분은...

실제 서비스 환경에서 수만 명의 사용자를 감당할 수 있는 확장 가능한 서버 아키텍처를 직접 설계하고 구축하게 됩니다.


🏗. 단순히 기능을 구현하는 것을 넘어, 대규모 트래픽에도 안정적으로 동작하는 분산 시스템의 핵심 원리를 체득할 수 있습니다.

먼저, 여러 대의 서버가 하나의 시스템처럼 동작하도록 Nginx 로드밸런서로 트래픽을 분산하고 🌐, Redis Pub/Sub을 이용해 서버 간 메시지를 실시간으로 동기화하는 방법을 배웁니다. 이 과정에서 C10K (1만 동시 접속) 문제를 해결하는 노하우를 자연스럽게 익히게 될 것입니다.


또한 데이터베이스 커넥션 풀을 튜닝하고, JPA 배치 처리와 커서 기반 페이지네이션을 적용하여 응답 속도를 밀리초 단위까지 개선하는 경험을 하게 될 것입니다.

마지막으로, Docker 컨테이너🐳 를 통해 개발부터 배포까지 일관된 환경을 유지하고, Health Check와 모니터링 시스템🩺 을 구축하여 서비스 장애를 사전에 방지하는 안정적인 운영 기법까지 학습합니다. 이 모든 과정을 최신 스택인 Kotlin과 Spring Boot 3.x, websocket를 활용하여 세련되고 효율적인 코드로 구현합니다 .

📦강의를 듣고 나면 이런 결과물을 만들 수 있어요

하나의 완전한 분산 채팅 애플리케이션 📦

명령어로 전체 시스템(서버, 데이터베이스, 캐시 등)을 한 번에 실행할 수 있는, 완전한 형태의 애플리케이션 패키지를 얻게 됩니다. 단순히 코드 조각의 집합이 아닌, 즉시 배포 가능한 서비스입니다.

프로덕션 레벨 시스템 아키텍처 설계도 🗺

사용자의 요청부터 데이터 저장까지 전체 흐름을 담은 시스템 아키텍처 설계도를 직접 구축하고 이해하게 됩니다. 이 설계도는 여러분의 기술적 깊이를 증명하는 훌륭한 포트폴리오 자산이 됩니다.

실시간 양방향 채팅 기능 💬

사용자가 로그인하고, 채팅방을 만들고, 다양한 메시지를 실시간으로 주고받는 핵심 채팅 기능이 완벽하게 구현된 결과물을 갖게 됩니다.

수평 확장이 가능한 서버 클러스터

n개의 Spring Boot 서버가 Nginx 로드밸런서 아래에서 동작하는 서버 클러스터를 구축합니다. 이를 통해 트래픽이 증가할 때 서버 인스턴스를 추가하는 것만으로 간단하게 시스템을 확장하는 방법을 배우게 됩니다.

고가용성 메시징 시스템 📡

한 서버에 장애가 발생하거나, 사용자가 서로 다른 서버에 접속해도 Redis Pub/Sub을 통해 모든 메시지가 누락 없이 전달되는 안정적인 메시징 시스템을 구축합니다.

최적화된 데이터 관리 시스템

PostgreSQL에 채팅 데이터를 영구적으로 저장하고, Redis에 세션 정보나 캐시 데이터를 저장하여 데이터의 안정성과 빠른 응답 속도를 모두 만족시키는 하이브리드 데이터 시스템을 완성합니다.

📚강의 주요 내용!

Redis Pub/Sub 분산 메시징

여러 서버 인스턴스 간 실시간 메시지 동기화를 위해 Redis의 발행-구독 패턴을 구현합니다. 중복 메시지 방지, 메시지 순서 보장, 서버별 격리 처리 등 프로덕션 레벨의 분산 메시징 시스템을 구축하여 확장 가능한 실시간 통신 기반을 마련합니다.

WebSocket 기반 실시간 통신

Spring WebSocket을 활용하여 HTTP보다 훨씬 효율적인 양방향 실시간 통신을 구현합니다. 세션 관리, 연결 상태 추적, 에러 핸들링 등을 통해 안정적인 실시간 채팅 기능을 제공하며 해결을 위한 최적화 기법도 적용합니다.

멀티모듈 DDD 아키텍처

Domain-driven Design 원칙에 따라 API, Domain, Persistence, WebSocket 계층을 독립적인 모듈로 분리합니다. 각 모듈의 책임을 명확히 구분하고 의존성 방향을 제어하여 유지보수성과 테스트 용이성을 극대화한 확장 가능한 서버 아키텍처를 구축합니다.

Nginx 로드밸런서 + WebSocket 프록시

n개의 Spring Boot 인스턴스에 트래픽을 균등 분산하는 Nginx 로드밸런서를 구성합니다. HTTP 요청뿐만 아니라 WebSocket 연결도 안정적으로 프록시하며, 프로덕션 레벨의 리버스 프록시 설정으로 고가용성 서비스 환경을 구축합니다.

📚프로젝트 기능 아키텍처 맞보기

Redis Pub/Sub

메시지 처리 프로세스

📚강의 맛보기!

📚 WebSocket 세션 관리 Class 작성하기



📚 자동화된 스크립트를 활용한 서버 배포



📚 환경 배포를 위한 Docker-Compose



📚 Nginx 성능 지표 설정



Kotlin 왜 배워야 하지..?

Spring과 100% 혼용이 된다고 말하며, Jetbrain에서 만든 Kotlin이라는 언어는 Spring에서 적합하지 않은 동시성 프로그래밍에 최적화되어 있습니다.

📚간결하고 직관적인 문법


Kotlin은 간결하고 직관적인 문법을 제공하는 형태이기 떄문에 개발자가 더 적은 코드로 더 많은 작업을 수행 할 수 있습니다. 이는 가독성 향상의 효과가 있으며 요지보수가 더 용이하게 합니다.

📚 높은 생산성과 안전성


Kotlin은 널 안정성을 기본적으로 지원하여 널 포인터 예외(NullPointerException)를 줄일 수 있습니다. 또한, 함수형 프로그래밍을 지원하여 보다 기능적이고 선언적인 방식으로 코드를 작성할 수 있습니다. 이러한 기능들은 개발 생산성을 높이고, 버그 발생 가능성을 줄여줍니다.

📚 높은 호환성


Kotlin은 100% 자바와 호환되므로 기존 자바 프로젝트에 쉽게 통합할 수 있습니다. 이는 자바 개발자들이 Kotlin을 배우는데 큰 장벽이 없으며, 기존 코드를 유지하면서도 새로운 Kotlin 기능을 사용할 수 있다는 것을 의미합니다.

websocket를 그냥 HTTP로 구현을 하면 되는거 아닌가요? 🤔

📌 가능합니다. 불가능한 개발 방식은 아닙니다.

📌 하지만 서버 개발자는 일반적으로 서버에 대한 리소스를 최대한 절감을 하여 가져가야 합니다.

📌 그러기 떄문에, 채팅서버와 같이 지속적인 Connection이 유지되어야 하는 통신 같은 경우에는 WebSocket을 사용하는것이 매우 적합합니다.

중요하게 여기는 4가지 가치관

1. 강의는 인간적이어야 한다.

전문성이 떨어지는 모습으로 여겨질지라도 보여주기 편한 강의는 강의가 아니라고 생각합니다. 디버깅도 진행하는 시간또한 강의의 일부 입니다.

2. 실무에 특화되어야 한다

개발은 말로하는것이 아닙니다. 실제 구현을 해보고 동작하는 과정을 함께 하실 수 있습니다.

  • 기획자분들... 살려주세요..

3. 수강생 분들에게 도움이 되어야 한다.

제가 실무에서 적용해서 효과를 보았던 개념들을 녹이고자 하였습니다. 이 과정을 통해서 실무를 간접적으로 체험하시거나 실무자라면 실무 환경에 더 뛰어난 퍼포먼스를 보여주실 수 있습니다.

4. 강의가 끝이 아니다.

강의를 진행하시면서 질의응답을 많이 남겨주시기를 바랍니다. 이 강의는 저 혼자만의 지식을 통해서 만들어지지 않았습니다. 다양한 대기업 개발자분들의 의견또한 취합되어 있습니다.

  • 강의 완성에 도움을 주신분들에 대한 간단한 이력은 다음과 같습니다.


private val supported_one = "카카오페이 플랫폼 백엔드 개발자" private val supported_two = "토스증권 API 서버 개발자" private val supported_three = "비밀로 해달라는 유니콘 스타트업 서버 개발자"

수강 전 참고 사항

실습 환경

  • Macos M3를 사용하여 촬영되었습니다.

  • Docker를 기본적으로 사용합니다.

  • java --version : 17.0.12 2024-07-16 LTS

  • JetBrain 계열의 IDE를 사용합니다.

  • Gradle을 사용하여 빌드 합니다.

    • 소스코드는 혹시 모르는 버전 충돌을 방지하기 위해 빌드 파일까지 전부 포함되어 있습니다.

😍 같이 보면 좋은 주제

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • 주니어→미드레벨 성장을 원하는 백엔드 개발자

  • 실시간 서비스 개발 경험을 쌓고 싶은 개발자

  • 분산 시스템 아키텍처에 관심있는 개발자

  • 시니어 개발자로 성장하고 싶은 미드레벨 개발자

  • Docker 기초 지식이 있는 개발자 또는 배우고 싶은 개발자

  • 게임/채팅/소셜 서비스 개발자

  • 포트폴리오를 강화하고 싶은 취업 준비생

  • 기술 스택 확장을 통한 이직을 계획중인 개발자

선수 지식,
필요할까요?

  • Spring에 대한 기본적인 지식이 있으면 좋습니다.

  • 웹 소켓 통신에 대한 기본적인 지식이 있으면 좋습니다.

  • 이 모든 지식이 없어도 됩니다. 프로젝트를 직접 구현하기 떄문에 같이 학습 가능합니다.

안녕하세요
입니다.

2,724

수강생

185

수강평

76

답변

4.5

강의 평점

14

강의

자기 소개

집에서 빈둥대다 개발에 흥미를 느껴 개발 공부를 시작하였고 현재는 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다.

 

제가 공부를 했던 방법과 실무에서 접하실 수 있는 여러가지 문제점들과 해결책을 여러분들에게 제공하고 싶어 지식공유자 활동을 이어나가고 있습니다.

 

강의는 오로지 저만의 지식을 통해 만들어지지 않습니다. 모든 강의는 함께하시는 분들이 계십니다.

 

지식공유자 경력

[前] 샌드박스 블록체인 개발자

[前] 넥슨 자회사 백엔드 개발자

[] 판교에서 고여가는 서버 개발자

 

인터뷰 이력

커리큘럼

전체

28개 ∙ (4시간 55분)

해당 강의에서 제공:

수업자료
강의 게시일: 
마지막 업데이트일: 

수강평

전체

15개

4.7

15개의 수강평

  • ks ju님의 프로필 이미지
    ks ju

    수강평 7

    평균 평점 5.0

    5

    100% 수강 후 작성

    현실적인 좋은 내용으로 강의 잘 봤습니다. 감사합니다.

    • Hong
      지식공유자

      안녕하세요 ks ju님 평 남겨주셔서 감사합니다. 실제 운영환겅에서는 더 다양한 기능이 들어갈 수 있는 형태고 이런형태를 위한 구조라고 봐주시면 될꺼같아요 ㅎㅎ 앞으로 더 유익한 강의를 제공해드리겠습니다. 좋은 하루 보내세요 :)

  • 텐버거!님의 프로필 이미지
    텐버거!

    수강평 4

    평균 평점 5.0

    수정됨

    5

    96% 수강 후 작성

    취업을 준비하고, 실무에서 일을 하면서 강사분 강의를 많이 참고하고 토대로 학습을 진행하였는데, 정말 너무 많은 도움이 되는 양질의 주제인거 같습니다. 함께 코드를 작성하는 과정도 너무 유익하고 옆에서 같이 코딩을 하는 느낌이 들다보니 그만큼 더 학습 효과가 좋아지는거 같아요!! 앞으로 더 자주보고 좋은 강의가 만들어지면 좋겠습니다. 감사합니다!

    • Hong
      지식공유자

      안녕하세요 텐버거님! 취업을 준비하시다니!! 이 강의가 많은 도움이 되었으면 좋겠습니다 추후에 취업도 성공하신다면 소식 전해주세요 ㅎㅎ 감사합니다!

  • 우당탕탕님의 프로필 이미지
    우당탕탕

    수강평 3

    평균 평점 5.0

    5

    100% 수강 후 작성

    강의 잘 보았습니다. 딱히 보는데에 큰 불편함도 없었고 내용 자체도 너무 유익하네요 앞으로 좋은 강의 부탁드립니다!

    • Hong
      지식공유자

      안녕하세요 우당탕탕님 좋은 평 남겨주셔서 감사합니다!! 앞으로 더 유익하고 재미있는 실무에 접합한 강의를 제공해 드리기 위해서 노력하겠습니다! 좋은 하루 보내세요!

  • 8번이 좋아님의 프로필 이미지
    8번이 좋아

    수강평 4

    평균 평점 5.0

    5

    93% 수강 후 작성

    너무 잘 배웠습니다. 좋은 강의라고 생각하네요. 다른 강의도 수강 예정입니다.

    • Hong
      지식공유자

      안녕하세요 8번이 좋아님!! 다른강의에서도 뵙으면 좋겠네요 ㅎㅎ 좋은 평 감사합니다!

  • tasd os님의 프로필 이미지
    tasd os

    수강평 4

    평균 평점 5.0

    5

    100% 수강 후 작성

    백엔드 개발자로써.. 진짜 많은 도움 되었습니다. 감사합니다.

    • Hong
      지식공유자

      안녕하세요 tasd os님 같은 직무인데 도움이 많이 된거같아서 너무 뿌듯하네요 감사합니다!

지식공유자의 깜짝할인 중

₩66,000

20%

₩82,500

Hong님의 다른 강의

지식공유자님의 다른 강의를 만나보세요!

비슷한 강의

같은 분야의 다른 강의를 만나보세요!