강의

멘토링

커뮤니티

Programming

/

Back-end

Spring Boot を活用して チャットプラットフォーム を 作ってみる

Spring Bootを活用し、JWT、ws通信、大容量TPSの処理方法について学習できます。

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

学習した受講者のレビュー

受講後に得られること

  • Spring Bootの基本構造

  • ws通信を活用したStatefulサーバー

  • JWTを活用したCookie管理および認証

Spring Bootを大容量チャットTPSで処理する😘

このレッスンでは、チャットサービスが入っているプラ​​ットフォームで代表的に使用されるwsプロトコルを活用して、サービスをどのように構成して管理できるかを学ぶことができます。

  • 歯肉アフリカテレビ、 Twitchなどを参考にしてください。


このレッスンでは、Spring Boot、Next.jsを使用して直接サービスを設定し、JWTを活用した認証方式をテーマにレッスンを構成し、このレッスンを受講すれば、あなたはSpring Bootとws protocolについて深く学習することができます。

HTTPとwsの違いは何ですか? 😘

皆さんはこれまでHTTP Protocolだけ主に取り上げて開発を進めたと思います。

もちろん実際の実務ではHTTPを主に使用します。しかし、他にもTCP、RPC、wsなど様々な通信方式が存在し、状況に応じて柔軟に適用してサービスを構築することができなければなりません。


では、代表的なHTTPとwsの違いは何ですか?簡単に言えば、ステートレスとステートフルの違いで見ることができます。

  • 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⃣ WebソケットとHTTPとの違いとリソース削減の理由

4⃣実装したプロジェクトについて一緒にデバッグ

受講前の注意

練習環境

  • 講義はMacOS(M1)ベースで説明されています。



  • レッスンでは、Spring BootとNext.jsを使用します。

    • 講義撮影者はサーバー開発者の学習のために撮影になりました。 Next.jsについては、テンプレートのみを提供することを学んでください。


  • この講義は、受講生に学習の方向性を提供することを目指しています。基本的な機能を実装しますが、今後TODOを残す講義として構成されていますので、該当TODOを参考に追加の学習をしてください。

    • TODOの部分はREADME.mdに残りました。


  • IDEはGolandとvscodeを使用します。

こんな方に
おすすめです

学習対象は
誰でしょう?

  • Spring Bootが初めての方

  • HTTP以外のプロトコルが気になる方

前提知識、
必要でしょうか?

  • Spring Boot

  • ネットワーク基本知識

こんにちは
です。

4,593

受講生

337

受講レビュー

118

回答

4.7

講座評価

18

講座

자기 소개

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

 

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

 

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

 

지식공유자 경력

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

[前] 메타버스 백엔드 개발자

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

 

인터뷰 이력

カリキュラム

全体

29件 ∙ (3時間 46分)

講座資料(こうぎしりょう):

授業資料
講座掲載日: 
最終更新日: 

受講レビュー

全体

27件

3.9

27件の受講レビュー

  • syhwan88님의 프로필 이미지
    syhwan88

    受講レビュー 3

    平均評価 4.3

    4

    100% 受講後に作成

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

    • Hong
      知識共有者

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

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

    受講レビュー 23

    平均評価 4.8

    4

    100% 受講後に作成

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

    • Hong
      知識共有者

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

  • Anfield님의 프로필 이미지
    Anfield

    受講レビュー 37

    平均評価 4.8

    5

    100% 受講後に作成

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

    • Hong
      知識共有者

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

  • service님의 프로필 이미지
    service

    受講レビュー 24

    平均評価 5.0

    5

    100% 受講後に作成

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

    • Hong
      知識共有者

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

  • Kkyle님의 프로필 이미지
    Kkyle

    受講レビュー 6

    平均評価 5.0

    5

    90% 受講後に作成

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

    • Hong
      知識共有者

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

¥7,029

Hongの他の講座

知識共有者の他の講座を見てみましょう!

似ている講座

同じ分野の他の講座を見てみましょう!