Wednesday, 28 June 2017

Basic tools and skills programmers need in the cloud : Part two

 programming in the cloud

The Infrastructure Tier

As mentioned previously, the infrastructure tier is where the servers that actually run the database and logic tiers are created and maintained. At the infrastructure tier, developers will need to think about the operating systems that best fit the choices they make for the other levels (for example, using Linux as the operating system for an application that uses MySQL and PHP).

Developers have a number of tools to aid in the creation, monitoring and management of the infrastructure layers, including:

• enStratus – A Cloud management and governance provider

• Cloud monitoring tools – Help to ensure servers are performing as expected; examples include CloudKick, Uptime, Nagios and Ganglia

• Puppet – A configuration management tool designed to automate the setup and management of infrastructure; a key DevOps tool produced by Puppet Labs

• Chef – A configuration management tool designed to automate the setup and management of infrastructure; a key DevOps tool produced by Opscode, who hosts a cloud-based version of Chef called the Opscode Platform

These three tiers – logic, data and infrastructure – together provide the backend application; however, it is the integration with the results of the front-end developer’s work where end users get to enjoy the benefits of the back-end developer’s hard work.

Front-end – Experience, Aesthetics and Context 

If back-end development is primarily focused on ensuring a robust, effective and efficient application, it is at the front-end where developers attempt to build a product that interfaces to a wide variety of user types, contexts and devices.

Front-end developers take processed data from the application and present it in a way that is in context to individual user situations. This job is all the more complex in today’s paradigm where end users may well be accessing data on a vast variety of device types, screen sizes and input methods. Adding to that complexity is the fact that for some situations developers will be able to use generic approaches across devices (with HTML5 for example), while in others they will need to create custom presentation offerings for different devices (iOS,
Android etc.).

To add to the complexity, applications will utilize client-side processing, and hence front-end developers will need to understand the ramifications of a client side approach and the languages that enable this. Client-side processing can be enabled using a number of approaches, including 8:

• Native client platform such as Android/Java and iOS/ObjectiveC

• Ajax – Asynchronous JavaScript, which provides new methods of using JavaScript and other languages to improve the user experience

• Flash – Adobe’s multimedia platform used to add video, animation and interactivity to web pages; becoming less relevant as time goes on

• JavaScript – A language for creating and delivering rich Web applications that can also run across a wide variety of devices

• JQuery – Cross-browser JavaScript library designed to simplify and speed up the client-side scripting of HTML

• Microsoft Silverlight – Microsoft’s browser plugin that enables animation, vector graphics and high-definition video playback

• HTML5 and CSS3 – The latest HTML proposed standard combined with the latest proposed standard for CSS; natively supports much of the client-side functionality provided by other frameworks such as Flash and Silverlight

Mobile Presentation

Currently developers are split between those creating so-called “native” applications (applications written entirely to run on one particular mobile operating system) and those who prefer to use generic approaches towards presentation (HTML5 for example).

It should be noted that there is a double pronged move away from creating native applications, first by the use of frameworks enabling the use of HTML5 and CSS to deploy applications to multiple devices (Sencha Touch is an example of one of these frameworks) and secondly from tools that allow a single code base to be deployed to multiple platforms via native applications (PhoneGap being one such example).

Developers we have spoken to tend to prefer either fully native application development or fully generic development via HTML5. Running a single code base across multiple native applications tends to have implications in terms of speed and efficiency.

Don’t Forget the Web

As this paper is likely going to be used by individuals planning their career entry, it is important to introduce a degree of balance to the “mobile first” discussion. We firmly believe that the ever-increasing ubiquity of mobile devices, the availability of fast mobile internet and the move away from fixed computers will increase the proportion of traffic that goes through mobile devices.

That said, it is important to not discount the web’s ongoing utility. While mobile access to applications is useful and will continue to grow as services like geolocation become more popular, there will continue to be a need to use desktop devices for a subset of functionality – advanced photo editing, intensive research, cataloguing etc.


Entrepreneur and Venture Capitalist Mark Suster wrote an excellent post9 in which he exhorted developers and startups to follow a strategy of “Web Second, Mobile First.” In other words, while mobile is undoubtedly paramount and gains lots of attention, the vast majority of applications should continue to think about standard web interfaces to their products.

REFERENCE

Ben Kepes - Rackspace More information on Ben and Diversity Limited can be found at http://diversity.net.nz

No comments:

Post a Comment