Architects and designers

Why do you need an architect or designer on your software project?

Writing reusable code is the heart of the DRY principle. However it is important to reuse the correct code.

A picture, as they say

plug animation

Technical Debt and Dependency hell can quickly create big issues and slow a project to a crawl. This can be avoided if a great architect and design steps are involved before the project starts. Often refactoring code will be required to make modules or functions loosely coupled and less dependent on each other.

Even within a Scrum and Agile framework, it is better to have a clear view of the end result and understand how the new 'thing', will interface with the existing 'stuff'.


(Read more...)

Puppet Camp Fall (Autumn) London 2016

A great day in London yesterday at Puppet Camp London 2016 held at the very beautiful Kings Place. The venue was a wonderful setting with its open gallery floors and 'scary' high escalator that spanned 2 floors.

150 or so expectant techies with about half the room as puppet beginners attended at my biggest speaking event so far.

My talk, Can puppet help you run docker on a t2.micro? appeared to be received well by those I had the good fortune to talk to after the event. We also shared a discussion about Docker Persistent Storage for which there is no clear solution yet. Persistent storage is useful for data that changes during the containers life time but not something you would want to 'bake' into an image or layer.

I've been playing with hosting a Wordpress site on Docker, and one solution I've arrived at is using a sync product like BTsync to form a mini network to synchronise data across a number of docker hosts. Another route being investigated for one of our customers is utilising a GlusterFS cluster with NFS client. Storing the data locally to each docker host.

I hope to be invited to speak at another Puppet event soon.

Dockerfile for BTSync

Link to slides

(Read more...)

housekeeping, support and reporting

Communication is the art of being understood and is key in any relationship.

We have daily stand-up meetings to enable the sharing of updates for each member of the team, operations or project, which enables everyone to have visibility of what is going on as well as report any obstacles impeding progress. Anyone is able to attend these meetings for total transparency.

In addition to the project work, housekeeping and operation support work alongside to keep the systems running as they should. Let me explain what we mean by this.


During a project, code is being updated and deployed all the time. Most of the systems rely on other software to operate and this too is being maintained and updated by external sources. To avoid dependency hell, our team evaluates and updates where needed the other software running on the server. This also includes removing redundant code and logs that are out of date. To keep things running as cleanly as possible, we also rebuild fresh servers as part of this step.

This can be a transparent so it is included in the weekly report.


Things change and sometimes an undesired outcome arises. With our monitoring systems in place, we proactively fix issues as we find them and report to you during and sometimes after the event. These events will of course be in the weekly report.


Once a week a report is compiled for our customers based on the information in the stand up meetings and if it is a project, a progress report is also included.

(Read more...)

tech - AWS, Puppet and Docker

In my talk - Can Puppet help you run Docker on a T2.Micro? - You will learn the technologies we use to create environments from scratch every day.

A walk through a number of the key concepts of puppet; stages, Role and profile, hieradata and puppet forge, as well as a brief introduction to Docker.
Using these to explain a solution of running a puppet manifest to configure Amazon's smallest (Yes I've run this on a t2.nano too) server to run a docker containerised web service.
You will learn why puppet stages can be used to help in this solution, how roles and profiles are defined and used, and finally use of the puppet Forge with Hieradata to install and run docker containers.
This talk will contain links to code that can be used afterwards and I'll touch on what docker is and how to configure the puppet module to automatically run containers.

Come see me talk at Puppet Camp - 8th November 11:15 in London.

(Read more...)

Development environments

After many years of working with developers, one of the most common problems faced by the ops and support team is code that doesn't work on production systems.

This is often caused by subtle differences in the developers machine. Software versions of components, different install locations and different shared libraries. All these can have an impact on code that works fine on one machine or server, but won't install or run on another.

Following our structure and automation, we can provide a machine that looks exactly the same as test and production. Allowing the developers access to the tools needed to build their own machine, via Jenkins for example, everyone is empowered to build and develop knowing that everyone on the team is on the same page and has the same environment or environments to work with.

Some customers have a number of environments to develop and test systems in. Often these are:
development - often shortened to DEV. This can be virtual machines on the developers own computer.
testing - TEST, to pass the initial automated test, (yes those can be automated too, allowing your testers more time to diagnose)
integration - This is usually a bigger environment and has links to other systems in the business to test integration between components and systems.
UAT - User acceptance testing. Where user journeys are tested end to end.
Performance - Load testing occurs at this level, ensuring that the servers can cope with high load, stress testing all the components and can test the scaling code. This helps defend against the slashdot effect.
Preprod or staging - the final environment before production. allows for dry runs of installation or roll out of new code.
Production - Live, The final stage and where your customers really see the efforts of the team.

With so many environments it is important to have version control every step of the way and a release process to enable everyone involved to understand where they stand and how their efforts will effect the overall position of the company.

Please contact us about this and any projects you are thinking about.

(Read more...)