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 

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

cloud programming
The Logic Tier

The logic tier is made up of two distinct parts – the application language and the application framework. The easiest way to understand the two is to use the analogy of our own everyday languages. The programming language is the words we use every day – essentially our vocabulary. The programming framework on the other hand are the rules, methods and techniques of putting those words together, a combination of grammar, commonly used phrases and the like.

There is a huge variety of different languages, but some of the better used ones, as detailed by Barton George, 6 include:

• Java/.NET – The incumbent enterprise development languages. Very powerful but relatively difficult to learn and time-consuming to program in.

• C++ — A statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises a combination of both high-level and low-level language features.

• Dynamic languages – These are popular for creating web applications since they are both simpler to learn and faster to code in than traditional enterprise standards. This offers a substantial time to market advantage.

• PHP – A server-side scripting language originally designed for web development to produce dynamic web pages. PHP is infamous for being very quick and easy to get started with but turning into a mess of “spaghetti code” after years of work and different programmers.

• Perl – One of the original programming languages of the web, Perl emphasizes a very “Unix way” of programming. Perl can be quick and elegant, but, like PHP, can result in a pile of hard to maintain code in
the long term. Perl was extremely popular in the first Internet bubble, but it has since taken a back-seat to more popular development languages such as PHP, Java, and Rails.

• Python – Like all dynamic languages, Python emphasizes speed of development and code readability. Python emphases broadness of functionality while at the same time being a proper, object oriented programming language.

• JavaScript – Once a minor language used in web browsers, JavaScript has become a stand-alone language known and used by many programmers. Most web applications will include the use of JavaScript.

• Ruby – Ruby and Python are very similar in ethos, emphasizing fast coding with a more human-readable syntax. Ruby became famous with the rise of Rails in the mid-2000s and is still very popular. Ruby can
also be run on top of the Java virtual machine, providing a good bridge to the Java world.

• Scala – A somewhat exotic language, Scala is good for massive scale systems that need to be concurrent. Scala runs on the Java Virtual Machine and Common Language Runtime. Interestingly Twitter moved much of its back-end systems from Ruby to Scala as it sought to handle scaling issues.

• R – A programming language and software environment for statistical computing and graphics.

• Node.js (aka “Node”) – Node takes JavaScript, which was originally designed to be used in web browsers, and uses it as a server-side environment. It is intended for writing scalable network programs such as web servers.

• Clojure – A recent dialect of the Lisp programming language, Clojure is good for data intense applications. It runs on the Java Virtual Machine and Common Language Runtime

The Data Tier 

Monday, 12 June 2017

Programming and the cloud - what future programmers needs to know


 programming and the cloud

We will talk about bare bones software development.

Front-end and Back-end, The Future of Development

Back-end – It’s About Scale and Balance:

It is obvious that the developer of tomorrow who wishes to focus primarily on back-end development is going to have to understand the realities of building applications using a number of different component parts and having those parts all work together no matter how much the demand scales.

Back-end developers need to have a broad understanding of the different parts of the application stack (for example database, API servers and legacy systems) and need to deeply understand how different layers of the application stack interact. They also need to think about how that interaction will change over time and need to consider application demands potentially scaling both massively and erratically. Modern day back-end developers don’t ship code, they deploy it.