Tuesday, December 13, 2011

A Review of Internet Technology - Part 1: Client Side Technologies

The first topic of this review deals with the client part of a Client/Server relationship.  The definition of client is: an application or system that accesses a service made available by a server.  Note in the definition there are really two types of clients:  there is a client application and a client system.


Let's discuss the differences between the two:

1)  Client Application - a client application is usually a small program that is used to access the server program.  It is sometimes accessed by the client system.  An example of this that most every web user has used is the Web Browser.  When you use a web browser you are using client software that allows you to access the internet.  The browser allows you to input web addresses and then renders those web pages so that you can view them.  Without the browser, you wouldn't be able to access all of the multimedia of the web.

2) Client System - just about every personal computer out there could be considered a client system.  You are using this system to access different types of servers:  Application, Database, Web, etc.  In the past, there was really no such thing as a client system.  You would go directly to a mainframe if you wanted to access it.  Now, you can access that same server/mainframe from just about anywhere you can get on the internet.  The client system alone has a lot less power than the server system, but as long as that connection can be made to the server, you still have full functionality of the server.  This is a great cost saving tool as you can purchase several inexpensive client machines to access the one expensive server machine.

Clients have made a lot of progress over the years.  Today, many client systems can act as both clients and servers themselves.  On a small scale you could potentially run all components (Client, DB Server, Application Server, Web Server, etc.) on one machine.

Mobile computing is really the future of the internet, and mobile devices are themselves clients.  There are also client applications that are typically installed on the mobile devices so that a server application/device can be accessed.  This is a great model as all information is stored at the server level.  If a phone is lost or destroyed, the data on the server is still there and can be accessed by any phone.  This is really the beauty of the client/server model.  All information is centrally stored and any client be it desktop, tablet, or mobile device can access that same information.

All reference information for this blog was obtained at the following locations:

http://en.wikipedia.org/wiki/Client%E2%80%93server_model
http://compnetworking.about.com/od/basicnetworkingfaqs/a/client-server.htm

A Review of Internet Technology - Part 2: Internet Infrastructure

In the first part of this review we went into heavy detail regarding client/server technology.  Unfortunately, none of that is really possible without the internet infrastructure that serves as the backbone.  Below is a snapshot of the major components of internet infrastructure:


So what is Internet Infrastructure?  When you think about the internet you should really be thinking "hardware and protocols" (or at least that's what I think of).  The internet is really made up of a series of interconnected devices all communicating with each other to bring about some type of result.

The internet was established in the late 1960's by the US Department of Defense.  The idea was to establish a network of communication.  Since then obviously, the internet has grown into a massive network of networks used for business, education, government, and personal purposes.  It's always on and in some instances "free" to access.

So how does it all work?  How is it that I type an address into my computer and get access to the internet?  Well first you need a connection to the internet itself (and not just your home network either, the actual full-blown internet).  This is done through an ISP (Internet Service Provider).  An ISP is a company that provides you with the service to connect to the internet.  They typically charge a flat monthly rate based on the speed tier you want (faster = more money).  In addition to an ISP, you will need a modem as well.  This device will allow your computer to connect to the internet via the ISP.  Now that the connection to the internet is established it's time to visit websites.  You pull up a web browser and type in an address.  A series of different "routers" are involved with transforming that address into content that you then view on your computer.  Refer to my blogpost here to get more information on how routers work.

One other thing to make note of is that the internet is made up of a series of protocols for communication.  The main one to focus on is TCP/IP.  All web addresses and all devices connect to the internet via an IP address.  The is the internet's language if you will.  When you type in http://www.google.com you are actually going to an IP address that looks something like 111.111.111.111.  There is something called a DNS server that translates the address to the numbers for ease of use (i.e.  it's much simpler to remember a web address than it is to remember all those numbers that make up an IP address).

The internet has grown leaps and bounds over the past decade.  More and more devices are getting connected and more and more websites are being created.  Mobile devices again are changing the landscape of how we access the internet.  We are at a point now where we are moving to a new version of the IP address (IPv6).  This is because IPv4 only handles a certain amount devices.  The number of devices connecting to the internet is growing exponentially and certain things have to change to accommodate that.

The internet infrastructure part of Internet Technology is often complex and the details of how it works is not necessary for the average user.  But for someone in the field of IT it is essential to know (at least at a high level) how this part functions.  It is a critical part of the web experience as without it there really wouldn't be one.

Reference information in this blog was obtained from the following sites:


http://en.wikipedia.org/wiki/ARPANET
http://en.wikipedia.org/wiki/Internet

A Review of Internet Technology - Part 3: The Web Server

So we've talked about one part of the Client/Server model (the Client).  The next few sections we will be talking about the different types of Servers.  In this review, we will discuss the role of the Web Server.

What is a web server?  The primary function of a web server is to deliver web pages on the request to clients. This means delivery of HTML documents and any additional content that may be included by a document, such as images, style sheets and scripts.  So how does this work exactly?  Below is a simple diagram to describe the process:



This is simple example in which your machine is running a Web Browser (IE, Firefox, Chrome, etc.) and it makes a request to a certain page.  It hits the server machine which is the web server and sends back the requested page in the form of content. 

You can actually install Web Server software (like Apache) on your personal computer to turn it into a web server as well.  So just like the client, you can have a Web Server system and a Web Server application. 

Over the past few years we have seen the use of cloud technologies come to the forefront.  All of these servers are stored online in this virtual "cloud".  During the course of this class, we got some exposure to Amazon Web Services (AWS) which allowed us to create virtual web servers that could house our websites.  This is convenient as there is no physical server box to maintain.  All of the load balancing and support is done by the service provider (in this case AWS).  Cloud services and mobile are getting a lot of focus now.  Many don't want the hassle of setup and maintenance costs that go along with having their own servers.  It's much more convenient to just use a cloud offering.  Still, I don't think the physical hardware is going away anytime soon.  Until cloud computing really takes off, it's probably our best option at the moment.


http://en.wikipedia.org/wiki/Web_server
http://computer.howstuffworks.com/web-server.htm

A Review of Internet Technology - Part 4: The Database Server

One of the most crucial components of Internet Technology is the Database Server.  You have to be able to capture information, store that information, and then later retrieve that information for data analysis.  All of this is made possible by the database server.


As with the other components, you can see that there is the concept of a database system and a database application.  The system would be the physical box your content is stored on and the application would be the interface that you use to access the system.

There are many things to consider when choosing a database for your company.  Price, feature set and functionality, compatibility, security, etc.  This system will be storing all of your critical information so it's important that it's tailored to meet your needs.  The two most popular database applications out there now are Microsoft's SQL Server and Oracle.  The two are similar in that they can handle both large scale business and smaller scale business as well.  If you are a Microsoft shop and want to keep using their tools, then perhaps SQL Server is the way to go.  If you are wanting to use some of the extensions that Oracle provides and aren't really tied to any particular vendor, then Oracle might be the way to go.  There's also a third option, MySQL.  MySQL is actually an open-sourced product that's free to use.  If you have a small business and want to save some money, you could go with this option as it will probably meet most of your needs.

All 3 support SQL standards, but you will have to become familiar with the differences of each.  Each one will support/not support certain included functions.  Or perhaps they support the function but it's in a different syntax than the other.  All things to consider when choosing what system to use.

Over the past 5 to 10 years not much has changed with the database server, it still serves pretty much the same purpose.  However, recently with cloud computing we're starting to see db servers as a service that can be purchased and managed by a third party, which takes the hassle of maintenance away from the company actually using the db server.  There's also the concept of mobile in that we are accessing db servers all the time with our mobile phones.  When we login to a banking app on our phone, our login information will be pinged against the db of our bank to verify that we are who we say we are.

DB are critical, make no mistake.  Spend a lot of time thinking about what you need from your database before making the decision of purchasing one.  It's much easier to spend that time upfront than after the fact.

A Review of Internet Technology - Part 5: The Application Server

An application server is a software framework that provides an environment in which applications can run, no matter what the applications are or what they do. It is dedicated to the efficient execution of procedures (programs, routines, scripts) for supporting the construction of applications.  So just like our DB Server and our Web Server...we have a dedicated system that is used to run our applications.

There are several advantages to using an Application Server:


Data and code integrity 
By centralizing business logic on an individual server or on a small number of server machines, updates and upgrades to the application for all users can be guaranteed. There is no risk of old versions of the application accessing or manipulating data in an older, incompatible manner.
Centralized configuration
Changes to the application configuration, such as a move of database server, or system settings, can take place centrally.
Security
A central point through which service-providers can manage access to data and portions of the application itself counts as a security benefit, devolving responsibility for authentication away from the potentially insecure client layer without exposing the database layer.
Performance
By limiting the network traffic to performance-tier traffic the client–server model improves the performance of large applications in heavy usage environments.
Total Cost of Ownership (TCO)
In combination, the benefits above may result in cost savings to an organization developing enterprise applications. In practice, however, the technical challenges of writing software that conforms to that paradigm, combined with the need for software distribution to distribute client code, somewhat negate these benefits.
Transaction Support
A transaction represents a unit of activity in which many updates to resources (on the same or distributed data sources) can be made atomic (as an indivisible unit of work). End-users can benefit from a system-wide standard behaviour, from reduced time to develop, and from reduced costs. As the server does a lot of the tedious code-generation, developers can focus on business logic.
3 Main Types of Application Servers:
Java Application Server
.NET Application Server in the form of Windows Server
PHP Application Server
You can choose an application server depending on the platform your company uses.
Application Servers are also cloud compatible.  Just like all of the other servers in the client-server architecture.  When you really think about it, your whole IT solution can become part of the cloud taking away all the headache of managing that on your own.  I'm sure you would have to pay a pretty penny to do that, but if your goal is to get away from the managing of these systems then that might be your best bet. References: http://en.wikipedia.org/wiki/Application_server

A Review of Internet Technology - Part 6: Web Services

I have written a blog about web services here.  But to basically recap some of this information...

The W3C defines a "Web Service" as "a software system designed to support interoperable machine-to-machine interaction over a network". It has an interface described in a machine-processable format (specifically Web Services Description Language, known by the acronym WSDL). Other systems interact with the Web service in a manner prescribed by its description using SOAP messages, typically conveyed using HTTP with an XML serialization in conjunction with other Web-related standards."

 A Web Service may be developed in any language and deployed over any platform, but most importantly it may be accessed by any other application regardless of the language used to develop it. SOAP serves as the entity which uses XML to collect the specific message, the service, the interface or port type, and the service binding (the binding contains information about the service such as its hosting redirector and access point).

Web services in action:


The idea of the internet as we know it is quickly surpassing the simple need to obtain information with ease through web applications, and is now evolving into a multitude of systems which perform tasks, calculations, accurate searches, and many other complex operations. Web Services are the perfect example of a solution to the need for a simplistic system which allows many different technologies to collaborate and communicate with each other.  Several years ago web services didn't really exist (or not in the form it does today).  But now you see it as a standard, an essential piece of a company's IT infrastructure.