Containers: Power & Scale

by Richard Hands, Technical Architect

In my last blog post, we looked at the background of Containers. In this piece, we will explore what they can do and their power to deliver modern microservices.

What can they do?

Think of containers on a ship.  This is the most readily used visual analogy for containers. A large quantity of containers, all holding potentially different things, but all sitting nice and stable on a single infrastructure platform, gives a great mental picture to springboard from.

Containers are to Virtual Machines, what Virtual Machines were to straight physical hardware.  They are a new layer of abstraction, which allows us to get more ‘bang for our buck’.  In the beginning, we had dedicated hardware, which performed its job well, but in order to scale your solution you had to buy more hardware. This was difficult and expensive. Along came Virtual Machines, which allowed us to utilise much more commoditised hardware, and scale up within that, by adding more instances of a VM, but again, this still came with quite a cost.

To spin up a new VM, you have to ensure that you have enough remaining hardware on the VM servers. If you are using subscription or licensed operating systems, you have to consider that etc.  Now along comes containers. These containers literally contain only the pieces of code, and libraries necessary, to run their particular application. They rely on the underlying Infrastructure of the machine they are running on (be it physical or virtual).  We can typically run 10-20x more containers PER HOST than if we were to try putting the same application directly on the VM, and scale up by scaling the number of VM’s.

Orchestration for power

Containers help us solve the problems of today in far more bite-sized chunks than ever before.  They lend themselves perfectly to microservices.  Being able to write a microservice, and then build a container that holds just that microservice and its supporting architecture, be it spring boot, wildfly swarm, vertex, etc., gives us an immense amount of flexibility for development.  The problem comes when you want to orchestrate all of the microservices into a cohesive application, and add in scalability, service reliability, and all of the other pieces that a business requires to run successfully.  Trying to do all of this by hand would be an incomprehensible challenge.

There is a solution however, and it comes in the form of Kubernetes.

Kubernetes is an open-source platform designed to automate deploying, scaling, and operating application containers.” (http://kubernetes.io)

Kubernetes gives us a container run environment that allows us to declaratively, rather than imperatively define our run requirements for our application.  Again let’s look back to our older physical or VM models for the imperative definition:

“I need to run my application on that server.”

“I need a new server to run my application on, and it must have x memory and y disk”

This approach always requires justifications, and far more thought around HA considerations such as failover, as we are specifying what we want our application to run on.

Most modern applications, being stateless by design, and certainly containers, don’t generally require that level of detail of the hardware that they are running on. They simply don’t care as they’re designed to be small discrete components which work together with others.  The declarations look more like:

“I want 10 copies of this container running to ensure that I’ve got sufficient load coverage, and I don’t want more than 2 down at any one time.”

“I want 10 copies of this container running, but I want a capability to increase that if cpu or memory usage exceeds x% for y% time, and then return to 10 once load has fallen back below z

These declarations are far more about the level of application service that we want to provide, than about hardware, which in a modern commoditised market, is how things should be.

Kubernetes is the engine, which provides this facility but also so much more. For example with Kubernetes we can declare that we want x and y helper processes co-located with our application, so that we are building composition whilst preserving one application per container.

Auto scaling, load balancing, health checks, replication, storage systems, updates, all of these things can be managed for our container run environment by Kubernetes.  Overall, it is a product that requires far more in depth reading than I can provide in a simple blog post, so I shall let you go and read at http://kubernetes.io

Last thoughts

To conclude, it is evident that containers have already changed the shape of the IT world, and will continue to do so at an exponential pace.  With public, hybrid, and private cloud computing becoming ‘the norm’ for both organisations, and even governments, containers will be the shift which helps us break down the barriers from traditional application development into a true microservices world. Container run systems will help us to break down the old school walls of hardware requirements, thus freeing development to provide true business benefit.

Follow Richard Hands on Twitter to keep up to date with his latest thoughts.

Making the case for a better employee experience

by Claudia Quinton, Head of Workplace Transformation

A happy employee is a productive employee: one likely to stay with you for the long term. I think we can all agree with that sentiment. But what does it take to make your employees happy?

In a new opinion paper on HR transformation and employee experience*, I consider the commercial impact of keeping your workforce engaged and yes, happy. I look at the business case for the HR and business process transformation needed to put your employees at the heart of today’s increasingly digital workplace. And I ask whether the enabling technologies underpinning this transformation are worth investing in.

The truth of the matter is that, in the battle for talent, a heightened employee experience is everything. I argue that with outcomes such as improved productivity, reduced employee attrition rates and an empowered workforce committed to your customers, the transformation business case pretty much writes itself.

Re-designing services demands teamwork

But pulling together all the different elements of this business case is not just the task of HR. The outcomes are clearly strategic, so the onus is on HR to work with business, finance and technology leaders. Together, they must balance the cost of what it will it take to deliver re-designed services (process automation, self-service, etc.) with the commercial outcomes. And the scales are weighted in favour of those outcomes.

As an example, let me take the reduction in employee attrition resulting from people feeling empowered by simple, standardised processes that are easy and quick to engage with. One estimate suggests that UK organisations alone are losing £340bn from employee attrition. Thus, the longer you can retain talented employees, the better for your bottom line. Here we can see HR (employee retention) combining with business (improved productivity), technology (automation) and finance (the bottom line) coming together within a single business case.

Using technology to improve processes

Outcomes are pivotal in all of this. For example, the deployment of robotics, automation and process improvement can reduce HR Back Office administration by 50% or more. HR managers freed up by robotic process automation taking over labour-intensive tasks, or robots (chatbots) handling simple queries, can play a more strategic role in the business. And, a process by which an automated artificial intelligence (AI) tool checks a leave request against a team’s booked leave will give an almost real-time response to the employee, enabling people to better manage their time.

These examples are just the tip of the iceberg. I believe that by using automation, smart tech and AI, it’s possible to help smooth the flow of processes and remove unnecessary manual activity, making people happy to come into work. But these outcomes must be clearly communicated and understood across the organisation. This will ensure, firstly, that there is board-level acceptance of the need to invest in change, and second, that those people using the improved, automated process and enabling technology – your employees – understand the impact (and value) of this transformation on their own workplace experience.

For more on this, read my opinion paper ‘A transformation business case that writes itself – download here.

Containers: Why the hype?

container-2879154_1920

Now you might be wondering ‘why all the hype’ about containers?  The truth is you probably got to this blog from a container without even knowing it. As far back as May 2014, Google were proudly announcing that ‘Everything at Google runs in a container’.  Your searches, Gmail, Calendar, apps, all of it. In 2014 Google was starting over 2 billion containers a week, which if you do your maths, averages out at over 3,000 containers started per second!  And that was in 2014, can you imagine, with the growth of the mobile phone market, how many containers they start per second now?

Containers aren’t exactly new anymore, but they’re definitely a buzz-word of the moment. They are of extreme importance in both our industry, and to the IT world at large, so let’s take a look at where they came from.

Where did they come from…

Containers started back in the early noughties, when Google donated the cgroups technology to the Linux Kernel and it was accepted.  Combining the segregation/aggregation capabilities of cgroups with network namespaces, and LXC or LinuX Containers were born.

Containers back then, however, required an expert level of tech knowledge to utilise, and sat on the back burner until start-up company Docker was formed. Docker took the approach of creating a standardised API, and promoted ease of use to the community to build libraries of containers which were portable. This is when container technology really became accessible, interesting, and started to grow.

Why they are cool…

The true power of any technology to become fully utilised in the market is for it to seamlessly replace older ways of doings things, without the major populace being aware. Containers have definitely fit this bill at Google, and many other companies around the world are doing the same.

 

I’ll be touching on what Containers can do and the orchestration for power in my next blog piece. Follow Richard Hands on Twitter to keep in touch.