46

As long as you don't distribute your binaries, there is no problem with using GPL libraries (or other code) in an otherwise closed-source project. As far as the regular GPL and LGPL are concerned, providing access to use your software over a network (like in SaaS) is not considered distribution. This means that there is no problem with using (L)GPL ...


20

It is OK to make a web application using C++ IF the benefits outweighs the cost, obviously. Google, Amazon, Facebook are all built with C++ for efficiency in speed, memory and energy - aka servers costs. However as you guessed, there are drawbacks to using C++ for this. It depends on your tools though. First let me cite cppcms website on this: When ...


10

This problem is called API Management and there are a number of solutions. Integrated Billing - FOSS Solutions that offer integrated billing that are Open Source, free, or charge a percentage (based on subscriptions, so no up-front fees): WSO2 API Manager 3Scale Apigee and Apigee To-Go Integrated Billing - Commercial Solutions that offer integrated ...


10

Never over architect from the get-go. You will spend most of your time on the architecture and not the actual business case you are implementing. (This is especially true if you are trying out a new architecture approach, like micro services) When I start out with something new and especially something that I have no idea if anyone will ever use, I always ...


10

The default option I see a lot of people taking is to have a local database with the same structure and sync it with the server. This is quick to setup and there are various tools and libraries you can use to implement it. However, I don't think this is a good approach. I would use a queue/event store based architecture where actions are stored locally ...


9

Keep your short releases in-house, until the customer is ready. Then, release to the customer on one of your four-week cycles. If possible, have the customer participate in software reviews between their release dates, so that you can keep your sprints on track.


9

I'm wary about on-premise solutions. It appears to me that the client has access to the source code No. They have access to an executable that is semantically equivalent to the source code, but it doesn't have to be the source code. and can easily steal it. Yes, they can. Is this software business model safe for the vendor? Stealing is illegal. This ...


8

I am asking myself the exact same question at the moment. I am leaning towards the multi-instance single tenancy solution but have not taken a definitive decision yet. Let me share some of my thoughts : The main historical advantage of the multi-tenant architecture is a better use of infrastructure resources, by mutualisation (single OS, single Database, ...


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 ...


6

There is not a YES or NO answer to your question. The decision to introduce a second level of indirection in the form of an xml/json API depends on what you are about to do with your project. As you mentioned, many projects go mobile these days, however, isn't there a simpler way to provide mobile functionality by simply presenting a customized version of ...


5

The term replaces Application Service Provider and can be found in documents dating back to at least early 2001. Software as a Service (SaaS), commonly referred to as the Application Service Provider (ASP) model, is heralded by many as the new wave in application software distribution. Following the maxim that “the Internet changes everything,” ...


5

You offer a multi-tenant solution. You place multiple customers' (aka tenants') data and applications on a single server. They share core infrastructure. If that server went down, it would take them all down. Therefore, multi-tenant. Do not feel bad about this. Essentially all service providers are multi-tenant, by design and necessity. Every organization ...


5

"Open source" typically includes that you provide the source code of your program in an understandable, compilable and changeable form. So any kind of artificial licence check could be easily disabled by anyone who is able to compile your code and has a basic knowledge of programming . Of course, you could use a license which forbids to change anything in ...


5

For my current project I had similar requirements like you. I have decided to use a backend server exposing a REST API. And for the cleints I am using a nginx server, which handles the subdomains and hosting the AngularJS Application. The server side checks which subdomain the client is using and sends the correct data to the client. In my opinion the ...


5

Oof, big topic. Yes, this can be a typical pattern in enterprise-class software, but I don't necessarily think it's a good one. Consider avoiding it if you can. The core issue here is that it exists at a super-high level of abstraction. When a tool doesn't know what the user wants to do, it inevitably abdicates the decision and gives you a framework for ...


4

My advice to you...get a lawyer. You're playing with the big boys now, asking a group of strangers on a Q&A site something this important to your company is not the right way to do it.


4

In a complex system like you describe, I would say that the configuration of that system is at least as important, if not more so, than any individual component. Often in my experience, when a complex system I work on is not working, it is the configuration, not any individual component, that is responsible for the failure. An analogy I like to use is that ...


4

You could use Piwik from http://piwik.org . It's essentially an open source, host it yourself, web analytics tool. It has most of the major features of GA and is just as easy to use.


4

It's just easier, and a pragmatic solution. iFrame keeps everything in it's own semi-private window, so there's little risk of CSS or JS conflicts. Not the greatest for user experience, but simple and effective especially for internal facing apps.


4

Supporting both options is possible also (a pool of tenants across multiple instances). I favor multi-instance cause of the natural isolation. Each customer's instance runs in it's own processes and it's data is isolated in it's own database. You can upgrade instances to new versions on a per customer/instance basis when desired. Tenant based systems come ...


4

If all code fetching data from the database is written correctly, then there is no need to have tenant id on each table. However, in practice bugs are inevitable, so there will at some point be improper data access in such a schema design. By including tenant id on every table, you can set up row-level security at the database level so that improper ...


4

services that are not internally developed and maintained but still play a part in the overall system environment Components/parts/whatever that your team/company/etc. did not develop themselves but got from another party (could be another team within the same company, depending on your scope), are commonly referred to as "third party" components/parts/...


3

We use the database itself for this. We have a table where every record has a "Last Updated" datetime field for the settings stored in the record (updated using a trigger). Our apps check the datetime field for whichever settings they're interested in and if it's more recent than the value they have in memory, the settings are reloaded and the in-memory ...


3

It depends on your application. A lot of businesses simply don't need a web API services layer and can use standard MVC practices to serve up rendered pages from well designed thin controllers. This can be much faster to create and easier to maintain than something like a view layer written entirely in unmaintainable javascript(most is) that hits your API....


3

Wordpress running in PHP with a few plugins installed brings my Winders server to it's knees. So I have no problems at all with the idea of implementing a web application in C++. Speed is a critical part of the web experience. Graphic design tents to drive the majority of web projects. PHP is an obscure scripting language that runs inside HTML. Allowing the ...


3

There are generally two big pieces to the "integrating with enterprise services" puzzle: single-sign on and data. SSO can be the easier piece, depending on what the client institution has in place. For instance: I work at a large institution with strict SSO requirements. We have an OpenID provider in place for authenticating to our SaaS vendors, and OAuth ...


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