3

For example, creating user accounts are a pretty common occurrence when developing a website. Is there any service that a software developer could use to "click and drag" a solution for this into their software (request a JSON response, for instance) instead of completely re-coding a new solution for this every time you need to create a user database?

Does there exist a marketplace for solutions like this of all kinds?

  • project templates in visual studio? – Ewan Jul 11 '18 at 15:50
  • I'm looking for a more universal solution. A language agnostic way to create a standard user database without coding the entire thing (to stick to the example). – DJBrunelle Jul 11 '18 at 15:52
  • aspnet_regsql.exe -S <server> -E -d <database> -A all ? – Ewan Jul 11 '18 at 15:54
  • 2
    "Creating user accounts" is going to have different needs for a to-do list app and for a Medical Health Records system. – whatsisname Jul 11 '18 at 15:57
  • The need is definitely there. Many years ago I worked only on "systems programming". When I started working on database programming (so called "enterprise"), I was amazed at the lack of high level components that could be reused. I have always understood this is due to the high level of customization for each database and solution. – Frank Hileman Jul 11 '18 at 15:58
8

Not exactly.

The problem is that the new user database will have some variation. Where is your authentication source? What fields should users have? Do you need to send out a message when users are created/modified? Do you need to authorize user creation? How do you know what permissions a user has?

"Thats fine", you say "we'll provide those via configuration!"

So you start adding configuration variables for all the different variations that people need. A place to specify the authentication source. A way to specify what fields a user should have. Some canned behaviors for sending out messages.

But now your configuration is more and more complex, yet still only covers the most common cases. "So why don't we add some plug-ins to the configuration so that we can support new behaviors?"

And you've just spent a whole lot of time and effort to produce something that looks and acts like a programming language, but without the widespread support, libraries, or userbase.

  • 1
    At the same time.... there may be something out there. We are presumably developers, or development managers, and may not know exactly what is out there. There are high level tools such as SAP. – Frank Hileman Jul 11 '18 at 15:59
  • 1
    Yes, a thousand times yes. It's called second system effect or inner platform. Every once in a while someone comes along and re-invents the mother of all applications. "I know: instead of writing forms individually, I'll write a forms generator that will automatically write my application for me." Double-facepalm hilarity inevitably follows. – Robert Harvey Jul 11 '18 at 16:03
  • @Frank I'm not familiar with SAP, but at a glance it looks similar to a cloud service infrastructure like AWS or Google cloud. What solutions does SAP provide in this context? – DJBrunelle Jul 11 '18 at 16:07
  • @DJBrunelle SAP is a monster. Usually people do talk about that replacing custom software, but I am no SAP expert. There are also lower level, cheaper tools that people use to avoid creating database applications... but I cannot remember what they are. – Frank Hileman Jul 11 '18 at 16:10
  • Another thousand times yes. The software I've been working on started out as 'all these things look really similar, lets just encode the differences with configuration!' and it took two years of development hell to convince management that it was a poor decision. Even now, with a considerably restricted domain, it is difficult and finding patterns that are genuinely useful to abstract takes a lot of thought, and how to abstract them in a way that isn't badly opinionated takes even more. – GoatInTheMachine Jul 11 '18 at 16:13
3

To speak more specifically to the use-case you gave Yes. Identity as a service exists for precisely that reason. There are many providers such as AWS Cognito (https://aws.amazon.com/cognito/) and Auth0 (https://auth0.com/) that will handle authentication for you. You simply interact with their "User Service" via API calls. They are highly configurable and allow custom fields for your user objects.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.