Technology – DevOps, Microservices and CD

Empowering your IT resources

Most large companies have invested large amounts in their existing resource, the best people to help upgrade your business are the people who have been working in it for a long period of time. They usually have the contacts and context across the business which would take a long time for new people to develop.

We see these people as your most valuable resource, often on large transformation projects your staff will have periods of change which will need to be managed carefully. We have a great deal of experience leading existing staff and encouraging innovation, our aim is not to replace them with a large number of developers but to provide a small number of key resources to give them support and training in new, more productive technologies and delivery processes.

Technology Transformed are able to offer staff with skills in a number of technologies throughout the full delivery stack, from high availability infrastructure design and configuration to writing modern front end web clients encompassing the complete user experience.

Continuous Delivery and Improvement

A key part of out philosophy is “Trunk based development” with developers only committing if the code they are working on is ready to be delivered to production, and the story only being completed if the code is working in a production environment. If a user story or feature can’t be delivered into production without the aid of a long running branch and a large amount of timing and co-ordination between teams then it is a sign that the architecture you are using is probably not ideal and the story is probably not well thought through in terms of implementation.

We also strongly value experiment based development when working on the user experience. We prefer to make sure that the application in production supports the delivery small changes and features to production allowing a change to be tested side by side with existing code for a period of time to see which gives the best results.

To support this we have experience in analytics and developing reporting capabilities. The aim would be to have a product which is all encompassing, taking into account things like marketing spend on traffic all the way through to the amount of commission per transaction which is generated. This will allow you to judge the value of new features in real business terms, as well as being a useful metric in terms of the health of various parts of you web application.

Microservices and DevOps

Allowing teams to work in isolation (or with a degree of isolation) to each other is critical on larger projects as a number of teams are often trying to deliver features and improvements at the same time. Using a Microservices architecture is a common way to achieve this.
We want to help with developer isolation as much as possible. With the correct architecture and processes changing a small piece of code should easy to implement and test, with minimal knock on effect to other, already delivered, functionality.

We can help you avoid some common pitfalls in a Microservices approach. We understand that there can be issues with services that depend on each other or which interact with each other. We believe that leveraging a DevOps tooling approach using tools like docker, puppet, chef and vagrant can help you implement quickly and deliver reliably with confidence all the way to production.

Cloud, Big Data and Analytics

A Microservices approach, if implemented correctly, will cloud-scale well, although there is a management and support overhead which will need to be understood and agreed with whoever will be responsible for management and support of your production infrastructure.
We can help leverage the Cloud to achieve this as well as using Big Data and modern Analytic techniques to track how the site is performing and how people are using it, to provide feedback on the success of various features and experiments.

The Best Technology for the Job

We have experience in JAVA, .Net, javascript, php and many other modern development languages, although we have no preference for any in particular, we would rather use the correct technology for the task which is being performed to enable the fastest, most supportable delivery of a feature or set of functionality.