Last Week
Last Week is a weekly column with an emphasis in articles and posts that I read and appreciated, it is a collection from a dozen of different sources. All the content shared is made by people which I believe that would highly appreciate your feedback, so don't forget to say thank you.
If you have a topic you would like to see reflected in this Last Week initiative, please leave a comment below!
Have an amazing week and always keep learning!
Azure
Well-Architected Branches for Assessing Workload-Types
Microsoft offers prescriptive guidance called the Well-Architected Framework that optimizes workloads implemented and deployed on Azure. This guidance has been generalized for most workloads and creates a basis for reliable and secure applications that are cost optimized.
We have begun to build on this base content set to include more precise guidance for specific workload types, such as machine learning, data services and analytics, IoT, SAP, mission critical apps, and web apps. Machine Learning was the first branch from the base content, which came into fruition in the Fall of 2021.
Azure oriented prescriptive guidance needs to consider multiple dimensions of the workload type. Thus, these branches are developed by teams across Microsoft, including those that are customer-facing, partner-facing, product teams, and content teams.
Check out the article: Well-Architected Branches for Assessing Workload-Types
5 reasons to attend the Modernize and Migrate with Hybrid Cloud Flexibility digital event
Are you looking to modernize your applications and data and migrate your workloads to cloud? To provide you insights and guidance directly from Azure customers, experts, and engineers, we will be hosting Modernize and Migrate with Hybrid Cloud Flexibility digital event on Wednesday, April 13, 2022, from 9:00 AM to 11:00 AM Pacific Time.
Here are five reasons to attend Modernize and Migrate with Hybrid Cloud Flexibility digital event.
Check out the full article: 5 reasons to attend the Modernize and Migrate with Hybrid Cloud Flexibility digital event
Azure HBv3 VMs for HPC now generally available with AMD EPYC CPUs with AMD 3D V-Cache
Azure HBv3 virtual machines (VMs) are now upgraded to and generally available with AMD EPYC 3rd Gen AMD EPYC™ processors with AMD 3D V-Cache™ technology, formerly codenamed “Milan-X”, in the Azure East US, South Central, and West Europe regions. In addition, we are announcing that HBv3 VMs will also soon come to Central India, UK South, China North 3, Southeast Asia, and West US 3 Azure regions. Customers can view estimated time of arrival for these new regions at Azure Availability by region.
Check out the article: Azure HBv3 VMs for HPC now generally available with AMD EPYC CPUs with AMD 3D V-Cache
Update your Azure App Service apps to use Microsoft .NET 6 before 3 December 2022
On 3 December 2022, extended support for Microsoft .NET Core 3.1 will end.
After that date, your applications that are hosted on App Service will continue to run and your existing workloads will not be impacted. However, we'll no longer provide patches or customer service for .NET Core 3.1.
Check out the article: Update your Azure App Service apps to use Microsoft .NET 6 before 3 December 2022
Public preview: User-assigned managed identities in Stream Analytics
Stream Analytics allows you to use user-assigned managed identity as an authentication mode when connecting to inputs and outputs. This solves a common challenge when building cloud applications related to credential management. Keeping the credentials secure is important and shouldn't be stored in developer workstations or checked into source control. User-assigned and system-assigned managed identity support in Stream Analytics solves this problem.
Check out the article: Public preview: User-assigned managed identities in Stream Analytics
Generally available: Azure Data Explorer supports multiple databases per data connection
As part of creating an Event Hub/IoT Hub/Event Grid data connection to Azure Data Explorer cluster, you specify the default table to which the ingested data goes. So far, the target database was always the database associated with the data connection.
Now, you can dynamically route the data to an alternate database, by setting the Database ingestion property. For security reasons, this option is disabled by default. To send the data to a different database, you must first set the connection as a multi-database data connection.
Check out the article: Generally available: Azure Data Explorer supports multiple databases per data connection
What’s new in the Azure Functions Tables extension for .NET **Beta**
Previously, the Azure Tables bindings for .NET were available as part of the Microsoft.Azure.WebJobs.Extensions.Storage package (version 4 and earlier). Version 5 of the storage extensions package no longer contains the Tables bindings. Instead, the Tables bindings are available in a new package called Microsoft.Azure.WebJobs.Extensions.Tables, which is now in beta. Like the other new Azure Functions extensions for Storage, Event Hubs, and Service Bus, the new Tables extension supports integration with Azure.Identity.
Check out the article: What’s new in the Azure Functions Tables extension for .NET **Beta**
dotnet / C#
.NET 5.0 will reach End of Support on May 08, 2022
.NET 5.0 will reach end of support on May 08, 2022. After the .NET May updates, Microsoft will no longer provide servicing updates, including security fixes or technical support, for .NET 5.0. You’ll need to update the version of .NET you’re using to a supported version (.NET 6.0) before this date in order to continue to receive updates.
Check out the full article: .NET 5.0 will reach End of Support on May 08, 2022
Announcing .NET 7 Preview 2 – The New, ‘New’ Experience
Today, we are glad to release .NET 7 Preview 2. The second preview of .NET 7 includes enhancements to RegEx source generators, progress moving NativeAOT from experimental status into the runtime, and a major set of improvements to the “dotnet new” CLI experience. The bits are available for you to grab right now and start experimenting with new features.
Check out the full article: Announcing .NET 7 Preview 2 – The New, ‘New’ Experience
ASP.NET Core updates in .NET 7 Preview 2
.NET 7 Preview 2 is now available and includes many great new improvements to ASP.NET Core.
Here’s a summary of what’s new in this preview release:
- Infer API controller action parameters that come from services
- Dependency injection for SignalR hub methods
- Provide endpoint descriptions and summaries for minimal APIs
- Binding arrays and StringValues from headers and query strings in minimal APIs
- Customize the cookie consent value
Check out the full article: ASP.NET Core updates in .NET 7 Preview 2
Use Azure DevOps Pipelines to automate EF Core Scaffold
This article covers the implementation of a CI/CD flow to automatic generate scaffoldings for a Database project. The entire use case is built over Azure DevOps, and the database deployment is made on Azure SQL Database. The flow is based on a regular development over a Database Visual Studio project, which is fully automated on deployment, and integrates with a .NET 6 Library which contains the scaffolding context and entities with EF Core 6.
Check out the full article: Use Azure DevOps Pipelines to automate EF Core Scaffold
Performance benefits of sealed class in .NET
By default, classes are not sealed
. This means that you can inherit from them. I think this is not the right default. Indeed, unless a class is designed to be inherited from, it should be sealed
. You can still remove the sealed
modifier later if there is a need. In addition to not be the best default, it has performance implications. Indeed, when a class is sealed
the JIT can apply optimizations and slightly improve the performance of the application.
Check out the full article: Performance benefits of sealed class in .NET
React
The React Cheatsheet for 2022
Do you want to get up to speed with React as quickly as possible?
I’ve put together a super helpful cheatsheet to give you a complete overview of all of the React concepts you need to know in 2022. Let’s get started!
Check out the article: The React Cheatsheet for 2022
Idiomatic Redux: Designing the Redux Toolkit Listener Middleware
A dive into how we designed the API for the new RTK listener middleware
Check out the article: Idiomatic Redux: Designing the Redux Toolkit Listener Middleware
Hooks Considered Harmful
Oh, hooks!... I still remember seeing the presentation in 2018 when Sophie Alpert and Dan Abramov introduced them at React Conf. I was blown away, well, everybody was. It was such an innovative API that it took the frontend world by storm. Functional components with an easy way to separate stateful logic from rendering logic 🤯 . Did we achieve functional programming nirvana?
After several years of using them, I would love to share the dangers I encountered using hooks. I do not exaggerate when I claim that I find a dozen of hooks-related problems every single week while reviewing code. Most of those issues never manifest to the end-user, but incorrect code that is not a bug today will, eventually.
Check out the article: Hooks Considered Harmful
How many re-renders is too many?
The number of re-renders is a poor performance metric. The long tree of React components that only return JSX can be re-rendered many times without any performance issues. On the other hand, one component performing a slow calculation on render can create a performance bottleneck on the very first mount.
Check out the article: How many re-renders is too many?
Software Architecture
Refactor → Organisation
In this blog post, rather than focus just on the technical challenges, I want to share:
- Some of the organisational history that led to WebCore
- How we went about re-organising for success
- How we viewed the team topologies and interaction modes between teams
- How we view the role of the platform (and the Core teams who build it) in enabling many teams to interact with one another
Check out the full article: Refactor → Organisation
How To Build Sustainable Serverless Applications!
Sustaining is the process of keeping something going for a prolonged period by nurturing it with a continuous provision of nourishment to ensure its growth and existence.
Check out the full article: How To Build Sustainable Serverless Applications!
Cascading failures in large-scale distributed systems
Internet service providers face the challenge of growing rapidly while managing increasing system distribution. Although the reliable operation of services is of great importance to companies such as Google, Amazon and Co., their systems fail time and again, resulting in extensive outages and a poor customer experience. This has already affected Gmail (2012) [1], AWS DynamoDB (2015) [2], and recently Facebook (2021) [3], to name just a few examples. In this context, one often encounters so-called cascading failures causing undesirable complications that go beyond ordinary system malfunctions. But how is it that even the big players in the online business cannot completely avoid such breakdowns, given their budgets and technical knowledge? And what are practical approaches to risk mitigation that you can use for your own system?
Check out the full article: Cascading failures in large-scale distributed systems
How to implement security for microservices
One common argument that people bring against the microservices architecture is that it increases the security risk of the application by expanding the risk surface. This is true in the sense that when we have more microservices exposing functionality to external consumers, we have to protect each service from external consumers. In a monolithic application, we could have most of these functionalities as internal programs which are not exposed to external consumers.
Check out the full article: How to implement security for microservices
How sharding a database can make it faster
Databases are now given an enviable amount of attention since they manage a company’s most important property: data. Just 30 years ago, most data was stored on paper, magnetic tape, or some type of disk, and as we were producing and consuming smaller amounts of data on a per capita basis, we could still efficiently store, manage, and access it.
However, data tells an entirely different story today. Smartphones have become increasingly necessary and ubiquitous. With smartphones came apps that increased the amount of data we consume and produce to levels unconceivable just 15 years ago. This has put great stress on database clusters, as they need to handle larger and larger amounts of traffic, with some top websites and services receiving billions of visits every week.
Check out the full article: How sharding a database can make it faster
How to design better APIs
15 language-agnostic, actionable tips on REST API design.
Check out the full article: How to design better APIs