강의

멘토링

로드맵

Inflearn brand logo image
Programming

/

Back-end

Building a Chat Platform Using Spring Boot

You can learn about JWT and ws communication using Spring Boot, and how to handle high TPS.

(3.8) 25 reviews

271 learners

  • Hong
tps
실습 중심
채팅프로그램
Spring Boot
JWT
websocket
MySQL
JPA

Reviews from Early Learners

What you will learn!

  • Basic Structure of Spring Boot

  • Stateful server using ws communication

  • Cookie Management and Authentication with JWT

Handling high-volume chat TPS with Spring Boot 😘

In this lecture, you will learn how to configure and manage services using the ws protocol, which is typically used in platforms where chat services are included.

  • Chijijik , AfreecaTV, You may want to refer to Twitch , etc.


This lecture is structured around configuring services directly using Spring Boot and Next.js, and authentication methods using JWT. If you take this lecture, you will be able to learn more about Spring Boot and ws protocol.

What is the difference between HTTP and WS? 😘

I think that up until now, you have mainly dealt with HTTP Protocol and carried out development.

Of course, in actual practice, HTTP is mainly used. However, there are various communication methods such as TCP, RPC, and WS, and you should be able to build a service by flexibly applying them depending on the situation.


So what are the typical differences between HTTP and WS? To put it simply, you can think of it as the difference between Stateless and Stateful.

  • You can understand it as the difference between whether the connection with the client is persistent or general. If you don't understand the article, if you take my lecture and learn, you will be able to fully understand it.


Can't we just implement websocket with HTTP ? 🤔

📌 It is possible. It is not an impossible development method.

📌 However, server developers generally need to take advantage of server resources as much as possible.

📌 Therefore, in cases where a continuous connection must be maintained, such as a chat server, it is very suitable to use WebSocket .

Learn these things 😘

1⃣ Server configuration using Spring Boot by Pangyo developer

You can learn about real servers by creating a server that utilizes both HTTP and WS. You can also learn how to utilize information about users by utilizing JWT.

2⃣ Injection modeling using JPA and Bean

What is the most important part to learn when using Spring Boot? Most Spring Boot developers mainly deal with this content and use it the most. Pangyo developers can learn how to use Spring Boot.

3⃣ Providing practice templates using Next.js and Typescript

This lecture is not a lecture that simply configures a server that utilizes ws and conducts tests. It provides a basic skeleton for configuring a complete platform by providing actual FE code.

4⃣ Data Management Using MySQL

What is the most commonly used DB in practice? RDB is a very widely used database when building services.

It has these features 😘

1⃣ A project that is structured by writing code together with actual developers.

2⃣ JWT format and its components

3⃣ Differences between WebSocket and HTTP and Reasons for Resource Saving

4⃣ Debugging together for implemented projects

Things to note before taking the class

Practice environment

  • The lecture explains based on MacOS (M1).



  • In this course we will use Spring Boot and Next.js.

    • The video was taken for the purpose of learning server developers. Please note that only templates are provided for Next.js.


  • This lecture aims to provide a learning direction for students. It is structured as a lecture that implements basic functions but leaves TODOs for later, so it would be good to refer to the TODOs for additional learning.

    • The TODO part is left in README.md .


  • IDE uses Goland and vscode.

Recommended for
these people

Who is this course right for?

  • Someone new to Spring Boot

  • Those curious about non-HTTP protocols

Need to know before starting?

  • Spring Boot

  • Network Fundamentals

Hello
This is

2,728

Learners

188

Reviews

76

Answers

4.5

Rating

14

Courses

자기 소개

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

 

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

 

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

 

지식공유자 경력

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

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

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

 

인터뷰 이력

Curriculum

All

29 lectures ∙ (3hr 46min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

25 reviews

3.8

25 reviews

  • syhwan88님의 프로필 이미지
    syhwan88

    Reviews 3

    Average Rating 4.3

    4

    100% enrolled

    너무나 좋은 강의였습니다. WS와 api에 대해서 좋은 예제와 테스트 해볼수 있는 방법등 좋은 내용이 많습니다. 다만 아쉬운점은 선행되어야할 점들이 디비세팅, vscode사용이면 ide세팅 같은 몇가지 있는데 나와있지 않습니다. 또 하나는 코드의 예제는 있는데 그에 대한 설명이 부족합니다. 수정할때 왜 수정하셨는지에 대한 설명이 많이 부족합니다. 하지만 마지막 문장에 개발자는 해결하는 사람이라는 말과같이 검색해서 해결해 나가는 방법이 가능한사람에게는 충분히 좋은 강의였습니다. 감사합니다.

    • Hong
      Instructor

      안녕하세요 강의 좋게봐주셔서 감사합니다. 더 많은 만족을 드리고 싶었지만 조금 아쉬운 부분이 있어서 죄송스럽네요 ㅠㅠ 아무래도 저런 관점이 제가 개발공부를 혼자서 하고 실제로 따오기보다는 실제 개발을 하고 혼자서 스스로 검색하고 해결해나가는 과정에서 많은 도움이 되었다고 느끼다보니 이러한 부분이 강의에서도 자연스럽게 녹아들었던거 같습니다. 개발자는 단순히 다른사람이 친 코드를 복사하거나 붙이는 사람은 아니라고 생각합니다. 개념을 알고 해당 개념을 적용하면서 발생가능한 Trade Off를 고려하는 개발자가 좋은 개발자라고 생각을 합니다. 솔직하게 그러다보니 모든 부분을 알려드리고 싶지는 않았어요 ㅎㅎ 스스로 해보는 습관을 알려드리고 싶었습니다. 앞으로 더 좋은 강의로 찾아뵙도록 하겠습니다. 날이 많이 추우니 감기 조심하시고 감사합니다 :)

  • 100and님의 프로필 이미지
    100and

    Reviews 19

    Average Rating 4.8

    4

    100% enrolled

    우선, 강의 감사합니다. 재밌게 잘 들었습니다! 다만, 몇 가지 아쉬웠던 부분을 조심스레 공유하고 싶습니다. 가장 아쉬웠던 점은 구성이 다소 산만했다는 점입니다. 중간마다 점검하는 게 아니라 기능을 전부 구현한 뒤 마지막에 테스트를 하니 기능별로 끝맺음이 없다고 해야 하나.. 매 포인트마다 마무리가 없으니 다른 기능 구현하다 돌아와야할 때 정신 없다는 느낌을 강하게 받았어요. 툴도 아쉽습니다. 특정 이유로 vscode 를 쓰실 수도 있겠지만, 잦은 import 오류 등등으로 흐름이 끊어질 때가 많았어요. 굳이 vscode 로 진행해야 할 이유가 있었을까 하는 개인적인 생각이 들었습니다. 마지막으로 선택과 집중을 했으면 더 좋지 않았을까 싶습니다. 강의 제목은 "스프링 부트를 활용하여 채팅 플랫폼 만들어보기" 입니다. 기본적으로 '채팅 플랫폼'이라는 점에서 당연히 강의의 방점이 웹 소켓에 있을 줄 알았는데, 생략된 부분이 많아 아쉬웠습니다. 하지만, 채팅 플랫폼을 만드는데 있어서 생각하지 못했던 부분, 가령 약간은 복잡한 sql 구문이 필요하다는 점과 db 설계에 놓칠 수 있는 부분을 하나 하나 따라갈 수 있어서 너무 좋았습니다. 너무 실력 좋은 개발자이신 건 강의 전반에 걸쳐 단번에 알 수 있었지만, 더 좋은 강사가 되셨으면 하는 바람에 주제 넘게 글을 적었습니다. 강의 구성이 조금만 더 다듬어진다면 정말 좋을 거 같아요!

    • Hong
      Instructor

      안녕하세요. 좋은 평 남겨주셔서 감사합니다. 하나하나 테스트를 진행하는 방법도 고려를 하였지만, 아무래도 테스트를 실제 Front와 연동해서 보여드리고 싶은 욕심에 이렇게 강의가 준비가 되었습니다 ㅠㅠ 다음부터 해당 부분을 좀 더 참고해 보도록 하겠습니다. VsCode를 IDE로 활용했던 이유는 덜 익숙하신 분들도 있다고 생각해서 최대한 많이 사용하는 IDE를 사용했었습니다. 젯브레인 계열이 좋기도 한데 아무래도 더 많은 부분은 VsCode를 사용한다고 생각을 했었습니다. 채팅에 대한 웹소켓 기능에 대해서 강의를 준비하는데에 있어서 해당 주제만 다루기에는 여러분들이 얻어가실 수 있는 부분이 너무 적다고 생각을 했습니다. 그러다보니 강의 주제가 조금 산만해진 경향이 있네요 ㅠㅠ 이 부분은 죄송스럽습니다. 다시한번 더 좋은 평 남겨주셔서 감사하며 앞으로 더 재미있고 의미있는 강의로 찾아뵙도록 하겠습니다. 감사합니다!!

  • Anfield님의 프로필 이미지
    Anfield

    Reviews 37

    Average Rating 4.8

    5

    100% enrolled

    강의 자체는 널널하게 시간을 투자해도 3~4일이면 다 볼 수 있는 정도여서 좋았습니다. 빠르게 보면 하루 정도 만에 다 볼 수 있을거 같습니다. 강의 내용은 인증에 대한 간단한 Provider를 만들어서 처리하시는데, 주 내용은 아니긴 해도 간략하게 jwt 인증 방식에 대해 알 수 있었습니다. 채팅 관련해서 pub sub model을 설명해주셨고, A라는 방법을 알려주시며 B에 대해 조금 알려주며. 스스로 찾아서 하는 방법에 대해 열린 결말? 처럼 알려주십니다. 저도 일을 계속 해보면서 느낀 점은 실무에서는 정말 어처구니 없는 일로 시간을 많이 보낼 때가 많습니다. 특히 에러 핸들링 관련해서. 강의는 빠르게 흘러가면서, 강사님이 틀리게 치는 경우가 종종 있습니다. 예를들어 usercredential 엔티티를 만들때, Table이름을 "user"로 선언한다던지, mapping method의 이름을 다른 것으로 해놓아서 front에서 404 error가 나는 부분. create_at -> created_at으로 선언해야하는 부분 문제가 발생했을 때, 에러 해결하는 강의를 보기 전에 스스로 찾아서 해결하는 부분이 저는 좋았는데 약간 실무 느낌도 나면서 ㅎㅎ 초보자 분들은 왜 안 될까. 고민하시는 분도 있을 것 같아요. 그리고 이 강의 하나 보고 채팅 어플리케이션을 서비스하겠다. 라는 강의는 아니긴 합니다. 완성도 있는 채팅 서비스를 완성해보고 싶다는 생각이 드네요. !

    • Hong
      Instructor

      안녕하세요 좋은 평 남겨주셔서 감사합니다. 여러분들과 저의 시간은 모두 소중합니다. 최대한 기능을 구현하는데에 목표를 두었습니다. 이렇게 기능을 구현하시게 되면, 부수적인 부분은 어느정도 따라오게 되어 있어요. 그래서 핵심 코어 기능을 구현하는데 집중하였고 완전히 완성되어있는 강의보다는 함께 디버깅하면서 좀 더 인간적인 면모를 보여드리고 싶습니다. 세상에 완벽한 사람은 없으니 틀리고 버그가 있어도 괜찮기 떄문이죠. 완벽한 어플리케이션을 저도 조금 고민을 해보았는데, 제가 알려드리는 부분만 따라서 만드는것은 좋은 공부 방식이 아니라는 결론이 나와서 여러분들에게 추후 고민가능한 부분과 TODO List를 제공해드리고 싶었습니다. 이 과정에서 나오는 질문은 편하게 주셔도 됩니다. 좋은 강의로 계속 찾아뵙도록 하겠습니다. 감사합니다. :)

  • 박철현님의 프로필 이미지
    박철현

    Reviews 24

    Average Rating 5.0

    5

    100% enrolled

    현재 사이드 프로젝트에 적용시켜보려고 쭈욱 해보았습니다. 백엔드만 해본 저로써는 웹소켓과 STOMP를 이용하여 ws를 연결하여 채팅을 주고 받는 부분까지 모두 코드적으로나 ws 통신적으로나 이해가 가지만 실제 프론트와 연동하는 부분에서 파일을 세팅하는 작업없이 바로 3000 포트를 키고 연동하는 모습에 많이 혼란스러웠습니다. WebStorm으로 package.json을 로드해도 되지 않고 그냥 새로운 프로젝트 만들어서 client 패키지의 모든 파일을 복붙한채 해보았지만 여러 의존성 문제부터 react 버전 문제 createContext 문제... 등등... 백엔드만 해온 저로써는 도무지 3000포트 서버를 킬 방법이 없네요.... 백엔드 개발자로서 얻은 부분은 깔끔한 Swagger 애노테이션 사용, WebSocket - STOMP로 채팅 부분얻어갔습니다. 채팅은 못해봤지만....

    • Hong
      Instructor

      안녕하세요. 평 남겨 주셔서 감사합니다. 아무래도 템플릿 부분은 프론트 작업에 대한 부분이라서 백엔드 개발자인 제가 다루기에는 잘못된 지식이 전달되기 너무 쉽다는생각이 들었습니다. 어느정도만 할줄알다보니 테스트 하기 위한 UI의 용도로 활용을 하였습니다. 하지만 버전 충동이라던지 실행하는데에 많은 어려움이 있으신거 같습니다 ㅠㅠ 다음 강의를 준비할떄에는 좀 더 편하게 사용하실 수 있게, Docker를 사용하여 이미지로 다룸으로써 버전 충돌을 방지 할 수 있게 구성해보도록 하겠습니다. 감사합니다.

  • Kkyle님의 프로필 이미지
    Kkyle

    Reviews 6

    Average Rating 5.0

    5

    90% enrolled

    실무에서도 Spring을 사용하고 있는 주니어 입니다. 강의가 궁금하여 수강을 해보았는데, HTTP와 Socket통신을 모두 학습할 수 있어서 좋았습니다. HTTP같은경우에는 모두들 사용하시고 JPA도 어느정도는?? 알고있기 떄문에 복습한다는 생각으로 수강 하였고 Socket은 다루어보지 않았지만, 이걸 왜 사용해야하고 어떤 상황에서 효율적이고 왜 효율적인지에 대해 간략하게 알 수 있었습니다. 그에따른 간단한 구현체도 구현 가능했고요 강의가 다 알려주신다는 느낌보다는 딱 길을 잡아준다는 느낌이 있었습니다. 개발을 하는데에 있어서 어떤 개발방법이나 무엇을 공부해야 하는지??를 알려주시는 느낌이 강했습니다. 좋은 강의 감사합니다.

    • Hong
      Instructor

      안녕하세요 좋게 봐주셔서 감사합니다. 플랫폼을 구성하는데에 있어서 기본적인 부분도 함께 다루면서 강의를 준비해 보았습니다. 대략적인 공부 방향성과 그림을 스스로 그려보신거 같아서 기분이 좋네요. 앞으로 좋은 강의로 찾아뵙도록 하겠습니다. 감사합니다 :)

Limited time deal

$42,900.00

25%

$44.00

Hong's other courses

Check out other courses by the instructor!

Similar courses

Explore other courses in the same field!