- Welcome to Azure Essentials.
If you're in IT Operations,
in the next few minutes,
I'll explain how you can get on board with Azure
as a unified environment for DevOps.
DevOps, as the name implies,
is all about fostering a stronger partnership
between development and operations disciplines.
It's a merger of people,
process,
and technology
aimed at driving greater efficiency and success
in bringing new apps and functionality to market quickly,
and in maintaining and updating
these apps throughout their lifespan.
All this means to you from an IT Operations perspective,
is that DevOps can help ensure
that your operation requirements
can be defined collaboratively upfront
during the development process
and follow throughout the lifecycle.
Now from the developer and test perspective,
these infrastructure requirements
just become part of the code,
a concept we'll explore later
called Infrastructure-as-code.
This makes spinning up these IT compliant environments
quick and easy.
Now, development operations becomes a virtuous motion,
as you plan, build, deploy, and operate apps,
gather continuous feedback
that you continuously integrate
back into the development process,
in an iterative fashion.
Now as an IT professional,
there are parts of the DevOps lifecycle
that you'll play a bigger role in than others,
but it should always be a partnership.
Now together with your developers,
you'll want to plan and define
the development test and production environments
to ensure that the correct guardrails are in place
to deliver supportable, production quality code
and that you have the right test criteria and SLAs
for apps in place before they're released into production.
You'll also want to ensure
that placement of apps
meet your data sovereignty needs
and that you continue to work together
with your development teams
on the ongoing monitoring
and iteration of apps in production.
So how with Azure,
do you get a unified environment
that makes all of this collaboration possible?
Well first, as you work with your developers,
it's worth knowing that Azure is an open platform
with lots of choices to support the tools and frameworks
that your developers are using.
For example, if you wanted to,
you could run the whole Linux Stack in Azure.
Now back to the concept of Infrastructure-as-code
which is a key principle of DevOps.
While your developer teams work to get
new features out at a fast rate,
this is the main way to ensure that
you supply them with a consistent, compliant,
and repeatable dev test QA and production environment.
This allows you to use templates and scripts
to define the infrastructure
powering each of these environments.
Azure Resource Manager templates written in JSON
provide the code that allows you
to define the required infrastructure.
For example,
we look at this high availability template
for a SharePoint file,
I'm able to define the required resources,
their dependencies,
and their orchestration.
You can choose from hundreds of templates
available in Azure
and from GitHub to get started.
Now to control resource utilization early on,
as apps have been developed,
you can gate these resources
and carve up dedicated areas
for development and testing
within your Azure subscription
using role-based access controls in Azure.
But to make this even easier,
we've got DevTest Labs.
This enables you to quickly and easily
spin up a pre-production testing and staging environment
for your developers with the appropriate
permissions and scoped controlled costs.
You start by establishing a budget for the lab.
Now as the lab owner,
you select the configuration and policies,
and then you can select the cost trend option
to set the dollar amount in target cost thresholds
for notifications.
Next you can assign resources to the DevTest Lab.
If you've already got existing
Azure Resource Manager templates
that define your production environments,
you can easily reuse these to
deploy instances of the environment
plus sandbox for development and tests.
Otherwise you can set up a new
development and test environment from scratch.
Now as a lab owner,
you just select the range of VM sizes.
You can also set the VM quota per user or per lab
and define the VM running hours
through auto shutdown and auto-start.
In addition to the cost control policies,
you can also control the VM images and templates
people can use in the lab.
You can select appropriate images for your VMs
from the marketplace,
or you can build your own custom images.
And from here, you can also specify formulas
which allow you to further customize the base image
so that every time you set up a VM,
it'll have a common set of properties.
This could include artifacts which comprise apps
that you may want to use for testing
or other tools that you'd like to install or download.
From there, you'll want to grant access
to the DevTest Labs environment.
Just like Azure in general,
this uses Azure Active Directory for authentication,
allowing you to grant access to specific users and groups
within your organization,
and you can also provide secure access to external users.
Now if you're familiar with role-based access controls,
or RBAC, to assign specific access privileges,
in DevTest Labs we simplify this even further
with predefined roles that enable access
only to DevTest resources.
These safeguards not only provide
an additional layer of security,
but help you to manage costs,
ensuring Azure usage from only approved developers.
You can then monitor usage and overall spend in the lab,
and get realtime cost projections
to see how well you're tracking against budget.
Now once you've helped define
the operational requirements of the application
in development and test environments,
responsibility for coding and building application,
moves primarily to your developer counterpart.
In DevOps,
two terms that you'll hear about
are Continuous Integration
and Continuous Delivery.
The idea here is that you build
and test smaller code batches deploying more frequently.
The more frequently you deploy,
the more you can experiment
and the more opportunity you have
to change what you're doing if it's not working,
or continue to persevere.
As you can see here in Visual Studio Team Services,
during Continuous Integration,
the build and testing of code is automated
every time a team member commits a change
to a version control.
Now this is important because developers often work
on different parts of an app in isolation.
Committing code triggers the automated build system
to grab the latest code from the shared repository,
and then testing and validations performed
against the app as a whole
to reduce merger conflicts.
VSTS gives you complete traceability
to see everything in the build,
including changes to your code,
reviews, and test results.
Now Continuous Integration as part of DevOps
is a critical area for you to partner
with your developer counterparts,
so that you can influence the right IT operations
criteria to test against,
such as making sure the app can scale,
or that you've accounted for load balancing
in order to catch issues early.
From there,
the build can be automatically picked up
by your chosen Continuous Delivery tool.
Here, for example,
in Visual Studio Teams Services release management,
deployment of the app is automated,
ensuring the right approvals at each stage.
Of course your developers can continue
to use their preferred opensource tool
such as Jenkins, Travis CI, and Spinnaker,
at various stages of the CI/CD pipeline to achieve the same.
And once the app's in production,
this leads us onto the next sequence
in the DevOps lifecycle, monitoring.
Now both developer and IT teams
equally can detect and diagnose issues.
By using Azure Application Insights,
you've got access to live performance telemetry
that ties directly back to the code
making it easier to make fixes.
And you can also track internet response
and service health through Azure Monitor.
Ultimately you can get to a point
where you can detect an issue
before you get that help desk call.
The overall advantage here is
that because we have a standard process,
you can keep production fresh with the shortest path
from codechecking to deployment,
and what's more,
the resulting code now has
operational awareness baked in.
So as you saw,
Azure provides a unified environment for the DevOps process,
helping you to foster a mutually beneficial partnership
with your developer's stakeholders
as you develop and ship new apps and services.
You can learn more with virtual demo experiences
and additional training with the link shown,
and keep checking back on Azure Essentials for more topics.
Thanks for watching.