Bereksperimen dengan Federasi dan Migrasi Akun
Hai teman. Ini adalah bulan yang liar. Server media sosial kecil kami telah berubah menjadi infrastruktur produksi, dan masih terus berkembang.
Eksodus massal komunitas teknologi dari Twitter sangatlah nyata. Menurut pendapat saya, angka-angka ini memvalidasi hipotesis bahwa Silicon Valley telah kehilangan kepercayaan pada kemampuan Musk untuk memimpin Twitter. Saya merasakan bahwa kita sedang mendekati media sosial dan kebangkitan perusahaan.
Ikhtisar Pertumbuhan dan Angka Hachyderm
Dari perspektif adopsi, pertumbuhan kami tidak masuk akal "sehat" jika Anda dapat menyebutnya demikian:
3 November : 720 Pengguna
13 November : 6.000 Pengguna
23 November : 25.000 Pengguna
Kami telah berkembang dari satu node, menjadi infrastruktur yang terdistribusi secara global dan redundan dalam waktu kurang dari 30 hari. Penyimpanan data postgres 400mb kecil kami sekarang menjadi 177Gb data. Kami memproyeksikan penyimpanan lebih dari 30 Tb dalam 6 bulan ke depan untuk pengiriman konten kami sendiri.
Mungkin hal yang paling menarik dari menyaksikan pertumbuhan layanan kami adalah lalu lintas. Ya! Lalu lintas!

Hari ini kami telah sepenuhnya memaksimalkan pipa publik utama kami yang melambat pada 200Mbps. ISP utama kami harus mengubah cara mengelola akun kami dan sekarang menganggap kami sebagai akun perusahaan besar, bukan akun perusahaan kecil. Karena perubahan ini, kami sekarang memiliki akses ke banyak fitur dan layanan baru yang sedang kami jelajahi untuk hosting Hachyderm.
Kami telah menangani hingga 1 TB data di seluruh pipa pada hari tersibuk kami (21 November).
Berpikir tentang Federasi
Suatu hari tim operator kami dan saya sendiri membuat layanan ini offline untuk waktu henti yang dijadwalkan. Kami terbang sedikit buta dengan peningkatan kami, dan itu jelas bukan karya terbaik saya. Kami mengalirkan pemutakhiran langsung di saluran kedutan saya. Video yang diarsipkan tersedia untuk ditonton .
Rekan saya yang luar biasa, Quintessence melihat saya setelah pemutakhiran dan bertanya apakah kami memiliki lingkungan pementasan online. Yang merupakan pertanyaan yang benar-benar valid yang memiliki jawaban yang sangat buruk.
Tidak. Kami tidak memiliki lingkungan pementasan online. Sejujurnya saya bahkan tidak yakin seperti apa lingkungan pementasan itu selain membagi data dan membuat contoh kecil hachyderm. Masalahnya adalah Mastodon, mirip dengan wordpress dan aplikasi lain, mengetahui domainnya. Membuat contoh "pementasan" akan membutuhkan beberapa pemikiran.
Semakin saya merenungkan masalahnya, semakin terungkap bahwa sistem desentralisasi dan sistem federasi memiliki beberapa masalah baru yang industri kita tidak memiliki pola yang bagus. Mastodon dibangun dengan keyakinan bahwa orang-orang dari seluruh dunia akan berinteraksi dengannya serta fakta bahwa akan ada contoh online lain untuk dijadikan federasi.
Bagaimana kami membangun lingkungan pementasan sehingga kami dapat menguji federasi, atau pemisahan domain? Kalau dipikir-pikir. Bagaimana cara kerja federasi? Seberapa besar pengaruh hachyderm terhadap contoh lain di fediverse? Seberapa besar pengaruh instans lain terhadap sistem saya?
Membuat hachyderm.wtf
Secara alami, pikiran saya mulai berpacu memikirkan implikasi keamanan dan kekhawatiran yang mencekik dari memiliki sistem besar yang didistribusikan secara global dan federasi online. Saya memutuskan untuk mengikuti dopamin dan membeli domain baru.
Saya membeli hachyderm.wtf
dan menggandakan salah satu hachyderm.io
node kami. Beberapa menit terlambat, domain baru diarahkan ke salinan node lama. Sekarang saatnya untuk mulai merekayasa balik asumsi yang dibuat Mastodon dan belajar tentang federasi.

Mastodon akan rusak jika Anda mencoba "mengubah" domain.
Satu node Mastodon sadar diri, yang, secara umum, dalam sistem terdistribusi adalah "tidak, tidak" yang besar. Kami mempelajarinya di Kubernetes. Infrastruktur besar biasanya tidak memiliki kesadaran akan nama domainnya sendiri sehingga dapat dengan mudah direplikasi dan dipindahkan.
Namun Mastodon dibangun "untuk internet" dan bukan "untuk jaringan perusahaan kami" sehingga nama domain sebenarnya adalah batas sistem rahasia dalam model. Semakin saya belajar, semakin saya mulai berpikir bahwa internet terasa "benar" untuk pertama kalinya.
Bagaimanapun saya tidak dapat membuat node pementasan dengan data produksi karena masalah domain, jadi saya hanya menghapus database dan mulai dari awal.
Instans Mastodon baru memerlukan akun admin.
Untuk menyiapkan instance baru, Anda harus membuat akun admin, jika tidak, tidak akan ada cara untuk mengakses sistem. Tidak akan ada data untuk digabungkan.
Saya membuat akun admin baru [email protected]
dan mulai membuat sistem online.
Karena sebagian besar konfigurasi produksi kami sudah dimuat di server baru, sebagian besar fitur Mastodon baru "berfungsi". Email dikirim, dan nginx merespons lalu lintas. Sidekiq seimbang, dll.
Hachyderm dari Luar
Saya ingin melihat bagaimana rasanya menjadi orang luar hachyderm. Berapa banyak data kami yang "unik" untuk hachyderm? Berapa banyak pengalaman mastodon saya yang diisolasi dari contoh kami?
Kesimpulan saya adalah “bukan segalanya, tapi banyak”. Mastodon memiliki hubungan yang menarik dengan "pengikut" dan tidak lagi mengizinkan saya untuk melihat siapa yang mengikuti hachydermians. Ini masalah besar, terutama untuk sistem yang mempelajari dan membuat konten berdasarkan pengikut.
Misalnya, saya tidak lagi dapat melihat daftar orang-orang yang dia ikuti dari rekan Quintessence dari hachyderm.wtf.
Tagar
Pengamatan saya selanjutnya adalah bahwa tagar dikelola di tingkat instans. Berita saya, komunitas, dan halaman untuk Anda semuanya kosong. Karena tidak ada orang lain di contoh saya, tidak ada "konten komunitas".
Saya menjadi terbiasa memiliki banyak berita teknis, blog, posting, dan artikel yang dibagikan di hachyderm. Ini semua hilang sekarang.
Garis Waktu Rumah
Garis waktu rumah saya adalah kota hantu. Saya tidak mengikuti siapa pun, dan tidak ada orang lain di server saya. Pada dasarnya itu seperti fediverse bahkan tidak ada.
Memindahkan Akun saya
Salah satu pertanyaan yang muncul di benak saya adalah bagaimana cara Mastodon mengelola followers? Bagaimana dengan migrasi akun?
Mengelola konsep pengikut dari berbagai sistem merupakan pertanyaan ilmu komputer yang menarik secara umum. Saya telah menggunakan masalah "Pengikut Twitter" dalam wawancara pengkodean sebagai cara untuk membicarakan beberapa dasar tabel hash terdistribusi dan grafik terarah dan non-arah.
Memutuskan untuk Hijrah
Kebetulan saya memutuskan untuk mengambil cuti beberapa hari mengelola Hachyderm dan dari pekerjaan harian saya di GitHub untuk menikmati konser Sigur Rós di Islandia. Saya tahu bahwa saya akan "offline" selama sekitar 5 hari.
Salah satu pertanyaan yang pernah ada di benak saya adalah bagaimana pengikut disimpan dalam database dan seberapa besar kontrol yang dimiliki setiap instance federasi terhadap instance asing lainnya? Semua yang saya ketahui tentang sistem terdistribusi memberi tahu saya bahwa sistem yang saling bergantung dengan koreografi longgar di antara mereka sangat menyebalkan dan hampir selalu merupakan ide yang buruk. Bagaimana bila node dalam sistem memiliki pemilik yang berbeda? Ini sepertinya resep untuk bencana.
Saya membuat keputusan cepat untuk mencoba fitur migrasi Mastodon ke hachyderm.wtf dengan harapan dapat mempelajari tentang seberapa besar kontrol yang dimiliki satu instance terhadap yang lain. Apakah server saya baru saja memberi tahu semua server lain untuk memperbarui catatan mereka? Bagaimana cara kerjanya? Saya pikir sebaiknya kita menguji dengan data produksi, dan kebetulan saya memiliki akun untuk dibuat prototipe selama liburan saya.

Penolakan Layanan Jarak Jauh
Jadi saya mengikuti dokumentasi dan mengklik tombol untuk memindahkan akun saya. Apa hal terburuk yang bisa terjadi?
Saya menghabiskan beberapa saat menyelidiki akun baru saya, dan mengonfigurasi akun lama saya untuk mengarah ke yang baru. Konsep menjaga kedua contoh dalam "kesepakatan" satu sama lain akan menjadi tema umum dalam federasi.
Beberapa jam setelah memulai proses, saya melihat pengikut saya mulai "bermigrasi" ke instans baru. Penting untuk dipahami bahwa hachyderm.wtf
berjalan di server yang sangat kecil dengan 2 inti, pada dasarnya raspberry pi hachyderm.io
yang berjalan di perusahaan yang melayani perangkat keras yang didistribusikan di beberapa node dalam rak dengan total lebih dari 132 inti.
Saya dapat menyaksikan hachyderm.io
memulai move_worker
proses yang ditentukan di Ruby di sini dan akan menulis ulang pengikut di instance lokal.

Saya segera melihat masalah pada hachyderm.wtf
. Layanan tidak responsif. Setelah beberapa menit saya dapat membuka dasbor yang berfungsi dan mengamati garis waktu saya membatasi kecepatannya sendiri.


Saya mengubah hachyderm.wtf
ukuran dan memberinya lebih banyak komputasi dan layanan kembali responsif.
Menonton Pengikut Mengikuti
Saat semuanya beres, saya perhatikan bahwa saya hanya mempertahankan sekitar 10% pengikut saya? Apakah ada yang salah?
Saya melihat-lihat log hachyderm.wtf
dan dengan cepat menemukan bahwa ada sesuatu yang jelas terjadi dalam "kumpulan" dan kumpulan tersebut dikelompokkan berdasarkan server.
Dengan kata lain, saya dapat menonton hachyderm.wtf
dipukul dengan beberapa ribu permintaan dari mastodon.social
dan mastodon.sdf.org
dan contoh lainnya dalam satu saat. Jelas server jarak jauh perlu melakukan semacam negosiasi hachyderm.wtf
untuk memigrasikan pengikut.
Ini adalah penemuan yang menarik dan menjelaskan bagaimana saya dapat melakukan DDoS sendiri setelah migrasi.
Vektor spesifik yang dapat menyebabkan server mati sendiri adalah waktu pengguna yang dibuka di browser dengan fitur soket web 4.0.2 yang baru dimuat. Selama migrasi, pengikut mengisi secara real-time yang menyebabkan bagian lain dari dasbor menanyakan /accounts
titik akhir lebih cepat daripada yang dapat dipertahankannya. Saya telah menghubungi tim keamanan Mastodon tentang kemungkinan membuka CVE untuk ini.
Tapi apa yang terjadi yang menyebabkan begitu banyak overhead antara hachyderm.wtf
dan server jarak jauh yang mencoba memigrasikan pengikut.
Hubungan Pengikut Mastodon
Jadi fitur federasi yang sangat menarik di dalam Mastodon adalah bagaimana ia mengelola dan mengautentikasi hubungan pengikut/ikuti.
Saya menemukan kode FollowRequest yang menunjukkan titik awal untuk pekerjaan yang hachyderm.wtf
offline. Mastodon menggunakan kunci kriptografi publik untuk mengautentikasi berbagai permintaan dan fitur sistem. Mastodon didasarkan pada ActivityPub yang menggunakan tanda tangan HTTP untuk mengautentikasi antara dua instance. Beginilah cara satu contoh yakin bahwa contoh lain sebenarnya adalah orang yang dikatakannya.
Saat Anda memigrasi akun, semua data kunci perlu dibangun kembali, karena kepercayaan antar sistem rusak. Fitur yang DDoSing hachyderm.wtf
adalah ribuan pengikut saya harus bernegosiasi dan mengautentikasi ulang dengan masing-masing server host mereka masing-masing.
Ada hal baik dan buruk tentang model ini. Selama menyangkut federasi, ini adalah keputusan arsitektural yang tepat terkait otentikasi. Saya senang melihat apakah ada cara lain untuk memigrasikan data dengan lancar di masa mendatang!
Konsekuensi Lain yang Tidak Diinginkan
Secara keseluruhan, eksperimen ini sukses dan mengungkapkan banyak hal tentang kekuatan yang saya miliki sebagai administrator Mastodon, serta kekuatan yang dimiliki admin lain atas sistem saya. Melihat rasa saling percaya antara sistem terjadi dengan tanda tangan HTTP sangat keren!
Migrasi bolak hachyderm.io
-balik hachyderm.wtf
sukses. Saya tahu bahwa kami akan terus memanfaatkan hachyderm.wtf
sebagai contoh laboratorium kami sehingga kami dapat mengerjakan RustyPub implementasi Rust dari ActivityPub yang ingin kami bangun untuk memahami cara kerja relai.
Kepercayaan Komunitas
Saya dimarahi cukup keras oleh rekan saya Quintessence karena tiba-tiba meninggalkan hachyderm.io. Saya pikir dia mengangkat poin bagus bahwa orang lain akan melihat perubahan itu sebagai sesuatu yang tidak diketahui dan berspekulasi yang terburuk. Ternyata dia - seperti biasa - benar.
Sebanyak saya berharap bahwa fediverse kurang dibangun di sekitar reputasi dan citra, saya percaya bahwa tidak semua orang memahami sistem seperti saya dan akan melihat sesuatu seperti perubahan domain sebagai risiko dan bukan sebagai eksperimen.
Faktor pembatas: Waktu
Saya pikir konsekuensi tak terduga lainnya adalah bahwa pengikut saya sekarang siap membantu pemilik instans mastodon mana pun yang awalnya mengikuti akun saya dalam arti bahwa pekerjaan mereka untuk menegosiasikan ulang tanda tangan HTTP bisa sangat tertunda.
Saya rasa tidak ada orang yang akan kehilangan pengikut selama migrasi kecuali server jarak jauh yang mengikuti Anda telah dihancurkan secara permanen.
Namun menurut saya perlu waktu berhari-hari, berminggu-minggu, atau bahkan lebih lama untuk kasus lain untuk melakukan negosiasi ulang di back-end. Mengikuti satu kali cepat dan mudah karena sebagian besar negosiasi dapat dilakukan di browser, namun mengerjakannya secara berkelompok di bagian belakang memberikan banyak keyakinan bahwa instans lain telah dikonfigurasikan dengan benar dan tidak ada latensi dalam antrean mereka .
Kembali ke Rumah di Hachyderm.io
Beberapa menit yang lalu saya memulai migrasi kembali dari hachyderm.wtf
contoh ke rumah saya hachyderm.io
. Saya menduga akan memakan waktu beberapa hari sebelum sebagian besar pengikut saya melakukan negosiasi ulang lagi.
Kembali ke belakang hachyderm.io
membuat saya menyadari mengapa hal-hal begitu sunyi bagi saya akhir-akhir ini.
Saya perhatikan bahwa semua notifikasi saya yang meledakkan ponsel saya tiba-tiba menjadi sunyi.
Memahami Data Anda
Jadi data yang menjadikan Anda "Anda" di Mastodon sebagian besar berasal dari instans Anda. Kebanyakan.

Dalam hal instans bergerak, saya perhatikan bahwa semua notifikasi saya tiba-tiba berhenti. Saya menghabiskan beberapa waktu untuk memahami bahwa migrasi berarti akun saya dibekukan setelah migrasi, yang berarti pemberitahuan yang dikirim ke akun lama setelah migrasi agak hilang selamanya.
Saat saya mulai memposting lebih banyak di akun baru, saya menduga aliran notifikasi saya akan berlanjut saat notifikasi baru dibuat untuk konten baru saya. Namun balasan lama, suka, dll sekarang hilang.
Segera setelah kami menghapus hachyderm.wtf
, saya sangat ingin tahu apa yang terjadi pada pesan di server lain? Apakah mungkin posting ini tetap ada bahkan setelah server aslinya hilang selamanya?
Terima kasih sudah membaca
Saya tahu ini banyak! Ini sebagian besar aliran kesadaran dan catatan lapangan saya saat saya bersiap untuk konser saya malam ini.
Ikuti saya di Mastodon [email protected]
untuk informasi lebih lanjut!