Although monolithic applications will be in use for years, John Gray, CTO at InterVision, points out, their days are numbered. “Moving applications to take advantage of cloud-native architecture is a necessity, unless you want to be overtaken by your competition,” says Gray. “Microservices and serverless are the future.”
Although seemingly inevitable, the idea of the transition can be intimidating. To help software developers planning on migrating a monolithic application to a new platform, Gray answers some common questions and his insights.
What are some of the issues that software developers can run into when transitioning an application to the cloud?
Gray: Developers can often run into a choice paralysis, such as choosing to focus on containerization or jump directly to serverless. Both serverless and containers allow developers to focus on their code rather than on infrastructure, which speeds up development. Both containers and serverless support microservices and component-based architectures and deployment and scaling is usually faster and more cost-effective than with monolithic apps. This is because developers are working on small parts of the application instead of the whole thing.
Containers provide portability, are platform-agnostic (so they can run on Linux, Windows, macOS, Docker, Swarm, or Kubernetes) and are much more efficient than virtual machines. Containers allow refactoring big monolithic applications into smaller independent parts to move to a microservices architecture.
Within serverless, it’s the distribution of an application or its parts into single functions, each of which is responsible for a particular piece of logic. This event-driven nature of serverless makes it very useful for applications (or their parts) that do not always need to be running. A concern with serverless is vendor lock-in, and observability, monitoring, and debugging are not easy to do with the serverless approach.
At least one VM instance with containers hosted on it is always running, which means containers are more expensive than serverless.
The approaches can be combined: it can be very effective to have the main application functionality running as a containerized microservice while using serverless for some background operations.
How can software developers overcome choice paralysis?
Gray: A key is to determine what app architecture is right for your business problem. If your business needs are constantly changing (e.g., fraud detection and prevention), then leading-edge cloud application architecture is highly beneficial for the necessary agility to simply keep up with the changing business requirements. Whereas, if you have an accounting system and the rules are not changing, then the reason to move to cloud native is cost savings.
What’s your advice for a software developer considering a move to the cloud?
Gray: Understand your business’s needs and ask yourself, “Why are we developing software?” If business needs require agility, then move quickly to cloud native. Also, experiment – take some specific functionality and follow an agile approach to migrate the functionality to a cloud native application architecture. Review the pros and cons, then discuss them with business owners.
Having a dialogue with executive leadership will allow your IT team the opportunity to find others within the business who are motivated to disrupt the status quo – work with these individuals, since they will be an advocate for your team through technology evolution. Learn from others that don’t endorse major change – why are they hesitant, and what could you do to assure them? Look at application architecture patterns, such as the “strangler pattern,” to assist your team’s best route to the cloud.