Cloud Development

Thoughtfully leveraging cloud technologies reduces time to market, increases the reliability of software systems, and eases software maintenance and operations.

Software teams with cloud development expertise can operate under a self-service model. This relieves their dependency on operations teams for infrastructure modifications. Additionally, adoption of managed cloud services reduces operational burden and development time. This frees up software teams to focus on business logic and user value.

 

What is Cloud Development?

Cloud Development refers to the creation of custom software systems using on-demand infrastructure that is rented from 3rd party vendors. Cloud vendors offer a combination of networking, compute, and managed software services that are billed based on usage. Software engineers with cloud development expertise can architect, configure, and integrate cloud services to deliver business value efficiently. Cloud development enables teams to operate the software they build, which drives software delivery performance.

 

Cloud Computing Models

There are four main models for delivering cloud services, each with different levels of control and customer responsibility.

Infrastructure-as-a-Service (IaaS) Providers

Infrastructure-as-a-Service (IaaS) providers allow for customization of low-level infrastructure, like network addresses and specific hardware configurations. Examples of IaaS providers are:

  • Amazon Web Services (AWS)
  • Google Cloud Platform (GCP)
  • Microsoft Azure

Platform-as-a-Service (PaaS) Providers

Platform-as-a-Service (PaaS) providers take care of low-level infrastructure configuration and streamline the application deployment process. Examples of PaaS providers are:

  • Heroku
  • EngineYard
  • Google App Engine
  • AWS Elastic Beanstalk

Software-as-a-Service (SaaS) Providers

Software-as-a-Service (SaaS) providers convey access to software products through a subscription. Cloud development may involve integration with SaaS providers. Examples of SaaS providers are:

  • Twilio
  • Segment
  • GitHub
  • Okta

Function-as-a-Service (FaaS) or Serverless Providers

Function-as-a-Service providers make compute resources available for short periods of time (seconds or minutes). These resources can execute code written in most programming languages. This is sometimes called a “serverless” model because customers need not configure long-running servers. Examples of FaaS providers are:

  • AWS Lambda
  • Google Functions
  • Azure Functions

 

Why is it important?

Ultimately, cloud development is important because it contributes to business agility. Business agility is the ability for organizations to detect and respond to changes in the marketplace effectively. Cloud development contributes to business agility by enabling the retirement of data centers, speeding up application development, and supporting service levels suitable for nearly all businesses.

Retiring Data Centers

Cloud development frees companies from commitments. Cloud services require low upfront capital investments. This removes the need for cyclical data center purchasing decisions which require careful forecasting and contract negotiation. Additionally, IT operations teams are freed from the responsibility of maintaining hardware that can lead to critical outages.

Speeding Up Application Development

Cloud infrastructure can be provisioned and deprovisioned in seconds. This supports rapid iteration by development teams and faster time to value. Cloud managed services provide developers with access to common tools like caching, email delivery, and database storage without creating an operational burden. Cloud providers also offer robust data infrastructure that aggregates disparate data so that it can be queried.

Supporting High Service Levels

Cloud infrastructure supports greater service reliability than most companies could afford to achieve on their own. Software teams capable of cloud development can take advantage of multiple availability zones, cross-region deployment, and automated failover to meet their promised service levels.

 

How do we do it?

Cloud development is a needed capability of product teams, but not all teams require the same depth or breadth of knowledge. We offer a tailored approach that fits the strengths and opportunities of the teams we work with. Typically, Stride engineering teams set up, manage, and develop cloud services. However, when a high degree of cross-team architectural coordination and decision-making are required, Stride provides a dedicated cloud architect.

As we partner together, expect Striders to:

  • Favor existing compute models: Mixing compute models can lead to toil. We favor using your existing compute model unless a compelling reason suggests otherwise.
  • Encourage Infrastructure-as-Code practices: Immutable cloud infrastructure and automated infrastructure deployments yield platform stability. We write infrastructure code to achieve greater stability.
  • Advocate for self-service rather than service desk solutions: Operational bottlenecks, like service desk requests, can slow down development. We leverage cloud tools to develop systems that collaborators can use without opening support tickets.
  • Improve continuous delivery: Supporting continuous delivery through deployment automation, smoke tests, and zero downtime deployments is an engineering priority.
  • Evaluate managed service options: When integrating SaaS tools we collaboratively assess service providers and document our findings in architecture decision records (ADRs).

 


 

Fill out the form below to speak with a Stride representative about our cloud development capability.