Even full stack has its problems. It's that whole "generalist" vs
"specialist" argument - sure you can do a bit of everything, but in doing
that, can you actually devote yourself to becoming a master in something?
Pretty hard to do. It's yet another flaw in Agile I think. And that said,
that's what I am, a full-stack developer (although I am also quite strong
in SQL Server, but never really felt inclined to follow that path more
deeply.)

I understand the point of people who have devoted their lives to data, and
having worked in a few large corporates, I can say that the data point of
view and stored procs have merit, in that politically it is much easier to
deliver patches via transactional database update scripts than it is to
redeploy a monolithic application. Being data centric can have its
limitations once the applications get significant though, as a database
itself is one huge brittle API, and when the contract changes and you have
to change your data structure, it can effect everything.

The microservices approach is supposed to get around this somewhat, as
breaking down the monolith and compartmentalising specific purpose chunks
of functionality (which is the high cohesion, low coupling life pattern
again) does give you the ability to deploy those individual slivers
independently of each other if you need to. Great when it works.

Microservices doesn't actually care where you store your data. Each
microservice can store the data wherever the coders decide, and that might
not be a relational database at all. All you do is provide the interface to
the "consumer" and provide a contractual outcome.

Microservices follows more of a domain driven design approach, which, when
done properly, can provide a more flexible, small 'a' agile outcome, and
uncover ideas that can lead to innovative ideas that provide a strategic
advantage, that would otherwise not have been identified in a data centric
environment. And within ddd it is done by sticking to single-directional
relationships between POCO entities by focusing on real world problems.

So you can argue one way or the other, but I see benefits both ways
depending on the circumstances.







On Fri, Sep 16, 2016 at 11:58 AM, Andrew Tobin <and...@grrargh.com> wrote:

> Document/Object DBs are kind of the solution for that, however, they still
> need to be managed.
>
> Grow a beard and become "full-stack".
>
> On Fri, Sep 16, 2016 at 11:56 AM, Greg Keogh <gfke...@gmail.com> wrote:
>
>> The people who think that ORMs are a good idea have a code-centric view
>>> of the world.
>>>
>>
>> Stored procs!
>>
>> Here's the black hole of the argument. To me it's a simple reductionist
>> problem... Clean-shaven code-centric people write real-world apps. Beardy
>> DBAs design databases. Coders need databases. Databases are unlikely to
>> have a structure that suits coders. What can bridge the "impedance" gap?
>> Something has to.
>>
>> It doesn't matter how much you like stored procs, you still have to get
>> stuff in and out of them across the gap to the coder's classes. How do
>> procs help? Are you proposing that more business logic be moved into procs?
>> If so, that way lies madness, as you can't easily integrate proc code into
>> source control, testing, versioning, builds, etc. I've seen whole apps
>> written in T-SQL, and it's quite frightening.
>>
>> Coders need ORMs, heavy or light. I've only used 2 this century, but they
>> simplify and reduce code by a staggering amount. The benefits far outweigh
>> the deficits.
>>
>> I was just discussing this with a colleague and we have made a casual
>> pact that in future apps we will try to meet more halfway across the "gap".
>> He will write procs that aggregate and deep load joined data for complex
>> queries, then my code on the ORM side will query what the proc assembles.
>> We haven't worked out the details of this plan, but I think it lets each
>> part do what they are best at. The procs will assemble and shred data out
>> of tables and the code will work with business objects.
>>
>> *Greg*
>>
>
>

Reply via email to