Skip to main content

Domain Driven Design Coaching

Giới thiệu

Domain Driven Design đước phát triển bởi Eric-Evan từ những năm 2003, nhưng mãi đến 2010 trở về sau này, hướng áp dụng của DDD mới bắt đầu ảnh hướng nghành CNTT của toàn cầu.




Với kinh nghiệm trong những năm qua đã trải qua hàng loạt các Domain lớn trong nghành Ecommerce, Logistic, Ads, Marketing... mình đã bắt đầu các khoá training trong năm 2019. Khoảng giữa năm 2020 với lộ trình hợp tác chiến lược tại Viettel Telecom, mình nhận thấy rằng DDD có thể được xem như Bible cho các công ty lớn như Viettel để phát triển sản phẩm đa dạng và hàng loạt trên nhiều nghành khác nhau.

Lợi ích

Communication

Một trong những các mối quan ngại sâu sắc trong phát triển sản phẩm là các giao tiếp giữa các team. Đặc biệt khi tính phức tạp tăng cao, thì giao tiếp trở nên tốn nhiều tài nguyên. DDD vốn không phải là nhân tố đóng góp vào Communication nhưng vô hình DDD trở thành Format để các hướng giao tiếp luôn tiến hoá cùng với sản phẩm trong quá trình thực hiện DDD Planning.

Operation

Quản trị con người hay thời gian được tối ưu bởi việc chúng ta quan sát vận hành của Domain. Sau đó các yếu tố về con người và thời gian sẽ thích ứng với thay đổi. DDD đến để phơi bày các đặc tính giúp chúng ta có góc nhìn định lượng về nhu cầu quản trị.

Architecture

Những nguỵ biện nguy hiểm nhất của quá trình làm sản phẩm
  1. Chúng tôi không có thời gian để viết Test
  2. Nhu cầu thay đổi quá nhiều, làm ơn đừng thay đổi và hạn chế thay đổi
  3. Khi nào sản phẩm tiến hoá hay là sản phẩm sẽ cuối cùng trở thành Legacy System
3 nguỵ biện ở trên sẽ thường đi vào ngõ cụt, nhưng DDD sẽ giải quyết triệt để dựa trên những định nghĩa của chính nó.

Tiếp cận

Các hướng phát triển sản phẩm ngày nay không thật sự đòi hỏi nhu cầu phát triển Technology mà phụ thuộc phần lớn vào kiến thức nghành.

Với các kiến thức tương ứng sẽ luôn tồn tại 1 Technology tương ứng.

DDD giúp chúng ta tiếp cận kiến thức nghành và phổ quát các kiến thức đó đến mọi thành viên của tổ chức. Thông qua đó, sử dụng nguồn lực tổng thể để phát triển sản phẩm.

Liên lạc

Các bạn có thể đặt câu hỏi thêm về DDD hoặc liên hệ thêm các chương trình tư vấn của mình me@paulaan.me

Các hoạt động tại Viettel Training trong khoá 2 08/2020









Comments

Popular posts from this blog

Non-Test vs Test Driven Developer in Golang

There's been a lot of debates on whether TDD is dead or not! I strongly believe that TDD is very essential in any serious Software Development endeavor, especially for any team which is currently embracing  MICRO-services architecture or might seek to transition to Micro-services later. TDD somewhat will drive you to work out better and better system design rather than just focus on increasing Code Coverage as a vanity metric. The more you aim to improve Testability and TDD compliance in every single piece of your software, the easier you can extend or modify any functionalities in your system. I'm gonna share some pieces of codes to help illustrate my points regarding how different they are in practiceLet's dive into those differences //Non-Test package client import ( "bitbucket.org/sakariai/sakari/proto" "go.elastic.co/apm/module/apmgrpc" "google.golang.org/grpc" ) type Volante struct { proto.VolanteClient conn

Pivot Query in Postgresql is much better than Pivot_Table in Pandas

Pivot Query in Postgresql select * from crosstab ( $$ SELECT anonymous_id, message_id , timestamp, key, value FROM pixels WHERE tenant_id = 2 AND pixels.timestamp >= '2019-10-19 10:41:03.254968' AND pixels.timestamp < '2019-10-20 10:41:03.254968' AND message_id = ANY(SELECT message_id FROM pixels WHERE tenant_id = 2 AND pixels.timestamp >= '2019-10-19 10:41:03.254968' AND pixels.timestamp < '2019-10-20 10:41:03.254968' AND key = 'event' AND value = 'init_banuba_success' ) AND (key = ANY(array['context.timezone','context.device.model','