Friday, May 9, 2014

Design high performance CakePHP app - How to?

I need some answers related to performance .

I made a lot of web applications with low traffic . Now , I need to do one little demanding , it is a prototype for an early stage startup project .
Web applications need to serve dynamically generated html and restful ( json ) content . Backend application searches relational database with fulltext search capabilities . Users accessing content via mobile apps and web browser . Mobile applications developed using PhoneGap framework and communicates with the server via a restful api .


Web applications have html ajax interface , which takes data from a restful APIs , and on the client side generated HTML content . In my belief CakePHP can better respond to multiple concurrent requests , if served json data instead of generating HTML views . Am I right ?


Now we come to what may hamper good performance , and it's Database modeling .


As I wrote in the beginning of this topic , db must have fulltext search capabilities , and the tables have multiple relationships . This means that a query can contain 5-6 join links and more .


Read - Write? DB must Read and respond to millions of queries per day . The application is designed mainly to read from the database , write to the database is not intense .

Every request sent to the server itself is unique , so I do not see the point to use a cache system , or maybe I'm wrong ? At a later stage we plan to add ElasticSearch as a major search engine , but before that we have an idea to make a special search mysql table , where it will copy the contents , after the user selects an item in html form, from a variety of related models , write own  text and save it all .

Yes, this is a duplication of content, but in this way we want to avoid multiple joins links, and improve the performance of search content. This table should behave similarly to NoSQL Database. It is our opinion, we may make mistakes and can give us a better solution.

Due to limited resources, we are forced to improvise. 

Other features: 

Nginx server 
Multi-language interface, 
transactions, 
payments Gatway (Paymill, PayPal),..


Now I want to hear your tips to improve performance for this type of application. 

thanks,

Nikola

--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP

---
You received this message because you are subscribed to the Google Groups "CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscribe@googlegroups.com.
To post to this group, send email to cake-php@googlegroups.com.
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.

No comments: