title: Service Oriented Architecture & Domain-Driven Design
body: <p>I've always developed code in a SOA type of way.  This year I've been trying to do more DDD but I keep getting the feeling that I'm not getting it. At work our systems are load balanced and designed not to have state.  The architecture is:</p>
  
  <p>Website</p>
  
  <p>===Physical Layer==</p>
  
  <p>Main Service</p>
  
  <p>==Physical Layer==</p>
  
  <p>Server 1/Service 2/Service 3/Service 4</p>
  
  <p>Only Server 1,Service 2,Service 3 and Service 4 can talk to the database and the Main Service calls the correct service based on products ordered.  Every physical layer is load balanced too.</p>
  
  <p>Now when I develop a new service, I try to think DDD in that service even though it doesn't really feel like it fits. </p>
  
  <p>I use good DDD principles like entities, value types, repositories, aggregates, factories and etc.</p>
  
  <p>I've even tried using ORM's but they just don't seem like they fit in a stateless architecture.  I know there are ways around it, for example use IStatelessSession instead of ISession with NHibernate.  However, ORM just feel like they don't fit in a stateless architecture. </p>
  
  <p>I've noticed I really only use some of the concepts and patterns DDD has taught me but the overall architecture is still SOA.   </p>
  
  <p>I am starting to think DDD doesn't fit in large systems but I do think some of the patterns and concepts do fit in large systems.</p>
  
  <p>Like I said, maybe I'm just not grasping DDD or maybe I'm over analyzing my designs?  Maybe by using the patterns and concepts DDD has taught me I am using DDD?  Not sure if there is really a question to this post but more of thoughts I've had when trying to figure out where DDD fits in overall systems and how scalable it truly is.  The truth is, I don't think I really even know what DDD is? </p>