커스텀 테마 컴포넌트 429 오류 수정

어떤 작업을 원하시나요?
최근 429 오류를 반환하기 시작한 커스텀 테마 컴포넌트(“Bio Book”)가 있습니다. 이 문제는 11월 26일에 시작되었습니다. 그 이전에는 정상적으로 작동했습니다.

Bio Book은 /u 라우트를 해킹하여 사용자 정보를 더 아름다운 방식으로 표시합니다. 이를 위해 각 사용자의 .json 파일에서 추가 사용자 정보도 요청했습니다. Bio Book은 429 오류를 피하기 위해 지연 로딩(lazy loading)을 사용했지만, 4일 전부터 이 기능이 작동하지 않았습니다. 4일 전에 무슨 일이 있었는지는 정확히 알 수 없으나, Discourse 팀은 레이트 리밋(rate limit)에 변경 사항이 없었다고 확인해 주었습니다.

코드 저장소는 다음과 같습니다: GitHub - sethgodin/discourse_biobook: Bio Book feature for Discourse

원래 이 컴포넌트를 위해 개발했던 개발자는 현재 이 수정 작업을 맡을 수 없는 상태이므로, 기존 코드에 진입하여 오류를 해결하고 커스텀 테마 컴포넌트가 다시 정상 작동하도록 해줄 수 있는 사람이 필요합니다.

새로운 기능 추가는 원하지 않으며, 기존 기능 변경도 필요 없고, 리팩토링도 원하지 않습니다. 단순히 429 오류를 해결하고 Bio Book이 이전과 동일한 기능을 수행하도록만 하면 됩니다.

언제까지 완료되길 원하시나요?
2020년 1월 6일 월요일까지 완료되기를 희망합니다.

이 작업을 위해 제공할 수 있는 예산(USD)은 얼마인가요?
429 오류 해결을 위한 예산은 250달러입니다.

429 오류를 해결하면 모든 근본적인 문제가 해결될 것으로 이해하고 있습니다. 만약 그렇지 않다면 알려 주시면 예산을 그에 맞게 조정하겠습니다.

1개의 좋아요

discourse를 어떻게 설치하셨나요?

사용자의 IP 주소가 올바르게 기록되고 있나요?

1개의 좋아요

저희는 비즈니스 레벨 플랜으로 Discourse에 호스팅되어 있습니다.

그렇게 알고 있지만, 확실치는 않습니다. 어떻게 확인할 수 있을까요?

1개의 좋아요

즉, 50명 단위로 지연 로딩이 이루어지고, max_reqs_per_ip_per_10_seconds의 기본값도 50으로 설정되어 있습니다. 메인 페이지를 포함하면 이 코드는 10초 이내에 최소 51개의 요청을 발생시키므로, 속도 제한(rate limit)을 초과하게 됩니다.

다시 말해: 이게 이전에 어떻게 작동할 수 있었는지 모르겠습니다…?

3개의 좋아요

그렇다면 정상적으로 작동하고 있는 것입니다. 정말 안타깝네요. 리처드가 설명하는 문제보다 설정 문제를 수정하는 쪽이 훨씬 쉬웠을 텐데 말이죠.

저도 어떻게 된 건지 잘 모르겠지만, 1년 넘게 정상적으로 작동하고 있었습니다. 4일 전까지 429 에러를 한 번도 겪어본 적이 없었거든요.

지난주에 전 세계 모든 Discourse 인스턴스에 대해 전역적으로 레이트 리밋을 활성화했습니다. 다음 주에 플러그인을 조사해서 대신 사용할 수 있는 합리적인 배치 API가 있는지 확인해 보겠습니다.

6개의 좋아요

와, 저도 최근에 비슷한 이유로 (카드 표시를 위해 사용자 정보를 가져오는 작업이었는데) 똑같은 문제에 부딪혔습니다. 당장 해결하려고 작은 해킹을 적용해 두었고, 혹시 제가 모르는 배치 API가 있는지 확인하거나, 그런 라우트를 구현하는 방법을 배우려고 포럼에 온 거였는데…

1개의 좋아요

@sam 아… 정말 좋은 정보네요. 맥락을 알려주셔서 정말 감사합니다!

1개의 좋아요

알렉스, 죄송합니다. 지난주 답변에서 잘못 말씀드렸어요. 그 변경사항을 꽤 전에 배포하지 않았다는 걸 몰랐거든요.

4개의 좋아요

@HAWK 님, 감사합니다. 말씀해 주셔서 다행이에요.

@sam 님과 팀에서 대신 사용할 수 있는 합리적인 배치 API가 있는지 피드백을 받을 때까지 이 프로젝트는 일단 보류할게요.

모두 감사합니다.

1개의 좋아요

Alex, 안녕하세요.

방금 테마 컴포넌트를 확인해 봤습니다. 실제로 이 작업은 막대한 양의 개발 업무와 수많은 요구사항을 수반합니다. 우리가 적용한 레이트 리미팅은 면역 체계로서 완전히 적절한 조치였습니다.

이 문제를 해결할 예정이지만, 모든 작업을 완료하는 데 1~2주 정도 걸릴 수 있습니다.

제 생각에는 여기에서 가장 큰 부분은 디렉터리가 사용자 카드에 포함된 모든 정보를 반환하도록 시작해야 한다는 점입니다. 어려운 점은 테마 컴포넌트가 서버를 수정할 수 없다는 것입니다. 따라서 한 번에 여러 사람의 사용자 카드를 요청할 수 있도록 하는 핵심 API 변경이 필요합니다.

진행 상황에 따라 업데이트를 공유하겠습니다. 예산에 대해 간단히 말씀드리면, 이번 작업은 무료로 진행할 예정이지만, 이 문제를 수리하는 데 약 2일간의 작업량이 소요될 것으로 추정됩니다. 이는 초기 예산을 훨씬 초과하는 수준입니다. 겉보기에는 간단해 보이지만, 내부적으로 매우 복잡한 변경 사항이 필요합니다.

8개의 좋아요

@sam 님과 팀에게 감사드립니다. 정말 큰 도움이 됩니다. 핵심 API 변경 사항은 우리뿐 아니라 다른 Discourse 사용자들에게도 분명히 유용할 것입니다. Bio Book을 사용할 수 있게 되어 기쁘고, 더 합리적으로 작동하게 되어 좋습니다. 1~2주 정도는 우리에게 문제가 없습니다.

초기 예산과 수정 범위에 대한 말씀도 잘 들었습니다. 이번 작업을 무료로 해주신 것은 정말 큰 배려입니다. 감사합니다.

추가 소식을 기다리겠습니다.

4개의 좋아요

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.