It should be easy to make my software service available to others. It's really easy if I can make my service public, and all data is shared between all users.
But if I want to distinguish one user from one another, and perhaps I even need to know who they are. I could use an authentication mechanism.
I will probably want to allow for administrative access, perhaps on multiple levels. The System Administrator should control system wide settings and have access to system wide report, while a Tenant Admininistrator should have tenant wide control. There could be a need for even more roles.
Authentication will take me half way there. I will also need to handle authorization or access control. Ie. who can do what and who has access to what resources.
It should be easy let people pay me for using my software. Of course, making people want to pay isn't always easy, but at least it shouldn't be a technical problem. How can I utilize a payment provider?
There are more things to take care of. How do we handle logging and monitoring? Displaying dashboards and reports about our infrastructure, etc.
It turns out it is not so easy after all...