I think the Cloud (IaaS, PaaS, Saas) is very cool. It's changed quite a few things in business, and in many ways, it continues to democratize lots of services and opportunities that used to require large investments. Now more companies and take advantage of the capabilities that they wouldn't have been able to in previous years. In some sense, this is the same as hypervisors allowing many of us to simulate and build large labs of multiple machines for a fraction of the cost that would have been required 20 years ago.
The cloud isn't for everyone, and certainly not for every application, but it can be very useful. I find more and more companies making a move, at least in part, to some cloud service. Often it's AWS, Azure, or Google Engine, but there are plenty of other choices that people use. Whether it's a small PoC, a lift and shift, or complete change to a cloud service, I bet most companies are doing something in the cloud.
And getting surprised at times. There are security issues, and at times, downtime disruptions, but the number one issue I find from most companies is the cost. Yes, the cloud can be inexpensive to get started with, but the costs can quickly grow, often in surprising ways. I ran across a piece on the hidden costs of serverless computing, which is one of the most interesting and exciting ways of building applications. It's also one of the more complex from a pricing model.
The article looks at the various hard costs, many of which may be difficult to estimate. Do many of really know how often someone might trigger some function in an application? If we string together a whole series of these in a serverless fashion, can we be sure of the execution flow, much less count of calls? This doesn't even begin to discuss the development labor side of writing, tracking, understanding how these fit together, and more. I can imagine a situation where serverless functions are never deleted and new ones added because of the fear of breaking some part of an application. Just like applications tend to grow and developers fear touching old code, I wouldn't be surprised to see that happening here.
Since most of these functions will need to touch data at some point, the data store will come into play. Whether this is an RDBMS, like SQL Server, or a NoSQL store, like CosmosDB, certainly we'll find linkages and dependencies that we manage. Perhaps we'll get stuck maintaining APIs in our data stores, and using de-normalized structures to keep multiple copies of data in sync. I wouldn't be surprised to see data transfer costs become an unexpectedly large cost over time, with poorly architected applications, thrown together to meet one tiny request at a time.
I like serverless computing, and for small Proof of Concept (PoC) or IFTT like data flows, simple, narrowly focused applications, this likely works well. Replacing any large scale, complex workflow line of business app? I shudder to think, though the cloud vendors might be thrilled if you try.
Write, format, analyze, and refactor SQL fast with SQL Prompt
Writing SQL is 50% faster with SQL Prompt. Your SQL code can be formatted just the way you like it, you can create and share snippets with your team, and with code analysis you get suggestions to improve your SQL as you type. Download your free trial
How to track every change to your SQL Server database
See who’s changing your database, alongside affected objects, date, time, and reason for the change with SQL Source Control. Get a full change history in your source control system. Learn more
Readers will learn by example how to use Microsoft SQL Server 2016 Integration Services (SSIS) as they design and implement extract, transform, and load (ETL) solutions to support a business application that integrates with a data warehouse and an online Web store across a heterogeneous system. This volume describes proven methods to support common ETL needs, such as databases communicating directly with each other, using files to exchange data, or performing database operations using Web services.
Pick up your copy of this great book today at Amazon today.
Yesterday's Question of the Day
(by Steve Jones):
I need to split a string into separate items. I have a string and some code that I am experimenting with. I don't want to
The STRING_SPLIT() function takes two parameters, a string and a character expression to split the string on. However, the character expression can only be a char(1), varchar(1), nchar(1) or nvarchar(1). Multiple characters are not allowed.
This script creates a stored Procedure for the user named P_BackupAllUsersDatabases.
Using the Select command in conjunction with the existing DBId and Name columns in the Sys.SysDatabase system view is creating a column named command, which is responsible for storing the instructions later used by the Backup Database command.
The result of this Select command is stored in a temporary table called #CommandBackupDatabases, which will later be using within the While execution block.
In this column named Command is specified a default storage location of the backup files defined with the corresponding backup name of concatenated with the. bak extension.
The Master, MSDB, Model, and TempDB system databases are not involved in this backup procedure.
The While execution block is responsible for performing the Backup command set for each database through the command column and its assigned value to a variable named @Command executed through the Exec() command.
The While execution block will run until all of the identified user databases have their backup process run, in the event that any error message stored procedure appears on screen in which line or part of code happened due Error.
Its execution form is quite simple, just use the Exec command accompanied by the name of the User stored Procedure P_BackupAllUsersDatabases, as shown in the example below:
This newsletter was sent to you because you signed up at SQLServerCentral.com.
Feel free to forward this to any colleagues that you think might be interested.
If you have received this email from a colleague, you can register to receive it here.