For a while now I've been thinking about a platform agnostic, scalable architecture. An architecture that I could use to create a solution that would run, unchanged, on most - if not all - platforms, but at the same time would be scalable to enterprise level. After a bit of thought this is what I've come up with.
The RDBMS for the back-end is the easiest to solve. So long as you use standard SQL, and none of the home-brewed stuff in T-SQL say, then you can pretty much swap out the RDBMS for your own favourite platform database. Oracle on *nix or Sql Server on Microsoft for instance.
For the business logic tier I went for a
RESTful api using ansi C++. This way the same source can be compiled into .cgi files to run on *nix servers or Microsoft servers. It also means it's easy to plug in any sort of presentation layer whether you need a desktop application running on Windows XP or a web enabled application running on Firefox on *nix.
Lastly, for the presentation layer I went for
Smalltalk (another win for
James Robertson). Smalltalk is binary compatible on almost any platform you can think of and you can also use
.ssp pages if you have to write web applications. It's easy to use, and being a dynamic language it enables the programmer to be super productive. I suppose, in fairness, I could have used Java here, but it just introduces a level of complexity that removes the programmer from the solution by at least one degree. So to my mind Smalltalk is a clear winner here. (Also the
Mono project is maturing fast and is one to watch in this area)
As for scalability, you can have all this running on one machine (say a Smalltalk application under Fedora Core desktop, running the RESTful api under Apache writing to a MySql database). Just as easily though, you could have 1,000s of users accessing a web application written in Smalltalk Server Pages, talking to the RESTful api on an Apache web farm, writing to a Sql Server database cluster. (Note, you do need a third pary ODBC bridge to connect the Apache .cgi to a Sql Server database.) So yeah, I think we've got scalability sorted out.
If you have a business problem that could benefit from a platform agnostic, scalable solution, why not
contact us?