Fedify 1.6

洪 民憙 (Hong Minhee) @hongminhee@hackers.pub

Fedify 1.6.1 릴리스를 발표합니다. 이 버전은 1.6.0의 철회 이후 1.6 시리즈의 첫 번째 릴리스입니다. 이번 릴리스에서는 Fedify의 배포 방법을 크게 확장하고, 페디버스(fediverse) 전체에서의 보안 호환성을 향상시키는 중요한 새 기능을 도입했습니다.

🌐 Cloudflare Workers 지원

Fedify 1.6에서는 Cloudflare Workers에 대한 공식 지원을 구현하여, ActivityPub 애플리케이션을 엣지 환경에서 서버리스로 실행할 수 있게 되었습니다.

새로운 컴포넌트

주요 기능

  • Cloudflare의 서버리스 런타임과의 원활한 통합
  • Workers의 queue() 메서드를 통한 자동 큐 메시지 처리
  • Fedify의 암호화 처리에 필요한 Node.js compatibility flag 지원
  • Federation.processQueuedTask() 메서드를 통한 수동 큐 처리

전체 작동 예제는 Fedify 리포지토리에 있는 Cloudflare Workers의 샘플 구현을 참조하세요.

🏗️ 페더레이션 빌더 패턴

Fedify 1.6에서는 FederationBuilder 클래스와 createFederationBuilder() 함수를 도입하여 페더레이션의 지연 인스턴스화를 지원합니다. 이 패턴은 다음과 같은 이점이 있습니다.

  • 지연 인스턴스화: 페더레이션 객체 생성 전에 디스패처와 리스너 설정 가능
  • 코드 구성 개선: 순환 의존성을 방지하고 프로젝트 구조 개선
  • Cloudflare Workers 호환성: 리소스를 인수로 전달하는 바인딩 기반 아키텍처 지원
  • 모듈식 설정: 복잡한 페더레이션을 인스턴스화 전에 단계적으로 구축 가능

이 빌더 패턴은 특히 대규모 애플리케이션이나 설정 데이터가 런타임에 동적으로 검색되는 Cloudflare Workers와 같은 환경에서 유용합니다.

🔐 HTTP Message Signatures(RFC 9421)

Fedify 1.6에서는 HTTP Signatures 사양의 최종 버전인 공식 HTTP Message Signatures 표준(RFC 9421) 사양을 구현했습니다.

더블 노크 메커니즘

페디버스 전체에서 최대 호환성을 보장하기 위해 Fedify 1.6에서는 지능적인 더블 노크 메커니즘을 도입했습니다.

  1. 첫 번째 단계: 최신 구현을 위한 RFC 9421(HTTP Message Signatures)
  2. 폴백: 레거시 호환성을 위한 Draft cavage 버전
  3. 적응형 캐싱: 각 서버가 지원하는 버전을 기억하고 향후 요청을 최적화

이 접근 방식을 통해 최신 및 레거시 ActivityPub 구현 모두와 원활한 통신을 보장할 수 있습니다. 동시에 Fedify를 보안 표준의 최전선에 위치시킵니다.

상호 운용성 테스트

RFC 9421 구현은 RFC 9421 서명 검증을 지원하는 기존 ActivityPub 구현과의 상호 운용성에 대해 철저히 테스트되었습니다.

  • Mitra 4.4.0: Fedify로 생성된 RFC 9421 서명 검증 성공
  • Mastodon 4.4.0 개발 버전: Fedify의 RFC 9421 서명 검증 구현 테스트(Mastodon PR #34814 참조. 단, Mastodon 4.4.0은 아직 릴리스되지 않았습니다)

이러한 테스트를 통해 다른 ActivityPub 구현이 Fedify로 생성된 RFC 9421 서명을 정상적으로 검증할 수 있음을 확인하고, 에코시스템이 점차 공식 사양을 채택해 나가는 과정에서 적절한 페더레이션이 보장됩니다. 이러한 구현은 현재 RFC 9421 서명 검증을 지원하지만, 아직 자체적으로 RFC 9421 서명을 생성하지는 않습니다. Fedify는 이 모던 표준의 생성과 검증 모두를 지원하는 최초의 ActivityPub 구현 중 하나가 되었습니다.

🔍 WebFinger 기능 강화

전용 WebFinger 조회

새로운 Context.lookupWebFinger() 메서드를 통해 WebFinger 데이터에 직접 접근할 수 있게 되었습니다. 이는 고수준의 Context.lookupObject() 메서드로는 구현할 수 없는, 계정 발견과 리소스 해결에 대한 더 세밀한 제어를 개발자에게 제공합니다.

🛠 Context API 개선

컨텍스트 데이터 교체

새로운 Context.clone() 메서드를 통해 동적인 컨텍스트 데이터 교체가 가능해져, 요청 처리와 데이터 흐름 관리에 있어 더 높은 유연성을 제공합니다. 특히 미들웨어 구현이나 복잡한 요청 라우팅을 수행할 때 유용합니다.

🚀 마이그레이션 시 고려사항

하위 호환성

Fedify 1.6은 기존 애플리케이션과의 완전한 하위 호환성을 유지합니다. 새로운 HTTP Message Signatures와 더블 노크 메커니즘은 코드 변경 없이 투명하게 작동합니다.

Node.js 버전 요구사항

중요: Fedify 1.6은 Node.js 환경에서 Node.js 22.0.0 이상을 필요로 합니다. 이 변경은 Deno나 Bun 런타임을 사용하는 애플리케이션에는 영향을 미치지 않습니다. 현재 Node.js를 사용 중인 경우, 업그레이드 전에 환경이 이 요구사항을 충족하는지 확인하세요.

새로운 배포 옵션

신규 배포 시에는 다음과 같은 이점을 제공하는 Cloudflare Workers 지원 활용을 고려해 보세요.

  • 낮은 지연 시간의 글로벌 엣지 배포
  • 서버리스 스케일링 및 자동 리소스 관리
  • Cloudflare 서비스 에코시스템과의 통합

🎯 향후 전망

Fedify 1.6은 페디버스 전체에서 광범위한 호환성을 유지한다는 프레임워크의 약속을 지키면서, 배포 옵션의 대폭 확장을 나타냅니다. Cloudflare Workers 지원 추가로 페더레이티드 애플리케이션의 새로운 아키텍처 패턴이 열렸으며, RFC 9421 구현을 통해 Fedify는 새로운 ActivityPub 보안 표준에 계속 대응하고 있습니다.


자세한 마이그레이션 가이드, API 문서, 샘플에 대해서는 Fedify 문서를 참조하세요. 지원 및 토론을 위해서는 Matrix 또는 Discord 커뮤니티에 참여하세요.

2

No comments

If you have a fediverse account, you can comment on this article from your own instance. Search https://hackers.pub/ap/articles/01974921-0ad1-72e7-aebd-cd427e5e44a8 on your instance and reply to it.