Server Side Web Development

“How do I make a move into server side programming? – Aspiring programmer

“Is my team fully capable of building that application server!?” – Project manager

“Bring right mix of right skills into our web development competency!” – Talent acquisition team

These are the questions most frequently heard in discussions related to web development capability building.

Whether it is a content website, a service portal/mobile application, or an online dashboard – all need a web server in the back end to process the requests. Netcraft web server market survey published in October 2017 reveals that there are at least six million web facing computers worldwide, associated with above 1.8 billion sites. That indicates how large the size of web server market is.

Stakeholders understand the importance of Server Programming in enterprise software development. That is not a challenge. The challenge is to know how to build that capability with a wide variety of continuously growing technologies available in the market to create the server side programs. It needs an immense talent to engineer the server tasks through the right set of technologies.

Let’s take a close look into the main components involved in building a server side programming capability.

The approach to build the capability holds good at individual, at project and at an organization level. Depending on the size of the task in hand you may need either one programmer who knows about all components or one expert for each component.

This article doesn’t recommend any particular tool, language or a framework though the some hyperlinks explain the concepts from some specific technology point of view.

1. Core Network protocols

Network

The TCP/IP protocol specifies how the network layer (IP) and the transportation layer (TCP) of OSI model should operate so that the applications running on distributed computers can communicate with each other using any type of routing protocols like HTTP.

HTTP is the foundation for any data exchange over the Web. HTTP specifies a message syntax and routing for the communication between the client and server. The client application sends a request to the server and then the server responds with a status code. HTTP headers allow the client and the server to pass the additional information along with the request and response.

Understand the HTTP & TCP/IP protocols in detail and their correspondence to the OSI model.

Target Skills

skills Configure Dev environment to enable http over tcp/ip communication between the client & server nodes.

Analyze HTTP headers originating from various browsers and servers.

Troubleshoot the issues based on the response codes.

2. MVC architecture

MVCA good architecture makes the solution not to be restricted to a particular vendor, framework, platform or a language. It facilitates good collaboration and maximizes the benefits from the best in class tools and techniques relevant to the business.

MVC is the most popular architectural pattern for building web applications and it promotes the modularity, flexibility to scale and expedites the development process.  This architectural pattern is closely related to the Observer, Mediator, Strategy, Composite and Command design patterns.

Practice the internals of the MVC architectural pattern by creating some prototypes.

Target Skills

skills Separate the application responsibilities into Model, View and Controller components with clear understanding of the underlying design patterns.

Data Binding of the client side data models to the server side schema.

Creation of an Event handling strategy  between the views and the controllers.

3. Web frameworks

photo-1495511623436-ba44aaee07cf

Web frameworks implement the basic MVC architectural pattern and provide the templates & resources to easily build the models & views of our application.

Libraries provide the readymade functions to perform the network protocols related tasks like the request object parsing, content rendering, public key validation etc.

Inbuilt bootstrap http server facilitates the coding, unit testing and speeds up the development phase.

Target Skills

skills

Create a web server (bootstrap) and perform routing

Serve static files from the server

Build data persistence

Generate forms and make database transactions

4. Programming paradigms

Programming

The main objective of the programs running on the server is to implement the underlying business logic of the application. These programs should be responsive to the environment, able to scale in several directions (like user base, data volume etc) and should be flexible to adapt the changes in business requirements.

While the development of an enterprise application needs the ability to code in several programming paradigms  – the functional, object oriented, concurrent, imperative, event driven and service oriented paradigms are the most important ones for the web application development.

Concurrent programming needs the implementation of asynchronous functions in many scenarios. Likewise, the service oriented programming has to define and publish RESTful web services.

Target Skills

skills

Write controllers using event driven asynchronous functions

Publish the web application as a set of RESTful Web Services

Build Web APIs on top of the existing specialized platforms like R, Spark, Scala, Python etc

5. Enterprise Integration

EI

Integrating the web server with other architectures federated across the enterprise maximizes the benefits from the web application to the organization. It also strengthens the web application by allowing it to use the specialized services from the network applications.

In a collaborated environment, the applications will both produce and consume the web services. IoT server consumes the ‘file transfer’ services published by the FTP server and publishes the ‘data streaming’ services. Machine Learning server consumes the ‘data streaming’ services and publishes the ‘prediction’ service. Big data server consumes ‘prediction’ services and publishes a ‘recommendation’ service.

By integrating our web application with the Big data server, we can make the application to show real time recommendations to the users based on the IoT feeds.

Target Skills

skills

Add qualitative features to the application by collaborating with the standard network applications of an enterprise like FTP, SMTP and LDAP servers.

Create Rest clients and consume the web services published by other architectures like Machine Learning, Big Data and IoT. Define the functionality as a series of web service calls.

Websocket programming to interact with the real time systems in the enterprise.

6. Deployment and Operations

Production

Production environment is different from the development environment in terms of the hardware size, network security, user base and data volume.

The functional and qualitative features of the application have to be designed with the production environment conditions in mind.

If the application is hosted on multiple production clusters, using cloud / standalone data center, then the application has to be equipped with additional architectural elements of high availability and redundancy.

Target Skills

skills

Create a cloud/standalone deployment architecture.

Tune the load balancing and configure reverse proxy.

Build a redundancy server and bring high availability.

Implement the security policies.

Summary

Server side web development is a large market with growing number of tools and technologies. Building a competency in this dynamic environment should focus on the primary skills behind the main components of this domain. While maintaining the connectivity with the root concepts, the workforce should be able to quickly acquire any new tool or technology arriving the market.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s