Web Applications
Linqux develops web applications that are aligned with the strategic business objectives of our clients. Our team works with you to identify and define requirements, create a technology strategy and chart out a project schedule.
Our designers and programmers work to create dynamic, user-centric applications. We develop web applications by leveraging rapid application development frameworks and agile methodologies. Our capabilities extend to developing customized, enterprise grade business solutions capable of scaling to meet your growth.
Web apps are typically developed on Java for EE, ASP.NET, Ruby-on-Rails. The choice of technology or platform depends on factors such as technologies already in-use at client-site and the type of app being developed. Linqux has deep technical expertise in most of the popular technology stacks and also on frameworks like Struts, Spring, Symfony, CodeIgniter, Zend and Django that run on these stacks.
Linqux can create web apps that meet not only your functional requirements, but non-functional requirements as well. Non-functional requirements typically include availability, scalability and performance needs.
Mission critical applications need to be highly available with minimal scheduled or unscheduled downtime. Availability is expressed as a percentage, for instance as 99.95%. In order to create an application that is highly available, redundancies must be built into the system at multiple levels to avoid single points of failure. Techniques like clustering and replication are used to achieve redundancy. Higher availability is associated with added complexities to the system that results in higher operational and development costs.
Scalability is a measure of how the application responds when the load on the system increases. If the application response time remains constant in spite of the increase in the number of concurrent users or growth in the volume of data, the application can said to be scalable. In practice, this does not happen because of physical limitations of systems like available memory and processing power. Application response degrades with increase in load and at some point will become totally unresponsive. However, by properly architecting the application, scalability can be achieved. One common method is adding more machines to handle more load. This is called scaling out. However, this needs proper and careful architecting and addressing of issues like session data sharing.
Performance should be a feature - it is expected of all applications, especially those with a user interface. The application must appear responsive to user input. For transactional applications, Linqux follows a normalized database design. Databases are not de-normalized assuming there would be a performance problem. De-normalization is taken up only after performance tests conclusively prove that it is required, which is very often not the case. Performance improvement techniques include use of caching at various levels. For example, enabling the query cache within database may help with performance if the same query is executed multiple times. Output caching of HTML may help to deliver pages faster without the need for processing. Similarly application level caches like memcache can significantly speed up applications. Database replication can improve performance by enabling the slaves to handle read-only queries.
A web application needs to provide a good user experience. This can be achieved by following a proper information architecture, proper labeling, appearing responsive and following user experience best practices. At Linqux, we strive to create applications that provide a superior user experience.