Posts in category ‘Framework’.
Serving All Israeli News Web Sites from a Single EC2 instance...
For the last year the development of the CppCMS project was less active. The vast majority of the work hours were spent on a customer's project that used CppCMS to create an outstanding advertisement system.
The project is called Linicom.
Today, when Linicom is up, running and maintained by a larger team, so I can resume the activity on the core CppCMS project itself.
Few words about Linicom:
Linicom is an engine that provides content and visitor sensitive advertisements for almost all large Israeli news web sites: including Ynet, Haaretz, Jerusalem Post, Mako, Walla and other significant web sites in Israel and abroad.
Here some interesting facts:
- Linicom is based on CppCMS technology.
- The system serves around 10,000,000 custom requests a day, i.e ~115 req./s.
- During peak hours, it servers around 160 requests per second.
- Its typical network output is around 11 megabit per second.
- Its total memory consumption (web server, database, applications, OS) is only around 350Mb.
- The server's average CPU load is around 5%
- The server runs on a
c1.medium
Amazon EC2 instance.
The system runs behind Lighttpd and uses PostgreSQL for persistent data storage. Also PostgreSQL is used extensively, all real time data is stored in memory.
Almost every request needs data processing in order to provide highly customized advertisements. In technical terms it means that almost no request can be "outsourced" to a static files - every request for every customer should be processed explicitly.
This system is probably one of the classic applications of CppCMS technology - web based system that required to be fast and efficient, being able to handle outstanding and sometimes unexpectedly changing loads without problems and provide high QoS.
Use of in-memory data storage, caching and efficient handing of the data that can't be cached is were CppCMS shines. Having a big growth potential with a minimal required maintenance and high reliability allows the to handle the business-end safely without worrying about performance issues.
CppCMS Project Receives Donations...
CppCMS project receives monetary donations using sourceforge donation system.
If you are using this project consider donating some money. Follow the donations button on the CppCMS projects web site or the button in this post.
The money would help to create a better product and provide better service to the CppCMS users community.
CppCMS 0.999.0 - Release Candidate 1
The first release candidate of the next version of CppCMS is available - the API can be considered stable from this point and would not be changed in backward incompatible way.
New Features:
Templates engine improvements:
Added template helpers support functions
<% using ... %>
and<% render ... %>
that allow using other views directly from the code and not just templates as it was done before.Added new syntax
<% form block foo %>...<% end %>
as better alternative to:
<% form begin foo %>...<% form end foo %>
Improved error messages in templates compiler such that it gives more clear errors in case of syntax error.
Changed semantics of
application::render
function such that it would not override an application that was assigned to the contend (if it was assigned at all)
cppcms_scale
improvements:- Support of session storage in addition to cache storage now providing full scalability of CppCMS services.
- Now it uses same configuration method as CppCMS process - JSON file with optional command line parameters.
cppcms_scale
now can run as Unix deamon and as Windows service.
URL Mapper does not throws by default, but rather create an invalid URL making initial programming easier.
The behavior can be reverted back by setting
misk.invalid_url_throws
option to true.Added recursive
shared_mutex
support to booster.Provided an experimental support of STLPort 5.2.
CppCMS Nightly Tests
Hello All,
In order to simplify CppCMS release procedure and ensure that current SVN trunk it not got broken on platforms that are used less frequently the night build and test were set up.
Each night svn-trunk is tested with different compilers and platforms. The full test matrix in not complete yet, but most important platforms and compilers are tested (or actually the plafroms that can be tested relatievly easily)
It is expected to be extedned more in future.
Thanks to VirtualBox for simple and convinient virtualization solutions.
First beta version of CppCMS 1.x.x is officially out!
Hello all CppCMS users.
The first beta version of CppCMS 1.x.x is available for download from the Sourceforge. The build instructions can be found here.
This version very different from CppCMS 0.0.x branch - it fixes many design flaws that had been done the previous version, it is almost 90% rewrite of the original code according to new design.
It also includes many important features
Most significant ones:
Full CppCMS core rewrite that introduced:
- Asynchronous programming support
- Removal of 3rd part libraries from the core api.
- Stable API and ABI through all major releases.
- Improved Ajax support with introduction of JSON-RPC
- Powerful i18n and l10n
- Native Windows support including support of MSVC.
- And much more...
So now CppCMS beta is ready.
Hopefully first release candidate version will be ready withing about a 3 month. And the first stable release is expected at the end of 2010 beginning of 2011.