Stress test your cloud applications with Azure Chaos Studio
Azure Chaos Studio makes it possible to stress test your applications directly from Azure, and can significantly help in your business continuity and disaster recovery (BCDR) strategies.
Azure Chaos Studio is a new service in Azure that allows you to test and improve the reliability of your applications. With it, teams can quickly identify weak spots in their architecture, addressing the enterprise goals of business continuity and disaster recovery (BCDR).
Subjecting applications to real or simulated faults allows observing how applications respond to real-world disruptions.
Running chaos experiments used to be a complex task and required deploying very complex workloads. But with Chaos Studio it just became less complex, due to its availability from the Azure portal.
Chaos engineering is a practice that helps teams measure, understand and improve their cloud applications by submitting those application to failures in controlled experiments. This practice helps identifying weak spots in your architecture, which if fixed, increases your service resilience.
Why Chaos Engineering?
The problem that Chaos Studio tries to solve is not new. Disaster recovery and business continuity are usually treated very seriously by organizations as outages can significantly impact reputations, revenues, and much more.
That said, practicing chaos engineering is a must for organizations actively working on business continuity and disaster recovery (BCDR) strategy. These drills ensure that applications can recover quickly and preserve critical data during failures.
Another important factor to consider is high availability (HA). Chaos Engineering helps validating application resilience against regional outages, network configuration errors, high load, and more.
Features
Some of the most interesting features provided by Azure Chaos Studio are:
Test resilience against real-world incidents, like outages or high CPU utilization
Reproduce incidents to better understand the failure.
Ensure that post-incident repairs prevent the incident from recurring.
Prepare for a major event or season with "game day" load, scale, performance, and resilience validation.
Do business continuity and disaster recovery (BCDR) drills to ensure that your application can recover quickly and preserve critical data in a disaster.
Run high availability (HA) drills to test application resilience against region outages, network configuration errors and high stress events.
Develop application performance benchmarks.
Plan capacity needs for production environments.
Run stress tests or load tests.
Ensure that services migrated from an on-premises or other cloud environment remain resilient to known failures.
Build confidence in services built on cloud-native architectures.
Validate that live site tooling, observability data, and on-call processes still work in unexpected conditions.
How to get started
Getting started with Azure Chaos Studio is simple, just log into your Azure Account and follow these steps.
Grafana, the most popular open-source analytics visualization tool is now
available on Azure as a managed service. With it, customers can run Grafana natively within the Azure cloud platform without needing to provision or managing the backend services needed to run it.
Why use Grafana?
With Grafana, users can bring together logs, traces, metrics, and other
disparate data from across an organization, regardless of where they are
stored. With Azure Managed Grafana, the Grafana dashboards our customers are familiar with are now integrated seamlessly with the services and security of Azure.
Features
Azure Managed Grafana is a fully managed service for analytics and monitoring solutions. It's supported by Grafana Enterprise, which provides extensible data visualizations. Quickly and easily deploy Grafana dashboards with built-in high availability and control access with Azure security.
Azure Managed Grafana also provides a rich set of built-in dashboards for various Azure Monitor features to help customers easily build new visualizations. For example, some features with built-in dashboards include Azure Monitor application insights, Azure Monitor container insights, Azure Monitor virtual machines insights, and Azure Monitor alerts.
How to get started
Getting started with Grafana on Azure is easy. Here are some links you should check:
Depending on your preconceptions, Vim may look exotic or sexy. Let's review
those assumptions and provide rational reasons to use this fantastic text
editor.
It may be possible that you heard about Vim. It may be possible that you didn't. Depending on your background, it may
even be possible that have preconceptions about it. On this post, let's try
to review all assumptions and provide concrete reasons to use this fantastic
text editor.
This article is an adaptation of another publication made by me on
Vim4us. I'm
re-publishing here to a wider audience with a few tweaks.
Vim is ubiquitous
Vim has been around for almost thirty years. Due to its simplicity, ubiquity and low resource requirements, it's the
preferred editor by sysadmins worldwide.
Easy to install
Vim is also easy to install on Windows and Macs and is packaged in most Linux
distros meaning that, even if it isn't installed in your system, Vim is one
line from the terminal and two clicks from your software manager.
Vim is lightweight
Differently from most editors, Vim is very lightweight. The installation
package is only 10 Mb and depending on your setup, memory consumption
reaches 20 Mb. Compare that with most text editors, especially the Electron-based editors like Visual Studio. Install size is not less than 200Mb, memory consumption
quickly 1Gb (50 times more!) while requiring 1.5Gb of storage, making it slow, even on modern hardware.
If you're running a Mac, a low end computer, a phone, or even a Raspberry Pi, Vim is definitely a good option for you.
Vim is stable
As previously said, Vim has been around for almost 30 years. And will probably
be for at two more decades. Learning Vim is an excellent investment as you
will be able to use your knowledge for the next two decades at least.
Vim works well with anything you want, as long as it's text. Vim works by
default with most file formats, has locales, can be localized, supports
eastern typography such as Arabic and Hebrew and comes with built-in support
(including highlighting) for most languages.
Vim respects your freedom
Vim does not contain any built-in telemetry. It's (unfortunately) common theses days the companies are abusing your
statistics in favor of improvements in their system.
Sysadmins trust that Vim will not be reaching the network to run ad-hoc
requests.
Vim is efficient
Vim is brilliant in how it optimizes your use of the keyboard. We'll talk
about that later but for now, understand that its combination of multiple
modes, motions, macros and other brilliant features makes it literally
light-years ahead of other text editors.
Thriving Ecosystem
Stop for a second and think about which feature you couldn't live without
today on your current text editor? The answer you probably be that Python or Go extension, meaning that what you'll miss is not actually about the
editor but about its ecosystem.
Vim has a brilliant ecosystem. You'll find thousands of extensions covering
anything you need. You can also host your extensions anywhere (on GitHub, for example) without being locked by any vendor. You could also host them
in private/corporate repos just for your team or share on public directories
like Vim Awesome.
Vim is ultra-customizable
Even if by default Vim has most of what you need, it's important to understand
that Vim lets you change pretty much everything. For example, you can make
temporary/local customizations (by using the Ex mode), permanent
customizations (by changing your .vimrc) or even customizations based
on file type.
Vim is always getting better
Vim is actively developed meaning that it keeps getting better. Vim users get security patches
and new features all the time. Vim is also updated to accommodate the latest
upgrades on modern operating systems while also supporting older systems too!
Learning how to learn Vim is the key to a continuous understanding of the tool
and not getting frustrated. There are many ways to get help on Vim: using its
built-in help system, using the man pages and obviously, accessing the
communities listed above.
Vim is free
These days it may be odd to say that Vim's free. Vim's freedom goes beyond its
price, but also your freedom to modify it to your needs and deploy it wherever
you want. Vim developers also have a strong commitment to helping needed people around the world.
GUI-less
Vim also runs GUI-less, meaning it runs on your terminal. So you get a full
featured text-editor on any system you're working on, regardless if it's a
local desktop or remote supercomputer. This feature is essential for sysadmins
and developers who often need to modify text files on remote machines trough
an SSH connection.
Rich out-of-the-box toolset
Vim comes with fantastic tooling by default: powerful search, regular
expression support, syntax highlighting, text sort, integrated terminal,
integrated file manager, cryptography, color schemes, plugin management
and much more. All without a single plugin installed!
Vim integrates into your workflow
Differently from other text editors which force you into their thing, Vim
adjusts seamlessly to your workflow via powerful customization, extension
support, integrated shell support and ability to pipe data
in/out from it.
Vim can be programmed
Want to go the extra mile? Vim also has its own language, called VimL. With it
you can create your own plugins and optimize even further the system to your
needs.
Vim will boost your productivity
There are multiple ways Vim will boost your productivity. First, Vim's
extensive use of the home row of the keyboard saves you from having to reach the arrow keys (or even worse, the
mouse) to do your work. Second, with Vim you can quickly create macros to
reproduce repetitive operations, third, the combination of motions, plugins,
custom shortcuts and shell integration will definitely boost your productivity
way more than you could imagine.
Vim will make you type better and faster
Being keyboard based, Vim's workflow based on the home row will definitely help force you to type
better. With Vim you'll realize that you probably move your hands way more
than you should and will significantly increase your typing speed.
Vim will make you learn more
Most editors these days do too much. Yes, part of that is imposed on us by
languages that require a lot of metadata (Java and C# for example). One problem with that is that you end up relying on the
text editor much more than you need. Without access to Eclipse or Visual Studio it may be possible that you'll feel the impostor syndrome.
With Vim, despite being able to, you'll feel closer to your
work, resulting in a better understanding of what you're doing. You'll also
realize that you will learn more and memorize better the contents of what
you're working on.
Conclusion
On this post we provided many tips why one should learn Vim. Vim is
stable, ubiquitous and is supported by an engaged, growing community. Given all its
features, Vim is definitely a good tool to learn now and harvest the benefits
for decades to come.
Among the many benefits of using .NET in Google Cloud is the ability to
build and run .NET apps on a serverless platform like Google Cloud Functions.
Since it's now possible to run .NET apps on Cloud
Functions, let's understand how all of that works.
What is Cloud Functions?
Cloud Functions is Google Cloud’s Function-as-a-Service platform that allows
developers to build serverless apps. Since serverless apps do not require a
server to run, cloud functions are a great fit for serverless applications,
mobile or IoT backends, real-time data processing systems, video, image and
sentiment analysis and even things like chatbots, or virtual assistants.
FaaS
To develop your .NET apps so they're compatible with Cloud Functions, Google
has made available this GitHub repo. The Functions Framework lets you write lightweight functions that run
in many different environments, including:
Assuming you're using .NET Core, the first thing you'll need is to build
and run a deployable container on your local machine. For that, make sure that
you have either Docker and the pack tool installed.
Next, build a container from your function using the Functions buildpacks:
docker run --rm -p 8080:8080 my-first-function # Output: Serving
function...
Send a request to this function by navigating to localhost:8080. You should
see Hello, Functions Framework.
Cloud Event Functions
After installing the same template package described above, use the gcf-event
template: mkdir HelloEvents cd HelloEvents dotnet new gcf-event
VB and F# support
The templates package also supports VB and F# projects. Just use -lang vb or
-lang f# in the dotnet new command. For example, the HTTP function example above
can be used with VB like this: mkdir HelloFunctions
cd HelloFunctions dotnet new gcf-http -lang vb
Running your function on serverless platforms
After you finished your project. you can use the Google Cloud SDK to deploy to Google Cloud Functions from the command line with the
gcloud tool.
Once you have created and configured a Google Cloud project (as described in
the Google Cloud Functions Quickstarts and installed the Google Cloud SDK, open a command line and navigate to the function directory. Use the gcloud
functions deploy command to deploy the function.
For the quickstart HTTP function described above, you could run:
Note that other function types require different command line options. See
the deployment documentation for more details.
Trying Cloud Functions for .NET
To get started with Cloud Functions for .NET, read the quickstart guide and learn how to write your first functions. You can even try it out
with a Google Cloud Platform free trial.
The command-line (aka terminal) is a scary thing for most users. But
understanding it can be a huge step in your learning journey and add a significant boost to your career in tech.
Depending on your technical skills, the command-line interface (also known as CLI or terminal) may look scary. But it shouldn't! The
CLI is a powerful and resourceful tool that every person aspiring greater tech
skills should learn and be comfortable with. On this article, let's review
many reasons why you should learn and use the command line, commonly (and
often incorrectly) referred to as terminal, shell, bash and CLI.
This article is an adaptation of another one originally published by me on
Linux4us. I'm
re-publishing here to a wider audience with a few tweaks.
Ubiquitous
The command-line interface (CLI) is available in every operating system, not
only in Linux. Very frequently, this is where developers and system
administrators spend a lot of time. But, if you want to work with Linux,
development, the cloud or with technology in general, better start learning
it.
Terminals are available in every operating system including Linux,
Windows and Macs
Powerful
CLI-based apps are much more powerful than their GUI-based equivalents. That
happens because usually GUIs are usually wrappersaround libraries that power both the GUIs and the terminal apps. Very frequently, these
libraries contain way more functionality than what's available in the
graphical interface because, as you might expect, since software development
takes time and costs money to produce, developers only add to GUI apps the
most popular features.
For example, take a look at the plethora of options that the GNU find tool provides us:
Does your GUI-based find tool has all those options?
Quicker
Common and repetitive tasks are also faster in the terminal with the advantage
that you will be able to repeat and even schedule these tasks so they run
automatically, releasing you to do actual work, leaving the repetitive tasks
to computer.
For example, consider this standard development workflow:
If you were doing the above using a GUI-based git client (for example, Tortoise Git), the workflow would be similar to the below, taking you approximately 20
minutes to complete:
Right-click a folder in Windows Explorer (or Nautilus, or Finder) ->
Select clone -> Paster the Url -> Click OK
Wait for the download to Complete -> Click OK
Back to Windows Explorer -> Find File -> Open it
Make your changes (by probably using GEdit, KEdit or Visual Studio Code)
-> Save
Back to Windows Explorer
Right Click -> Commit
Right Click -> Push
Take a deep breath
In the terminal (for example, in Ubuntu), the workflow would be equivalent to the below and could be completed in
less than 2 minutes:
sudo apt update && sudo apt install git -y # install
git git clone <url> # clone the GitHub repo
locally vim/nano file -> save # edit the file using a text-based
editor git commit -m <msg> # commits the file locally git
push # push the changes back to our GitHub repo
Automation
Terminal/CLI-based tasks can be scripted (automated) and easily repeated,
meaning that you will be able to optimize a big part of your workflow. Another
benefit is that these scripts can be easily shared, exactly as business and professional developers do!
So let's continue the above example. Our developer realized she is wasting too
much time in the GUI and would like to speed up her workflow even more. She
learned some bash scripting and wrote the function below:
gcp ()
{
msg="More updates";
if [ -n "$1" ]; then
msg=$1;
fi;
git add ./ && git commit -m "$msg" && git push
}
She's happy because now she can run from the terminal, the below command as
soon as she finishes her changes:
gcp <commit-msg>
What previously took 5 minutes is now is done in 2 seconds (1.8 seconds to
write the commit message and 0.2 to push the code upstream). A significant improvement in her workflow. Imagine how much more productive she would be during the
course of her career!
It's important to always think how can you optimize your workflow. These small
optimizations add up to your productivity significantly over time.
Lightweight
Not only the CLI is faster and more lightweight than equivalent GUI-based
applications but it's quicker to run the same commands. For example, consider
a Git client like Tortoise Git. It
was supposed to be lightweight (what most GUI apps aren't) but it takes 3s to
completely load and uses 10Mb of memory:
Our GUI-based git client TortoiseGit
Now take a look at its CLI equivalent. git status runs in 0.3s and consumes
less than 1Mb. In other words, 20 times more efficient memory-wise and 10
times faster.
A simple CLI command is 20x more efficient and 10x faster then its GUI
equivalent
Disk Space Efficient
Another advantage of terminal apps over their GUI-equivalents is reduced disk
space. For example, contrast these two popular apps. Can you spot the
differences?
Application
Installation Size
Total Size
Memory Usage
Visual Studio Code
80Mb
300Mb
500Mb (on sunny days)
Nano
0.2 Mb
0.8 Mb
3 Mb
400x more efficient
375x more efficient
160x more efficient
Extensible
Another important aspect is that the CLI is extensible. From it, skilled users
could easily either extend its basic functionality using its built-in features
like pipes and redirections combining inputs and outputs from different tools.
For example, sysadmins could list the first two users in the system who use
Bash as a shell, ordered alphabetically with:
What's interesting from the above command is how we combined 5 different tools
to get the results we need. Once you master the Linux terminal, you'll too
will be able to utilize these tools effectively to get work done significantly
faster!
This is a more advanced topic. We'll see in future posts more details about
it.
Customizable
As you might expect, the terminal is extremely customizable. Everything from
the prompt to functions (as seen above) and even custom keybindings can be
customized. For example, In
Linux, binding the shortcut
Ctrl+V to open the Vim text editor on the terminal is simple. Add this to your .bashrc file:
bind '"\C-V":"vim\n"'
Extensive range of Apps
Contrary to what most newcomers thing, the terminal has apps too! You will
find apps for pretty much any use case. For example:
Want to work with Linux, as a developer or with the cloud? Another important
aspect of using the terminal is that it will make you more ready for the job
market. Since servers usually run Linux and don't have GUIs, you will end up
having to use some of the above tools on your day-to-day work. Developers
frequently use it to run repetitive tasks, becoming way more productive. So
why not start now?
Learn more about your System
Hopefully at this point you realize that you will learn way more about your
system and computers in general when you use the terminal. And I'm not talking
solely to Linux users. Windows and Mac users will learn a lot too! This is the
secret sauce that the most productive developers want you to know!
It's also a huge win for testing new tools, maintaining your system,
installing software, fixing issues and tweaking as you wish.
Getting Started
Ready to get started on your terminal/CLI journey? Here's a video that may
serve as a good intro:
Conclusion
Every modern computer has a terminal. Learning it will save you time, allow
you to automate common actions, make you learn more about your system, grow
professionally and be more productive. Well worth the effort, isn't it?