Blog AWS Indonesia
Di balik layar: Arsitektur real-time AWS untuk Bundesliga Match Facts
Bundesliga, liga utama sepak bola Jerman, menggunakan Amazon Web Services (AWS) untuk menghasilkan statistik secara near real-time dan wawasan yang mendalam untuk pertandingan sepak bola yang disebut Bundesliga Match Facts (BMF). Statistik ini digunakan untuk membuat konten yang dipersonalisasi untuk 500 juta penggemar global dan memberikan wawasan lanjutan tentang pemain, tim, dan liga. Statistik ini juga diteruskan ke siaran nasional dan internasional untuk menjangkau penggemar yang lebih luas.
Saat ini terdapat 15 BMF yang berjalan di dalam platform Bundesliga Match Facts (juga disebut sebagai sistem). Pada postingan ini akan diberikan gambaran tentang infrastruktur dasar yang menghasilkan penyampaian statistik secara near real-time. Postingan ini akan menjelaskan bagaimana arsitektur event-drivent berbasis serverless ini dirancang dan dibangun, menggunakan teknologi AWS, untuk menjadi solusi yang sangat skalabel dan biaya efisien untuk Sportec Solutions AG, perusahaan patungan antara Deltatre dan DFL Group.
Fungsi utama platform BMF adalah analisis data secara near real-time, berdasarkan machine learning dan heuristik tingkat lanjut menggunakan data live streaming. Selama pertandingan, sistem memproses lebih dari 3,6 juta events dengan posisi pemain dan bola, poin data yang dikurasi manusia tentang pertandingan (umpan, gol, offside, pelanggaran, dll.), dan update tentang tim dan pemain. Masing-masing event ini perlu dikumpulkan, diurai, dan dianalisis dalam hitungan detik selagi event tersebut masih relevan bagi penonton, sebuah tantangan yang diselesaikan dengan membangun solusi yang dijelaskan dalam postingan ini.
High-level architecture diatas menggambarkan penanganan real-time event yang sangat besar yang masuk ke BMF. Proses dimulai dengan fungsi AWS Lambda yang dijalankan oleh Amazon EventBridge Scheduler yang memeriksa apakah game sedang berjalan, dan menjalankan task Amazon Elastic Container Service (ECS) yang diperlukan untuk pertandingan tersebut (jika pertandingan belum berjalan). Salah satu container ini menggunakan koneksi web socket untuk memproses live data dan meneruskannya ke cluster Amazon Managed Streaming for Apache Kafka (MSK), yang kemudian digunakan oleh BMF. Disisi lain, fungsi lambda diattach ke Amazon API Gateway, yang menerima push metadata HTTPS selama pertandingan. Data dari Amazon MSK dikumpulkan, per statistik dan per pertandingan, melalui stateful container yang berjalan di ECS dengan AWS Fargate (BMFs), yang kemudian data akan digabungkan dari berbagai sumber.
Selanjutnya, container–container menggunakan data gabungan untuk melakukan analisis data. Bucket Amazon S3 digunakan untuk menyimpan semua input dan menghasilkan output untuk pengarsipan data, simulasi permainan secara on-demand, analisis ad-hoc, dan troubleshooting. Saluran komunikasi utama sistem event-driven ini adalah Amazon MSK, yang menghubungkan seluruh bagian sistem. Masing-masing komponen sistem akan subscribe ke topik Kafka dan bereaksi terhadap event yang relevan dan menuliskan hasil kembali ke MSK.
Melihat lebih dalam dari solusi tersebut, tantangan terbesar yang ada adalah melakukan streaming event yang sangat banyak serta memasukkan event–event ini ke beberapa BMF, sambil memastikan pemrosesan asynchronous dan menghasilkan statistik secara near real-time. Untuk mengatasi tantangan ini, sistem dirancang mengikuti pola event-driven architecture (EDA).
Bagian inti dari sistem adalah cluster Amazon MSK yang bertanggung jawab untuk mendistribusikan event ke semua komponen sistem. Sebagai gambaran sederhana, layanan ingress menerima data near real-time dari sumber data upstream, dan push event tersebut ke cluster MSK. Setiap BMF menerima event dan memprosesnya dengan model machine learning yang dihosting di Amazon SageMaker dan melakukan push kembali hasilnya ke MSK. Dua fungsi lambda kemudian di-trigger. Yang satu mengirimkan kembali hasil ke sumber data sehingga statistik yang dihitung terkirimkan ke penggemar melalui penyiaran dan aplikasi seluler, dan fungsi lambda lainnya menulis hasil ke Amazon RDS Aurora untuk digunakan dalam dasbor business intelligence dan dasbor quality control.
Menggunakan event-driven architecture dalam konteks ini menawarkan beberapa keuntungan menarik. Yang paling utama, ini memberikan platform respons yang near real-time terhadap event yang terjadi selama pertandingan, dan menunjukkan hasil kepada penonton ketika masih relevan. Selanjutnya, EDA berfungsi untuk memisahkan berbagai komponen sistem; saat ini ada 15 BMF yang berjalan untuk setiap pertandingan, dengan event bertindak sebagai mekanisme komunikasi antar komponen yang berbeda.
Meskipun EDA memberikan banyak manfaat pada sistem dan menawarkan banyak fitur unik, EDA juga menimbulkan tantangan. Pertama, penerapan EDA menambah kompleksitas sistem, seperti pengelolaan event producer, event consumer, dan event routing yang juga memerlukan upaya development tambahan. Hal ini diatasi dengan mengabstraksi consumer dan producer Kafka menggunakan shared modul antar komponen yang berbeda, mendefinisikan semua jenis payload Kafka dalam central modul, dan memperkenalkan Pydantic (library validasi data yang banyak digunakan dalam Python) untuk validasi struktur payload.
EDA juga menimbulkan tantangan untuk melakukan debug dan monitor sistem, karena sulitnya melacak event flow di dalamnya, mendiagnosis masalah, dan me-monitor perilaku platform. Untuk membantu pelacakan flow dan proses debug, semua log diteruskan ke DataDog (layanan observabilitas untuk aplikasi berskala cloud) dan pelacakan DataDog digunakan untuk mendapatkan insight yang lebih jelas tentang event flow di setiap komponen sistem.
Sistem ini memanfaatkan teknologi AWS serverless dengan menggunakan berbagai fungsi Amazon Lambda, API Gateway, tabel Amazon DynamoDB, endpoint Amazon SageMaker, dan Amazon Aurora Serverless Database, yang menawarkan sejumlah keunggulan, terutama dalam hal skalabilitas, efisiensi biaya, dan pemeliharaan yang rendah. Dengan arsitektur serverless ini, sistem dapat dengan mudah beradaptasi terhadap beban kerja yang berfluktuasi, memastikan sistem dapat scaling secara otomatis untuk mengakomodasi perubahan permintaan selama pertandingan. Skalabilitas ini sangat penting dalam peyediaan update real-time dan pemeliharaan sistem yang sangat responsif.
Dalam hal efisiensi biaya, pelanggan hanya membayar sumber daya yang benar-benar mereka gunakan. Selama waktu yang tidak terlalu sibuk seperti hari kerja ketika tidak ada pertandingan yang sedang berlangsung, sistem menggunakan lebih sedikit sumber daya. Misalnya, dengan memanfaatkan AWS Fargate, pengurangan biaya yang signifikan dapat dicapai sebesar 99,9% dibandingkan dengan pengaturan server tradisional.
Penggunaan layanan serverless juga membantu menyederhanakan pembuatan dan pemeliharaan sistem dengan berfokus pada pengembangan fitur bisnis dibandingkan berfokus pada infrastruktur dasar, sehingga menghasilkan siklus pengembangan yang lebih cepat dan peningkatan produktivitas. Manfaat lainnya mencakup peningkatan keamanan dan integrasi yang mudah dengan layanan AWS lainnya.
Kesimpulannya, platform Bundesliga Match Facts yang didukung oleh AWS telah mengubah cara penggemar di seluruh dunia merasakan statistik sepak bola dengan menerima wawasan pertandingan yang sangat cepat, dipersonalisasi dan near real-time. Melalui penggunaan event-driven architecture dan teknologi serverless AWS, platform yang kuat dan tangguh tercipta, yang memastikan responsitas near real-time, kelancaran operasi, skalabilitas, biaya efisien, pemeliharaan minimal, dan pengelolaan data streaming yang efektif dalam lingkungan sistem terdistribusi. Pencapaian ini menciptakan tolok ukur yang belum pernah terjadi sebelumnya untuk pengalaman olahraga yang dinamis.
Artikel ini diterjemahkan dari artikel asli dengan judul “Behind the scenes: AWS real-time architecture for Bundesliga Match Facts” yang ditulis oleh Batoul Farhan (Cloud Application Engineer, AWS), Ankur Palmia (Cloud Application Engineer, AWS), Saumya Bhatnagar (Cloud Application Engineer, AWS), and Wenjie Hou (Cloud Application Engineer, AWS), Alexander Smirnoff (Senior Cloud Applications Developer, Sportec Solutions AG), dan Kirill Serykh (Data Scientist, Sportec Solutions AG).