![]() |
|
|
|
|
1
4th November 15:09
External User
Posts: 1
|
happs
http://happs.org/HAppS/README.html Prospective Good News Haskell is more expressive than other languages so you can create DSLs for your application domain and define business logic more efficiently. Having the DBMS as part of the app means you don't have to write all the database marshalling/unmarshalling code typical of LAMP. So you can develop much faster. The type system means that it is difficult or impossible to make a large class of errors that are incredibly typical of traditional database programming. So you are less likely to run into costly run time errors. Integrating the pieces together in memory means you are not expending the huge amounts of CPU time used in LAMPs marshalling data between the HTTP server and the app server and then the app server and the DBMS and the underlying disk. So you can save money on buying, maintaining, and hosting large numbers of CPUs. Integrating the pieces together also means that you deploy a single integrated and tested executable and are not as much at the mercy of the vagaries of the deployment environment. So you can save money on sysadmins. What applications benefit from HAppS? HTTP requests and SMTP envelopes encapsulate transactions and not vice versa. Note: doing otherwise with LAMP is considered bad design because it implies a requirement to maintain and garbage collect database connections arbitrarily. So this should not be a high hurdle. All operating data fits in memory (store blobs on disk.) Note: Although this seems like a high hurdle, COTS servers with 12gb of memory are readily accessible and some vendors let you reach up to 500gb of RAM. FYI, eBay has around 50M active users. If you maintained 1k of queryable data for each of their users, you would need only 50GB. (You would also need to recompile your app for 64bits so the math is a little more involved but you get my point). You don't need more CPU power to server your app than you can obtain in a single machine. Note: I have not benchmarked this code yet, but another Haskell server was benchmarked at near 1000 HTTP transactions per second on a Pentium 4 in 2000. Modern web servers with similar architecture can serve 10k HTTP transactions per second. eBay serves 400M page views per day, which comes to an average load of 5000 hps and a peak load of perhaps 50k hps. In other words, an OTS 8 CPUs system, could handle all of eBay's HTTP traffic |
|
|
|
|
|