강의

멘토링

커뮤니티

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.4) 16 reviews

421 learners

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

Reviews from Early Learners

What you will gain after the course

  • 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,683

Learners

174

Reviews

88

Answers

4.5

Rating

15

Courses

자기 소개

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

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

 

경력

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

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

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

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

Curriculum

All

31 lectures ∙ (3hr 46min)

Course Materials:

Lecture resources
Published: 
Last updated: 

Reviews

All

16 reviews

4.4

16 reviews

  • ssez13님의 프로필 이미지
    ssez13

    Reviews 7

    Average Rating 5.0

    5

    29% enrolled

    When you mentioned the disadvantages of using ORM, I felt a little stung. I had a bad experience logging while tuning a query recently.. haha I'm enjoying this episode as well. I'm not familiar with Go, so the progress is a bit slower than the first episode, but it's fun to see how it's used! There are only two people working at my company, including me (I'm a full-stack, and one of them is the CEO, and he does all the devops. 😅) Since we're running a small service, I started taking the course because I had a lot of doubts about my skills and was upset for various reasons, but I'm excited again like when I first started studying. I've been thinking a lot about the future lately, but I think it's best to empty your head and study rather than worrying. If I can do it, I'll go watch another lecture :)

    • july
      Instructor

      2-person development must be really hard. I'm rooting for you!! I wanted to broaden your perspective by providing various concepts that are not easily accessible. That's why I prepared a lot of lectures like this, and I'm very happy that it was helpful. I think it's a good thing to always have doubts about your skills. I think it's right to approach it with a humble attitude rather than being proud. I'm like that too. ㅎㅎ If you have any concerns or questions outside of the lecture content, feel free to ask. I'm a more humane person than you think. ㅎㅎ I think it's good to talk about various things and solve them together.!! Thank you for listening to the lecture!!

  • kimdh86274님의 프로필 이미지
    kimdh86274

    Reviews 5

    Average Rating 4.6

    5

    100% enrolled

    It was nice to be able to see a server written in go lang

    • koosco님의 프로필 이미지
      koosco

      Reviews 11

      Average Rating 5.0

      5

      100% enrolled

      Thank you for the great lecture.

      • dkskhy327884님의 프로필 이미지
        dkskhy327884

        Reviews 3

        Average Rating 5.0

        5

        77% enrolled

        I watched both parts 1 and 2. I was able to understand the chat server configuration to some extent, and I think it is a good lecture that covers topics that are not commonly covered.

        • july
          Instructor

          I don't know what to do with myself... I will repay you with better lectures in the future. Thank you!!

      • hojikas1237295님의 프로필 이미지
        hojikas1237295

        Reviews 4

        Average Rating 5.0

        5

        61% enrolled

        I found this lecture to be very informative and helpful, following the first one.

        • july
          Instructor

          Part 2 covered more of the architectural aspects, so I'm not sure if you found it helpful. Thank you for the good review!!

      Limited time deal ends in 00:17:40

      $28.60

      23%

      $37.40

      July's other courses

      Check out other courses by the instructor!

      Similar courses

      Explore other courses in the same field!