DevOps: What is the Future of DevOps?

The term “DevOps” is a phrase that was coined by Patrick Debois approximately ten years ago. It’s now an accepted term by software, and IT teams across the globe. They use it for describing the methodology behind operation and development engineers working together from design to development. What does this definition mean for the future of DevOps? Let’s take a look.

Developing a strong understanding of DevOps allows you to experience improvements regarding the efficiency and quality of the development of your mobile application. In the coming years we can expect to see some significant changes. It’s possible to stay ahead of the competition while simultaneously improving the efficiency of your internal operations if you have an understanding of what’s ahead.

Mark Debney from 6poin6 writes, “Whilst DevOps culture will be integrated into development teams. For those of us with DevOps in our job title, I see the role evolving into a cloud specialty with a focus on optimising the usage of cloud technologies, working as specialist centralised development teams creating tools to augment and aid the development process, providing guidance and best practice across an organisation’s rapidly changing cloud estate.”

What is DevOps?

Before looking at the future of DevOps, let’s take a look at its definition. Essentially, DevOps is a fusion of terms–software development and information technology operations. It’s possible to gain oversight over your business’s entire pipeline when incorporating DevOps into the way you’re running operations. In doing so, you’re allowing your teams to work more efficiently with fewer redundancies.

There was a growing divide between the product’s creation and its support before the world of DevOps. Ultimately, this led to production issues as a result of these silos. However, Agile methodology got customers, developers, managers, and QA working together. Even though they were iterating toward a better product, operations, and infrastructure wasn’t addressed. The product’s delivery and infrastructure can be seen as an extension of Agile when looking at DevOps.

What is the CALMS model?

The CAMS model is essentially the framework for DevOps, and it was created by Damon Edwards and John Willis, authors of the DevOps Cafe podcast, in 2010. CAMS is an acronym for Culture, Automation, Measurement, and Sharing. Later, Jez Humble added the “L,” which stands for “Lean” to the acronym, and now it’s “CALM.”

  • Culture: focuses on people and embraces change and experimentation.
  • Automation: is continuous delivery with infrastructure as code.
  • Lean: focuses on producing value for the end-user utilizing small batches.
  • Measurement: measures everything while simultaneously showing the improvements.
  • Sharing: open information sharing using collaboration and communication.

Daniel Greene of TechCrunch writes, “You can visualize DevOps as a conveyor belt, where many checks and balances are in place, at all stages, to ensure any bundle coming down the belt is removed if it’s not good enough, and delivered to the end of the belt (e.g. production) safely and reliably if it is.”

Multi-Cloud Accommodations

One of the critically new standards regarding development is cloud computing. That means, now more than ever, it’s vital to have a DevOps pipeline in place. The main reason is to keep a separation between development and deployment. DevOps is going to gain more prominence as it acts as liaisons between those two arms of your development cycle. However, the software is going to begin depending more on multiple clouds. In turn, DevOps professionals will find their jobs more challenging.

As DevOps grows to meet the needs of keeping up with multi-cloud environments, it will become more about responding to those changing technologies. These professionals will also be responding to the power of these platforms and making adaptations to ensure their software is getting the most benefits out of them. DevOps will also have to possess an understanding of the cloud platform’s native features and communicate them to their teams. That way, they can minimize the amount of work occurring throughout the deployment.

multi-cloud accomodations

What Does This Mean for the Future of DevOps?

The future of DevOps means a lot of containerization of software, which ultimately means applications will run using the cloud. Many of these software applications will be replacing some of the traditional functions of DevOps. As a result, the world of DevOps will experience a dramatic shift. The main reason is that there need to be clear boundaries defined between operations and development.

Because the industry will continue making shifts toward software management using standardized frameworks, DevOps professionals will have more time to drive efficient innovations. These professionals will also have more time to tackle the challenges they face regarding managing large clusters of complex applications across technology stacks.

Tom Smith from DZone asked IT executives about the future of DevOps, and received this as one response, “The biggest opportunity for DevOps is to drive into tech stacks and organizations that think that a move to DevOps requires a complete re-architecture of their application or adoption of replacement technologies. While those sorts of changes may be excellent opportunities to introduce culture change as well, teams running existing business-critical apps in “monolithic” architectures can take advantage of DevOps as well, if they choose the right tools.”

What Are the Trends Regarding DevOps?

Growing trends are also occurring in the world of cloud computing and it’s relationship to DevOps:

  • There’s an increase in diversity of cloud services which are leading to multi-could and hybrid infrastructures.
  • Data managers are facing more requirements regarding the emergence of DataOps.

Kit Merker writes, “The emerging methods of DataOps draw directly from the key principles of DevOps — automation to help distributed teams support frequent and continuous integration and delivery. In the same way that DevOps helps developers, quality assurance, and operations to smoothly and securely collaborate, DataOps provides the same benefits to the joint efforts of developers, data scientists, data engineers, and operations.”

When more than one cloud management platform is utilized in a single IT environment, it’s a multi-could accommodation. This occurs for several reasons, including:

  • to minimize downtime through redundancy
  • reduce data loss and sprawl
  • avoid vendor lock-in
  • provide versatility to meet a team’s varying project needs

As a result, DevOps teams must work toward meeting multi-cloud needs by becoming more scalable and Agile. It’s possible to achieve this goal utilizing continuous release and integration, as well as automation.

There may be problems with DevOps attempting to keep up by continuing to do the same thing, but quicker. The main reason is traditional DevOps apps are monolithic. Therefore, cloud-based applications are wiser to use. That way, they’re easier to scale, automate, and move.

More Focus on Automation

DevOps is becoming an industry standard for many businesses. According to a report issued by Capgemini, 60% of businesses either adopted DevOps or planned to do so during 2018. Statistics like this one demonstrates that DevOps is a necessary part of your business plan if you expect to respond quickly to the demands of the market, improve your business’s time-to-market, and keep your software solutions updated regularly.

Many businesses wonder if automation can be continuous, on-demand, always optimal, and contextual. Do you know the six “C’s” of the DevOps cycle? Understanding this cycle will help you apply them better between the different stages of automation. Here they are:

  • Continuous Business Planning
  • Collaborative Development
  • Continual Testing
  • Sustained Release and Deployment
  • Ongoing Monitoring
  • Collaborative Customer Feedback & Optimization

Smart implementation of automation means continuous updates of the DevOps structure can occur as developers deliver content to users despite changes. However, it also means a DevOp’s work is on-going. Automation is going to continue taking hold in the future of DevOps. The problem is many organizations are automating too much. As a result, communications are breaking down among teams.

As the industry continues to grow, more DevOps automation tools are going to roll out. That’s where developers will need skills to know which ones possess features that can be automated and which require an engineer. Otherwise, businesses will find themselves implementing what is new and causing problems with automation instead of making it work to their benefit.

These needs will eventually be met by AIOps, which stands for artificial intelligence for IT operations. Organizations must understand that automation has reached a point of inflection regarding adoption and implementation. Because of this it’s not yet subsumed by AIOps. As a result, it makes sense to carefully examine how automation should be utilized to meet demands better.

Torsten Volk, managing research director for containers, DevOps, machine learning, and AI at Enterprise Management Associates, states, “The future of DevOps requires what I like to call ‘continuous everything.’ This means that security, compliance, performance, usability, cost, and all other critical software components are automatically and continuously implemented without slowing down the release process. In short, the optimal DevOps process is fully automated and directly synchronized with rapidly changing corporate requirements.”

devops engineer

Code Will Become a Required Skill

Statistics indicate that, as of 2018, 86% of businesses have either implemented DevOps or plan to do so. As a result, this means organizations must invest in their DevOps engineers. However, due to the quick pace, technologies are changing, it’s challenging for individuals and businesses to keep up with their DevOps skills.

The following three categories will help DevOps professionals gain a sturdy grip on cultivating their expertise:

  • Ability: This is the level at which a DevOps professional can perform their tasks. Ability is natural, as opposed to skills and knowledge which are learned. Often, many DevOps professionals currently working in the field possess natural abilities.
  • Knowledge: This is something that’s learned. For example, a DevOps professional is born with the knowledge of the inner-workings of Jenkins. Therefore, they must obtain knowledge of it using instruction and personal study. It’s critical for DevOps professionals to continuously learn, review, and understand the latest information regarding DevOps best practices, systems, and technologies.
  • Skill: This is something that is learned through experience or training. Ultimately, DevOps professionals are applying what knowledge they’ve obtained to situations they’re experiencing in real-life. These skills can only be further improved by a DevOps professional with practice.

Learning Code: The Critical Need

One of the most significant demands in DevOps is testers who know how to code and automate scripts. They do this to test various cases. If you’re not sure how these skills, the recommendation is that you learn how to code immediately. You’ll find that, when you understand the various tools for DevOps and how to automate scripts, these skills play a critical role in today’s software development.

The expectation is that, if testers don’t learn code within their automated scripts, they’ll perish. Manual testing is time-consuming, and the expectation is that it will become obsolete before 2020. Automation not only ensures the market receives features faster, but it also increases the efficiency in testing.

According to Andrae Raymond, programmer and software consultant at Software Stewards, “When proper tests are in place, you can rest assured that each function is doing what it was written to do. From all stages from development to deployment we can run tests to make sure the entire system is intact with new features.”

No matter if it’s JavaScript, Perl, Python, or Ruby, successful DevOps engineers will benefit from writing code. From replacing manual processes, including assigning DNS codes or IP addresses or writing manual codes, someone must be available to write them.

Coding Creates Security Barriers

DevOps engineers can also write and deploy secure code quickly. In doing so, they’re protecting businesses from unwanted attacks. They’re also ensuring applications and systems have a defense mechanism in place to protect against the most common cybersecurity vulnerabilities.

Engineers will find that coding is an on-going process that undergoes many changes and updates. Therefore, a DevOps engineer must have flexibility. What that means is they’re continuously integrating and developing new operations and systems into code. While doing this, they’ll be utilizing flexible working skills and adapting to the code’s changes.

It’s also vital that engineers are comfortable with moving from various areas of a software construction to another. No matter if it’s deployment, integration, testing, or releasing–they must be able to move seamlessly.

Because code is continuously changing, engineers are also required to make on-the-spot decisions. They’ll be fixing incoherent code elements and, as a result, quick decisions are required. These coding changes must occur rapidly to ensure development and deployment can occur. It’s this kind of confidence that makes a successful coding engineer.

security implementation

Security Implementation Will be a Driver

Security plays a significant role in the world of DevOps. The more automation occurs, the more problems can arise. That means, the more connected we become, the more exposure we also create.

What are the Benefits of Security Implementation?

  • Improvements in the effectiveness and efficiency of operations.
  • Teams across the company experience healthier and stronger collaborations.
  • Security teams experience stronger agility.
  • Quality assurance and automated builds have a more conducive environment.
  • Easier to identify vulnerabilities for applications and systems.
  • More freedom to focus on high-value projects.
  • The cloud experiences improved scalability.
  • An increase in the company’s ROI.

Make Security a Priority

Because DevOps practices are driven by (CI/CD) integrations and deployments that occur continuously, big releases are replaced by faster, agile release cycles. It’s possible to address your customer’s needs and demands daily by using the CI/CD pipeline to employ rapid changes. Because it’s possible to automate the CI/CD pipeline, security must be a priority. Therefore, it cannot be thought of as an add-on feature. Instead, it must be included in the software’s design.

Anthony Israel-Davis writes, “As with prevention, DevOps is uniquely positioned to take advantage of detective controls. In traditional IT environments, detection tends to be a runtime concern, with DevOps, detection, correction, and prevention can be wrapped into the pipeline itself before anything hits the production environment.”

Even though DevOps and security have always worked in conjunction with each other, you must ensure your developers are using the same software packages, dependencies, and environments throughout the software development process. The expectation is that, as DevOps continues growing in the world of IT and being adapted globally, more focus will be placed on it in the fields of cloud computing, IoT, and security.

Expect Some Challenges

Despite solving many challenges throughout the software development process, DevOps security does introduce new ones. According to a survey conducted by SANS, fewer than 46% of IT security professionals are “confronting security risks upfront in requirements and service design in 2018–and only half of respondents are fixing major vulnerabilities.”

As a result, environments end up with an uncoordinated, reactive approach to incident mitigation and management. Under many circumstances, this lack of coordination isn’t apparent until incidents occur, and a system attack or break occurs.

Security breaches can reap havoc on systems that have long-term effects. One example of a massive breach is Uber’s in late 2016. Two hackers broke into the company’s network, stealing personal data, including names, email addresses, and phone numbers of 57 million Uber users. During this breach, the hackers also stole the driver’s license numbers of 600,000 Uber drivers. According to Bloomberg, they used Uber’s GitHub account, which is where Uber’s engineers track projects and store code, to obtain the username and password. Then, they were able to access Uber’s data that was stored in one of Amazon’s servers.

Security is Everyone’s Responsibility

Jayne Groll, co-founder, and CEO of the DevOps Institute states, “DevSecOps basically says security is everybody’s responsibility with security as code. We need to start testing security much earlier in the cycle rather than making it a downstream activity. I think the security community is starting to embrace that from a tools perspective and for their personal future. I think two years from now we are going to see security as code being the norm.”

The problem with this security breach is Uber paid off the hackers to keep them quiet. However, it wasn’t long until the data breach was eventually discovered. At that point, it became a nightmare regarding public relations. Dara Khosrowshahi, Uber’s C.E.O. at the time of the hack, indicated in a statement, “While I can’t erase the past, I can commit on behalf of every Uber employee that we will learn from our mistakes.” Khosrowshahi remains on Uber’s board of directors.

When a DevOps environment is running securely, it’s operating on different policies, processes, and tools to facilitate secure and rapid releases. Use the Uber example, there needed to be a final scan to ensure there were no credentials left embedded anywhere in the code. When these pieces come together, they provide a bulletproof security system throughout the development, release, and management phases of the application.

That’s where DevSecOps comes into play. DevSecOps is a combination of both security and privacy. It’s where security is implemented into the design lifecycle of software development. In doing so, there are fewer vulnerabilities. These security features also help bring security features closer to meeting business objectives and IT standards. Use of these models helps ensure everyone is responsible for security.

Protection Against New Risks

DevSecOps offers protections against the new types of risks found when introducing CI/CD within the testing framework of DevOps. Security checks are now integrated into the process while building the code. DevSecOps covers the analysis of code, automated security controls, and post-deployment monitoring. Because DevOps professionals remain engaged throughout the process, they’ll find and mitigate issues before launching.

As a result, the development process is a more cohesive experience, as well as an improved user experience. Thanks to the improvements in the delivery chain, users receive feature updates quicker, more secure software, and they no longer have to deal with technology that lags.

microservice architecture

Microservice Architecture Will Increase in Demand

Lately, microservices and DevOps are synonymous with each other. When you need an architectural approach to building applications, microservices provide this solution. Because microservices provide an architectural framework that is loosely coupled and distributed, the entire app won’t break when one team makes changes. One of the most significant benefits for using microservices is that it’s possible for development teams to build new components of apps rapidly. That way, they can continuously meet the ever-evolving business market.

Adam Bertram of CIO writes, “Microservices is especially useful for businesses that do not have a pre-set idea of the array of devices its applications will support. By being device- and platform-agnostic, microservices enables businesses to develop applications that provide consistent user experiences across a range of platforms, spanning the web, mobile, IoT, wearables, and fitness tracker environments. Netflix, PayPal, Amazon, eBay, and Twitter are just a few enterprises currently using microservices.”

What are the Benefits of Microservices Architecture?

The expectation is that companies are going to move to use microservices architecture as a way of increasing their delivery efficiency and runtime. However, you mustn’t be making these changes because other companies are making this move. Instead, have a firm grasp of the benefits of microservices architecture. They include:

  • Embracing automation and DevOps.
  • There’s a reduction in writing long, intricate lines of code.
  • Communication will improve among testing, QA, and development teams.
  • Finding and addressing bugs becomes quicker and easier.
  • Lightweight servers create faster startup times.
  • Independent scaling is available for each service.

See Problems Before Going Live

The cloud-native and microservices with DevOps means testing and production are integrated into the app lifecycle. Therefore, before going live, you can see problems by testing and troubleshooting. Organizations should keep in mind that, even though there is a multitude of benefits regarding microservice architectures, they’re not the ideal solution for all companies. The main reasons are they’re complex, require cultural changes, are expensive, and pose security challenges.

That doesn’t mean, however, microservice architectural frameworks doesn’t come with a set of benefits. For example, their design is such that they address the limitations found in monolithic architectures. Microservice architectures work toward modularizing an application into unique services to increase granularity.

Here are several benefits of using microservices architecture:

  • Companies can perform onboarding easier.
  • There’s less risk when microservices are implemented.
  • Microservices offer flexible storage for data.
  • Polyglot programming is enabled with microservices.
  • The reduction of clutter occurs.
  • There’s an increase in fault isolation and tolerance.
  • Companies experience an increase in the speed of deployment.
  • Scalability is available.
  • Security monitoring is simplified.

One of the most significant features of microservice architecture is that it’s scalable. You’ll find that it’s possible to scale each microservice independently. For example, if you need more power for one specific function, you can add it to the microservice providing that function. As demand changes, computing resources can automatically be increased or decreased as the changes in demand occur. As a result, it’s easier to maintain the infrastructure supporting your application.

Independent Deployment

It’s also possible to develop and deploy microservices independently. In doing so, development teams can focus on small, valuable features and deploy them. These deployments can occur without the fear of breaking down other parts of the application. Thanks to their small set of functionality, microservices are more robust and easier to test.

DevOps professionals know that every customer comes with a unique set of needs. Therefore, they commonly have configurations built in to meet those needs without separate applications deploying. Because microservices are separated and designed by functionality, it would be simple to toggle a feature on, allowing users to disable or enable particular microservices. When microservice architecture is designed correctly, it can be highly configurable without any worry of other parts of the application be affected.

microservices

CI Pipelines Will Become Obsolete

Currently, organizations and government entities are utilizing open source, and it’s the focus of their software development stacks. However, it wasn’t that long ago that open source was considered high-risk. With the recent acquisition of Red Hat from IBM and GitHub from Microsoft, which are homes of a variety of open source projects, this shows the general populace feels comfortable with open source. There will be increasing importance regarding DevOps and open-source practices. Specifically, DevOps teams will be using it in their Continuous Integration (CI) practices.

When you’re viewing a CI pipeline, it’s possible to see your app’s complete picture from its source control straight through to production. Now, CI isn’t your only priority. You also have to focus on CD (continuous delivery). What that means is, it’s time for your organization to invest its time and put effort into understanding how to automate your complete software development process. The main reason is that the future of DevOps is shifting away from CI pipelines and toward assembly lines.

What are CI Pipelines?

For those who don’t have a firm understanding of what a CI pipeline is, CI stands for Continuous Integration. Over the last few years, Continuous Integration has evolved tremendously. Initially, it launched as a system to automate the build and unit testing for each code; however, it’s evolved into a complex workflow. For example, the classic CI pipeline involved three steps, including build, test, and push. It’s evolved into other workflows, including CI pipelines that include forked stages, escalating, and notifications.

What are DevOps Assembly Lines?

DevOps Assembly Lines focus primarily on the automation and connection of activities several teams perform. These activities include CI for devs, config mgmt for Ops and infrastructure provisioning, deployments for multiple environments, test automation for Test, security patching for SecOps, and so on. Under most circumstances, an organization utilizes a suite of tools to automate specific DevOps activities. However, achieving CI is a challenging task because the DevOps toolchain is fragmented and difficult to glue back together.

Many teams adopt one of the following methods:

  • Gluing silos together using cultural collaboration.
  • Triggering one activity from another by writing ad-hoc scripts.

The second approach is better because it doesn’t introduce unnecessary human-dependancy steps or inefficiency. However, it only works well when working with one application using a small team.

Ultimately, DevOps teams solve this problem using Assembly Lines to address it by focusing on gluing together each activity into even-driven, streamlined workflows. These workflows can share state, as well as other information, easily across activities.

“There are significant benefits for companies to automate their software delivery process.” Manish Mathuria, CTO of Infostretchexplains, “advanced software development shops can put releases into production multiple times a day.”

What’s the Difference Between CI pipelines and Assembly Lines?

The CI pipeline features one activity in the entire Assembly Line. When breaking the project down into a chain of blocks, you can see a pipeline full of various activities. Each activity fulfills a specific need regarding configuration, notifications, runtime, tools integration, and so on. Different teams also own each pipeline, but they need to interact and exchange information with other pipelines.

Therefore, DevOps Assembly Lines are ultimately a pipeline created for pipelines. That means they must support:

  • Workflows across a variety of pipelines while quickly defining them.
  • Reusable and versioned workflows.
  • The ability to enable scaling for and rapid changes of microservices and (or) multiple applications.
  • Integrations with every source control system, artifact repository, DevOps tool, cloud, and so on.
  • Run-time to execute all pipelines.
  • Playbooks and Accelerators for standard tools and pipelines.
  • Manual approval gates or automatic triggers between all pipelines.

Serverless Technologies Will Provide Agility

One of the most significant problems DevOps teams had when working in earlier years is they worked separately in silos. These conditions led to a lack of transparency and poor teamwork. In many cases, DevOps teams need to merge, consolidate, and work together during the application’s lifecycle. Many times, this occurs right from development to deployment and throughout testing.

Delivering capabilities by leveraging functions as a service is the goal of DevOps professionals who have masters operating containerized workloads in complex ways. They’re achieving this goal by optimizing and streamlining this delivery. Throughout the next year, the depth and breadth on the focus of these functions will likely deepen. The main reason is that more professionals will recognize the benefits of working with serverless technologies as they become more comfortable leveraging containers in production.

“With the serverless approach it’s virtually impossible (or at least a bit pointless) to write any code without having at least considered how code will be executed and what other resources it requires to function,” writes Rafal Gancarz, “Serverless computing can be used to enable the holy grail of business agility – continuous deployment. With continuous deployment, any change merged into the code mainline gets automatically promoted to all environments, including production.”

serverless technologies

Why Are Serverless Technologies Beneficial?

Some of the most significant ways serverless computing is providing benefits and agility to DevOps include:

  • better start-up times
  • improved resource utilization
  • finger-grained management

However, despite these benefits, future DevOps professionals will become skilled at determining use cases whereby serverless computer and functions as a service are appropriate.

Agility and DevOps can work in conjunction with each other seamlessly without creating a hostile environment. The reality is the two working together create a holistic work environment by filling in the weaknesses each possess. In many workplaces, the future of DevOps is likely to compliment instead of supplanting Agile.

Creation of Modular Compartments

Often, Agile breaks down projects and creates modular and compartmentalized components. When there are more significant, organizational structures, this often leads to a lack of communication between teams and missed deadlines. Using DevOps deployment means internal structures of Agile teams that are kept in one place.

When thinking about the use of serverless computing, that doesn’t mean there aren’t any servers in use. Instead, machine resources are allocated by a cloud provider. However, the server management doesn’t have to be on the developer’s radar. That frees up time for focusing on building the best applications.

The cloud provider does everything else. When handling resource scaling, they make it automatic and flexible. Organizations are responsible for paying for only the resources they use, as well as when resources are used by applications. If organizations aren’t using resources, there’s no cost. Therefore, there’s no need for pre-provisioning or over-provisioning for storage or computing.

Serverless computing provides business agility because it makes it possible to create an environment whereby there are continuous developmental improvements. When organizations become agile enough for rapid decision-making, agility occurs and will lead them to success. Companies utilizing serverless computing to achieve DevOps will ultimately achieve greater agility.

Experience Changes Regarding IT

Organizations will also find that serverless computing doesn’t end with a path toward DevOps. It also leads to changes regarding IT, as well. For example, companies will be viewing the cloud differently. What that means is, because serverless computing relies heavily on the cloud, many long-standing IT roles will be redefined. Examples of these roles include architects, engineers, operations, and so on.

Traditional IT roles in a serverless computing world become less important. However, if that IT professional has a good working knowledge of the cloud and platforms, that becomes more important. That means this professional can accomplish more with the platform in comparison to a developer with expertise regarding their specialty, making it essential for organizations to have IT professionals who are skilled regarding the cloud.

serverless computing

Wrapping Up

According to Grand View Research, “The global DevOps market size is expected to reach USD 12.85 billion by 2025.” These statistics demonstrate the rising adoption of cloud technologies, digitation of enterprises to automate business processes and soaring adoption of agile frameworks. These statistics also point out how, when IT teams improve; it enhances the efficiencies regarding operations.

The future of DevOps is something that can be seen as a cultural shift, as well as something that brings conventionally disconnected components in the development, deployment, and delivery of software into a single loop. Organizations are finding that DevOps is replacing their traditional IT departments. Not only are the titles changing, but the roles are as well. Some of the roles have been eliminated, while others have been multiplied by the scale of microservice architectures. The execution of successful DevOps relies on teams communicating clearly with each other. The future of DevOps means the diminishing of manual approvals, but the human element will never vanish entirely.

Strategies for Cloud Agnostic Architectures

Strategies for Cloud Agnostic Architectures

Introduction

If your business uses cloud computing–as most businesses do these days–it’s very likely that you have at least one public cloud solution. Ninety-one percent of organizations have adopted the public cloud. What’s more, a full half of large enterprises now spend more than $1.2 million every year on their public cloud deployments.

The “public cloud” refers to cloud computing services such as storage, software, and virtual machines that are provided by third parties over the internet. Some of the biggest public cloud providers are Amazon Web Services, Microsoft Azure, and Google Cloud Platform.

Increasingly, however, companies are growing interested in a “cloud agnostic” strategy. So what does “cloud agnostic” mean, and how can your own business be cloud agnostic? 

This article has all the answers.

Cloud Agnostic: Definition and Examples

cloud agnostic infrastructure

One of the greatest benefits of cloud computing is its flexibility. If you’re running out of storage, for example, your public cloud solution can automatically scale it up for you so that your operations will continue seamlessly.

Being “cloud agnostic” takes this idea of the flexible cloud one step further. As the name suggests, cloud agnostic organizations are those capable of easily running their workloads and applications within any public cloud.

The fact that an organization is “cloud agnostic” doesn’t mean that it’s completely indifferent as to which cloud provider it uses for which workloads. Indeed, the organization will likely have established preferences for their cloud setup, based on factors such as price, region, and the offerings from each provider.

Rather, being cloud agnostic means that you’re capable of switching tracks to a different public cloud provider should the need arise, with minimal hiccups and disruption to your business.

Why Do Companies Want to Be Cloud Agnostic?

benefits of being cloud agnostic

It’s hardly surprising that more companies are looking to be cloud agnostic, given that 84 percent of enterprises now use a multi-cloud strategy. This involves using two or more public cloud solutions, allowing you to take advantage of the differentials in features or prices between providers.

Another reason that companies want to be cloud agnostic is to avoid vendor lock-in. Cloud computing has revolutionized the ways that companies do business. It does so by giving them access to more products and services without having to support and maintain their own hardware and infrastructure. However, this increased reliance on cloud computing also comes with the risk of dependency.

Management consulting firm Bain & Company finds that 22 percent of companies see vendor lock-in as one of their top concerns about the cloud. “Vendor lock-in” is a phenomenon when a business becomes overly dependent on products or services from one of its vendors. This is highly dangerous if the vendor hikes its prices, stops providing a certain offering, or even ceases operations.

The world of cloud computing is rife with vendor lock-in horror stories. One example is that of Nirvanix, a cloud storage firm that went out of business and gave clients only two weeks to move their data. While it might seem impossible for an Amazon or Google to go out of business, remembering companies like AOL show that it’s not completely unrealistic for a vendor to cut services. By making your company more flexible and adaptable, being cloud agnostic inoculates against the risk of vendor lock-in.

Cloud Agnostic: Pros and Cons

Cloud agnostic architectures

The Pros of Being Cloud Agnostic

  • No vendor lock-in: As mentioned above, being cloud agnostic makes the risk of vendor lock-in much less likely. Companies that are cloud agnostic can “diversify their portfolio” and become more resilient to failure and changes in the business IT landscape.
  • More customization: Using a strategy that’s cloud agnostic and multi-cloud lets you tweak and adjust your cloud roadmap exactly as you see fit. You don’t have to miss out on a feature that’s exclusive to a single provider just because you’re locked into a different solution.
  • Redundancy. Having systems in place across various clouds means you are covered should any one encounter problems.

The Cons of Being Cloud Agnostic

  • Greater complexity: Being cloud agnostic sounds great on paper, but the realities of implementation can be much more difficult. Creating a cloud strategy with portability built in from the ground up generally incurs additional complexity and cost.
  • “Lowest common denominator”: If you focus too much on being cloud agnostic, you may only be able to use services that are offered by all of the major public cloud providers. Even if AWS has a great new feature for your business, for example, you may be reluctant to use it unless you can guarantee that you can replicate it in Microsoft Azure or Google Cloud Platform. While more of a choice in enterprise strategy than a drawback, it is something to be aware of.

Strategies for Being Cloud Agnostic

A number of articles say that being truly cloud agnostic is a “myth.” These pieces argue that “cloud agnostic” is a state that’s not realistic or even desirable for most organizations.

In fact, being entirely cloud agnostic is an ideal that may or may not be achievable for you. Unless you are sure that the future won’t change, it may not be worth the effort to reach this goal. In large part, the tradeoff comes at the expense of your other IT and cloud objectives.

Nevertheless, there are a number of “low-hanging fruit” technologies that you can adopt on the path toward being cloud agnostic. These will be advantageous for your business no matter where you stand on the cloud agnostic spectrum.

For example, container technologies such as Docker and Kubernetes are an invaluable part of being cloud agnostic. Essentially, a “container” is a software unit that packages source code together with its libraries and dependencies. This allows the application to be quickly and easily ported from one computing environment to another.

Another tactic for being cloud agnostic is to use managed database services. These are public cloud offerings in which the provider installs, maintains, manages, and provides access to a database. The major public clouds such as AWS, Microsoft Azure, and Google all offer theoretical possibilities for migrating between providers.

That said, using products such as IronWorker that can deploy on any cloud, including fully on-premise deploys, is the easiest and most cost effective way to remain cloud agnostic. This is because with virtually one click, you can save your settings and deploy to whatever environment your enterprise wishes. In short, simplicity equals operational cost efficiency.

Conclusion

Technologies such as containers and managed database services will go far toward making your business more flexible and adaptable. This is true even if not completely cloud agnostic. If you do decide to become a cloud agnostic organization, consider using the services of Iron.io. Set up a consultation with us today to find out how our cloud agnostic IronFunctions platform can help your developers become more productive and efficient.

Google Cloud Run: Review and Alternatives

Introduction

Google Cloud Run is a new cloud computing platform that’s hot off the presses from Google, first announced at the company’s Google Cloud Next conference in April 2019. Google Cloud Run has generated a lot of excitement (and a lot of questions) among tech journalists and users of the public cloud alike, even though it’s still in beta.

We will discuss the ins and outs of Google Cloud Run in this all-in-one guide, including why it appeals to many Google Cloud Platform customers, what are the features of Google Cloud Run, and a comparison of the Google Cloud Run alternatives.

What Is Google Cloud Run (And How Does It Work?)

What is serverless computing?

To answer the question “What is Google Cloud Run?,” we first need to define serverless computing.

Often just called “serverless,” serverless computing is a cloud computing paradigm that frees the user from the responsibility of purchasing or renting servers to run their applications on.

(Actually, the term “serverless” is a bit of a misnomer: The code still runs on a server, just not one that the user has to worry about.)

Cloud computing has soared in popularity over the past decade. This is thanks in large part to the increased convenience and lower maintenance requirements. Traditionally, however, users of cloud services have still needed to set up a server, scale its resources when necessary, and shut it down when you’re done. This has all changed with the arrival of serverless.

The phrase “serverless computing” is applied to two different types of cloud computing models:

  • BaaS (backend as a service) outsources the application backend to the cloud provider. The backend is the “behind the scenes” part of the software for purposes such as database management, user authentication, cloud storage, and push notifications for mobile apps.
  • FaaS (function as a service) still requires developers to write code for the backend. The difference is this code is only executed in response to certain events or requests. This enables you to decompose a monolithic server into a set of independent functionalities, making availability and scalability much easier.

You can think of FaaS serverless computing as like a water faucet in your home. When you want to take a bath or wash the dishes, you simply turn the handle to make it start flowing. The water is virtually infinite, and you stop when you have as much as you need, only paying for the resources that you’ve used.

Cloud computing without FaaS, by contrast, is like having a water well in your backyard. You need to take the time to dig the well and build the structure, and you only have a finite amount of water at your disposal. In the event that you run out, you’ll need to dig a deeper well (just like you need to scale the server that your application runs on).

Regardless of whether you use BaaS or FaaS, serverless offerings allow you to write code without having to worry about how to manage or scale the underlying infrastructure. For this reason, serverless has come into vogue recently. In a 2018 study, 46 percent of IT decision-makers reported that they use and evaluate serverless.

What are containers?

docker containers

Now that we’ve defined serverless computing, we also need to define the concept of a container. (Feel free to skip to the next section if you’re very comfortable with your knowledge of containers.)

In the world of computing, a container is an application “package” that bundles up the software’s source code together with its settings and dependencies (libraries, frameworks, etc.). The “recipe” for building a container is known as the image. An image is a static file that is used to produce a container and execute the code within it.

One of the primary purposes of containers is to provide a familiar IT environment for the application to run in when the software is moved to a different system or virtual machine (VM).

Containers are part of a broader concept known as virtualization, which seeks to create a virtual resource (e.g., a server or desktop computer) that is completely separate from the underlying hardware.

Unlike servers or machine virtualizations, containers do not include the underlying operating system. This makes them more lightweight, portable, and easy to use.

When you say the word “container,” most enterprise IT staff will immediately think of one, or both, of Docker and Kubernetes. These are the two most popular container solutions.

  • Docker is a runtime environment that seeks to automate the deployment of containers.
  • Kubernetes is a “container orchestration system” for Docker and other container tools, which means that it manages concerns such as deployment, scaling, and networking for applications running in containers.

Like serverless, containers have dramatically risen in popularity among users of cloud computing in just the past few years. A 2018 survey found that 47 percent of IT leaders were planning to deploy containers in a production environment, while 12 percent already had. Containers enjoy numerous benefits: platform independence, speed of deployment, resource efficiency, and more.

Containers vs. serverless: A false dilemma

Given the massive success stories of containers and serverless computing, it’s hardly a surprise that Google would look to combine them. The two technologies were often seen as competing alternatives before the arrival of Google Cloud Run.

Both serverless and containers are intended to make the development process less complex. They do this by automating much of the busy work and overhead. But they go about it in different ways. Serverless computing makes it easier to iterate and release new application versions, while containers ensure that the application will run in a single standardized IT environment.

Yet nothing prevents cloud computing users from combining both of these concepts within a single application. For example, an application could use a hybrid architecture, where containers can pick up the slack if a certain function requires more memory than the serverless vendors has provisioned for it.

As another example, you could build a large, complex application that mainly has a container-based architecture, but that hands over responsibility for some backend tasks (like data transfers and backups) to serverless functions.

Rather than continuing to enforce this false dichotomy, Google realized that serverless and containers could complement one another, each compensating for the other one’s deficiencies. There’s no need for users to choose between the portability of containers and the scalability of serverless computing.

Enter Google Cloud Run…

What is Google Cloud Run?

In its own words, Google Cloud Run “brings serverless to containers.” Google Cloud Run is a fully managed platform that is capable of running Docker container images as a stateless HTTP service.

Each container can be invoked with an HTTP request. All the tasks of infrastructure management–provisioning, scaling up and down, configuration, and management–are cleared away from the user (as typically occurs with serverless computing).

Google Cloud Run is built on the Knative platform, which is an open API and runtime environment for building, deploying, and managing serverless workloads. Knative is based on Kubernetes, extending the platform in order to facilitate its use with serverless computing.

In the next section, we’ll have more technical details about the features and requirements of Google Cloud Run.

Google Cloud Run Features and Requirements

Features

Google cites the selling points below as the most appealing features of Google Cloud Run:

  • Easy autoscaling: Depending on light or heavy traffic, Google Cloud Run can automatically scale your application up or down.
  • Fully managed: As a serverless offering, Google Cloud Run handles all the annoying and frustrating parts of managing your IT infrastructure.
  • Completely flexible: Whether you prefer to code in Python, PHP, Pascal, or Perl, Google Cloud Run is capable of working with any programming language and libraries (thanks to its use of containers).
  • Simple pricing: You pay only when your functions are running. The clock starts when the function is spun up, and ends immediately once it’s finished executing.

There are actually two options when using Google Cloud Run: a fully managed environment or a Google Kubernetes Engine (GKE) cluster. You can switch between the two choices easily, without having to reimplement your service.

In most cases, it’s best to stick with Google Cloud Run itself, and then move to Cloud Run on GKE if you need certain GKE-specific features, such as custom networking or GPUs. However, note that when you’re using Cloud Run on GKE, the autoscaling is limited by the capacity of your GKE cluster.

Google Cloud Run requirements

Google Cloud Run is still in beta (at the time of this writing). This means that things may change between now and the final version of the product. However, Google has already released a container runtime contract describing the behavior that your application must adhere to in order to use Google Cloud Run.

Some of the most noteworthy application requirements for Google Cloud Run are:

  • The container must be compiled for Linux 64-bit, but it can use any programming language or base image of your choice.
  • The container must listen for HTTP requests on the IP address 0.0.0.0, on the port defined by the PORT environment variable (almost always 8080).
  • The container instance must start an HTTP server within 4 minutes of receiving the HTTP request.
  • The container’s file system is an in-memory, writable file system. Any data written to the file system will not persist after the container has stopped.

With Google Cloud Run, the container only has access to CPU resources if it is processing a request. Outside of the scope of a request, the container will not have any CPU available.

In addition, the container must be stateless. This means that the container cannot rely on the state of a service between different HTTP requests, because it may be started and stopped at any time.

The resources allocated for each container instance in Google Cloud Run are as follows:

  • CPU: 1 vCPU (virtual CPU) for each container instance. However, the instance may run on multiple cores at the same time.
  • Memory: By default, each container instance has 256 MB of memory. Google says this can be increased up to a maximum of 2 GB.

Cloud Run Pricing

Google cloud run pricing

Google Cloud Run uses a “freemium” pricing model: free monthly quotas are available, but you’ll need to pay once you go over the limit. These types of plans frequently catch users off guard. They end up paying much more than expected. According to Forrester, a staggering 58% of companies surveyed said their costs exceeded their estimates.

The good news for Google Cloud Run users is that you’re charged only for the resources you use (rounded up to the nearest 0.1 second). This is typical of many public cloud offerings.

The free monthly quotas for Google Cloud Run are as follows:

  • CPU: The first 180,000 vCPU-seconds
  • Memory: The first 360,000 GB-seconds
  • Requests: The first 2 million requests
  • Networking: The first 1 GB egress traffic (platform-wide)

Once you bypass these limits, however, you’ll need to pay for your usage. The costs for the paid tier of Google Cloud Run are:

  • CPU: $0.000024 per vCPU-second
  • Memory: $0.0000025 per GB-second
  • Requests: $0.40 per 1 million requests
  • Networking: Free during the Google Cloud Run beta, with Google Compute Engine networking prices taking effect once the beta is over.

It’s worthwhile to note you are billed separately for each resource; for example, the fact that you’ve exceeded your memory quota does not mean that you need to pay for your CPU and networking usage as well.

In addition, these prices may not be definitive. Like the features of Google Cloud Run, prices for Google Cloud are subject to change once the platform leaves beta status.

Finally, Cloud Run on GKE uses a separate pricing model that will be announced before the service reaches general availability.

Google Cloud Run Review: Pros and Cons

Because it’s a brand new product product that’s still in beta, reputable Google Cloud Run reviews are still hard to find.

Reaction to Google’s announcement has been fairly positive, acknowledging the benefits of combining serverless computing with a container-based architecture. Some users believe that the reasonable prices will be enough for them to consider switching from similar services such as AWS Fargate.

Other users are more critical, however, especially given that Google Cloud Run is currently only in beta. Some are worried about making the switch, given Google’s track record of terminating services such as Google Reader, as well as their decision to alter prices for the Google Maps API, which effectively shut down many websites that could not afford the higher fees.

Given that Google Cloud Run is in beta, the jury is still out on how well it will perform in practice. Google does not provide any uptime guarantees for cloud offerings before they reach general availability.

The disadvantages of Google Cloud Run will likely overlap with the disadvantages of Google Cloud Platform as a whole. These include the lack of regions when compared with competitors such as Amazon and Microsoft. In addition, as a later entrant to the public cloud market, Google can sometimes feel “rough around the edges,” and new features and improvements can take their time to be released.

Google Cloud Run Alternatives

Since this is a comprehensive review of Google Cloud Run, we would be remiss if we didn’t mention some of the available alternatives to the Google Cloud Run service.

In fact, Google Cloud Run shares some of its core infrastructure with two of Google’s other serverless offerings: Google Cloud Functions and Google App Engine.

  • Google Cloud Functions is an “event-driven, serverless compute platform” that uses the FaaS model. Functions are triggered to execute by a specified external event from your cloud infrastructure and services. As with other serverless computing solutions, Google Cloud Functions removes the need to provision servers or scale resources up and down.
  • Google App Engine enables developers to “build highly scalable applications on a fully managed serverless platform.” The service provides access to Google’s hosting and tier 1 internet service. However, one limitation of Google App Engine is that the code must be written in Java or Python, as well as use Google’s NoSQL database BigTable.

Looking beyond the Google ecosystem, there are other strong options for developers who want to leverage both serverless and containers in their applications.

The most tested Cloud Run alternative: Iron.io

Iron.io is a serverless platform that offers a multi-cloud, Docker-based job processing service. As one of the early adopters of containers, we have been a major proponent of the benefits of both technologies.

The centerpiece of Iron.io’s products, IronWorker is a scalable task queue platform for running containers at scale. IronWorker has a variety of deployment options. Anything from using shared infrastructure to running the platform on your in-house IT environment is possible. Jobs can be scheduled to run at a certain date or time, or processed on-demand in response to certain events.

In addition to IronWorker, we also provide IronFunctions, an open-source serverless microservices platform that uses the FaaS model. IronFunctions is a cloud agnostic offering that can work with any public, private, or hybrid cloud environment, unlike services such as AWS Lambda. Indeed, Iron.io allows AWS Lambda users to easily export their functions into IronFunctions. This helps to avoid the issue of vendor lock-in. IronFunctions uses Docker containers as the basic unit of work. That means that you can work with any programming language or library that fits your needs.

Conclusion

Google Cloud Run represents a major development for many customers of Google Cloud Platform who want to use both serverless and container technologies in their applications. However, Google Cloud Run is only the latest entrant into this space, and may not necessarily be the best choice for your company’s needs and objectives.

If you want to determine which serverless + container solution is right for you, speak with a skilled, knowledgeable technology partner like Iron.io who can understand your individual situation. Whether it’s our own IronWorker solution, Google Cloud Run, or something else entirely, we’ll help you get started on the right path for your business.

Get a Job, Container: A Serverless Workflow with Iron.io

This post originally appeared on DZone

My previous post, Distinguished Microservices: It’s in the Behavior, made a comparison between two types of microservices – real-time requests (“app-centric”) and background processes (“job-centric”). As a follow up, I wanted to take a deeper look at job-centric microservices as they set the stage for a new development paradigm — serverless computing.

Of course, this doesn’t mean we’re getting rid of the data center in any form or fashion — it simply means that we’re entering a world where developers never have to think about provisioning or managing infrastructure resources to power workloads at any scale. This is done by decoupling backend jobs as independent microservices that run through an automated workflow when a predetermined event occurs. For the developer, it’s a serverless experience.

Continue reading “Get a Job, Container: A Serverless Workflow with Iron.io”

Distinguished Microservices: It’s in the Behavior

This post originally appeared on DZone

Microservices is more than just an academic topic. It was born out of the challenges from running distributed applications at scale; enabled by recent advancements in cloud native technologies. What started as a hot topic between developers, operators, and architects alike, is now catching on within the enterprise because of what the shift in culture promises — the ability to deliver software quickly, effectively, and continuously. In today’s fast-paced and ever-changing landscape, that is more than just desirable; it’s required to stay competitive.

Culture shifts alone are not enough to make a real impact, so organizations embarking down this path must also examine what it actually means for the inner workings of their processes and systems. Dealing with immutable infrastructure and composable services at scale means investing in operational changes. While containers and their surrounding tools provide the building blocks through an independent, portable, and consistent workflow and runtime, there’s more to it than simply “build, ship, run.”

Continue reading “Distinguished Microservices: It’s in the Behavior”

Learning from Facebook’s Outage

Making the most of Facebook's outage Thanks to Kārlis Dambrāns for providing the base image. CC BY 2.0

Facebook’s suffered three outages this month; two of which occurred within the span of a week. Ouch. If you know any folks on the FB ops team, now’s a good time to buy ‘em a beer.

Whenever a blip like this appears, it’s a good time for all of us to look at our own infrastructure. Are you prepared?

First things first, what caused the FB outage? Facebook links the most recent to an issue with the Graph API. The September 22nd issue was due to a hiccup with the Realtime Update service. It’s the sort of thing that could happen at any company.

Despite the impact, it’s good to see Facebook has a sense of humor about the downtime. Their response to the update service issue reads, “will post an update here as soon as we know more.” I love the sly wink.

Continue reading “Learning from Facebook’s Outage”

How Omaze Delivers Once in a Lifetime Experiences Using Iron.io and Rackspace DevOps

Blow Sh*t Up with Arnold Schwarzenegger … Be Drawn Into an Episode of the Simpsons … Celebrate the Patriots Victory with Rob Gronkowski.

These aren’t even bucket list items, these are unattainable items. That is, until Omaze gets involved. Omaze is an organization that was founded to drive significantly more money and awareness for deserving causes through the chance to live out dream experiences.

Charities offer up personalized events with their celebrity partners where everyone has the chance to win by donating to the cause. Each experience offers a range of reward levels from signed t-shirts to personalized Skype sessions to Twitter mentions, and once the experience is placed up on the Omaze site, the countdown begins to the winner of the grand prize. The growing number of high profile celebrities participating to provide such unique opportunities begs the question – what’s your dream experience?

Continue reading “How Omaze Delivers Once in a Lifetime Experiences Using Iron.io and Rackspace DevOps”

DockerWorker Unplugged

Today, the world revolves around developers. Digital businesses are becoming a significant part of the landscape. Traditional business thrives on its responsiveness to customers and how it handles business data. People used to talk about the Era of Information Technology, however now we’re in the Era of the Developer.

Fast-moving businesses recognize the need to give developers the tools, platforms, and application services developers require to get things done. Equally important is getting obstructions out of the way of developers and allowing them to move fast. What do developers need to be successful in this modern world? They need self-service, on-demand capabilities, immediate scale, and little to no operations. Simply put, developers want to write code – and do so in a manner that lets them focus on writing code without having to manage tools and infrastructure. The overhead of managing infrastructure or dealing with a mismatch between development and production systems, steals precious cycles from a developer’s main driver – writing code.

Continue reading “DockerWorker Unplugged”