Desain Relay API: Membangun platform pengiriman email dengan Pekerja Cloudflare
Halaman ini diterjemahkan secara otomatis dari bahasa Jepang. Baca versi asli berbahasa Jepang
1. Mengapa Anda tidak menggunakan penyedia email eksternal API?
Saat membuat aplikasi yang mengirim catatan melalui email, hal pertama yang terlintas dalam pikiran adalah mengirim API dari penyedia email utama. Namun, untuk pengembang individu, rintangan ulasan Google OAuth sangat tinggi.
Google Aplikasi yang belum lulus tinjauan OAuth akan menerima layar peringatan yang mengatakan "Aplikasi ini belum diverifikasi di Google". Peringatan ini berakibat fatal bagi aplikasi memo. Pengguna mengirimkan pemikiran dan informasi pribadi mereka sebagai memo. Jika pengalaman pertama mengatakan "tidak diverifikasi", siapa yang akan mempercayai aplikasi ini?
Google OAuth Proses aplikasi untuk peninjauan adalah jalan yang sulit bagi pengembang individu. Persiapan kebijakan privasi, penjelasan legitimasi lingkup, evaluasi keamanan - terlepas dari apakah itu adalah tim perusahaan besar, biaya untuk membayar satu fungsi pengiriman email terlalu besar untuk aplikasi yang dikembangkan sendiri.
Yang dibutuhkan adalah solusi yang dapat mengirim email tanpa kerumitan tinjauan OAuth tanpa merusak kepercayaan pengguna. Jawabannya adalah Relay API saya sendiri.
2. Cloudflare Pekerja + Resend API Arsitektur
Arsitektur Relay API sederhana dan kuat. Terima permintaan dari aplikasi iOS dan sampaikan ke layanan pengiriman email - ini dirancang khusus untuk itu.
Pekerja Cloudflare adalah platform tanpa server yang menjalankan kode TypeScript di lokasi tepi di seluruh dunia. Menurut deskripsi Cloudflare, tidak ada awal dingin yang terjadi di mesin virtual tanpa server karena menjalankan kode di lingkungan eksekusi ringan yang disebut isolasi.
Resend API adalah layanan pengiriman email modern. Sangat mudah untuk mengatur SPF/DKIM/DMARC dan dapat dengan mudah dipanggil dari TypeScript.
Dalam hal biaya, paket gratis Pekerja Cloudflare dapat digunakan hingga 1 permintaan harian 100000, dan paket gratis Resend dapat digunakan hingga 1 hari 100 dan 3,000 per bulan (masing-masing halaman biaya perusahaan pada 2026 10). Ini adalah konfigurasi yang dapat dimulai dari yang kecil dan pindah ke paket berbayar sesuai dengan jumlah yang dikirim.
3 Verifikasi alamat email (metode kode digit 6)
Relay API hanya mengirim catatan ke alamat email terverifikasi. Ini adalah lapisan pertahanan paling dasar untuk mencegah penyalahgunaan.
Sebelum mulai mengirim memo, Anda memerlukan alur untuk memverifikasi alamat email tujuan.
- Pengguna memasukkan alamat email mereka ke dalam aplikasi
- Relay API mengirimkan kode verifikasi digit 6 ke alamat tersebut
- Masukkan kode 6digit yang diterima oleh pengguna ke dalam aplikasi
- Verifikasi selesai. Setelah itu, Anda akan diizinkan untuk mengirim catatan ke alamat email itu
Mekanisme ini mencegah catatan dikirim ke alamat email orang lain tanpa izin. Kode verifikasi akan dikirim ke kotak masuk alamat itu, jadi jika Anda tidak dapat melihat kotak masuk, Anda tidak dapat memeriksa alamat sebagai tujuan.
Verifikasi hanya dilakukan satu kali per alamat email. Setelah verifikasi selesai, Anda dapat melanjutkan untuk mengirim catatan tanpa memasukkan kode.
4 Implementasi batas tarif multi-layer
Untuk mencegah penyalahgunaan pengiriman email API, kami telah menerapkan batas tarif pada beberapa lapisan.
const RATE_LIMITS = {
devicePerMinute: 30,
devicePerDay: 200,
ipPerHour: 120,
globalPerDay: 300,
};
Penghitung disimpan di Cloudflare KV dan diatur ulang untuk setiap jendela waktu. Saat melewati transmisi normal, itu menekan akses massal yang tidak sah.
5. Kesetaraan daya: Dirancang untuk tidak mengirim catatan yang sama dua kali
Ketidakpastian tidak dapat dihindari dalam komunikasi jaringan. Komunikasi mungkin terganggu antara saat Anda menekan tombol kirim dan respons dikembalikan. Aplikasi menentukan bahwa itu adalah batas waktu dan mencoba mengirim ulang, tetapi sebenarnya permintaan pertama dikirimkan ke server - skenario umum.
Untuk adegan ini, disiapkan dengan idempotensi.
- Berikan UUID (ID pesan) unik untuk setiap memo
- Relay API meneruskan ID pesan sebagai Idempotency-Key dari permintaan ke layanan pengiriman email (Resend)
- Resend mengingat kunci yang sama 24 selama satu jam, dan jika permintaan konten yang sama datang lagi, itu akan mengembalikan respons yang sama seperti sebelumnya tanpa mengirim email
- Aplikasi mengembalikan respons yang berhasil (2 kali juga merespons sama seperti 1 kali)
Dengan desain ini, bahkan jika jaringan tidak stabil dan percobaan ulang terjadi, memo yang sama tidak akan dikirim lagi selama waktu 24 (periode ketika Resend mengingat kuncinya). Dalam periode inilah duplikasi dapat dihentikan karena tidak mungkin untuk membedakan pengiriman ulang setelah itu.
6. Keuntungan dari komputasi tepi
Alasan terbesar untuk mengadopsi Pekerja Cloudflare sebagai basis pengiriman email adalah keuntungan yang melekat dari komputasi tepi.
Untuk aplikasi memo, kombinasi ini adalah pilihan yang mudah untuk ditangani. Pemrosesan dimulai pada basis yang dekat dengan pengguna, tidak perlu mengelola server, dan jika kecil, biayanya dapat dikurangi. Itulah mengapa saya membuat Relay API dalam komputasi tepi.
Silakan coba "SimpleMemo" yang dibangun di atas fondasi teknis ini.
Unduh dengan App StorePertanyaan umum
Q. Mengapa Anda memilih Pekerja Cloudflare?
Tidak ada cold start tipe mesin virtual, itu dapat diproses di pangkalan yang dekat dengan pengguna, dan jika itu kecil, Anda dapat memulai dengan paket gratis.
Q. Berapa tingkat pengiriman email?
SPF, DKIM, dan DMARC ditetapkan untuk domain sumber. Meski begitu, itu dapat ditransfer ke spam atas kebijaksanaan layanan email penerima. Jika Anda tidak menerimanya, periksa folder spam Anda dan alamat tujuan untuk melihat apakah Anda telah memeriksanya.
Q. Apakah isi memo akan disimpan di server?
Relay API adalah tipe transit. Kami tidak menyimpan isi memo secara permanen. Ini akan ditangani sementara hanya sejauh yang diperlukan untuk pemrosesan transmisi.
Q. Apa yang terjadi jika saya terjebak dalam batas tarif?
Memo tetap berada di terminal menunggu transmisi (Outbox), dan ketika saluran dipulihkan, aplikasi dibuka, dan pemrosesan latar belakang dipicu, secara otomatis dikirim ulang (ada jumlah maksimum kali untuk mengirim ulang otomatis).
Artikel terkait
Referensi
- Dokumentasi Pekerja Cloudflare — Platform eksekusi tanpa server untuk relai API. Digunakan untuk pemrosesan permintaan di tepi
- RFC 5321 — Simple Mail Transfer Protocol (SMTP) — Spesifikasi protokol dasar untuk transmisi email. Standar SMTP sesuai dengan relai API
- RFC 6376 — DomainKeys Identified Mail (DKIM) — Spesifikasi tanda tangan elektronik yang digunakan untuk mencegah gangguan pada email keluar dan mengautentikasi sumbernya
- RFC 7208 — Kerangka Kebijakan Pengirim (SPF) — Mengirim otentikasi domain. Verifikasi transmisi email dari alamat IP resmi
- Resend API Dokumentasi — Email mengirim API penyedia. Cloudflare Layanan pengiriman email dipanggil dari Pekerja