I’ve been a bit lazy with blogging for half a year or so. Maybe the start of a new year could be the trigger for me to get back into a bit regular blogging again. When writing my previous annual review for 2020, I really thought that the pandemic would be easier during 2021 than it was in 2020. But, little did I know.
I understand that the pandemic has hit others very hard, while others haven’t seen much of a change in their normal life. I am fortunate to be a part of the latter. A part from not being able to go to the gym for long periods and me getting a cotton stick pushed up my nose, there has not been that much of difference.
In fact, as I already wrote in my previous annual review, the pandemic triggered me and my wife to start building a second home for our family. That project has truly filled up the second half of 2021, which is why I’m starting with subjects not related to IT in this year’s review.
Building a House
The house project has really taken up more or less all of my free time. Especially during the last half of 2021 when me and my wife started working on it. During the start of 2021, it was more about planning and permits and stuff. But then in April and May the project started for real with the foundation.
Then, in mid-June we had a team of professionals to assemble the house with log, windows and roofing. From there, me and my wife have been taking care of the rest, with some exceptions. For instance, we have an electrician and a plumber that takes care of those tasks. These are things that I’m not even allowed to do myself.
Even without those tasks, we really have had our hands full with insulation, building interior walls, putting up drywall, plastering, paneling, painting, assembling the kitchen, even more plastering and painting, assembling furniture, and all other stuff that goes into building a house.
Scheduling is Hard
It is coming along quite nicely, I must say. In the beginning, we made some very optimistic schedules. However, we had to ditch those quite early, because they were just too optimistic. I can’t say I’m an expert in building houses after this project, but one piece of advice I can give. If you are building a house for the first time, whatever schedules you have, at least double them, maybe even triple! It just takes way more time than you can imagine.
For instance, when we were designing the kitchen, we thought that we could start assembling that at the end of July or beginning of August. Well, we started assembling the kitchen at the beginning of December.
If I would have known that it takes so much more time before we started, I think I still would have gone through with it. We would just have made more realistic schedules.
Started Working for Integrata
Even back in 2020, I actually started working for another employer. That was in October 2020 when Sininen Meteoriitti, the company I used to work for, sold an entire business unit to Valtti Kumppanit. This meant that me and some 70+ colleagues got a new employer.
But now in 2021, the change was a bit different. This was the first time in my IT career that I in fact changed to an employer that works outside the traditional IT consulting business. I was not actively looking for a new job and was mostly quite satisfied with my work at Valtti.
But I ran into an opportunity I just could not dismiss. I have now been working for Integrata since early November 2021 as a Cloud Architect. So now I work for a company in the Human Resource Management and Payroll fields. My responsibility is to design and build Azure based systems that support Integrata’s vision and enables us to serve our customers in completely new ways.
I’m not doing this all by myself of course. We have a company full of professionals in the payroll and HRM business that are actively taking part in the development. But, at some point we will start hiring more IT people to the cloud team. So, if you want to work with me and interesting Azure stuff, stay tuned. If you follow me on Twitter, you will be notified when an opening is available for application.
Changes in Azure Services
Now this is by no means a complete list of changes that were made to Azure services during 2021. Microsoft publishes an extensive list of all the changes, so that we can be updated of what’s coming. However, the things I’ve listed here below are things that in some was has made an impact on how I view Azure services, and how I tend to design Azure bases systems.
Cosmos DB is till one of my favourite Azure services, and my go-to option for data storage. During 2021 there has been many improvements to Cosmos DB. Here are the ones that I found most useful.
Role-Based Access Control to Data
Cosmos DB now supports granting access to data through roles. For instance, if you have an Azure Functions application, you can assign that application a system assigned identity. You can then grant access to your Cosmos DB data to that identity.
What this means is that you don’t have to store any kind of connection string in your application’s configuration. You just use the Azure AD identity it has been assigned.
Free Tier Gets More Throughput and Storage
Back in March 2020 I wrote about the announcement of a free tier for Cosmos DB. Back then, the free tier included 400 RU/s and 5 GB of storage. While that was a good start, 400 RU/s only takes you so far. You probably still had to provision more throughput for your application. So in practice, you still had to pay something for your free tier Cosmos DB.
Now with this update, the free tier has been extended to 1000 RU/s and 25 GB of storage. That is a pretty decent increase, and makes the free tier so much more useful.
Remember that you still can only have one Cosmos DB account on the free tier for every Azure subscription. If you want to have more free tier accounts, you have to set up and manage more Azure subscriptions.
Cosmos DB Serverless
Even though I think that Cosmos DB has always been cheap, I understand that the lowest price around 20 EUR/month can in some cases be a deal breaker. To deal with this, Microsoft announced the free tier back in March 2020. However, that was, and still is, a bit limited, and may not be suited for all purposes.
Now with the announcement of Cosmos DB Serverless, you get even more options for how to run Cosmos DB. In serverless mode, you don’t provision any throughput for your account. Instead, you Cosmos DB instance will scale up when it becomes more loaded, and scale back down when there is less or no load coming in.
If your application tends to be more periodic in the way it uses the database, or if you have big time windows when you are not using all or most of the provisioned throughput in your Cosmos DB account, you might find Cosmos DB serverless a more cost efficient option.
The pricing is based purely on the resources your application uses. The prices below are as of January 2022.
- 1 million request units (RUs): 0,31 EUR
- 1 GB storage: 0,25 EUR / month
Previously, you could order your SQL queries in Cosmos DB with the
ORDER BY clause using only one property. So, you could not for instance write a query like
SELECT * FROM c order by c.lastName ASC, c.age DESC.
Now with composite indexes you can. You just have to specify the composite indexes your application will be using when querying data.
Read more about Composite Indexes in Cosmos DB.
Wildcare Queries With the LIKE Keyword
This is actually something I have missed. It wasn’t until I researched for this article that I discovered this. You can run wildcard queries using the LIKE keyword, must like you have been able with SQL Server for like ages.
Read more about the SQL query keywords that Cosmos DB supports.
Partial Document Updates
Until now, the only way to update a document in Cosmos DB has been to first download the entire document, then make the necessary changes to it, and upload the entire document back to Cosmos DB.
With the support for partial updates, you can now update only the parts of a document that have changed, and leave the rest of the document intact. Some of the possible use cases this enables are:
- Update one single property
- Delete a single property
- Insert a new item into an array
- Delete one item from an array
- Increment or decrement the value of a property
These are just a few examples to get you going. Some of the first benefits that come to mind are:
- Less data sent over the network, when you have to neither download or upload the entire document
- Avoiding conflicts if two clients are updating different parts of a document simultaneously
Another benefit that I first though of was that you may also be using less request units, but this is not mentioned anywhere as a benefit. Probably Cosmos DB is still using more or less the same amount of RUs to actually modify the document.
App Service and Azure Functions
Azure Functions is another Azure service in my generic toolbox. An Azure Functions application is so versatile. It can be anything from a background process to an HTTP REST API. Since Azure Functions run on App Service, all of the changes in App Service also apply to Azure Functions. That’s why I’ve included those updates here too.
Support for .NET 6.0
.NET 6.0 is now supported in App Service. This means that you can build any application that runs on App Service using .NET 6.0. This includes also Azure Functions. However, if you are building your Azure Functions application with the Durable Functions extension, you should keep in mind, that only the In-process mode currently (January 2022) supports Durable Functions. If you don’t use Durable Functions, you can run your Azure Functions application on both isolated process and in-process.
For more information about .NET 6.0 support in App Service and Azure Functions, check out the following links.
- Azure Functions 4.0 and .NET 6 support are now generally available
- .NET 6 on App Service
- .NET on Azure Functions Roadmap
Free SSL Certificate
Previously, the only way to get a free public certificate to enable SSL on your website running Azure was to use Let’s Encrypt and the Let’s Encrypt Site Extension. I’ve configured numerous sites with that extension. As long as it works, it works very well, but too many times have I missed a certificate update and ended up with an expired certificate on my site. I don’t know why the extension sometimes stops updating the certificates.
Luckily, you now have another option to get a free certificate for your website running on App Service.
Some very interesting updates to Azure Storage accounts where announced last year. Here are some picks.
FTP and SFTP are old standards for file transfer, and still going strong in many use cases. For instance, file-based integration between organizations and systems very often use FTP/SFTP.
Still, these protocols have not been supported in Azure, until now. Blob storage now supports SFTP, which means that you can use your favourite SFTP clients to transfer files to blob store in an Azure Storage account.
Please note that this is currently (January 2022) in preview, and only available in selected regions. There are many regions at least on Europe and North America, and a few others, so you should be covered. At least to the extent that you can run some preliminary tests. Remember the preview services should not generally be used for production workloads.
Blob Index Tags
Here’s one that I’ve completely missed previously. Adding tags to your blobs in a storage account. With this update you can add key-value pairs to your blobs, and use them when querying for blobs later on. You don’t have to keep a separate index of your blobs in another storage no longer.
How many times have I not stored blobs in a blob container and try to figure out some kind of mechanism to be able to find them later on. Now with blobb index tags, I don’t have to take care of that anymore. How cool is that.
In short, it has been a very interesting year. I am thankful for that, because I know that for many others, 2021 has been very devastating because of the pandemic still going strong.
I am looking forward to spending the first night in the house we are building. That night is not that many weeks away now. We already have the kitchen assembled and many of the appliances connected. Last week we got the first toilet installed, and in roughly 2-3 weeks, the bathroom should be usable. Perhaps not completed, but available at least for showering.
Working at Integrata has proven to be perhaps even better than I expected. We are about to start beta testing the first new kind of service that I’ve been working on. Later during the spring or close to summer, I hope we can start building up the team around these new services, which means that we will most likely start hiring more developers. If you are interested in working with Azure development outside the IT-business, stay tuned. Follow me on Twitter, and you won’t miss the day when we start hiring.
And finally, I really hope this annual review ends my too long period of no blogging. Have a very interesting and prosperous 2022, and be safe!