강의

멘토링

커뮤니티

Programming

/

Back-end

Building a Stateful Service for Large-Scale Chat TPS

I'll show you everything about how to build servers for stateful services and how zero-downtime deployment works.

(4.4) 16 reviews

431 learners

Level Basic

Course period Unlimited

  • July
Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets
Node.js
Node.js
MySQL
MySQL
Go
Go
Kafka
Kafka
websockets
websockets

Reviews from Early Learners

Reviews from Early Learners

4.4

5.0

ssez

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 :)

5.0

DAN

100% enrolled

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

5.0

rnxogud123

100% enrolled

Thank you for the great lecture.

What you will gain after the course

  • Publish/Subscribe Pattern with Kafka

  • Data Management through MySQL

  • High-volume chat TPS processing through WSS communication

  • Server Management through Event Streaming

Creating a Stateful Service Using Kafka and MySQL 😘


In this course, you can learn how Stateful services are managed and developed for chat TPS used in streaming platforms.


This course uses two languages.

We'll explore how to implement everything primarily using Golang and

For those taking the course afterwards, we have structured the lecture using various languages, including how to utilize Kafka in Node.JS, which may be more familiar to you.


Additionally, the course covers various topics you may not have experienced before, such as publish/subscribe patterns through Kafka and data management through MySQL.


After completing this course, you will gain a deep understanding of Kafka and MySQL and learn about Zero-downtime Deployment for Stateful services.

What's the difference between Stateful vs Stateless?? 🫣

Everyone!! Have you ever thought about the basic form of a server, not just the server structure like MVC, Service-Repository?


In practice, depending on the server architecture, it determines whether to perform zero-downtime deployment or allow a certain degree of retries.

When you develop a server, development begins with one of these two concepts necessarily applied.

You can think of it as a typical HTTP server.

Since it doesn't maintain state, it's very easy to scale, and if you're generally developing a server

It is basically configured as a Stateless server.


This can be considered the most representative form of server.

This is a form of server that is not commonly encountered.


In this server structure, development proceeds using the ws protocol

Because it maintains state, it's very disadvantageous for scaling, but since it maintains the connection, it helps reduce resources.


This is the type of server we will primarily cover in this course.

This course will cover both Stateful and Stateless cases. 💁

I can confidently say that this is a course you won't easily come across elsewhere.


Through developing two types of servers, you will be able to learn about handling high-volume chat TPS using MySQL and Socket and Zero-downtime Deployment using Kafka and how they can work.

What is Zero-downtime Deployment??🙋‍♂

In the introduction earlier, I frequently used this term.

In literal translation, it means zero-downtime deployment.


Have you ever experienced a streaming platform suddenly going down or being interrupted?

A deployment that proceeds without affecting the site, where users don't even know whether a deployment is happening or not, is called Zero-downtime Deployment.

This approach can be implemented very easily in stateless services.

However, for stateful services that maintain server state, it is a very difficult task that consumes a lot of resources.


In this course, we will cover how to implement Zero-downtime Deployment for Stateful services using Kafka.

Why Kafka 😯

Kafka is an event-driven streaming tool that is very frequently used for implementing publish/subscribe patterns.


In fact, it's a service developed and adopted by LinkedIn, and various companies have implemented Kafka to process data without losing event messages.

  • The most important part students should focus on is that major tech companies (Naver, Kakao, Line, Coupang, Baemin) and numerous large corporations use Kafka as a requirement, so this will be very helpful.


In this course, we'll show you how to set up and build a Kafka environment in your local environment, and teach you how to actually use it.

  • The content about Kafka is based on Kafka: The Definitive Guide by Gwen Shapira, an actual LinkedIn developer, and the curriculum has been structured accordingly.

Here's what you'll learn. 🤔

1⃣Pub/Sub Modeling using Kafka

We cover everything from Kafka config environment settings to running Brokers and Zookeeper. Through this, you will learn how to develop services using Kafka and important considerations to keep in mind.

2⃣Service Data Management through MySQL Schema Design

You will learn how to manage data for socket communication and chat room data using MySQL, which is suitable for service development, and you can learn how to build a server by writing queries directly, such as ORDER BY and Paging.

3⃣Server-to-server communication achieved by building 4 servers

Rather than simply building a single server, you'll be able to indirectly experience Load Balancer through extensive server work such as configuring various servers and building a Controller server to manage them, and you can experience methods of communication between servers using Kafka's Pub/Sub Modeling.

Here's what we'll be implementing. 🤔

How to Run Kafka in a Local Environment

Managing chat rooms and chat data through MySQL

Handling DB data through websockets communication

Kafka Utilization and Server Management Using Node.js and Go

Notes Before Taking the Course

Practice Environment

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


  • PC Specifications: Basic PC with internet access

Please be sure to check out the free preview videos!! They contain information about what you'll learn in this course and the services you'll actually implement.

This part is very important! 😯

This course is a continuation of the previous first course, covering additional service development, data management, and deployment.

Therefore, this course continues based on the previous course.

There will be a brief explanation of the source code covered in the previous course, but those hearing it for the first time may find it quite confusing.


So if you don't have knowledge about wss communication or chat servers, I think you won't have much difficulty taking this course if you complete that course first.

The goal of this course is not FE development, but rather the ws protocol andfocusing on Zero-downtime Deployment architecture and server development.


This is because I am not a developer who specializes in FE, but a developer who specializes in BE. So there is a concern that incorrect knowledge about FE development might be conveyed, which is why FE development only handles API processing for a single server.


Therefore, additional Zero-downtime DeploymentReact State management is not covered in the course. This point is continuously mentioned throughout the course, so please keep that in mind.

Recommended for
these people

Who is this course right for?

  • People interested in the publish/subscribe pattern

  • Those curious about building a streaming platform

  • Those curious about chat data management

  • Someone who wants to try new and interesting development rather than conventional development methods

  • For those who want to learn MySQL and Kafka from practitioners

Need to know before starting?

  • Golang [ This is the primary language of the course. It's okay if you don't know it. ]

  • Node.js [This is a language for students taking the course. It's okay if you don't know it.]

Hello
This is

3,773

Learners

184

Reviews

88

Answers

4.4

Rating

15

Courses

Introduction

As a non-major, I am currently working as a platform server developer in Pangyo.

I enjoy server optimization and various query tuning, and I strive to explain simple features to you in a quick and easy-to-understand manner.

Experience

[Former] Sandbox Blockchain Developer

[Former] Backend Developer at a Nexon subsidiary

[Former] Platform Server Developer at a major tech company in Pangyo

[Current] Server Developer at a Pangyo-based parent company

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 3 days

      $36,300.00

      23%

      $37.40

      July's other courses

      Check out other courses by the instructor!

      Similar courses

      Explore other courses in the same field!