Skip to main content
75 votes

What does Robert C. Martin mean by SQL being unnecessary?

Bob Martin is clearly exaggerating to make his point more clear. But what is his point? Does he just want people to stop using SQL/Relational Databases because of SQLi attacks? To my understanding,...
Doc Brown's user avatar
  • 208k
57 votes

What does Robert C. Martin mean by SQL being unnecessary?

Bob Martin's opinion is just that; one man's opinion. A programmer is expected to understand the system he is writing well enough to exercise reasonable care about its security and performance. That ...
Robert Harvey's user avatar
50 votes
Accepted

How to describe an architectural shift that intentionally breaks REST standards?

I am uncertain how to best describe this approach when my recommendation is to continue with the existing technology stack, but implement fundamental shifts in the locations where code belongs. ...
VoiceOfUnreason's user avatar
37 votes
Accepted

Service layer returns DTO to controller but need it to return model for other services

A really simple rule of thumb is that you should only use a DTO when you need to ... transfer data. That means use a DTO at the boundaries of your web API, or when you are sending the object on a ...
Berin Loritsch's user avatar
30 votes

How to describe an architectural shift that intentionally breaks REST standards?

REST is not CRUD. That "counterargument" is based on a fundamentally flawed understanding of what REST is. I haven't seen anything in your post that indicates your change would make your API any more ...
Eric Stein's user avatar
  • 3,572
26 votes

How to describe an architectural shift that intentionally breaks REST standards?

One more thing to keep in mind is the following... Not validating your business rules server side, means you implicitly trust anything that comes in, through say a POST request, is valid. Meaning ...
mrsmn's user avatar
  • 410
17 votes

DDD approach to basic CRUD operations in a complex domain-centric application

How does that make sense? Short answer: it doesn't. Longer answer: the heavyweight patterns for developing a domain model don't apply to those portions of your solution that are just a database. Udi ...
VoiceOfUnreason's user avatar
17 votes

What does Robert C. Martin mean by SQL being unnecessary?

What is he actually saying? Is he saying replace SQL with No-SQL technologies? TL;DR: Yes (sort of) In a more recent talk than the one you linked to on basically the same topic he says: "The ...
Søren D. Ptæus's user avatar
16 votes
Accepted

Should business logic be in the app or in the backend?

It should be on a case-by-case basis but I would expect most of the logic to go in the backend. Your interactor might still contain several methods ("Check ticket availability", "Add ticket to basket"...
just me's user avatar
  • 653
14 votes

What is really different between SOA and Microservices

Service Providers, doing only one thing The core difference, which has widespread consequences of the project, is that with Microservices these Service Providers are independently deployable and ...
Telastyn's user avatar
  • 109k
14 votes

Service layer returns DTO to controller but need it to return model for other services

IMO the accepted answer promotes something which you should not be doing in the service layer, ie returning your domain objects. Instead, the service layer should encapsulate your domain model and ...
Ε Г И І И О's user avatar
13 votes

Versioning REST APIs. Each API has its own version

What you call single REST APIs might be called REST API's particular set of resources or resources. You also could look at it as REST API's functionalities. Such as any kind of software, the whole ...
ClemC's user avatar
  • 401
13 votes
Accepted

Is a call stack required for robust computer architecture?

... which makes me wonder if there are any systems / architectures for defining a virtual machine without a call stack Continuation Passing Style enables tail call optimization for all function ...
Erik Eidt's user avatar
  • 33.8k
12 votes

How to architect a store to avoid overselling inventory (distributed database scenario)

It depends on the widget. If the widget is rare and expensive (exactly 10 Ferraris), then the approach you're following is correct. Of course, you also need to account for inventory that's being ...
Dan Pichelman's user avatar
12 votes

DDD approach to basic CRUD operations in a complex domain-centric application

Ok imagine you implement your account creation page mapping the form post directly to an EF object which is then saved to the db. Lets further assume that the database has various restrictions that ...
Ewan's user avatar
  • 75.8k
12 votes

Versioning REST APIs. Each API has its own version

Here's an even better approach: use content negotiation to version your API with the Content-Type and Accept headers: POST /api/accounts Accept: application/vnd.my-api.account.v1+json 201 Created ...
Jack's user avatar
  • 4,489
12 votes

What are some approaches used in financial applications to prevent deposit/withdrawal sync problems?

Transactions A transaction wraps all of the required steps for a particular business operation and guarantees that either all of the steps succeed or they all rollback to the original state in the ...
Robert Harvey's user avatar
11 votes

What does Robert C. Martin mean by SQL being unnecessary?

SQL is a detail. Knowledge of a detail should not spread. As SQL is used in more and more places in your code your code becomes more and more dependent on it. As you learn more and more SQL tricks ...
candied_orange's user avatar
11 votes

How to describe an architectural shift that intentionally breaks REST standards?

To add to the other good answers here: Your interface, REST or otherwise, should not be constrained based on some sort of assumptions around implementation details. This is completely antithetical ...
JimmyJames's user avatar
  • 27.3k
10 votes
Accepted

Clean Architecture - Controllers and Presenters

Is my first assumption right? Presenters implements/extends controllers? Nope. Lets read some text from the same page as Fig. 8.2 Open arrowheads are using relationships. Closed arrowheads are ...
candied_orange's user avatar
9 votes
Accepted

Details about certain large enterprises and government agencies only using technologies that have existed for a while

We can neither confirm nor deny such a statement. Risks, reliability and predictability Governments and large enterprise are very risk adverse and tend to prefer proven technology, that is well ...
Christophe's user avatar
  • 77.3k
9 votes

How to fit a rules engine in a microservice architecture when it requires lots of input data?

Let's take a step back for a second and assess our starting place before writing out this likely-to-be-novel-length answer. You have: A large monolith (the rules engine) A large quantity of non-...
enderland's user avatar
  • 12.1k
8 votes

Details about certain large enterprises and government agencies only using technologies that have existed for a while

I very much doubt that any organization has a policy that explicitly proscribes an age of technologies it will consider for use. What is somewhat common is to have a list of "allowed" technologies ...
Michael Borgwardt's user avatar
8 votes
Accepted

Does using the strategy pattern for persistence methods make it "okay" to include CRUD methods in a business object?

You've got value objects representing your business logic, containing business rules. Now you are adding a mechanism to persist them. Fair enough. How about you add a mechanism to read a database and ...
Andy's user avatar
  • 10.3k
8 votes
Accepted

Is it correct to use Lombok in a domain object?

Lombok is reflecting that Java is limited in it's ability to model a domain and the reality of systems where there is data and there is code. Separate. Oracle is delivering "records" in JDK ...
David Kerr's user avatar
7 votes

DDD: Creating reusable modules and service type distinctions (Domain, Infrastructure, Application)

Are Domain Services merely an Interface which exist to provide a layer of abstraction between the Infrastructure Layer and your Model? ie: Repositories + HashingServices, etc. Domain services ...
Songo's user avatar
  • 6,588
7 votes
Accepted

How to architect user authentication from client applications?

I have been designing REST APIs for the past few years. You are worrying too much. Recently another user on this board has asked a question, where he was worried about storing URI endpoints in his ...
Andy's user avatar
  • 10.3k
7 votes

How to ensure long-term enterprise software stability with changing frameworks / things going out of support?

The more you leverage Other Peoples Work TM the more your are at the whim of other people. So there are four ways to handle this: Pay a Not Inconsequential Amount of Money to develop and maintain ...
Kain0_0's user avatar
  • 16.2k
7 votes

Critical Infrastructure Language Selection

The choice of language isn't really that important in your scenario. You need to look at the architecture as a whole to see whether it can meet the requirements (and maybe you need to look at the ...
Hans-Martin Mosner's user avatar
6 votes
Accepted

Implementing a composite REST service

I have created many hypermedia services throughout the years and I have felt this pain. It boils down to perspective. So, I will try my best to describe my experience. REST, at first glance, has ...
Ralph Allan Rice's user avatar

Only top scored, non community-wiki answers of a minimum length are eligible