Does anyone know this certification? Opinions?
https://www.lightbend.com/certified-reactive-architect
Yes I know this certification and have completed the same.
The syllabus of this certification is really awesome and will help you enhance your thinking and change the way you may think about the architectures traditionally.
It is related to Microservice Architecture. It will teach you to build the reactive system from scratch.
It teaches you how to think and interact with the customers/subject matter experts with the help of DDD(Domain Driven Design). It teaches you how to make Microservice Responsive, Resilient, Elastic and Message Driven. It adheres to reactive manifesto. It also teaches you microservice design patterns like Saga, CQRS and ES patterns. Architect systems using Hexagonal Architecture/ Onion Architecture where domain is the core of architecture.
It teaches you about CAP theorem too which is Consistency, Availability and Partiton Tolerance in depth.
Akka Toolkit, Lagom framework, Axon Framework, Eventuate Framework, Kafka, Cassandra and many more, follow these Principles and will really help us in understanding many more frameworks based on this Manifesto.
It basically will help you design the Systems with zero downtime.(Reactive Systems like, LinkedIn, Facebook, Twitter etc..)
It also helps you understand application partitioning, clustering, remoting, sharding, etc..
Overall I rate this certification as a 5 star and will help you think like an architect and may help achieve your goal of becoming the technical architect.
Related
I am actually learning Scrum, and there is no recommendation for a particular app architecture.
I have the feeling that Scrum is designed to go with Domain Driven Design, and that every Sprint should map to a Bounded Context, which are better implemented with Microservice.
So I am wondering if Scrum can be fully implemented while building a Monolith ?
It depends on your definition of monolith. If you just mean a very large centralized system, this is completely possible (though one could argue against that architectural approach in general).
On the other hand, if you mean that there is a singular system designed in its entirety up-front and then built as one large deliverable, then no, Scrum is specifically an incremental approach to development and building in large phase-gates runs directly against Scrum.
Is there a cross language framework like axon framework?
I need a cross language DDD framework supporting Java, .Net, nodejs, golang
There are multiple development languages in my company,I expect to implement DDD without changing the programming language used by developers
I expect a cross language development framework
The greater part of the value of DDD comes from the strategic patterns, which are non-technical. Take a look at this video for an overview: Strategic Domain-Driven Design by Nick Tune
Then on the technical side, your domain code can remain pretty framework free and using hexagonal/ports and adapters/clean architecture whatever framework is most mature/productive can be used for the implementation of repositories/services/APIs/busses etc.
That being said, DAPR is the 1st cross-language framework I have seen (that is less intrusive than Service Fabric) that ticks a lot of the boxes. I will say it is still early in development and I have not used it in any meaningful way myself.
One approach to satisfying this requirement is to use a service oriented/microservices architecture.
Essentially, you would be exposing all of your domain behavior via a set of interfaces that are implemented via REST-ish apis. What that means is that the implementer of a service can create their service in any language independent of what the clients of the service are using.
Something like Akka Serverless from Lightbend would fit the bill: business logic can be implemented in any language which supports gRPC.
I am in the process of moving an application from c# to node.js. I am learning node.js as I go along, so I am a node.js newbie. I am reading the book, Patterns, Principles and Practices of Domain Driven Design and found a lot of great information my current project could benefit from.
For instance, in the book, there is a sample e-commerce application that contains three bounded contexts: sales, shipping and billing. Each bounded context is responsible for its own database and each bounded context is running in an instance of NServiceBus. This seems to be a great approach as everything is running under the same solution, but different projects. In translating this to node.js, I am having a few areas of confusion.
1) I am having a rough time finding good examples that incorporate node.js with ddd like the e-commerce example above? Some of the hurdle here is the difference in how OOP is handled.
2) If in the book sample code, each bounded context is in its own project and runs within NServiceBus, would this mean that in translating this to node.js, I am using vscode as GUI, that I would need to create a separate parent folder(bounded context) for each project and supply a different port for each bounded context to listen on if I want all of the bounded contexts to run on the same server until I need to scale accordingly?
3) NServiceBus allows messages and events to get passed back ad forth. For node.js, what service bus technology, preferably open source and can run on linux-based machine, exists that would provide the kind of functionality NServiceBus provides and reliably? Should I just look at using rabbitmq alone to provide this functionality including sending events?
You might be interested in wolkenkit, a CQRS and event-sourcing framework for Node.js and JavaScript that plays very well together with domain-driven design (DDD).
Besides the actual framework (which is deployed as npm module wolkenkit), there are a number of sample applications available that show how things work:
wolkenkit-todomvc is the classical TodoMVC application modeled using DDD
wolkenkit-boards is a team collaboration software similar to Trello
wolkenkit-nevercompletedgame is the wolkenkit version of the game at nevercompletedgame.com
wolkenkit-geocaching is an application to manage caches for geocaching
Apart from that you might want to take a look at the wolkenkit documentation, and there again especially at the brochure you can download which explains DDD, event-sourcing and CQRS, what they are, how they relate to each other, and so on…
PS: Please note that I am one of the authors of wolkenkit, so please take my answer with a grain of salt.
I would suggest going through the npm modules tagged with ddd:
https://www.npmjs.com/browse/keyword/ddd
and tagged with service bus:
https://www.npmjs.com/browse/keyword/servicebus
There is also a JavaScript Domain-Driven Design book by Philipp Fehre.
This post is a couple of years old, but for anyone still interested there's a DDD framework for Typescript/node at:
https://github.com/node-ts/ddd
As well as an NServiceBus inspired message bus at:
https://node-ts.github.io/bus/
They're designed to work together to build message driven DDD systems with node
We're starting a web application using DDD and CQRS (using the ncqrs framework) and before we get started writing our own infrastructure class library, i wanted to see if any are already available.
I'd think at least some basic interfaces and common implementations for writing to the file system, sending emails, etc could be used in any project.
Those types of services are sufficiently context dependent to be unyielding to common frameworks above the facilities provided by the .NET Framework. There may frameworks centered around specific tasks, such as emailing, however you're better of selecting a solution that fits the requirements, instead of the converse. Instead, consider reviewing some sample DDD projects as listed here.
I agree with what eulerfx stated earlier. I'd add that if you depend upon a framework for using DDD and CQRS, then you risk depending on the framework and not truly understanding what is happening. As a result, you may miss what DDD (and CQRS) is providing to you.
I will state that I started off learning about CQRS by using a framework (NCQRS in fact), but my DDD knowledge was based on Evans' book and I didn't look for a framework for modeling my domain. As each domain is unique to the problem, I think it's hard to truly have a framework that "helps" you implement DDD.
In retrospect, I wish I had not gone with NCQRS right from the start as I missed or passed over some of the subtleties of the CQRS pattern.
There are probably some DDD frameworks out there, but I'd recommend forgoing them and build your own. You'll thank yourself later.
Hope this helps. Good luck!
You can try my library CoreDdd, documentation here, blog posts about it here. It contains support for DDD (entities, aggregate roots) and CQRS (commands, queries). No support for writing file system or sending emails, use standard .net for this.
When it comes to systems integration, how do you model integration requirements? Do you use UML or BPMN or some other techniques?
What limitiations you see in existing approaches and what would be an ideal modeling approach to system integration requirements in your opinion?
This question is really broad and could be refined (e.g. what level of system?) if you desire a better answer. The approaches below have worked in my experience and were adopted broadly within a company. This may not work for your organization, but our is very application/data integration oriented and these methods help us track integration at high/flow/data entity levels. The key to success is not the ideal model, but a practical one with good training and examples/cheat sheets.
One UML model view that seems to work will for system integration at the component/interface level is a component diagram with components and then interface realizations and interface usages drawn out.
Also using the concept of information flow either UML or just lines with a definition. Then just pick your level of abstraction. Example: PeopleSoft --- (Person Details via File) -----> Active Directory --- (Groups via LDAP) ----> Training Tool.
BPMN is for business process really and though I really think it is great this is not where it should be used.
OMG has tried to answer to your question with the requirement diagram integrated in the sysml modeling langage. SysML tools providers try to solve your problem. For instance check out rational rhapsody solution.