Snapchat terkenal di kalangan remaja dan remaja. Anda mungkin di atas 25 jika Anda tidak tahu cara kerjanya. Snapchat, salah satu aplikasi media sosial paling populer, memberikan apa yang diinginkan anak-anak dan remaja: metode mudah untuk berbagi kejadian biasa sekaligus membuatnya tampak keren.
Tidak seperti Facebook dan Twitter, yang merekam dan mempublikasikan semua yang Anda lakukan, Snapchat menggunakan pesan yang seharusnya menghilang (lihat bagaimana tidak).
Ada banyak hal tentang Snapchat, dan jika Anda seorang pengembang, itu lebih dari itu. Jadi, posting ini akan memberi Anda tampilan Snapchat tingkat tinggi desain sistem dan banyak lagi wawasan.
Pengantar
Snapchat berbasis di AS jejaring sosial aplikasi yang memungkinkan pengguna terhubung dengan segera, berbagi gambar, dan banyak lagi.
- Pesan dan gambar (atau jepretan) memiliki batas waktu 24 jam. Mendorong orang untuk berbagi cerita mereka dalam kelompok.
- Snap Map memungkinkan pengguna untuk melihat di peta di mana teman-teman mereka berada.
- Kenangan mengingatkan pengguna akan foto yang mereka simpan atau bagikan setahun kemudian.
- Snapchat sangat populer di kalangan generasi muda, terutama remaja. Ada 319 juta pengguna aktif di aplikasi, dan 5.4 miliar foto dikirim setiap hari.
Persyaratan Desain Penting
Arsitektur Monolitik – Aplikasi berjenjang tunggal yang beroperasi secara independen dari aplikasi lain dikenal sebagai monolit (arsitektur monolitik). Monolit dirancang untuk melakukan dan menangani semua aktivitas yang diperlukan untuk menyelesaikan tugas. Aplikasi melakukan semua fungsi dari awal hingga akhir.
Microservices - Ini kebalikan dari monolit. Microservices adalah pendekatan arsitektur yang mengatur aplikasi sebagai kumpulan layanan. Layanan ini digunakan untuk mengontrol banyak aspek aplikasi. Seorang pelanggan memesan, seorang pelayan mengambilnya dan mengantarkannya, dan seorang koki menyiapkannya. Dalam contoh ini, setiap komponen berfungsi secara independen dan terpisah dari yang lain; tidak ada yang tahu persis apa yang dilakukan orang lain, dan tidak ada yang memiliki akses ke informasi yang sama.
JSON: Ini adalah format berbasis teks yang dapat digunakan untuk menampilkan objek JavaScript, literal, array, dan data. Format berbasis teks ini dimaksudkan agar mudah dibaca dan ditulis, serta dapat dicerna oleh perangkat lunak. JSON umumnya digunakan untuk mentransfer data dan informasi antara server dan aplikasi online.
Orkestrasi: Teknik mengotomatisasi banyak operasi dikenal sebagai orkestrasi. Pekerjaan ini termasuk sistem komputer dan konfigurasi perangkat lunak, koordinasi, dan administrasi.
wakil: Proxy bertindak sebagai perantara antara klien yang mencari sumber daya dan server yang menyediakannya.
bertautan: Jala layanan adalah pola arsitektur perangkat lunak yang menambahkan lapisan ke lapisan infrastruktur untuk memungkinkan komunikasi yang diatur, dapat diamati, dan aman antara layanan melalui proxy.
Desain Tingkat Tinggi
Masalah Monolitik
Snapchat berasal sebagai monolit berbasis cloud berdasarkan Google App Engine. Namun, karena program ini semakin populer dan mendapatkan lebih banyak pengguna dan data, skalabilitas menjadi masalah.
Selain itu, dengan radius ledakan besar di dalam monolit, gangguan di seluruh sistem lebih mungkin terjadi. Salah satu masalah Snapchat didefinisikan sebagai "tragedi milik bersama," di mana fitur bersaing untuk mendapatkan akses ke sumber daya; fitur dimuat pada waktu peluncuran aplikasi, memungkinkan fitur tertentu memuat lebih cepat tetapi yang lain memuat lebih lambat.
Insinyur juga mencari visibilitas yang jelas, pemisahan, dan kepemilikan komponen mereka dari sudut pandang pengembangan, sehingga layanan bisa fleksibel dan efisien.
Transformasi
Saat Snapchat berkembang, perusahaan menyadari perlu memecah infrastruktur monolitiknya menjadi bagian yang lebih kecil dan lebih efisien. Untuk memberikan penurunan latensi, organisasi memutuskan untuk mengembangkan desain berbasis layanan mikro.
Untuk memenuhi tujuan tersebut, Snapchat memilih untuk memperbarui perangkat lunaknya menggunakan Amazon DynamoDB, layanan database NoSQL yang dapat diskalakan. Perusahaan mampu mengurangi latensi median sebesar 20% sebagai hasil dari upayanya.
Aplikasi ini ditulis ulang menjadi banyak aplikasi yang lebih kecil oleh perusahaan. Snapchat dimulai dengan banyak aplikasi, termasuk kamera, obrolan, kenangan, pengeditan gambar, konsumsi konten, dan peta. Meskipun mengintegrasikan program-program ini ke dalam monolit tunggal nyaman bagi konsumen, hal itu menimbulkan masalah teknis yang parah dalam hal mempertahankan kinerja yang baik.
Untuk penulisan ulang, perusahaan menetapkan banyak aturan dasar. Jangan melakukan pramuat; setiap fitur harus menjadi aplikasinya sendiri, dan itu harus cepat. Snapchat menghentikan modifikasi di beberapa tempat untuk memungkinkan penulisan ulang, menjadikannya tugas teknis semata.
Integrasi fitur tambahan
Aplikasi kamera Snapchat memiliki lensa, filter, bitmoji, dan kemampuan untuk menambahkan animasi augmented reality, antara lain. Aplikasi obrolan Snapchat juga memungkinkan pengguna untuk menyimpan foto, menyimpan pembicaraan, menambahkan emotikon, dan banyak lagi.
Peta Snapchat, antara lain, memungkinkan Anda memantau teman jika mereka menginginkannya. Memori, pengeditan foto, dan konsumsi konten adalah aplikasi Snapchat yang terpisah dengan kemampuan uniknya.
Memori memungkinkan Anda untuk menyimpan atau memodifikasi foto atau video untuk digunakan nanti, serta mengunggah atau mengirimnya. Pengguna juga dapat memanfaatkan pengeditan gambar untuk memotong film, menambahkan teks, menambahkan stiker, dan banyak lagi.
Konsumsi konten eksternal Snapchat mengacu pada apa yang ditampilkannya kepada pengguna berdasarkan berbagai parameter.
Microservices
Program sangat bergantung pada JSON untuk melakukan kueri jaringan pada saat itu. Namun, parsing JSON memakan waktu dan tidak efisien. Snapchat menggunakan API manajemen jaringan terpusat untuk menutupi penggunaan JSON sebagai detail implementasi untuk mengatasi masalah ini.
Layanan mikro memperkenalkan tantangan manajemen status aplikasi, komunikasi layanan, dan manajemen kegagalan. Snapchat menggunakan teknologi open-source seperti Temporal untuk mengatasi kesulitan orkestrasi untuk membangun sistem yang kuat dan dapat diandalkan.
Akibatnya, organisasi memutuskan untuk menggunakan pola desain mesh layanan. Snapchat menggunakan Envoy, alat open-source lain yang bertindak sebagai proxy, untuk mencapai pola ini. Envoy mengelola arus lalu lintas layanan melalui infrastruktur, memberikan visibilitas kepada pengembang ke dalam potensi kesulitan.
Snapchat membuat aplikasi internal yang disebut Switchboard di dalam mesh layanan. Switchboard berfungsi sebagai panel kontrol untuk layanan Snap, memungkinkan pengguna untuk mengalihkan lalu lintas, mengelola dependensi layanan (fitur yang memungkinkan satu layanan dikelola bergantung pada kondisi layanan lainnya), dan menguras wilayah.
Untuk menyederhanakan kompleksitas konfigurasi potensial dalam layanan, Switchboard digunakan alih-alih mengekspos seluruh Envoy API. Snap memiliki jaringan internal dan regional yang sama untuk layanan mikronya berkat mesh layanan.
Layanan di dalam wilayah yang sama dapat terhubung satu sama lain tanpa menggunakan Internet publik, dan tidak ada lalu lintas jaringan eksternal yang dapat berkomunikasi dengan bagian jaringan internal.
Hanya Gateway yang akan diizinkan untuk membuka diri ke internet untuk alasan keamanan. Gateway API, misalnya, dapat dengan mudah berfungsi sebagai pintu depan, memproses permintaan dari klien/pengguna dan merutekannya bersama dengan jaringan.
Jaringan & Gerbang API
Semua pertanyaan dari klien Snapchat datang melalui API Gateway. Ini menggunakan gambar Envoy yang sama dan terhubung ke Control Plane yang sama dengan layanan mikro internal kami. Control Plane kami memungkinkan kami untuk mengaktifkan filter Envoy kustom.
Sistem autentikasi Snapchat, serta teknologi pembatasan tarif dan pelepasan muatan kami, ditangani oleh filter ini. Envoy menggunakan Service Mesh untuk merutekan permintaan ke layanan mikro yang relevan setelah rantai filter selesai.
Kesimpulan
Gateway API Snapchat mengarahkan lalu lintas eksternal ke banyak fungsi aplikasi. Permintaan pengguna untuk mengubah status konfigurasi dikelola oleh server, yang kemudian memberikan data dan informasi kembali ke berbagai layanan aplikasi.
Secara keseluruhan, desain Snapchat saat ini dapat dibandingkan dengan beberapa program yang berjalan pada satu sistem operasi, yang dalam hal ini adalah aplikasi Snapchat. Saya berusaha sangat keras untuk memberi Anda gambaran umum tingkat tinggi tentang desain sistem Snapchat. Saya harap Anda menemukan itu berguna.
Tinggalkan Balasan