Archive
Bye-Bye Assembler
Assembler pattern merupakan satu ciri khas dari aplikasi yg menggunakan Remote Facade. Fungsinya adalah mengconvert data yg ada dari domain object ke DTO (data transfer object) agar bisa ditransfer melalui network.
Setelah mendengar pencerahan2 dari milis DDD dengan pentolan2 nya Greg Young dan Udi Dahan mengenai topik CQRS. Assembler sebenarnya merupakan hal yg tidak perlu dilakukan. Assembler juga menyebabkan aplikasi menjadi lambat karena seringkali kita harus melakukan looping, convert dsb.
Read more…
Penggunaan dan Best Practice pada DDD
DDD cocok untuk digunakan pada project yg memiliki lifetime yg lama dan memiliki kompleksitas yg tinggi. Meskipun demikian banyak juga project kecil yg dapat menerapkan sebagian dari DDD sebagai Pattern language. Pada DDD sebagai Pattern Language hubungan dengan domain expert dan Ubiquitos language akan dihilangkan atau dikurangi. Karena kedua bagian tersebut merupakan hal yg paling sulit dilakukan dan time consuming process.
Salah satu best practice pada orang yg masih baru di DDD adalah selalulah menggunakan bahasa. Bahasa yg dimaksud tentu saja Ubiquitous Language. Bahasa merupakan kunci yg paling penting dalam membuat system yg baik. Bahasa membuat kita tahu bahwa system kita buruk atau tidak.
Read more…
DDD Notes
Diambil dan disarikan dari casey charlton
Bounded Context
Context merupakan sisi yg berhubungan dengan bisnis sedangkan bounded context merupakan hal yg berhubungan dengan teknikal implementation
Dengan membagi aplikasi kita menjadi banyak context kita mendukung modularity, separation of concern dan loose coupling. Karena satu model tidaklah cukup untuk menggambarkan suatu permasalahan. Karena masing2 memiliki sudut pandang yg berbeda2
Read more…
Event Sourcing
Event Sourcing
Pada pattern ini semua event yg terjadi itu dicapture dalam object dan kemudian disimpan sebagai log. Log ini berfungsi untuk proses auditing atau dapat digunakan untuk mengembalikan state dari aplikasi ke kondisi semula. Agar dapat membangun semuanya dari kondisi nol dari log maka sequecen nya harus dipertahankan.
Kegunaan log yg lain adalah untuk memperbaiki kesalahan yg dilakukan pada masa lalu. Klo di dunia accounting dinamakan dengan reversal adjustment atau retroactive change.
Jadi pada suatu aplikasi kita memiliki dua data untuk di kelola. Salah satu nya adalah application state. Data yg satu ini pasti ada di setiap aplikasi apapun. Application state ini menggambarkan keadaan aplikasi yg terkini atau current state. Yang kedua adalah event log. Event log menyimpan perubahan2 state yg terjadi pada aplikasi tersebut.
Read more…
Event Collaboration
Dengan menggunakan Event Collaboration. Maka kita akan memperoleh kemudahan dalam menambahkan komponen baru. Meskipun diperlukan sedikit perubahan sudut pandang atau pola berpikir dari request response style. Komunikasi pada event collaboration dilakukan via event. Event muncul jika suatu object memiliki perubahan state. Perubahan state dari object tersebut dicapture dalam domain event dan akan dipublish oleh object yg bersangkutan. Misalnya object mobil memiliki event BensinHabis atau BanPecah dll.
Read more…