2P by neo 3일전 | favorite | 댓글과 토론

Bluesky와 AT 프로토콜

  • Bluesky와 AT 프로토콜 소개

    • Bluesky는 개인 데이터 서버(PDS)를 통해 웹사이트를 호스팅할 수 있는 기능을 제공함.
    • AT 프로토콜은 웹사이트 콘텐츠 업로드에 사용되는 API를 정의하며, PDS가 이를 구현함.
    • Bluesky는 bsky.social 도메인을 통해 PDS에 접근할 수 있는 진입점을 제공함.
  • 콘텐츠 유형: 레코드와 블롭

    • 대부분의 소셜 애플리케이션은 레코드와 블롭이라는 두 가지 주요 콘텐츠 유형을 가짐.
    • 레코드는 사용자가 생성하는 핵심 엔티티로, 구조와 메타데이터를 가짐.
    • 블롭은 주로 미디어 자산과 같은 큰 비구조적 데이터로, 레코드를 통해 참조됨.
  • 블롭 업로드와 관리

    • 블롭은 레코드가 참조하기 전에 PDS에 업로드되어야 함.
    • 업로드된 블롭은 임시 저장소에 저장되며, 참조되기 전까지 접근할 수 없음.
    • 서버는 레코드 생성 시 참조된 블롭을 확인하고, 성공 시 블롭을 공개적으로 접근 가능하게 함.
  • 데이터 생성 및 인증

    • PDS에 데이터 생성 작업을 수행하려면 인증을 위한 액세스 토큰이 필요함.
    • com.atproto.server.createSession XRPC 메서드를 사용하여 사용자 자격 증명을 토큰으로 교환할 수 있음.
  • 블롭 참조 및 레코드 생성

    • 블롭은 app.bsky.feed.post 레코드에서 참조될 수 있으며, 이미지로 포함될 수 있음.
    • MIME 타입 검증을 통해 블롭 참조의 유효성을 확인함.
  • 보안 고려 사항

    • 웹 서버에서 사용자 업로드 파일을 제공하는 것은 보안 문제를 야기할 수 있음.
    • 콘텐츠 보안 정책(CSP)을 통해 getBlob 엔드포인트에 대한 보안을 강화해야 함.
  • CDN을 통한 이미지 제공

    • Bluesky 애플리케이션의 이미지 블롭은 PDS 인스턴스가 아닌 CDN을 통해 제공됨.
    • 애플리케이션은 CDN을 통해 이미지를 제공하는 방법을 알고 있어야 함.
  • 오픈 소스의 장점

    • Bluesky의 PDS 구현은 오픈 소스로 제공되어, 블롭 참조가 어떻게 정의되는지 확인할 수 있음.
    • 새로운 렉시콘을 지원하기 위해 PDS는 알지 못하는 렉시콘도 처리할 수 있어야 함.
  • 렉시콘의 확장 가능성

    • app.bsky.feed.post 타입은 유효한 임베드에 대한 유니온을 포함하며, 기본적으로 오픈되어 있음.
    • 새로운 타입의 임베드를 추가할 수 있으며, 이는 기존 사용 사례를 확장하는 "마이크로 확장"을 가능하게 함.