Software Origami and Robots

Peter Elger

April 11th 2018

Presentation given at the Irish Technology Executives & Managers (ITEM) Group inaugural event

ITEM is a forum for senior executives and technical managers to discuss ideas, share information and collaborate on technology solutions. This event showcased some exciting technologies currently being put to use in the Irish tech scene. It also
allowed fourTheorem to keep up to-date with new tools, processes, and technologies whilst allowing us to share some knowledge and experience. Lastly networking with local industry leaders and, most importantly, enjoying some top quality beer is never a bad thing!

Peter Elger had the opportunity to present a session on how fourTheorem and the industry in general is driving shorter delivery cycles. Peter was able to provide a few tips on what you should be adopting to accelerate your own development projects, and also made some predictions on how the industry will change over the next 5 years.

Peter’s presentation began with a question, “How many times would you have to fold a piece of paper in order for the thickness to reach the moon?”. (The answer “42 folds” surprises most people). Similarly, anyone who has heard the legend of Lord Krishna beating the king in a game of chess for an impossible amount of rice knows that exponential growth can be a powerful force. Just like the piece of paper, Moore’s law of exponential growth means that technological advancements will continue to increase at a phenomenal rate. Our technology infrastructures and application architectures need to be ready for this growth.

Peter then took a brief look at some historical trends in the software development space, and proposed some hypotheses around where technology will lead us un the future.

Peter Elger at ITEM talked about tech Historical trends

Over time, code volumes have dropped, iteration times have shortened, and release cycles have accelerated. With technology enablers like the cloud commoditizing compute power, allowing for fully automated, coded, and scalable infrastructure, costs have been shifted away from large capital purchases and onto the operational budget. Containers have allowed for continuous delivery pipelines and immutable deployments, which has helped solve the problem of “It runs on my machine!”. This new architectural paradigm has nurtured micro-services, made possible by rapid deployment through automated pipelines into elastic infrastructure. This has reduced the gap between development and production.

Another huge technological enabler has been the adoption of dynamic languages that allow for full stack polyglot developers to take centre stage, allowing us to take advantage of the many benefits of Open Source Software.

Peter Elger's Prediction 1 Unit of scale

So up until this point the clear trend has been to GO FASTER.

But what’s next? Peter shared his three predictions for the future:

Prediction 1

The unit of scale will move to functions, specifically Functions-as-a-Service (FaaS). There will be increasing adoption of cloud services and serverless architectures. In a typical older Enterprise Service Bus (ESB) architecture you rely on large units of deployment to host your monolithic components (e.g. CRM and E-Commerce apps). These large units of deployment (physical and even virtual servers) equates to slow development, release, and deployment cycles.

The use of a micro-service architecture typically deployed into containers running on an orchestration platform such as Kubenetes or Amazon ECS has shifted the unit of scale to a more granular level. These highly decoupled services, with asynchronous communication paths have helped support shorter iteration and release cycle times.

Peter predicts that the unit of scale will shift again to a completely serverless architecture on platforms like AWS, Google, and Azure. The application will become a pool of functions, deployed behind an API Gateway or using a message queueing service. No virtual server instances will need to be deployed and managed, and we will see extensive use of internal and external cloud delivered services. If monolithic applications are boulders, and containers are pebbles, then Serverless deployments represent a grain of sand. Management and monitoring of these ‘sand grains’ will present a different challenge, more of which to follow in later posts and musings from fourTheorem!

Prediction 2

Peter elger prediction 2 Artificial intelligence development (AiOps)

Driven by the need to go faster, AiOps (also known as Algorithmic Ops) will become a thing. The trend to smaller units, faster deployments, and massive cloud scale creates greater volumes of operational data that must be ingested, interpreted, and actioned in a shorter amount of time. Peter’s second prediction is that there will be a growing trend of augmenting human operations with machine learning.

Digital transformation and the adoption of micro-service architecture creates lots of operational data such as telemetry and message flows. AiOps will herald the automated collection and real time analysis of all of this data. This process will incorporate algorithmic and machine learning techniques such as:

  • Anomaly detection – learn what a normal state looks like based on telemetry such as CPU and message patterns, and automatically rollback, alert, or trigger scaling actions based on these anomalies.
  • Alert triage – select and prioritize alerts based on historical data.

Prediction 3

Prediction 3 Machine learning development

Software architecture and development will increasingly be supported by machine learning. Software 2.0 (or some other buzzword) will become a thing, like AiOps, also driven by the need to go faster. The graphic above shows a mixture of research and products that are available to try today. These are fairly nascent technologies, and we are not recommending any one specifically, more as an example of how this field is growing and in what direction.

To summarise:

  • Business is driving the industry to Go Faster!

  • Going faster is aided and abetted by the unit of scale increasingly shrinking to FaaS through the adoption of serverless architectures.

  • DevOps will increasingly become machine assisted Ops (AIOps).

  • The practice of software development will morph into part programming / part ML practitioner.

  • The ‘Human’ parts of software development will remain intact, and the creative aspect will remain.