4μž₯

  • 처리율 μ œν•œ μž₯μΉ˜λž€?

    • ν΄λΌμ΄μ–ΈνŠΈ λ˜λŠ” μ„œλΉ„μŠ€κ°€ λ³΄λ‚΄λŠ” νŠΈλž˜ν”½μ˜ 처리율(rate)을 μ œμ–΄ν•˜κΈ° μœ„ν•œ μž₯치.

    • μ˜ˆμ‹œ

      • μ‚¬μš©μžλŠ” μ΄ˆλ‹Ή 2회 이상 μƒˆ 글을 올릴 수 μ—†λ‹€.

      • 같은 IP μ£Όμ†Œλ‘œλŠ” ν•˜λ£¨μ— 10개 μ΄μƒμ˜ 계정을 생성할 수 μ—†λ‹€.

      • 같은 λ””λ°”μ΄μŠ€λ‘œλŠ” μ£Όλ‹Ή 5회 이상 λ¦¬μ›Œλ“œ(reward)λ₯Ό μš”μ²­ν•  수 μ—†λ‹€.

    • 처리율 μ œν•œ μž₯μΉ˜κ°€ ν•„μš”ν•œ 이유

      • Dos 곡격에 μ˜ν•œ μžμ› 고갈 λ°©μ§€

      • λΉ„μš© 절감

      • μ„œλ²„ κ³ΌλΆ€ν•˜ λ°©μ§€

    • 어디에 κ΅¬ν˜„ν•  것인가?

      • μ„œλ²„ μΈ‘ κ΅¬ν˜„

        • ν˜„μž¬ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μΆ©λΆ„νžˆ 효율이 쒋은가?

        • μ•Œκ³ λ¦¬μ¦˜μ„ 자유둭게 선택할 수 μžˆλ‹€.

      • κ²Œμ΄νŠΈμ›¨μ΄

        • λ§ˆμ΄ν¬λ‘œμ„œλΉ„μŠ€μ— κΈ°λ°˜ν•˜κ³  있고 API κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό 섀계에 ν¬ν•¨μ‹œν‚¨ 경우

        • μƒμš© API κ²Œμ΄νŠΈμ›¨μ΄λ₯Ό μ“°λŠ” 것도 λ°”λžŒμ§ν•¨

    • μ•Œκ³ λ¦¬μ¦˜

      • 토큰 버킷

        • μ„€λͺ…

          • ν­λ„“κ²Œ μ΄μš©λœλ‹€ (μ•„λ§ˆμ‘΄, μŠ€νŠΈλΌμ΄ν”„)

          • μ§€μ •λœ μš©λŸ‰μ„ κ°€μ§„ 버킷에 토큰을 μ±„μš°κ³ , 토큰이 λ‹€ μ°¨λ©΄ 더 μ΄μƒμ˜ 토큰을 μΆ”κ°€ν•˜μ§€ μ•ŠλŠ”λ‹€.

          • 각 μš”μ²­μ΄ 처리될 λ•Œλ§ˆλ‹€ ν•˜λ‚˜μ˜ 토큰을 μ‚¬μš©ν•œλ‹€. μΆ©λΆ„ν•œ 토큰이 μ—†λŠ” 경우 μš”μ²­μ„ 버린닀.

        • μž₯점

          • κ΅¬ν˜„μ΄ 쉽닀

          • λ©”λͺ¨λ¦¬ μ‚¬μš© μΈ‘λ©΄μ—μ„œ 효율적

          • 짧은 μ‹œκ°„μ— μ§‘μ€‘λ˜λŠ” νŠΈλž˜ν”½λ„ 처리 κ°€λŠ₯

        • 단점

          • 버킷 크기와 토큰 곡급λ₯ μ„ μ μ ˆν•˜κ²Œ νŠœλ‹ν•˜λŠ” 것이 κΉŒλ‹€λ‘œμ›€

      • λˆ„μΆœ 버킷

        • FIFO 큐 - μš”μ²­μ΄ μ˜¬λ•Œλ§ˆλ‹€ μ²˜λ¦¬ν•˜κ³  κ³ μ • μ†λ„λ‘œ μ²˜λ¦¬ν•œλ‹€.

        • μ‡Όν”ΌνŒŒμ΄μ—μ„œ μ‚¬μš©μ€‘

        • μž₯점

          • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ μΈ‘λ©΄μ—μ„œ 효율적

          • μ•ˆμ •μ  좜λ ₯이 ν•„μš”ν•œ 경우 적합

        • 단점

          • νŠΈλž˜ν”½μ΄ λͺ°λ¦¬λŠ” 경우 큐에 μš”μ²­μ΄ μŒ“μ΄κ³  μ΅œμ‹  μš”μ²­μ΄ λ²„λ €μ§€κ²Œ λœλ‹€

          • 인자 νŠœλ‹μ΄ κΉŒλ‹€λ‘œμšΈ 수 μžˆλ‹€.

      • κ³ μ • μœˆλ„ μΉ΄μš΄ν„°

      • 이동 μœˆλ„ 둜그

      • 이동 μœˆλ„ μΉ΄μš΄ν„°

    • 개랡적인 μ•„ν‚€ν…μ²˜

      • μΉ΄μš΄ν„°λ₯Ό 두고, μΉ΄μš΄ν„°μ˜ 값이 ν•œλ„λ₯Ό λ„˜μ–΄κ°€λ©΄ μš”μ²­μ„ κ±°λΆ€ν•œλ‹€.

      • μΉ΄μš΄ν„° - redis같은 μΊμ‹œ λ©”λͺ¨λ¦¬κ°€ μ λ‹Ήν•˜λ‹€

    • 상세 섀계

      • 처리율 μ œν•œ κ·œμΉ™μ€ μ–΄λ–»κ²Œ λ§Œλ“€μ–΄μ§€κ³  어디에 μ €μž₯λ˜λŠ”κ°€?

      • μ²˜λ¦¬κ°€ μ œν•œλœ μš”μ²­λ“€μ€ μ–΄λ–»κ²Œ μ²˜λ¦¬λ˜λŠ”κ°€?

      • 처리율 μ œν•œ κ·œμΉ™μ€ λ””μŠ€ν¬μ— λ³΄κ΄€ν•œλ‹€ - μˆ˜μ‹œλ‘œ λ””μŠ€ν¬μ—μ„œ 읽어 μΊμ‹œμ— μ €μž₯ν•œλ‹€

      • 처리율 μ œν•œ 미듀웨어가 μ œν•œ κ·œμΉ™μ„ μΊμ‹œμ—μ„œ κ°€μ Έμ˜€κ³ , λ ˆλ””μŠ€μ—μ„œ νƒ€μž„μŠ€νƒ¬ν”„λ₯Ό κ°€μ Έμ˜¨λ‹€.

        • API μ„œλ²„λ‘œ λ³΄λ‚΄κ±°λ‚˜, 처리율 μ œν•œμ— κ±Έλ Έλ‹€λ©΄ μ—λŸ¬λ₯Ό 보낸닀.

    λΆ„μ‚° ν™˜κ²½μ—μ„œλŠ” 쑰금 더 μ–΄λ €μ›Œμ§„λ‹€. 두 κ°€μ§€ 문제λ₯Ό ν’€μ–΄μ•Ό ν•œλ‹€.

    • 경쟁 쑰건

    • 동기화

경쟁 쑰건 이슈

  • ν•΄κ²°μ±… 1. 락을 건닀 - μ„±λŠ₯이 λ–¨μ–΄μ§„λ‹€

  • ν•΄κ²°μ±… 2. 루아 슀크립트

  • μƒˆκ²°μ±… 3. μ •λ ¬ μ§‘ν•© (λ ˆλ””μŠ€ 자료 ꡬ쑰)

동기화 이슈

  • 처리율 μ œν•œ μž₯μΉ˜κ°€ μ—¬λŸ¬ λŒ€ μžˆμ„ λ•Œ, ν΄λΌμ΄μ–ΈνŠΈκ°€ μ›λž˜ λ³΄λ‚΄λ˜ μž₯μΉ˜κ°€ μ•„λ‹Œ λ‹€λ₯Έ μž₯치둜 보낼 수 μžˆλ‹€.

  • ν•΄κ²°μ±… 1. κ³ μ • μ„Έμ…˜(sticky session)을 μ‚¬μš©ν•œλ‹€ β†’ ν•˜μ§€λ§Œ ν™•μž₯κ°€λŠ₯ν•˜μ§€λ„ μ•Šκ³  μœ μ—°ν•˜μ§€ μ•Šλ‹€.

  • ν•΄κ²°μ±… 2. 쀑앙 μ§‘μ€‘ν˜• μ €μž₯μ†Œ(redis)λ₯Ό μ“΄λ‹€.

μ„±λŠ₯ μ΅œμ ν™”

  • μ‚¬μš©μžμ˜ νŠΈλž˜ν”½μ„ κ°€μž₯ κ°€κΉŒμš΄ 에지 μ„œλ²„λ‘œ μ „λ‹¬ν•˜μ—¬ μ§€μ—°μ‹œκ°„μ„ 쀄인닀

  • 데이터λ₯Ό 동기화할 λ•Œ μ΅œμ’… 일관성 λͺ¨λΈμ„ μ‚¬μš©ν•œλ‹€.

λ‹€μŒκ³Ό 같은 뢀뢄을 μ–ΈκΈ‰ν•˜λŠ” 게 도움이 될 수 있음

ν΄λΌμ΄μ–ΈνŠΈ 섀계

  • ν΄λΌμ΄μ–ΈνŠΈ μΈ‘ μΊμ‹œλ₯Ό μ‚¬μš©ν•˜μ—¬ API 호좜 횟수λ₯Ό 쀄인닀.

  • μž¬μ‹œλ„ λ‘œμ§μ„ κ΅¬ν˜„ν•  λ•ŒλŠ” μΆ©λΆ„ν•œ λ°±μ˜€ν”„ μ‹œκ°„μ„ λ‘”λ‹€.

Last updated