By David Greenstein, Business Solutions Architect
I want to start this blog with a customer story that I think exemplifies a pretty common problem we see at Coda Global. We had a startup developer – really smart organization – that had written its software to be delivered as a software-as-a-service (SaaS) product on Amazon. That meant that this client’s customers had to have a relationship with Amazon to be able to purchase and run their application. As the client began selling their app and growing their customer pipeline, they were getting a lot of pressure to create an on-premise model. The bits they had written that were containerized were easy to refactor and move to on-prem, but the non-containerized parts of the code were significantly more challenging. By moving the non-containerized code on-premise, they had to test an array of variations for each supported platform. They knew that, by rewriting all their code to run in containers, the bits needed at the operating system (OS) level would be able to be bundled with the pieces of the app inside the containers. To do this, they needed open-source technology like Kubernetes which is both flexible and supportable, but for this project, had a high barrier to entry – and this is why they came to us.
We flattened Kubernetes with automation and provided them with a productized installation mechanism for Kubernetes which made it more approachable for their on-premise customers. This helped them achieve the portability they were looking for and reduced the installation time for their on-prem application to one-fourth of the time it took before this critical piece of the solution was put in place. While it sounds like this client solved all of its problems with containerization, it’s important to remember that is only part of the story.
When I talk with customers about containerization, the discussion usually begins because they are trying to solve one of three very common problems. The first is time to market, or the velocity of their project – how quickly they can bring their app to fruition and something that containers can often help them achieve. Velocity is something we’ve mastered at Coda. In most cases, using our unique RightStart program, we can help clients correctly use containerization to release every week rather than every month, so we’ve got you covered there.
The second problem is portability, and like in the client example above, containers can help you achieve that, particularly if you’re building apps using a cloud-native approach or architecture. When you do, no developer intervention is required to move your app because you developed it to run in Kubernetes on something like Google Cloud Platform or IBM Public Cloud. If you deliver your app in a container, the abstraction afforded by the container platform allows you to move your app or service in a way that doesn’t require you to change the application itself. Likewise, the requisites of the operating layer are bundled with the container; since they are not the responsibility of the consumer to satisfy, that makes the app very portable, and it makes your organization cloud agnostic.
The third problem is where things really get sticky – enabling lines of business that are technically savvy to deliver application code in a responsible fashion from an IT perspective. This is where automation becomes uber-important. If you’re working with data science or business intelligence teams, for example, applying automation and orchestration best practices to the work you’re doing in containers can help you achieve velocity and portability while still adhering to important security and management rules that will work for the organization.
This is the point at which some developers cut corners. They skimp on security protocols or ignore testing to improve velocity, and this is why DevOps sometimes has a negative connotation – but that’s not the way things are supposed to be done. If you aren’t automating security and support functions into the app itself, then your app isn’t being built correctly.
The best approach is to use some sort of container orchestration and employ industry-standard continuous integration/continuous delivery (CI/CD) build-test-deploy automations that will enable you to achieve the velocity you want without compromising on the security or management protocols you need. Once that automation is in place, all those rules are enforced by the automation. That is so critical to your success because, otherwise, those protocols would have to be manually applied and that slows down the entire development process.
So, while every client situation is unique and individual, there are usually industry-standard ways of achieving each customer’s goals. And while it’s true that containers do solve a lot of problems in AppDev, they aren’t a cure-all for every issue. Simply adopting containers for the sake of adopting containers won’t guarantee that you’ll achieve the velocity, portability or protocols necessary to achieve your ultimate goals. You first have to align the right processes and tools to maximize your investment in containerization. If your project isn’t panning out the way you had hoped, you may have missed a critical step like automation along the way. Need to talk it through with an expert? Contact us and find out how Coda Global can help you change your application dream into a dream application.
Want to learn more? Explore the cloud automation page on our website, then examine three of the top things Coda Global takes into account when we design applications for our customers. Learn how we transform high-level, wish-list application ideas into actionable goals and designs and how we can help migrate your legacy apps to the cloud. Need an assessment to help you identify gaps and map out your organization’s digital transformation – or do you just need to bounce a few ideas off our technical staff? Either way, we’d love to hear from you; contact us to find out how Coda Global can help give your project the RightStart it needs today.