Do you recall that famous quote by Marc Andreesen made in a Wall Street Journal op-ed back in 2011 about Why Software Is Eating The World? It probably resonates even more today as businesses strive to gain competitive edge via software solutions. Fully automated customer fulfillment running online via the ubiquitous browser or mobile apps is the norm (think Amazon.com, brokerage apps, refilling prescriptions, etc.).
While the cloud computing trend has gathered a lot of tailwinds, most enterprise applications are still running on-premises, in colocation facilities, or in data centers. While critically assessing their IT strategy, it is becoming increasing compelling for enterprises to move workloads to the cloud. Often, the trigger point is a company’s lack of agility in keeping up with the business needs while being sluggish in their software development and deployment processes. I vividly recall the time when it took a whole month to provision a database server machine in a production environment at a client site in NYC. Today, you could get on an AWS console and provision a virtual server farm within a few minutes. In this blog post, I will share how the journey to building and deploying cloud-native apps typically unfolds when working with our clients.
Relocating servers, storage, and networking from on-premises to public cloud is the easiest initial step to begin realizing the benefits of the cloud. Running your existing servers, complete with their operating system (OS) and all other supporting software, in the cloud is a great stepping stone to embracing the model. Why incur capital expense when you could run your IT infrastructure as an operational expense? Why own a fleet of cars when you could rent them for a lot less? The cloud instantly provides scalability; machines can be instantly added and removed on demand. Cloud Managed Services Providers can offer additional monitoring, support, and advisory services for incremental costs, allowing enterprises to focus more on their core competencies rather than get bogged down by managing IT infrastructure.
Once companies start getting comfortable with the IaaS model, they start realizing that there is a lot more to the cloud than just the infrastructure. For example, instead of running your own database server on AWS EC2 instances, you can use incumbent services like Aurora as an RDBMS, DynamoDB as a NoSQL database, or Redshift as your Enterprise Data Warehouse. No need to manage the OS, built-in fault-tolerance and decoupling of storage and compute processes add an additional layer of abstraction. Once companies adopt PaaS, they begin to embrace cloud-native architecture. Not only does PaaS provide simplicity of operations, but it also reduces costs over and above IaaS. PaaS is like hailing an Uber to get from point A to point B; no need to own or rent a car.
Serverless computing, initially introduced by AWS with AWS Lambda, is the next step in increased simplicity of deployment architecture. Microsoft Azure has Azure Functions and Google has Cloud Functions. The key to making this happen is breaking down the application into smaller functions. Those functions can run in a variety of runtime environments such as Node.js, Java, Python, and .NET. But you don’t have to worry about provisioning those execution environments—no software to install, no hardware/VMs to provision and manage. Serverless computing offers the highest level of abstraction available in cloud computing currently available. A similar architecture pattern is that of Microservices that are loosely coupled units of code normally accessible via RESTful APIs, and are usually front-ended by an API gateway. Breaking down the application into smaller functions, while sounding very straight-forward, needs to be done deliberately.
Once you architect applications as Microservices, you can build and deploy them more granularly, which results in fewer “frictional costs” (i.e., coding and testing errors). To automate the entire application development lifecycle from checking-in the source code to automating the build, testing, and deployment, all cloud providers must have an extensive set of DevOps tools for continuous integration and continuous delivery (CI/CD). Azure DevOps is a great all-in-one solution.
AWS also has its own set of DevOps tools (i.e., CodePipeline, CodeCommit, CodeBuild, CodeDeploy). Remember: The higher the degree of automation in the software assembly line, the lower the chances of humans inadvertently inducing errors.
So, there you have it, the three steps to a typical cloud-native journey:
What should your journey to cloud-native applications look like? Should you go all in on public cloud, embrace hybrid cloud strategy, or diversify across multiple cloud providers? CTG is glad to have that discussion with you to design a cloud migration strategy that works best for your business.
A collection of industry and solution experts
Send us a short message by completing the contact form and we’ll respond as soon as possible, or call us directly.
Social media cookies must be enabled to allow sharing over social networks.