Saturday, April 3, 2010

Workshop 6 Enjoying the Ride: Web framework alternatives, scalability and flexibility

Workshop 6 - Enjoying the Ride: Web framework alternatives, scalability and flexibility


Topic objectives


Upon the completion of this workshop, developers or managers should be able to:

• Discuss and analyse the latest Web framework technologies based upon experiences so far with Ruby on Rails
• Identify and evaluate challenges and opportunities concerning the use of the latest Web 2.0 technologies and to ‘benchmark’ (compare) other alternatives;
• Discuss and evaluate current Ruby on Rails framework and the alternative emerging technologies.

• Evaluate and devise scalability, flexibility, capacity planning and performance testing strategies for conducting e-commerce.
• Deploy Web 2.0 or later technology in their business environments such as the ideas and methods of the ‘RailsSpace’ approach to the OTBS
• Think critically and analytically when exposed to new technologies.
• Share your findings with your peers and examine what the other team is doing.


Focus Question


As either a developer or as an IT manager, how can aspects of social networking be applied to the OTBS?


From an IT manager point of view the OTBS, and indeed that Taxi company itself could tap into the enormous customer potentail of social networking. This could be as simple as creating MySpace or Facebook accounts for the Taxi Company, and migrating the booking system to those sites, or at least linking from them to the OTBS. The taxi company could also run a twitter site, where drivers are able to provide twitter updates on various things going on around town such as concerts, sporting events, traffic issues. This would be a great marketting tool for the company and could be a great way to attract new customers. Other aspects of social networking could also be applied to the OTBS such as tracking the current location of drivers and availability statuses. These functions would not only extend the functionality of the OTBS system but may also provide the comopany with a competitive technological edge. With the advent of Web 2.0, and the increased interactivity that this brings, there are opprotunities in the social networking realm for all e-businesses, and this also includes Taxi Companies. The OTBS presents technological advances in actually booking a taxi, but this combined with social networking presents great opportunities for gaining access to markets never before possible.

IT INFRASTRUCTURE MANAGER’S THREAD (BLUE team)


To Do:


Are we certain that Ruby on Rails is the right platform for Web development?


Blue team IT managers need to write about the alternative frameworks, focusing on issues of scalability, flexibility.


Introduction

Whilst this workshop is predominantly focused on web application development utilsing Ruby on Rails, it is refreshing to see this "To Do" requiring an examination of alternative frameworks as there are many, and a simple google search reveals a number of websites dedicated to presenting alternative frameworks to Ruby on Rails. This brief report will look at three potential alternative frameworks; PHP, Django and Java for the development of the OTBS.


It could be argued that Ruby on Rails is currently the dominant web programming framework and is considered the epitome of the latest generation of high-productivity, open source web development tools.However, this is not necessarily the best justification for using it. When it comes to programming, more specifically the development of web applications, it is important to consider all the tools of the trade before using the one that is going to be used for the job.


PHP

First off, it must be acknowledged that PHP is a programming language, whereas Rails is a framework for writing web applications using the Ruby programming language. So right off the bat this is not an "apples-to-apples" comparison. PHP is a widely used, general-purpose scripting language that was originally designed for web development to produce dynamic web pages. For this purpose, PHP code is embedded into the HTML source document and interpreted by a web server with a PHP processor module, which generates the web page document. As a general-purpose programming language, PHP code is processed by an interpreter application in command-line mode performing desired operating system operations and producing program output on its standard output channel. It may also function as a graphical application. PHP is a general-purpose scripting language that is especially suited to server-side web development where PHP generally runs on a web server.


Any PHP code in a requested file is executed by the PHP runtime, usually to create dynamic web page content. It can also be used for command-line scripting and client-side GUI applications. PHP can be deployed on most web servers, many operating systems and platforms, and can be used with many relational database management systems. Most importantly, it is available free of charge! Given that PHP is a proramming language, the developer using PHP will need to utilise a PHP development framework, of which there are many available Both Ruby on Rails and PHP are equally easy or difficult to scale. The first level of scaling is simply adding more memory/cpu/server instances. Once this level of scaling is exhausted, they are both equally hard requiring all of the same methods as scaling any other web application on the internet: Code optimisations, caching, more servers, database scaling, content delivery networks and more. In terms of flexibility, PHP, being simply a programming language, has more flexibility than Ruby on Rails. However, in order to harness this flexibiliy, the developer much be familiar with the code. Given PHP has been around since the mid to late 90's, the documentation available and user community is quite extensive, further adding to the flexibility of using PHP. However if PHP is being utilsed in a development framework such as CakePHP it would appear the Ruby on Rails is more flexible.


Ruby versus PHP


Django

Like Ruby on Rails, Django is an open source web application framework, however it is written in Python, which follows the model-view-controller architectural pattern. It is also a very popular web application framework and is often viewed as a popular alternative to Ruby on Rails. Django's primary goal is to ease the creation of complex, database-driven websites. Django emphasises reusability and pluggability of components, rapid development, and the principle of DRY (Don't Repeat Yourself). This concepts are similar to those emphasised by Ruby on Rails, however instead of Ruby, Python is used throughout. Also like Ruby on Rails, Django also provides an optional administrative CRUD (create, read, update and delete) interface that is generated dynamically through introspection and configured via admin models. Both are very capable and offer a unique set of features. Django and Rails aim to solve similar problems, in a similar manner, using a similar architecture. There is no clear technical benefit for an experienced Rails development team to switch to Django or a Django development team switching to Rails. For developers not currently working with either Django nor Rails, the most important consideration is the implementation language. Ruby developers would benefit from using Rails, while Python developers would benefit from using Django, allowing them to apply skills they already have. In terms of scalability and flexibility, DJANGO and Ruby on Rails are much of a muchness, given their similarities. The main difference in choosing betwene these two applications appears to focus on which programming language is preferred, python versus Ruby.

Ruby Versus Django

Java

Java is a programming language which derives much of its syntax from C and C++ but has a simpler object model and fewer low-level facilities. Java applications are typically compiled to a class file that can run on any Java Virtual Machine (regardless of computer architecture. Java is general-purpose, concurrent, class-based, and object-oriented, and is specifically designed to have as few implementation dependencies as possible.

It would appear that Java does require a more solid software engineering approach to do well whereas Ruby on Rails can be learnt relatively quickly and easily. However, Java appears to have greater underlying capabilities with its scalability being more solid, and security is tighter. The drawback is Java is a far more challenging environment to get started in, but ultimately it will result in a far more solid end product if you perservere. Ruby on Rails appears very easy to get into with a realtively short learning curve. There also appears to be plenty of tutorials and code libraries online that can assist would be newbie programmers.


Both the Java web development framework and the Ruby On Rails web framework have a number of things in common in that they both utilise object oriented language, they both use Model View Controller Architecture and both are easier to utilise and maintain than other frameworks which use different languages. But there are distinct differences between the two as well. Java has to be compiled into a binary executable before execution, where as Ruby is interpreted at the time of execution allowing for faster development and processing. Java is statically typed, whilst Ruby is dynamic. Java’s coding effort is much greater and more complex than that of Ruby on Rails. Ruby on Rails allows a much greater ability to produce rapid applications through the use of scaffolding.


Ruby Versus Java

Conclusion

In considering which framework is better, I think it is important to realise that rour framework will not make your project any better or worse. It is simply a delivery mechanism. Whilst the question of which is best appears to have generated much debate over the past couple of years from what I can tell it all depends on your background and level of knowledge of programming. Many sell Ruby on Rails, and Django to a lesser degree, as being superior because of its simplicity and ease of use, however those with solid software engineering background may be able to produce a more solid and secure product using Java or PHP. However, for generation Y, who want things now, I would say Ruby on Rails or Django is better suited. Also, from a management perspective, Ruby on Rails and Django reduces the load on the System Developer, and presents a more effecient option than Java in terms of time taken to develop an application.

In addition a plan for capacity planning, performance testing, site maintenance and future development of the OTBS is presented. Chapter 17 of Hartl et al (2008) is a good place to start.

In addition to ensuring an appropriate web developement framework has been selected for developing the OTBS, a number of other factors must be considered to ensure the success of this system including capacity planning, performance testing, site maintenance and future developments.

Capacity Planning

Capacity planning is the process of determining the production capacity needed by an organisation to meet changing demands for its products. Web-based companies live or die by the ability to scale their infrastructure to accommodate increasing demand. In this technological age customers expect rapid response times, high availability and adequate bandwidth and as such the performance of the network may directly affect a customer’s first impression of of the business. In terms of the OTBS, given that it is still in the development stage, it is difficult to effectively conduct network baseline analysis. However this should occur during testing and also be part of the ongoing asssessment to identify areas for improvement and maintain performance of the existing networks. By undertaking capacity planning and analysis the company will be able to learn where their business is coming from, when peak periods are and also identify the requirements for redundancy. This will enable potential problems to be identifyied and hopefully prevent them and establish a networkwide view of how much data is being transferred across the network to determine whether the capacity of the network is sufficient. The last thing you want to happen is the network to crash at peak times due to lack of capacity, this costing the company money. A

Performance Testing

Network performance refers to the service quality of a telecommunications product as seen by the customer. There are many different ways to measure the performance of a network, as each network is different in nature and design. Actual performance testing covers a broad range of engineering or functional evaluations where a material, product, system, or person is not specified by detailed material or component specification rather, emphasis is on the final measurable performance characteristics. In the computer industry,and in this particular case, performance testing is used to determine the speed or effectiveness of a computer, network, software program or device. This process amy involve quantitative tests done in a lab, such as measuring the response time at which a system functions. Qualitative attributes such as reliability, scalability and interoperability may also be evaluated. It is critical that the OTBS undergoes such testing prior to employment to ensure its fitness for purpose, stability and reliability.

Site Maintenance

It is an unfortunate reality that all Web sites get cluttered. A periodic review and cleanup can help keep the website will hopefully keep it functioning well. To ensure the OTBS continues to function after deployment, a plan for maintining plan the host site should be developed and implemented from the beginning.The actual maintenance plan will depend on the environment the OBTS is being run under, however, some best practices for a site maintenance plan include:
  • Asking users what they want Perform periodic surveys to determine what your users need from the site.

  • Use usage logs and reports to find out which areas of the site are being used, and then correlate that with user surveys to find out what can be improved.

  • Archive obsolete content or sites. However, if you are going to archive or delete obsolete content or sites, be sure that users understand that plan, and that you perform these actions only at predictable times. For example, publish a schedule of when you are going to archive content or delete unused sites.

  • Periodically review site permissions. For example, review the permissions quarterly to remove permissions for any users who have left the group or project.

  • Select a reasonable time interval for your maintenance activities.

  • Create a plan for regular backups of site content. Determine or discover how often backups will be made, and the process for restoring content when necessary.

Future Developments

Whilst none of us have a crystal ball, it is important to consider the future and stay abreast of developments in technology. The speed at which technoology develops has increased over the years and web sites can age very quickly. As such, the content of the OTBS and company website should be reviewed periodically to update appearance. Further, any opportunities to include or exploit new technologies should be concsidered.


No comments:

Post a Comment