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?

DJBrunelle
  • 41
  • 4
  • 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 -E -d -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
  • if you use IIS it has out of the box windows auth – Ewan Jul 11 '18 at 16:10
  • There are huge marketplaces for every major ecosystem. Google for " [component|module|library] ", or ask at softwarerecommendations.stackexchange. But make sure you also read the top answer of [this question](https://softwareengineering.stackexchange.com/questions/7618/does-oop-fulfill-the-promise-of-code-reuse-what-alternatives-are-there-to-achie) to understand why it is not always efficient to reuse code. – Doc Brown Jul 11 '18 at 17:40
  • @DJBrunelle Is your end goal to have a 3rd party manage your users/identity operations? Such as creating users, sending out confirmation emails, resetting passwords, etc etc? – Usman Mutawakil Jul 12 '18 at 01:19
  • @Usman I was just using the scenario as an example, but yes that is part of what I’m looking for. I’m looking for a marketplace that developers can create commonly used applications and provide them through cloud based services for other developers to use within their own application. Ideally, this would allow for less redundancy of code. – DJBrunelle Jul 12 '18 at 09:48

2 Answers2

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.

Telastyn
  • 108,850
  • 29
  • 239
  • 365
  • 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
  • @Telastyn There are APIs for doing all of the things you mentioned. Those things don't need to be coded from scratch. Identity-as-a-service. – Usman Mutawakil Jul 12 '18 at 01:17
  • @DJBrunelle: SAP is a huge ERP software. Ever hear stories where some VP at some big company decides they want to integrate all the various systems from all their departments and locations into some singular uber system, and so after hiring some snazzy suit-clad consultants and spending tons of money transitioning to the system, but when they switch nothing works, and even when it does work it sucks but at that point they're so deep into it they just keep shoveling money out the door on more and more expensive consulting hours? That's SAP's bread and butter. – whatsisname Jul 12 '18 at 06:24
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.