강의

멘토링

로드맵

Programming

/

Back-end

Building a stateful service for Daeyongrang Chat TPS

We will tell you everything about how to build a server and perform uninterrupted deployment for stateful services such as Chijijik and AfreecaTV.

(4.3) 15 reviews

410 learners

  • July
카프카
대용량트래픽
tps
웹소켓
Go
Kafka
Node.js
MySQL
websockets

Reviews from Early Learners

What you will learn!

  • Publish/Subscribe Pattern with Kafka

  • Data Management with MySQL

  • Daeyongrang Chat TPS Processing via WSS Communication

  • Server management through event streaming

Building a Stateful Service Using Kafka and MySQL at Naver (Chijijik) 😘


In this lecture, you will learn how stateful services are managed and developed for chat TPS used on streaming platforms ( Chijijik , AfreecaTV , Discord , Twitch ) .


This course uses two languages.

Let's learn how to implement everything using Golang first.

For those who will take the course in the future, the lectures are structured using various languages, such as how to use Kafka in Node.JS, which is a bit more familiar .


Additionally, the lectures cover a variety of topics that you may not have experienced before, such as publish/subscribe patterns through Kafka and data management through MySQL .


After taking this course, you will gain a deep understanding of Kafka and MySQL , and learn zero-downtime deployment for stateful services .

What is the difference between Stateful and Stateless? 🫣

Have you ever thought about the basic structure of a server, rather than just the simple MVC or Service-Repository architecture?


In practice, depending on the type of server, it is determined whether to perform Zero-downtime Deployment or to allow a certain amount of retry.

The server you develop will begin development with one of these two concepts applied.

Think of it as a typical HTTP server.

Because it doesn't maintain state, it's very easy to expand, and if you're developing a server in general,

Basically, it is configured as a stateless server.


You can think of it as the most representative form of server.

This is a type of server that is not easily accessible.


In the structure of this server, development is carried out using the ws protocol.

Because it maintains state, it is very disadvantageous for expansion, but because it maintains connections, it helps save resources.


This is the type of server we will mainly cover in this lecture.

In this lecture, we will cover both stateful and stateless cases. 💁

I can assure you that this lecture is not one that you will easily come across.


Through two types of server development, you can learn how to handle large-capacity chat TPS using MySQL and Socket , and how to operate Zero-downtime Deployment using Kafka .

What is Zero-downtime Deployment? 🙋‍♂

In the introduction above, I used that term frequently.

A direct translation would be: uninterrupted distribution .


Have you ever experienced a situation where a streaming platform suddenly becomes unavailable or stops working?

From the user's perspective, Zero-downtime Deployment means that the deployment is carried out without affecting the site, so that the user does not know whether the deployment is in progress or not.

This method can be implemented very easily in stateless services.

However, in a stateful service that maintains the state of the server, this is a very difficult and resource-intensive task.


In this lecture, we will cover how to implement zero-downtime deployment using Kafka for stateful services .

Why Kafka 😯

Kafka is an event-based streaming tool that is very frequently used in publish/subscribe patterns.


In fact, it is a service developed and introduced by LinkedIn , and various companies are introducing Kafka to process data without losing messages about events.

  • The most important thing for students to keep in mind is that many large companies use Kafka as a prerequisite, so it will be very helpful.


In this lecture, we will teach you how to set up and build a Kafka environment on your own local environment, and how to actually use it.

Learn this stuff. 🤔

1⃣ Pub/Sub Modeling with Kafka

This course covers everything from Kafka configuration settings to Broker and Zookeeper startup. Through this, you'll learn how to develop services utilizing Kafka, along with the precautions to take.

2⃣ Service data management through MySQL schema design

You will learn how to manage data for socket communication and chat rooms using MySQL, which is easy to use for service construction. You will also learn how to write queries such as ORDER BY and Paging and how to build a server.

3⃣ Inter-server communication achieved by building four servers

Rather than simply building a single server, you can indirectly experience the Load Balancer through many server tasks, such as configuring various servers and building a Controller server to manage those servers, and you can experience communication methods between servers by utilizing Kafka's Pub/Sub Modeling .

I'll try to implement something like this. 🤔

How to run Kafka in a local environment

Managing chat rooms and chat data with MySQL

Handling DB data through websockets communication

Kafka Utilization and Server Management Using Node.js and Go

Things to note before taking the course

Practice environment

  • Operating System and Version (OS): All OS are supported, including Windows, macOS, and Linux.


  • PC specifications: PC with basic specifications capable of accessing the Internet

Be sure to check out this free video! It contains information about the services you'll learn and implement in this course.

This part is very important! 😯

This lecture is a continuation of the previous lecture, and covers additional service construction, data management, and distribution.

So, the lecture will continue based on the previous lecture.

Although the explanation of the source code covered in the previous lecture is simple, those hearing it for the first time may be very confused.


So, if you don't have any knowledge about WSS communication or chat servers, I think you won't have much difficulty taking the course if you take this course first.

The goal of this lecture is not FE development, but about the ws protocol. We focus on Zero-downtime Deployment architecture and server development .


Because, I am not a developer who specializes in FE, but rather a developer who specializes in BE. So, I am concerned that incorrect knowledge may be passed on to FE development, so FE development is only handling API processing for a single server.


Therefore, React State management for additional zero-downtime deployments will not be covered in this lecture. This part is continuously mentioned in the lecture, so please refer to it.

Recommended for
these people

Who is this course right for?

  • For those interested in publish/subscribe patterns

  • Anyone interested in building a streaming platform

  • For those of you wondering about chat data management

  • People who want to try new and fun development methods rather than the standard development methods

  • Anyone who wants to learn MySQL and Kafka from practitioners

Need to know before starting?

  • Golang [The basic language of the lecture. You don't have to know it.]

  • Node.Js [This is a language for students. You don't have to know it.]

Hello
This is

3,572

Learners

165

Reviews

87

Answers

4.5

Rating

15

Courses

자기 소개

비전공자 출신으로 판교에서 플랫폼 서버 개발을 담당하여 진행하고 있습니다.

서버 최적화와 다양한 쿼리 튜닝을 좋아합니다.

 

경력

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

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

[前] 판교 대기업 플랫폼 서버 개발자

[] 판교 모회사 서버 개발자

Curriculum

All

31 lectures ∙ (3hr 46min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

15 reviews

4.3

15 reviews

  • ssez님의 프로필 이미지
    ssez

    Reviews 7

    Average Rating 5.0

    5

    29% enrolled

    ORM 사용 시 단점에 대해 언급해주실 때 뜨끔했습니다. 안 그래도 최근 쿼리 튜닝할 때 로깅해봤다가 뜨헉했던 경험이.. ㅎㅎ 이번에도 재밌게 보고 있습니다. go가 익숙치 않아서 1탄에 비해 진도가 좀 더디지만, 이렇게 쓰는구나~ 하며 또 다른 재미가 있네요! 저희 회사는 저를 포함해 2명만 일하고 있고 (저는 풀스택, 한분은 대표님이신데, devops까지 다하세요. 😅) 아무래도 작은 서비스를 운영하다보니... 제 실력에 대해 의심도 많이 가고, 이래저래 심란해서 수강하기 시작했는데 다시 처음 공부할때처럼 설레이네요. 요즘 미래에 대해 고민도 많았는데 역시 고민하기보단 머리를 비우고 공부하는 게 최고인 것 같습니다. 완강하면 또 다른 강의 보러가겠습니다 :)

    • July
      Instructor

      2인 개발이라는 정말 쉽지않으시겠어요. 응원합니다!! 아무래도 쉽게 접하지 못하는 다양한 개념들을 제공해 드리면서 견해를 넓혀드리고 싶었습니다. 그래서 이런 강의를 많이 준비를 하였는데 도움이 되신거 같아서 매우 뿌듯하네요. 항상 실력에 대한 의심이 가는것은 좋은 모습인거 같습니다. 자만하기보다는 낮은 자세로 임하는게 저는 맞다고 생각을해요 저 또한 그렇고요 ㅎㅎ 강의 내용외에도 고민이 있으신 부분이나 질문이 있으시다면 편하게 질문주세요. 저 생각보다 되게 인간적인 사람이라서 ㅎㅎ 이런저런 대화하면서 서로 해결해나가는 것도 좋다고 생각합니다.!! 강의 들어주셔서 감사합니다!!

  • DAN님의 프로필 이미지
    DAN

    Reviews 5

    Average Rating 4.6

    5

    100% enrolled

    go lang을 작성된 서버를 볼 수 있어서 좋았습니다

    • rnxogud123님의 프로필 이미지
      rnxogud123

      Reviews 11

      Average Rating 5.0

      5

      100% enrolled

      좋은 강의 감사합니다.

      • dksk hy님의 프로필 이미지
        dksk hy

        Reviews 3

        Average Rating 5.0

        5

        77% enrolled

        1편과 2편 모두 보았습니다. 채팅서버에 대한 구성을 어느정도 이해 할 수 있었고, 일반적으로 접할 수 없는 주제로 구성된 좋은 강의라고 생각합니다.

        • July
          Instructor

          몸둘바를 모르겠다는.... 앞으로 좋은 강의로 보답하겠습니다. 감사합니다!!

      • kas kim님의 프로필 이미지
        kas kim

        Reviews 4

        Average Rating 5.0

        5

        61% enrolled

        이번 강의도 1탄에 이어서 유익하게 잘 보았습니다.

        • July
          Instructor

          2탄은 좀 더 아키텍처인 부분을 다루었는데 유익하셨는지 모르겠네요. 좋은 평 감사합니다!!

      Limited time deal

      $35,470.00

      25%

      $37.40

      July's other courses

      Check out other courses by the instructor!

      Similar courses

      Explore other courses in the same field!