Who are we ?
We are web community experts. For our clients we design, build and grow the most ambitious social communities reaching 2 million users and beyond. Our cohesive and cross-functional teams are committed to agile project management, meaning that we produce sleek and user-friendly interfaces synching with highly scalable systems behind them, in an iterative and transparent process. Years of experience have made us symfony gurus and equipped us with the specialist expertise to surpass the demands of sites with more than 250 million page views per month and to deliver high performance web applications for over 16,000 concurrent users.
The NetCircle’s success stems from a highly skilled and dedicated team. We invest into staying on top of the latest web technologies and strive from interaction with the tech community, online and locally through hosting events such as Barcamp Shanghai. Passing on our experience and knowledge is at the core of our belief.
Which technologies are we using ?
PHP-FPM is a great way to create a dedicated cluster of PHP servers. We are taking full advantage of its features like the request execution time limit and automatic backtracing of slow requests. Together, in combination with Nginx, we managed to increase the efficiency and debugging abilities of our environment immensely.
MySQL is widely know by most of all web programmers. It is the standard database for every use case that doesn’t have very special requirements nor requires a non-relational data structure. We mostly use MySQL together with the percona patches, called xtradb, in order to get even more efficiency and options for debugging our database.
Symfony is an MVC framework which is the core of all of our projects. Modular design allows us to extend and adjust it’s core to needs of our heavily visited projects. Choosing symfony lets us develop, test and deploy business ideas extremely fast. With time passing and user bases growing it was necessary to develop a solution to share as much code as possible between our projects and to simplify deploying new communities within a blink of an eye. Thanks to symfony and our awesome techies here at TNC it was easy.
Nginx provides us with the ability to implement a huge range of functionalities in a highly efficient way. Our Nginx serves dynamic pages up to 50k times per minute per server. Furthermore, it also provides many interfaces to different types of backends.
Some information changes all the time, so in some case it’s hard to predefine the structure of the data. That’s where the no-sql comes from. We use MongoDB to store some highly visited data and it’s turned out to be very easy to build more feature on the flexible data structure with good performance from MongoDB with around 25G of data till Sep.2011.
We started to use RabbitMQ to solve the disability of php to handle asynchronous jobs. But latter this powerful rabbit is used in a lot of scenarios as middle-ware. Besides getting the benefits of asynchronous jobs from php, the messages/jobs in the queue are shared and used by several systems. So we don’t need to worry about how to share info with outside, how to manage the routing of the information, or how to handle the failover; we just need to concentrate on our business logic.
For years we are struggling to handle complex messaging systems for our clients’ web communities. We are now using Riak which plays an integral role in our architecture as our direct messaging service data store. Hundreds of thousands of messages are stored daily for multiple communities though our Riak-backed messaging service.
ejabberd is a Jabber / XMPP application server. We customized and deployed it to provide our users with features like live chat system and real time notification system. Its scalability and clustering feature was one the most important criteria why we choose ejabberd. With ejabberd we are reliably supporting thousands of simultaneous users.
Java is used as enterprise infrastructure across the world. Do we need it for our communities? YES! We use it for the internal systems. Use the right language where it suits. So online users information system are based on it. In future more projects in java are going to be deployed or developed, like an image processing system, new online users information system and users search.
We are a SCRUM team, we are to be a agile team. We may have dozens of new features, with thousands of lines of code in one iteration circle of development from several projects. How do we track and check the increased code and guarantee the quality at same time? The answer is Jenkins as CI server which helps us manage the actual code, the code version, the quality of code and warn us when there is a problem.