Building the Foundation of the Coupon Service
약 124분Set up the practice environment and implement coupon creation, issuance, and lookup features. Use a database unique constraint to prevent duplicate issuance to the same user.
Build a first-come, first-served coupon issuance server yourself and master concurrency, asynchronous processing, caching, consistency, and availability in just 4 weeks. Prove the results of every feature improvement with k6 load tests, and complete a course you would have put off for months on your own in 4 weeks through weekly completion verification.
5회 미션 수행
성취의 증표, 수료증을 발급해요.
무제한 복습, 내 것으로 만들어요.
질문하고 즉시 답을 얻어요.
Career Verified
1,520
Learners
55
Reviews
47
Answers
4.9
Rating
6
Courses
While working as a developer at Kakao and SK,
I have designed and operated various backend systems in real-world service environments.
I am creating knowledge-sharing content with the hope that the trial and error and the concerns I have experienced
can save even a little bit of time and effort for your choices as students.
If you have any opinions or suggestions for improvement regarding the content,
please feel free to let me know at the email address below at any time.
I look forward to your honest feedback. Thank you.
apiece.dev.ai@gmail.com
Learn System Design Through a First-Come, First-Served Coupon Server
Build a first-come, first-served coupon issuance service and solve the problems that arise when requests surge, one by one. From watching the lectures to verifying course completion, join us for four weeks.
The challenge is free to join. Even those who haven't started taking the course yet can register.
What You'll Learn
More coupons may be issued than the prepared quantity, responses may be delayed, and some data may fail to be saved. You will reproduce these situations yourself, identify their causes, and then improve the design.
What happens when multiple requests come in for the same inventory? Compare database locks and Redis Lua, and learn how to enforce the issuance quantity and the one-per-person rule.
We find the sections where responses are delayed and separate the saving process using Kafka. We also address the problem of a surge in database queries when the cache expires.
We reprocess messages that failed to be saved and synchronize the records in Redis and MySQL. We apply a waiting room and request limits so the server only accepts as many requests as it can handle.
4-Week Curriculum
Each week, watch approximately 2–3 hours of lectures and upload a screenshot of the completion screen for that section. You will continue developing a single coupon service while addressing concurrency, caching, and consistency issues in sequence.
Set up the practice environment and implement coupon creation, issuance, and lookup features. Use a database unique constraint to prevent duplicate issuance to the same user.
Reproduce over-issuance with k6 and compare DB locks with Redis Lua. Then apply Kafka to separate user responses from database storage.
Measure the load that repeated queries place on the server. Apply Single Flight and SWR to reduce the surge of requests to the DB when the cache expires.
We recover messages that failed with the DLT and synchronize the data in Redis and MySQL. We prepare for situations where requests flood in all at once with a virtual waiting room and a rate limiter.
The learning mission is to certify that you have completed each week's lessons.
Just watch the assigned content and upload a screenshot of the completion screen. There are no separate assignments to submit or code reviews.
The above time is based on watching the videos. Additional time is needed for hands-on practice.
Your own creation results
We implement the entire flow of receiving requests, checking inventory, and storing issuance records. We apply the same load to compare response times and error rates, and also check the number of items issued and any missing records.
The course is conducted with Kotlin and Spring Boot, and the practice code is provided in both Kotlin and Java versions. MySQL, Redis, and Kafka are run using Docker Compose.
Recommended for
You should be familiar with HTTP and REST APIs, basic SQL, and Java or Kotlin syntax. Experience building APIs with Spring Boot is a plus. It’s okay if you’re new to Redis and Kafka.
Participation Guide
Whether you’re already taking the course or just getting started, you can participate. If you haven’t enrolled yet, register for the challenge first, then check the discount coupon information below.
Complete the course and receive a certificate.
By organizing your implementation code and load testing results, you can use them as a portfolio that explains the design process.
FAQ
Yes, you can participate regardless of your current progress. Start with the Week 1 mission and verify that you have completed the prescribed amount of the course.
Yes. The course is taught in Kotlin, and you can also find Java source code in the course materials.
If you have experience with Java and Spring, you’ll be able to follow along. Any necessary Kotlin syntax is explained during the hands-on exercises as well.
The Controller, Service, and DI structure is similar, so you can leverage your existing backend experience. You can also learn unfamiliar syntax and concepts with the help of AI.
For those who have not yet taken the course
After registering for the challenge, please submit your pledge to the mission before the challenge begins. We will give you a 30% discount coupon that can be used for the companion course.
9월
27일
챌린지 시작일
2026년 9월 27일 오후 03:00
챌린지 종료일
2026년 10월 25일 오후 02:30
All
5 lectures
Course Materials:
Ability to design and implement a first-come, first-served coupon issuance API without over-issuing coupons
Criteria for choosing the appropriate approach among pessimistic locking, Redis distributed locks, and Lua atomic operations depending on the situation
The ability to reproduce load with k6 and quantify performance improvements before and after optimization.
Designing Asynchronous Processing with Kafka and DLT Without Losing Failed Requests
SingleFlight and SWR Cache Strategies to Prevent Cache Stampedes
Who is this course right for?
A junior backend developer who knows the theory but has never personally built a server that handles heavy traffic
Learners who want to work with large-scale traffic experiences
Someone who paid for the course but has been stuck in Section 1 for months.
Need to know before starting?
Experience building a simple REST API with Spring Boot is required.
It is helpful to be familiar with Kotlin or Java syntax. Practice code is provided in both languages.
취소 및 환불 규정
챌린지는 지식공유자가 설정한 수업 최소 정원이 충족되지 않을 경우, 폐강 안내가 고지되며 결제 내역이 자동취소됩니다.
Check out other courses by the instructor!
모집 인원 300명
Free