Friday, March 5, 2010

Exercise 4: Network and Web programming frameworks

Exercise 4: Network and Web programming frameworks

1. Describe the important and distinguishing properties of Peer to Peer computing with the client/server architecture?

As stated in Wikipedia (2010) Client/server computing or networking is a distributed application architecture that partitions tasks or work loads between the server and the clients. Often clients and servers operate over a computer network on separate hardware. A server machine is a high-performance host that is running one or more server programs which share its resources with clients. A client does not share any of its resources, but requests a server's content or service function. Clients therefore initiate communication sessions with servers which await (listen to) incoming requests.

Whatis.com (2010) describes a peer to peer network is any distributed network architecture composed of participants that make a portion of their resources, such as processing power, disk storage or network bandwidth, directly available to other network participants, without the need for central coordination instances (such as servers or stable hosts). Peers are both suppliers and consumers of resources, in contrast to the traditional clinet/server model discussed above where only servers supply, and clients consume.

2. Frameworks for development. Compare and contrast any TWO of:

a. Java

b. .NET

c. Ruby on Rails

d. Django

e. Google App engine

f. AJAX frameworks


I have not done a lot of programming, especially not recently so am not in a position to provide comment from personnel experience with any of the above web frameworks. Having read up a little on all of these frameworks I have decided to compare Java and Ruby on Rails, mainly because from what I have read, Java appears to be the old kid on the block having appeared on the scene over ten years ago, and Ruby on Rails the new kid. Having said this, both appear to be popular frameworks within the development world.


From my brief research 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 (Flanagan, 2005).


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 with 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 (Holzner, 2006). The following video provides a mildly entertaining brief comparison between the two, highligting the simplicity of Ruby on Rails.


Ruby On Rails versus Java


In terms of which web framework is better, this 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 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. However, for generation Y, who want things now, I would say Ruby on Rails is better suited. Also, from a management perspective, Ruby on Rails reduces the load on the System Developer, and presents a more effecient option than Java in terms of time taken to develop an application.


Exercise 3 - From DNS and DHCP to Clouds and Grids

Exercise 3: From DNS and DHCP to Clouds and Grids 1.

Explain DNS and DHCP. How does DNS differ from DCHP configuration?


Dynamic Host Configuration Protocol (DHCP) is a protocol that automatically provides an Internet Protocol (IP) host with its IP address and other related configuration information such as the subnet mask and default gateway (Webopedia, 2010).


The Domain Name Server (DNS) is a hierarchical naming system for computers, services, or any resource connected to the Internet or a private network. Its purpose is to translate domain names into IP addresses (Wikipedia, 2010). Whenever we use a domain name, then a service is used for translating domain names into IP addresses and is known as DNS. For example, the domain name www.dns.com might translate to 192.101.202.2.

In terms of how DNS differs from the DCHP configuration, as I understand it in a network, a DHCP server manages a pool of IP addresses, as well as default gateway details, including the DNS details and other information for the clients’ network configuration. When a new computer is introduced into a DHCP server-enabled network, it will send a query to the DHCP server requesting all the necessary information. When the query reaches the DHCP server, it will grant the new computer a new IP address as well as other configuration details.

2. Why is it important for your online business application to use a static IP address rather than have it dynamically assigned?


It is important when implementing an online business site/server to utilise a static IP address rather than a dynamically assigned address as a static IP address best supports name resolution by the DNS system, so that a computer can be most reliably reached over the network by its host / domain name. Web and FTP servers in particular benefit from fixed addressing for this reason, as do online businesses. Clearly, having an online business which is consistently easily able to be accessed, then customers are more likely to return, than a site which is inaccessible.


3. What role can the following play in business-to-business e-commerce?
a) Virtual Private Network (VPN) or Grid computing services
b) Next generation of wireless mesh networks
c) Cloud or Social Cloud applications.

With the advent of globalisation over the past decade, instead of simply dealing with local or regional concerns, many businesses now have to think about global markets and logistics. Many large companies have facilities spread out across the country or around the world. In perfectly competition, where competitive advantage can mean the difference between success and failure, there is one thing that all of them need: A way to maintain fast, secure and reliable communications irrespective of where their offices are located. All of the above networks, whilst vastly different, offer businesses a means connectivity
. Each of these are briefly described belowin terms of the role they may play in B2B E-commerce.

A Virtual Private Network (VPN) is a private network that uses a public network (usually the Internet) to connect remote sites or users together, but maintains privacy through security procedures which encrypt the data (Reynolds, 2010). These remote sites or users may be employees of the one company, however VPNs can be established between business to allow trading partners to maintain secure contact even when employees are on the road or geographically dispersed. Because it is a virtual network using a public network, the cost to the business, when compared to having to lease a dedicated line, is reduced.


Grid computing is a form of distributed computing whereby a “super and virtual computer” is composed of a cluster of networked loosely coupled computers acting in concert to perform very large tasks. Burman, Fox and Hey (2003) have published a book on this topic and state that this system is built on pervasive Internet standards qn enables organisations to share computing and information resources across department and organisational boundaries in a secure, highly efficient manner.
In most B2B platforms, browser-based access co-habits with electronic data exchange. The weak point of many B2B platforms is that business partners usually connect only through a browser connection using the internet, without putting in place any electronic data exchange. This makes the interaction slow and allows frequent human errors. In addition data is updated infrequently, typically only 1-2 times a day, even when some form of automation is available. With the higher computer processing cycles and ability to process large amounts of dat, grid computing presents a solution to B2B interactions for large volumes of electronic data exchange required in many modern B2B scenarios such as large database replaication.

A wireless mesh network (WMN) is a communications network made up ofradio nodea organised in a "mesh topology". The mesh clients are often laptops, mobile phones and other wireless devices while the mesh routers forward traffic to and from the gateways which may but need not connect to the Internet. WMNs may consist of mesh clients, mesh routers and gateways. Wireless mesh technology enables businesses to deploy secure, high-bandwidth, scalable access to fixed and mobile applications across metropolitan areas, extending existing wired networked services and applications beyond current physical infrastructure (Wikipedia, 2010). It also means, for businesses, that consumers now have unprecedented accessibility to the internet, enabling them to access e-commerce sites even when they are mobile.

Cloud computing is a way of computing, via the Internet, that broadly shares computer resources instead of using software or storage on a local PC. Whatis.com (2010) provides an interesting definition and description of cloud computing. With cloud computing, businsses can scale up to massive capacities in an instant without having to invest in new information technology infrastructure, train new personnel, or license new software. Cloud computing is of particular benefit to small and medium-sized businesses who wish to completely outsource their data-center infrastructure, or large companies who wish to get peak load capacity without incurring the higher cost of building larger data centers internally. In both instances, service consumers use what they need on the Internet and pay only for what they use. The consumer does not own the infrastructure, software, or platform in the cloud. This means that the business has lower upfront costs, capital expenses, and operating expenses. This also means that the business does not have to worry about how servers and networks are maintained in the cloud.

4. “ If clouding computing is the “black box”, then grid computing is a component as the “white box ”. Explain what you interpret about that statement.

I believe that, in the context of the above statement the cloud represents a "black box" in that users do not have to know the inner workings of the cloud, all they need to know is the interfaces. This is no doubt that this is based on the black-box framework, which essentially means that a user does not require a deep understanding of the framework in order to use it.
By contrast, a white-box framework requires the user to understand the internals of the framework to use it effectively and that the framework has a level of transperency. The above statement relates the "white box" to the grid computing framework that the network is known, as it is made up of whole computers and components connected by a defined network. .