강의

멘토링

로드맵

개발 · 프로그래밍

/

백엔드

Spring Boot를 활용하여 채팅 플랫폼 만들어보기

Spring Boot를 활용하여 JWT, ws 통신에 대해서 학습하며, 대용량 TPS를 처리하는 방법에 대해서 학습하실 수 있습니다.

(3.9) 수강평 27개

수강생 278명

  • Hong
tps
실습 중심
채팅프로그램
Spring BootJWTwebsocketMySQLJPA

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

이런 걸 배울 수 있어요

  • Spring Boot의 기본 구조

  • ws 통신을 활용한 Stateful 서버

  • JWT를 활용한 Cookie 관리 및 인증

Spring Boot를 대용량 채팅 TPS 처리하기 😘

이 강의에서는 채팅 서비스가 들어가는 플랫폼에 대표적으로 사용하는 ws protocol을 활용하여 서비스를 어떻게 구성하고 관리를 할 수 있는지 학습하실 수 있습니다.

  • 치지직, 아프리카TV, Twitch 등등을 참고하시면 좋습니다.


본 강의는 Spring Boot, Next.js를 사용하여 직접 서비스를 구성하고, JWT를 활용한 인증 방식을 주제로 강의를 구성하였고, 이 강의를 수강하시면, 여러분들은 Spring Boot와 ws protocol에 대해서 심화적으로 학습하실 수 있습니다.

HTTP와 ws의 차이는 무엇일까요? 😘

여러분들은 이떄까지 HTTP Protocol만 주로 다루어 개발을 진행하셨다고 생각합니다.

물론 실제 실무에서는 HTTP를 주로 사용을 합니다. 하지만 이외에도 TCP, RPC, ws 등 다양한 통신 방식이 존재하며, 상황에 따라서 유연하게 적용하여 서비스를 구축 하실 수 있어야 합니다.


그럼 대표적인 HTTP와 ws의 차이는 무엇일까요?? 쉽게 말하면, Stateles와 Stateful의 차이로 보시면 됩니다.

  • Client와의 연결이 지속적이냐 아니면 일반적이냐의 차이로 이해하시면 되고, 해당 글이 이해가 안가신다면 제 강의를 수강하시면서 학습하시게 된다면, 충분히 이해하실 수 있을겁니다.


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

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

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

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

이런 내용을 배워요 😘

1⃣ 판교 개발자의 Spring Boot를 활용한 서버 구성

HTTP와 ws를 모두 활용하는 서버를 만들어 보면서 실제 서버에 대해서 학습하실 수 있습니다. 또한 JWT를 활용하여, user에 대한 정보를 활용하는 방법에 대해서 학습하실 수 있습니다.

2⃣ JPA, Bean을 활용한 주입 모델링

Spring Boot를 활용했을 떄 가장 중요하게 학습하시는 부분은 무엇일까요?? 대부분의 Spring Boot 개발자들은 해당 내용을 주로 다루고 가장 많이 사용합니다. 판교 개발자는 어떻게 Spring Boot를 활용하는지 학습하실 수 있습니다.

3⃣ Next.js, Typescript를 활용한 실습 템플릿 제공

본 강의는 단순히 ws를 활용하는 서버만을 구성하여 테스트를 진행하는 강의가 아닙니다. 실제 FE 코드를 제공하여 완성도있는 플랫폼을 구성하기 위한 기본적인 Skelton을 제공해 드립니다.

4⃣ MySQL를 활용한 데이터 관리

실무에서 가장 대표적으로 사용하는 DB는 무엇일까요?? 서비스를 구축하는데에 있어서 RDB는 굉장히 많이 사용되는 데이터베이스 입니다.

이런 특징을 가지고 있어요.😘

1⃣ 실제 개발자와 함께 코드를 작성하며 구성하는 프로젝트

2⃣ JWT의 형태와 그에따른 구성요소

3⃣ 웹소켓과 HTTP와 차이와 리소스 절감의 이유

4⃣ 구현한 프로젝트에 대해 함께하는 디버깅

수강 전 참고 사항

실습 환경

  • 강의는 MacOS(M1) 기준으로 설명합니다.



  • 강의에서는 Spring Boot와 Next.js 를 사용합니다.

    • 강의 촬영자는 서버 개발자 학습을 위해 촬영이 되었습니다. Next.js에 대해서는 템플릿만을 제공하는것을 알아주세요.


  • 이 강의는 수강생들에 대한 학습 방향성을 제공하는것을 목표로 하고 있습니다. 기본적인 기능을 구현하지만, 추후 TODO를 남겨놓는 강의로써 구성이 되어 있으니, 해당 TODO를 참고하여 추가적인 학습을 하시면 좋습니다.

    • TODO에 대한 부분은 README.md 에 남겨두었습니다.


  • IDE는 Goland 및 vscode를 사용합니다.

이런 분들께
추천드려요

학습 대상은
누구일까요?

  • Spring Boot가 처음이신 분

  • HTTP가 아닌 다른 프로토콜이 궁금하신 분

선수 지식,
필요할까요?

  • Spring Boot

  • 네트워크 기본지식

안녕하세요
입니다.

3,635

수강생

279

수강평

104

답변

4.6

강의 평점

17

강의

자기 소개

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

 

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

 

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

 

지식공유자 경력

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

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

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

 

인터뷰 이력

커리큘럼

전체

29개 ∙ (3시간 46분)

해당 강의에서 제공:

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

수강평

전체

27개

3.9

27개의 수강평

  • maintainker님의 프로필 이미지
    maintainker

    수강평 3

    평균 평점 4.3

    4

    100% 수강 후 작성

    It was a really good lecture. There are a lot of good contents such as good examples and testable methods for WS and API. However, the regrettable thing is that there are some things that need to be done first, such as DB settings and IDE settings if using vscode, but they are not listed. Another thing is that there are code examples, but the explanations for them are lacking. When modifying, there is a lot of explanation about why the modifications were made. However, as the last sentence says, developers are problem solvers, so it was a good enough lecture for those who can search and solve problems. Thank you.

    • jhong
      지식공유자

      Hello, thank you for watching the lecture. I wanted to give you more satisfaction, but I'm sorry that there are some shortcomings. ㅠㅠ Since I felt that such a perspective was very helpful in the process of studying development on my own and actually getting it done, rather than copying and pasting code written by someone else, I think this part naturally became part of the lecture. I don't think a developer is someone who simply copies and pastes code written by someone else. I think a good developer is someone who understands the concept and considers the possible trade-offs that may occur while applying the concept. To be honest, I didn't want to tell you everything. ㅎㅎ I wanted to teach you the habit of trying things out on your own. I will come back with a better lecture in the future. It's very cold, so take care of your cold and thank you :)

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

    수강평 23

    평균 평점 4.8

    4

    100% 수강 후 작성

    First of all, thank you for the lecture. I enjoyed it! However, I would like to carefully share some of the parts that I was disappointed with. The most disappointing thing is that the composition was somewhat scattered. Since the test was performed at the end after implementing all the functions instead of checking them in the middle, I should say that there was no conclusion for each function.. Since there was no conclusion for each point, I felt very disoriented when I had to return to implementing other functions. The tool was also disappointing. You may use vscode for some reason, but there were many times when the flow was interrupted due to frequent import errors, etc. I personally wondered if there was a reason to proceed with vscode. Lastly, I think it would have been better if there had been more selection and focus. The title of the lecture is "Creating a Chat Platform Using Spring Boot". Since it is basically a 'chat platform', I thought the lecture would naturally focus on web sockets, but I was disappointed that there were many parts omitted. However, it was great to be able to follow along step by step with the parts that I hadn't thought of when creating a chat platform, such as the need for slightly complex SQL statements and the parts that I might have missed in DB design. I could tell right away that you are a very capable developer throughout the lecture, but I wrote a bit too much because I wanted you to be a better instructor. I think it would be really great if the lecture structure was just a little bit more refined!

    • jhong
      지식공유자

      Hello. Thank you for leaving a good review. I considered a method of conducting tests one by one, but I wanted to show you the test by linking it to the actual Front, so I prepared the lecture like this. ㅠㅠ I will refer to that part more from next time. The reason I used VsCode as an IDE is because I thought there might be some people who are less familiar with it, so I used an IDE that is used as much as possible. JetBrains is good, but I thought that VsCode would be used for more parts. When preparing a lecture on the web socket function for chat, I thought that there was too little for you to gain if I only covered that topic. As a result, the lecture topic tended to be a little distracting. ㅠㅠ I apologize for that. Thank you again for leaving a good review, and I will come back with a more fun and meaningful lecture in the future. Thank you!!

  • dkstmdwn176216님의 프로필 이미지
    dkstmdwn176216

    수강평 37

    평균 평점 4.8

    5

    100% 수강 후 작성

    The lecture itself was good because it could be watched in 3~4 days even if you invested a lot of time. If you watch it quickly, you can probably watch it in about a day. The lecture content is about creating a simple provider for authentication and processing it, and although it is not the main content, I was able to briefly learn about the jwt authentication method. Regarding chat, he explained the pub sub model, and he explained method A and a little about B. He told me about how to find it myself and do it, like an open ending? As I continued to work, I realized that in practice, there are many times when I spend a lot of time on really ridiculous things. Especially when it comes to error handling. The lecture goes by quickly, but the instructor often makes mistakes. For example, when creating a usercredential entity, declaring the table name as "user", or using a different name for the mapping method, causing a 404 error on the front. create_at -> The part that needs to be declared as created_at When a problem occurs, I liked the part where you can find and solve it yourself before watching the lecture on solving errors, and it also feels a bit practical. ㅎㅎ Beginners may wonder why it doesn't work. And this is not a lecture that says you can service a chat application after watching one lecture. I want to complete a complete chat service. !

    • jhong
      지식공유자

      Hello, thank you for leaving a good review. Your time and mine are both precious. I aimed to implement the functions as much as possible. If you implement the functions like this, the secondary parts will follow to some extent. So I focused on implementing the core functions, and rather than a completely finished lecture, I want to show you a more human side by debugging together. Since no one is perfect in the world, it's okay if there are mistakes and bugs. I also thought a little about the perfect application, and I concluded that making it by only following the parts I tell you is not a good way to study, so I wanted to provide you with a TODO list and parts that you can think about later. Feel free to ask questions during this process. I will continue to visit you with good lectures. Thank you. :)

  • wsde43665님의 프로필 이미지
    wsde43665

    수강평 24

    평균 평점 5.0

    5

    100% 수강 후 작성

    I tried to apply it to my current side project. As someone who has only worked on the backend, I understand the code and the ws communication of connecting to ws using WebSocket and STOMP and exchanging chat messages, but I was very confused when I connected to the actual front end by simply turning on port 3000 without setting up a file. I couldn't load package.json in WebStorm, so I just created a new project and copied and pasted all the files in the client package, but I had various dependency issues, react version issues, createContext issues, etc. As someone who has only worked on the backend, I have no idea how to turn on the port 3000 server.... As a backend developer, I learned how to use clean Swagger annotations and the WebSocket - STOMP for chat. I haven't tried the chat yet....

    • jhong
      지식공유자

      Hello. Thank you for leaving a comment. Since the template part is a part of the front-end work, I thought it would be too easy to convey incorrect knowledge if I, a back-end developer, handled it. Since I only knew how to do it to some extent, I used it as a UI for testing. However, it seems that you are having a lot of trouble with version conflicts and running it 😭😭 When preparing the next lecture, I will try to configure it so that you can use it more easily by using Docker to handle it as an image to prevent version conflicts. Thank you.

  • yuhojin8037329님의 프로필 이미지
    yuhojin8037329

    수강평 6

    평균 평점 5.0

    5

    90% 수강 후 작성

    I am a junior who uses Spring in my work. I took the course because I was curious about the lecture, and it was good because I could learn both HTTP and Socket communication. In the case of HTTP, everyone uses it, and I know JPA to some extent?? So I took the course with the idea of reviewing it. I didn't deal with Socket, but I was able to briefly understand why it should be used, in what situations it is efficient, and why it is efficient. I was also able to implement a simple implementation accordingly. Rather than feeling like the lecture taught me everything, I felt like it showed me the right path. It felt like it taught me what development methods and what I should study for development. Thank you for the great lecture.

    • jhong
      지식공유자

      Hello, thank you for your kind words. I prepared the lecture while covering the basics of configuring the platform. I feel good because it seems like you have drawn a rough study direction and picture yourself. I will come back with a good lecture in the future. Thank you :)

₩57,200

Hong님의 다른 강의

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

비슷한 강의

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