CloudProfs Issue 2: Stack Overflow survey, Spring strategy

Read the full second issue of CloudProfs (August 6) in browser here.

News

Gartner’s Magic Quadrant for IaaS + PaaS 2021 finds the same suspects at the top right of the graph – Amazon Web Services, Microsoft Azure and Google Cloud, marking the latter’s fourth foray into the leadership zone. No vendors were added or dropped, showing a clear sign of a near-saturated market. AWS, furthest top and right, was praised by the analyst firm for its engineering supply chain and pace-setting innovation, but cautioned against ‘bare-bones offerings’ among its newer services, arguing AWS Outposts has experienced ‘modest traction to date.’ Read the full doc here (no email required).

A few interesting stats from a CircleCI survey on how business leaders and engineers approach CI/CD. The survey, which polled more than 2,000 US/UK respondents, found that for more than a third of those polled, more than half of their leadership teams were skilled software developers and engineers. Yet 52% of that number do not allow their software developers to choose their own tools. Only 30% of those polled are prioritising DevOps, and only 15% are utilising CI/CD. The report can be found here (email required).

AWS Wavelength is now available in Chicago, Houston and Phoenix. The service, which enables delivery of ultra-low latency applications for 5G devices is now available in 13 major US cities. Elsewhere, a total of 79 new resource types have been added to the CloudFormation Registry, leading to greater predictability and reliability.

Research analysis

The Stack Overflow 2021 Developer Survey dropped this week. Of the more than 80,000 users surveyed, AWS remains top in cloud platform usage, with 54.22% of all respondents citing it. In a potential surprise Google Cloud Platform (GCP), used by 31.05% of users, scored higher than Azure (30.77%), though for professional developers, Azure beat out GCP (32.49% v 29.66%). Heroku (24%) and DigitalOcean (17.67%) also scored solidly among all respondents.

For programming languages, JavaScript hits top spot for the ninth year running, cited by just under 65% of respondents. HTML/CSS scored 56.07% in second, while Python has risen to third at 48.24% ahead of SQL (47.08%). Java drops from 40.2% in 2020 to 35.35% this year.

The survey questions distinguished between popularity and usage, assessing platforms and languages by most loved. AWS was the most loved, with a 66.5%/33.5% split, while GCP, Azure and DigitalOcean had almost equal levels of love (59.65%/59.23%/58.85%). The survey also found a ‘large influx’ of AWS developers (8,586) wanting to develop in Google Cloud next year.

Analysis: So why does Google Cloud garner more of a response than Azure? Indeed, why, in another question, do more respondents express an interest in developing with GCP (22.56%) over Azure (21.12%) in future? For a start, Google’s strength in machine learning – something which is regularly cited by the company, most recently in its Q2 earnings last week – will be an obvious pull factor for developers.

The corollary to this is Google’s continued requirement for greater strength in the enterprise. As The Register puts it, there is ‘no contradiction’ in these findings; the conclusion that bigger enterprise accounts have a stronger preference for Azure than GCP makes sense. This may explain why Google Cloud’s score is bumped up by non-professionals, such as students and hobbyists. That said, Gartner in its Magic Quadrant for IaaS + PaaS noted that GCP is ‘making gains in terms of mind share with enterprises.’

Protocol sounds a note of caution given the close scores between the two clouds: given the continued push for multi-cloud architectures, expect these rankings to fluctuate. “Developers might love BigQuery for machine learning research, but use Azure to run most of their applications.”

This is the first time Stack Overflow has broken out cloud platforms as a specific option. You can read the full report (pdf, no sign-up required) here.

Tutorials: Azure DevOps Pipelines, Bridge to Kubernetes

A couple of interesting how-to’s this week.

First, Thomas Thornton’s tutorial on conditional variables in Azure DevOps Pipelines. The steps are below:

  1. The parameter ‘environment’ will be asked at run-time
  2. Add variables. ‘Depending on the value of parameter.environment will decide which of alpha, beta or charlie will be set to the variable.teamName. Note in lines 21-22 the use of ‘if notIn’ rather than ‘if’ as a catch-all
  3. Depending on the parameter.environment name, the stage will echo the required variable

The full code is below, which can also be found at GitHub.

pool:
vmImage: ubuntu-18.04

parameters:
- name: environment
displayName: Which Team to deploy?
type: string
default: 'developer'
values:
- developer
- preproduction
- production

variables:
- name: teamName
${{ if eq( parameters['environment'], 'developer') }}:
value: "alpha"
${{ if eq( parameters['environment'], 'preproduction' ) }}:
value: "beta"
${{ if notIn( parameters['environment'], 'developer', 'preproduction') }}:
value: "charlie"

stages:
- stage: TeamToDeploy
jobs:
- job: Example
steps:
- task: Bash@3
displayName: TeamDeployed
inputs:
targetType: inline
script: |
echo ${{variables.teamName}}

Next, Thorsten Hans outlines how to debug applications once they have been deployed to Kubernetes with Bridge (Bridge to Kubernetes).  As the tutorial outlines – which in this demonstration aims to debug an API written in Go – the tool utilises common patterns and practices to get everything running, though it is worth noting the project is still in active development, so limitations remain. The steps are:

  • User is prompted to select the Kubernetes Service that should be replaced, and local port that should be used for debugging session
  • Bridge replaces the containers in the pods on the cluster with a ‘remote agent’ to forward route traffic to local machine
  • Bridge starts kubectl port-forward to allow network traffic flowing between the port (specified in step 1) on your local machine and the ‘remote agent’
  • Bridge attaches variables to IDE/editor
  • The local host file gets updated to map cluster services to your local IP addresses
  • Bridge starts application or microservice locally and attaches the debugger. Local processes which may be running to allocate specified ports for traffic routing, will be terminated by Bridge

You can take a look at the Bridge project roadmap on GitHub.

Other useful resources:

Azure Pipelines vs. GitHub Actions: Key Differences (beginner/intermediate). Both Azure Pipelines and GitHub Actions look to automate software workflows. But why should you choose one over the other? If you want to go in the other direction, check out migrating to GitHub Actions in GitHub Docs
Solving the Problem of Persistent Volume Management and Expansion in Kubernetes with Azure Kubernetes Service (intermediate/advanced). How to use Azure Disk as an expandable storage medium for applications running in Kubernetes
Encryption fundamentals with AWS KMS and CloudHSM (intermediate/advanced). If you are looking for information on AWS access to encryption keys, writes Graham Thompson, you’ll be looking for a while. This article aims to shed light on this topic.

Case study: How Swiss Re was able to leap into Spring

In a webinar broadcast this week, Jonathan Jones, lead solutions architect, group finance IT at Swiss Re, one of the largest global reinsurance providers, walked through how the company uses Azure Spring Cloud to simplify development and deployment for mission-critical Spring Boot apps.

The company had been working on its cloud-native architecture for 18 months. Its stack looked like the following: existing group finance systems running on an on-premises mainframe, a mixture of COBOL, DB2 and Java batch running on IBM WebSphere Application Server for z/OS. There were also various web applications and APIs predominantly built in Spring Boot and running in Swiss Re’s private cloud.

“We already had strong competence with Java given existing Spring Boot applications; we were fairly mature with our continuous integration approach… but we did suffer some performance issues,” said Jones. “The volume of data submitted from our legal entities had grown over time and the system performance was probably lagging a little bit behind.”

In flight, there were a handful of new products which the inexperienced team needed testing, including Cloudflare. ‘Modest’ upscaling was required in products such as Azure Active Directory. But the goals of the migration project were simple and outcome-focused. “The main one was to keep it simple,” said Jones. “We have a lot of complexity to build in the applications and with our data processing, and we did not want [another complexity to be] running reliable Spring Boot applications.”

One phrase which stood out from Jones was the need for an ‘unremarkable architecture.’ “We wanted the path as much as possible, and leave the complexity to Microsoft,” said Jones. “We definitely didn’t want to get burdened with the operational side of running Spring Boot applications.”

Security and integration were also seen as key goals, alongside operations. “We wanted some ownership of the full stack and the ability to pivot without cross-team involvement, service requests, mass amounts of coordination,” said Jones.

Utilising a platform-as-a-service meant that there was ‘very little operational work to do’, befitting a key benefit to a new architecture. “I think we also understand more of what’s happening now because we roll out our infrastructure ourselves,” added Jones. “We don’t feel overwhelmed by this but it feels [like] it’s an advantage. We feel a good sense of ownership.”

Spring made it into the top 10 this year among the most used frameworks according to the Stack Overflow 2021 Developer Survey. It is also something of a siloed framework; while there are not many who wish to jump across and work in Spring, its developers are content to continue working there.

BONUS LINK: How to create API-first services with Spring Boot. Daniel Kocot of Codecentric outlines how to create a Spring Boot service that will deliver a list of news items via an API with the endpoint /api/news.

The week’s top podcasts

Another week, another Azure certification guide: The Azure Security Podcast this week looks at various certifications, with co-host Sarah Young and Yuri Diogenes, Principal Program Manager at C+AI Security CxE Team, discussing the upcoming study guide for SC-200: Microsoft Security Operations Analyst. (Azure Security Podcast)

Paul Marsicovetere, senior cloud infrastructure engineer at Formidable, on how the incidents you cause yourself are the ones you learn the most from:

“We had our Nginx nodes in an [auto scaling group]. [We] deploy the nodes, the health check of the ASG was green for the new nodes, instances were up, and I’m like ‘cool, job done, let’s scale down the old nodes.’ And it had to be less than 10 seconds, the pager just starts going crazy, every site is offline and unreachable. I guess the one good thing [was]… I knew straight away what the problem was. It was my Nginx push, clearly.

“At Benevity we kind of followed a fail forward approach, but this time we didn’t really have time or space to do that, or error budget, because the sites are offline now. So we just said – let’s roll back to the last known good image, but unfortunately we’re only about four to five months into AWS, so we didn’t have everything in every roll back processing place.”

Listen to the full interview – and how the problem was solved – here. (Break Things on Purpose)

Michael Levan, researcher and consultant at GigaOM, on advantages and disadvantages for cloud development kits (CDKs), and moving from a tool like Terraform to a CDK:

“I think Terraform at this point is definitely the standard, for sure. It’s also one of those things as well – I hate to say it, but this is the truth – almost what’s shifting the direction that we’re going in right now is what’s sexy, right? Terraform is the sexy thing right now, whereas JSON and CloudFormation is not.

“I’m not recommending anything to anybody that’s vendor lock-in right now; we don’t and we shouldn’t live in a world where [you’re] only going to put everything on Azure and that’s going to be it for the rest of [your] life. You should be thinking about hybrid cloud with stuff on-prem. You should be thinking about multi-cloud.

“When you’re thinking about infrastructure as code… if you’re going cross-platform, you’re going to have to rewrite the Terraform code because the providers of the resource are going to be different. But here’s the kicker: somebody is already going to know HCL [HashiCorp Configuration Language], and because they know HCL, they can go and they can write versus ARM.” (Day Two Cloud)

Thoughts on product iterations: Savitha Raghunathan, senior platform engineer at MathWorks, talks Kubernetes 1.22 (Kubernetes Podcast), while Rob Hirschfield, CEO and co-founder of RackN, talks Red Hat changes to CentOS and how it will affect the community. (TFIR)

Leave a Reply

Your email address will not be published. Required fields are marked *