Cloud madness
I worked at a traditional e-commerce firm in my early career, and that experience made me wonder now whether the cloud genuinely enables for faster software delivery or if it simply adds more obstacles. The organization of the firm was straightforward: development teams worked on all apps, while the IT team set up virtual machines, databases, security, and deployment. It might take many days to obtain an empty virtual machine.
After several years of dealing with cloud providers, I’ve discovered that complexity has only grown and is now beyond my control. Although the issues are distinct, I cannot image operating without cloud infrastructure. As a result of the transition toward DevOps, responsibility for managing it has passed from the IT teams to me and my peers. However, if not done appropriately, it might produce more problems than it solves.
According to the authors of the DevOps guide, firms should decentralize their platform and infrastructure teams and only consolidate them after a solid foundation is in place and having so many engineers spread out becomes too costly.
So, what can I do to make this right? Adding additional personnel to handle cloud complexity is not the solution since it merely makes the platform more complex.
Another concern I’ve observed is that centralized cloud teams can limit development teams’ access and control, as well as their capacity to freely update systems. This is particularly difficult in huge enterprises.
For a small firm, the ideal scenario would be to decentralize the infrastructure team and integrate that knowledge inside the development teams. This enables programmers to become more involved in infrastructure and to learn by collaborating with infrastructure and application developers.
A decentralized infrastructure team, on the other hand, might be costly for large firms, therefore they frequently centralize it. In that instance, the infrastructure team should concentrate on empowering the development teams through the creation of tools and automation. To begin with a decentralized strategy and obtain a better grasp of how things function, the development team should incur some operating fees.
Some activities, such as security, compliance, automation, integration, and deployment, should be handled by the development team rather than the central platform team.
Run away from cloud
Many businesses are considering abandoning the cloud and returning to managing their own infrastructure. While this may appear to be a cost-effective approach in the short term, it is critical to examine the long-term repercussions. We can’t forecast the future, but we can make some educated guesses.
First and foremost, examine a company’s capacity to deliver. How soon can they recover from a cloud incident? How long does it take to integrate new features amongst services and teams? How many deployments to production do they have every day? How many rollbacks are there? These are all significant considerations, among many more.
Second, firms who abandon the cloud risk losing substantial agility and failing to keep up with long-term design fronts due to the complexities of understanding how to run their applications. Furthermore, if a corporation cannot offer functioning software fast utilizing computing as a service, cloud migration may not be the ideal answer for them.
Companies with a strong DevOps culture and the capacity to offer exceptional functionality to consumers with minimal effort, on the other hand, may be less harmed by a shift away from the cloud. What distinguishes these firms is their application life cycle governance.
This is why, before considering shifting to or from the cloud, you should first work on improving your delivery process. You can optimize your delivery process and guarantee it functions effectively in every context by concentrating on the following key points:
- Bootstrap automation
- Easy to create repositories
- Easy to create resources
- Easy to build integration pipelines, including building, testing, publishing, and releasing
- Easy to deploy
- Automated testing
- Automated logging
- Automated monitoring and easy alerting
It is vital to highlight that both sorts of businesses - those with a strong DevOps culture and those without - will pay a high price for cloud computing. However, the complexity aspect must also be considered. Many businesses overcomplicate their systems by employing patterns and technology to tackle issues that do not exist and will most likely never exist. Complexity will make it pricey regardless of where you operate your systems. However, certain settings may be more hazardous than others. Maintaining your own infrastructure may add to the complexity.