Here, we have Node.js, Express, TypeScript, Apollo Server, and GraphQL. Domain-driven design (DDD) emphasizes understanding the business domain, focusing on core business logic, and aligning software with business requirements. Strategic DDD involves implementing DDD as a software development practice, starting with the ubiquitous language and bounded context. The ubiquitous language is a common vocabulary used by all stakeholders, defining terms like accounts, users, card payment profiles, and invoices. Bounded context establishes logical boundaries within the domain, enabling efficient teamwork and a shared understanding of the domain language. An example in our case is the account management context, responsible for managing accounts and users.
And here very quickly, we have Node.js, Express, TypeScript, Apollo Server and GraphQL. Now what about the domain-driven design and why we decided to use it? First, what is domain-driven and what is that? One of the key things here is that domain-driven design, or DDD, emphasizes the importance of understanding the business domain. It also helps teams to focus on the core business logic, and also by embracing all that, it makes the software to align with the business requirements.
In our case, because the domain-driven design is a very, very broad topic. But there's one key thing here, it's the so-called strategic DDD. Strategic DDD means that you start implementing the domain-driven design practice, as a software development practice. You start by figuring out two things. The ubiquitous language and the bounded context. Now let's see what are these things.
Let's start with the ubiquitous language. Ubiquitous language is a common vocabulary and language used by everyone involved in the project. And as you can see, by having this common vocabulary that's used by everyone, by everyone we mean all stakeholders, like the users, domain experts and also the technical experts. Everyone involved in the project, part of a different kind of business let's say, the business domain, they talk and they use the same language. So everyone can understand everyone basically. That's the whole thing. And in our case, we defined several things that are part of the ubiquitous language. You can think of it like a dictionary, vocabulary, something like that. So we have accounts, basically the companies that are part of the system, the users or employees that are part of the company or the account. We have card payment profiles that are part of the account. So the companies can pay for what they use in the system. And we have invoices and some other stuff. But those four things we are going to talk throughout the whole presentation. That's why I added them here.
And now what about the bounded context? First, let's answer what is this. So bounded context is basically like a logical boundary between the different parts of the domain. And by having this logical boundary, we can enable teams to work more efficiently with a shared understanding of the domain language used in a specific area of the system. And now I'm going to give you a very brief example, in our case basically. So here the first thing that we have, like a logical boundary is the account management. The account management context, or domain, is responsible for, as you can imagine, managing the account. So here inside it we have account and user.
Comments