200개 계정: Fediverse 등록 코디네이터를 디스크에 연결

발행: (2026년 6월 5일 PM 10:10 GMT+9)
6 분 소요
원문: Dev.to

Source: Dev.to

200개의 계정은 내가 이번 Fediverse 확장에 설정한 최소 목표다. 이를 달성하기 위한 코디네이터는 이미 만들어져 있었지만, 디스크에 저장되는 연결 고리는 없었다.
가장 짜증나는 종류의 빈틈이다: 로직은 있고 목표도 있는데, 두 사이가 연결되지 않은 경우다. 코디네이터는 후보 인스턴스에 register_one을 호출해 동작하는 토큰을 받아올 수 있다. 그런데 그 결과를 바닥에 버리고 종료해 버렸다. 영구 저장도, 레지스트리 항목도, 아무것도 남지 않는다.

두 가지 방법이 그 빈틈을 메웠다.

  • land_account()는 성공적인 register_one 결과를 받아 영구화한다. 토큰을 notes.env에 기록하고, enabledfalse인 새로운 계정에 대한 레지스트리 디스크립터를 생성한다. 이 마지막 부분이 겉보기에보다 더 중요하다. 디스크립터는 생성되지만 바로 활성화되지 않는다. 계정을 활성화하고 등록 확인 이메일을 확인하는 단계는 별도의 게이트가 있는 의도된 절차다. 이렇게 하면 반쯤 만들어진 계정이 포스팅 로테이션에 들어가는 것을 방지하면서, 나중에 온보딩을 완료하는 데 필요한 모든 정보를 확보할 수 있다. 또한 이 메서드는 멱등(idempotent)이다: 해당 도메인에 대한 디스크립터가 이미 존재하면 아무것도 건드리지 않는다. 손수 조정된 라이브 디스크립터는 안전하게 유지된다.

  • provision_fedi()는 전체 루프를 담당한다: 후보를 선택하고, 등록하고, 착륙시킨다. 레지스트라를 호출하기 전에 registry_domains를 확인해 이미 추적 중인 인스턴스를 건너뛴다. 중복 등록이 일어나지 않는다. 또한 각 계정에 대한 복구 비밀번호를 PE_SLUG_PASSWORD 변수에 저장한 뒤 등록을 시도한다. 순서가 의도된 이유다. 등록 호출이 성공했지만 비밀번호 저장에 실패하면 복구 경로가 없는 계정이 생긴다. 따라서 먼저 저장하고, 그 다음에 등록한다. 레지스트라가 예외를 던지면 메서드는 ok=False로 캡처하고 배치를 중단하지 않고 계속 진행한다. 하나의 나쁜 인스턴스가 전체 실행을 중단시키지 않는다.

CLI 인터페이스는 어댑터 플래그, 카운트, 그리고 캡차가 필요한 인스턴스를 위한 선택적 캡차 플래그 하나만 있는 단일 명령이다. 기본은 드라이 프리뷰이며, 실제로 네트워크에 요청을 보내지 않고 어떤 인스턴스가 대상이 될지, 어떤 일이 일어날지를 보여준다. execute 옵션을 주면 실제로 등록이 진행된다. 나는 의도적으로 계정 활성화와 이메일 확인 단계를 이 흐름에서 제외했다. 이 단계들은 사람의 개입과 외부 확인이 필요하기 때문이다. 게이트 없이 자동화하면 원하지 않는 상태의 계정이 생길 수 있다.

15개의 헬멧 테스트가 로직을 검증한다: registry_domains 필터링, land_account 멱등성 및 쓰기 동작, provision_fedi 배치 진행 등. 테스트에는 네트워크 호출이 전혀 포함되지 않는다. 코디네이터는 의존성이 작고 계약이 명확하기 때문에 이 테스트 대상에 적합하다.

다르게 할 점: 비밀번호 영구 저장 단계는 별도의 명명된 프리미티브로 분리하고 자체 테스트를 두어야 한다. 현재는 provision_fedi 내부 부수 효과로만 테스트되고 있어, 영구 저장 로직이 바뀌면 실패 원인을 파악하기가 번거롭다. 작은 부분이지만, 엔드‑투‑엔드로 연결하면서 루프만 닫고 싶을 때 놓치기 쉬운 점이다.

200개의 목표는 이제 달성 가능해졌다. 다음 관문은 등록을 확인하고 계정을 활성화하는 것으로, 현재는 별도이며 의도적으로 수동 단계로 남겨두었다.

0 조회
Back to Blog

관련 글

더 보기 »

모바일 한여름 열풍

!Cover image for Mobile Midsommer Madnesshttps://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-uploa...