The challenge for Applications Portfolio Management and Enterprise Architecture For...
I couldn’t begin to put a number on the amount of times I’ve heard an organisation wants to modernise the way they deliver applications in order to meet customer or business needs more effectively. Everyone is trying to deliver better software and iterate their applications quicker to thrive or survive in this digital age. So how do we build iterative services that meet customer needs whilst rationalising our IT estate?
Cloud Native is a growing movement in technology that some of the most forward thinking companies across the globe are adopting to build agile, reliable and scalable applications. The Cloud Native Computing Foundation (CNCF) serves as the vendor-neutral home for many of the fastest-growing open source projects; it boasts a colossal ecosystem of services which goes beyond just containerisation, that supports cloud native within public, private and hybrid cloud. This article isn’t technical, but containers are the genesis of cloud native development and the CNCF, so what I cover will focus mainly around Microservices, containers and Kubernetes.
Cloud and Containers have been huge catalysts in the evolution of IT infrastructure, both can be utilised to reduce cost, increase availability and reliability of our IT estates. The growth of Public cloud providers such as Amazon Web Services, Microsoft Azure and Google Cloud Platform means Infrastructure is now consumed by businesses ‘as-a-service’, which means you can request infrastructure as and when you need it for scalability.
Containers then offered small isolated infrastructure environments which made it easy to deploy and scale Microservices, but dealing with containers at scale resulted in operational headaches, how do you manage hundreds or thousands of containers running in different states all at the same time? Then Kubernetes became the orchestrator of choice to automatically deploy, scale and mange those containers across your infrastructure. Kubernetes is an incredibly important cloud native tool, it automates the deployment and management of your containers onto provisioned infrastructure, enabling you to vastly reduce the operational manpower of running your applications. Kubernetes was originally developed as Borg, by a small team at Google led by Joe Beda, which later became an open source project overseen by the Cloud Native Computing Foundation (CNCF) as Kubernetes. Serverless is the next evolution of Microservices, where your infrastructure is completely abstracted from your execution of your Microservices.
This has now become the standard way of delivering software to build applications, making use of modern practices, ways of working and toolsets in; DevOps, open source, CI / CD, cloud, containers and Microservices, which all combine as the main tenants of cloud native development.
Cloud native is an approach to delivering software which utilises cloud computing, open source and container tooling to deploy applications as Microservices. Cloud native refers to the way applications are built and deployed, they are constructed of contained (usually open source) Microservices and offer agility, reliability and scalability. Microservices are independent components of an application that can be developed by small cross-functional teams without needing to sync with wider teams.
Cloud native empowers your developers by reducing operational friction so they can focus on delivering high quality code more often, the approach also brings business and technology closer together through a service-oriented structure to maximise the value of your business applications.
We live in a time where digital comes first, goods and services are now distributed through mobile and web applications to end users. End Users are pickier, lazier and greedier now, more than ever, so businesses need to be more agile and innovative to meet their needs.
Large organisations have hugely complex IT estates, lots and lots of red tape, with separated development and operational teams (and often others such as security) which means they struggle to release software quick enough to keep up with customer behaviour. Enterprise businesses will have archaic systems still in place as they service incredibly important applications that are core to their business. Some of these systems were built over 20 years ago and have the original lines of code running them. Also their applications are monolithic, which means there is a large chunk of code in the middle tier (business logic) that deals with all of the application’s functionality. If you want to improve an application, or the code breaks, or there’s a bug; how can we quickly fix those problems if the code running the application is so big, has been built by multiple people and in a language that no one in the business understands anymore?
Well you simply can’t, so businesses are looking to modernise or completely rebuild their systems so they enable digital innovation and evolve alongside their customer’s needs. This is where cloud native transformation comes in. Moving to cloud native provides these enterprise beasts with the agility they require to disrupt their current delivery models and build better applications. They can now start to break down those monolithic architectures into Microservices and build decoupled systems so they can modernise their functionality. Microservices means they can identify problems much quicker too, imagine if you had just completed a 2000 piece puzzle, then someone tells you there are 4 pieces in the wrong place, finding them and fixing it will take a while, right? Now imagine if you numbered every single piece of the puzzle as you put it in place, that person would be able to tell you what number pieces are in the wrong place and you could identify them straight away. Well, that is how Microservices work, because they’re independent it means changing functionality, finding bugs, fixes and performing updates can be identified and carried out quickly and independently without affecting the wider application.
There’s also a huge cost attached to running such large applications, not just in tin, but also in hiring and retaining people who can run these large scale applications. Building new applications in an outdated model requires bare metal, installation and provisioning of the infrastructure before development teams can even think about writing code. But cloud native offers provisioned containerised infrastructure to development teams through Platforms-as-a-Service (PaaS) so businesses don’t have to worry about building their own infrastructure anymore, or building colossal operational teams, this is all now done for you and automated for maximum efficiency and simplicity.
1. Realign your business to become service-oriented
Many organisations will operate a traditional function based structure across their business, all separate from each other and with little thought about how each function integrates and manages applications. You will need to realign and restructure your business to focus on delivering services and digital products. Utilise cross-functional teams (squads, tribes, chapters, the Avengers or whatever else you want to call them) so there is accountability for each service and how that interacts with the entire application stack, including operations. By restructuring the business this way you will need people to be adaptable and willing to learn, collaboration and communication is vital as these smaller and more capable teams now have accountability for their service.
2. Truly empower your Developers
Your developers need to be empowered, give them access to great tooling, allow them to try new things and give them freedom to fail fast. Everything a developer does inside and outside of work (personal projects) gives them more knowledge that will be injected into your business applications. Encourage them to think outside the box, contribute to open source projects and allow them to continuously learn new things – technology is an incredibly fast paced environment and if you don’t give developers time for self improvement they will fall behind the curve. Invest in relevant training and choose delivery partners who enable the upskilling and knowledge sharing needed to improve your internal capabilities too.
3. Modernise your architecture, implement Microservices
If you haven’t realised by now, implementing Microservices is the most vital part to the cloud native journey. Once your business is service-oriented and your technical teams have the ability to deal with architectural and delivery patterns changing, you must modernise your architecture to deliver Microservices as independent services for your applications. This will require changes across your whole architecture and will take time! Work with potential software partners to run Proof of concept exercises for new tools and patterns (some of them will do it for free) and construct a landscape to move forward with which is optimised for agility, scalability and security.
4. Don’t let the business fall behind the technology
So now you have new shiny systems, incredible tooling and service-oriented teams, now you’re delivering services at a velocity unfamiliar to the business. New ideas, new features, updates etc are all business driven decisions, so if the business isn’t constantly understanding improvements and increasing new requests for technical teams to deliver, then improving the speed of software releases been made redundant. The business itself must be realigned to be closer to technology so it can really understand the new speed and velocity at which they can deliver innovative and successful outcomes. More insights, more requests, more services.
5. Learn, Innovate & Prosper
You can now enjoy the cloud native journey, you have a business structured in a way that compliments and enables digital disruption and innovation. A company of empowered technologists who want to learn and they’re invested in delivering better software. Keep your teams motivated, look to try new things and if they do fail make sure everyone understands why so you can grow as a collective unit. Deliver better services and products to your customers more quickly and the business will thrive because you’ve gone cloud native.
The challenge for Applications Portfolio Management and Enterprise Architecture For...
CloudKubed has been accepted onto G-Cloud 12! We’re pleased to...
Why should the CISO care? And what are the security...
We need some Zero Trust in our life. What next?...