Penggunaan The Composable Architecture dalam Proyek Besar

Jun 24, 2024

Lecture on TCA Framework in Large Projects

Pengenalan TCA (The Composable Architecture)

  • Nama Pembicara: Kristof Zaboski
  • Profil Pembicara: Konsultan, banyak terlibat dalam pengembangan Open Source. Pernah bekerja di The New York Times dan The Browser Company.
  • Topik: Implementasi TCA pada proyek besar, tantangan yang dihadapi, dan praktik terbaik.
  • Teknologi Lain: R Swift (implementasi pertama dari pola arsitektur Redux).

Kelebihan TCA

  • Arsitektur: Berdasarkan Redux dan Elm Microarchitecture.
  • Manajemen Status: Data aliran unidirectional dengan sumber tunggal kebenaran.
  • Ergonomi dan Konsistensi: Konsistensi tinggi di seluruh basis kode.
  • Dokumentasi dan Pengujian: Sangat baik, didukung oleh Point Free.

Isu dan Tantangan dengan TCA

Pengujian Ekstensif

  • Pendekatan Pengujian: Tes harus mereproduksi seluruh logika implementasi; menuntut banyak pengulangan.
  • Masalah Pendekatan: Tidak efisien, bertentangan dengan TDD dan menyebabkan fragilitas dalam pengujian.
  • Solusi: Kristof menyarankan untuk menonaktifkan pengujian ekstensif di level non-leaf dan fokus pada pengujian efek samping secara individual.

Maintainability

  • Isu Akses Kontrol: Enumeration actions tidak memiliki kontrol akses, menyebabkan eksposur internal implementasi.
  • Konvensi dan Penyelesaian: Pembagian actions menjadi view actions, delegate actions, dan local actions menggunakan protokol Feature Action.
  • Swiflint Rules: Menggunakan aturan Swiflint untuk memastikan implementasi mengikuti konvensi yang ditentukan.

Performa

  • Masalah Performa: Setiap mutasi status dalam TCA membutuhkan pengiriman action, yang bisa sangat berat.
  • Optimisasi: Menggunakan copy-on-write, diffing pada level store, dan pengimplementasian multi store.
  • Uji Coba: Melakukan pengujian performa dengan ketikan teks—TCA single store memerlukan 9 detik CPU time, sementara multi store hanya memerlukan 0,9 detik.
  • Rekomendasi: Penggunaan arsitektur multi store untuk performa dan batasan implementasi yang lebih baik.

Tools dan Pengembangan

  • Dashboard Performa: Digunakan untuk melacak biaya CPU dan memahami struktur aplikasi.
  • Spy Dashboard: Memvisualisasikan pengamatan actions dan status.
  • Custom Lifetime Tracker: Memonitor objek yang aktif dan memastikan tidak ada memory leak.

Kesimpulan dan Rekomendasi

  • Framework TCA: Sangat baik untuk proyek kecil hingga sedang, namun menghadapi tantangan serius pada proyek besar.
  • Multi Store: Direkomendasikan untuk meningkatkan performa dan maintainability.
  • Konsultasi: Kristof tersedia untuk konsultasi terkait pengembangan dan arsitektur menggunakan TCA.
  • Kontak: Ikuti di Twitter atau GitHub, atau kunjungi blognya di bwing.info.