DevOps is the combination practices, tools and philosophies that enables rapid development and deployment of enterprise and consumer applications. DevOps began with cloud computing, which made it possible to allocate resources quickly and inexpensively. Cloud maximizes the innovations under DevOps by combining development, testing and deployment tools in the cloud. Traditional It doesnot offer the flexibility that cloud has to offer while delivering apps that need to be deployed faster and monitored through development life cycle.
DevOps combines and merge development team and IT Ops team together to work closely in application lifecycle. They share their skills and involved from development, through testing into deployment of application.
Quality Assurance and Security teams are also tightly integrated and work with DevOps team.
DevOps team uses practices to automate all development and operations process. In DevOps the technology stack and tooling are reliable and evolve quickly and helps engineers to accomplish tasks quickly for example continuous deployment of code from GitHub of Visual Studio Team Services or provisioning cloud infrastructure for application deployment. Normally these would have required help from other team but as DevOps integrate these into a single unit this increases development velocity.
The Azure platform is full of flexible DevOps workflows. Microsoft provides the following services for DevOps in their azure cloud platform.
In addition, Microsoft Azure cloud platform supports third party tools like Jenkins, Redhat, Chef, Spinnaker and Terraform.
Related Page: Azure Stack - Cloud Services
Azure DevOps life cycle mainly follows two phases.
If your code is open source and hosted in public Github you can use Continuous Integration tools like Travis CI or Circle CI for code testing and deployment.
Azure App Service provides Application Insight for monitoring your app and a comprehensive logging tool, health check and crash reporting.
Containers are a type of technology that makes it easier to host applications inside portable environments. A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.
Docker is a tool designed to make it easier to create, deploy, and run applications by using containers.
It allows a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. So the application will run in any platform regardless of any customized settings that machine might have that could differ from the machine used for writing and testing the code.
Chef is a configuration management tools. It uses a Pure-Ruby, domain-specific language (DSL) for writing system configuration "recipes". Chef is used to streamline the task of configuring and maintaining a company's servers, and can integrate with cloud-based platforms.
Chef Transforms infrastructure into codes. Chef automates how infrastructure is configured, deployed, and managed across network, no matter its size.
Related Page: Azure Machine Learning - Cloud Capabilities
Azure marketplace now listed a certified Chef Server 12 image which is ready to be used. This server is preconfigured with Chef server, the Chef management console, and Chef reporting.
Chef is used to automate the deployments of virtual machines, load balancers and other infrastructures in azure.
Chef has three main architectural components: Chef Server, Chef Client (node), and Chef Workstation.
The Chef Server is our management point and there are two options for the Chef Server: a hosted solution or an on-premises solution. We will be using a hosted solution.
The Chef Client (node) is the agent that sits on the servers you are managing.
The Chef Workstation is our admin workstation where we create our policies and execute our management commands. We run the knife command from the Chef Workstation to manage our infrastructure.
There is also the concept of “Cookbooks” and “Recipes”. These are effectively the policies we define and apply to our servers.
Creating a web app and enabling continuous integration:
* Sign into the Azure Portal
* Choose Web + Mobile > Web App. Add icon and enter a name, choose your subscription, and create a new resource group to serve as the container for the service.
* After a few moments, your app service is created.
Click the URL. Notice the variety of available choices for tools and repositories. You can also use the languages and frameworks of your choice including .NET, Java, and Ruby.
The Azure portal makes continuous deployment an easy process that involves only a few simple steps. In the Azure portal, choose settings from the icon for the app service you just created.
Next, configure some settings to enable continuous deployment for the app. Click Deployment Source and then click Choose Source. Notice the variety of options you have for repository sources.
Now here you can choose your github account or your onedrive or dropbox or localgit repo to enable continuous integration. You need to authorize azure to access you accounts to retrieve the folders.
Once you choose your project and branch, click ok. You should start to see notifications of a deployment.
Navigate back to GitHub to see the webhook that was created to integrate the source control repo with Azure. The Azure Portal enables integration with GitHub with only a few simple steps.
To demonstrate continuous deployment, we can add some content to the repository. For a simple example, add a sample text file to a GitHub repo. And it will be sync to azure app service source repo.
After committing changes to your repository, you see a new deployment initiate in the portal notifications area. Click Sync if you do not quickly see changes after committing to your repository.
Now we have successfully deployed and enable continuous integration in azure app service.
Application insight is a tool to monitor the performance and log data of our web applications. It is built on the top of Application performance management service (APM). Application insight is compatible with most of the runtime stacks in azure app service like node.js, java, .net and PHP etc. It includes analytics tool and anomaly detectors for web applications. Application insight can work on both on-premises app and cloud app. Application insight can be configured to work with mobile apps by integrating visual studio mobile center and hockeyapp.
We can monitor our azure web app via application insights.
If your application is running as an Azure web service, here's how to switch on monitoring:
* Select Application Insights on the app's control panel in Azure.
* When the Application Insights summary page opens, click the link at the bottom to open the full Application Insights resource.
Realetd Page: HDInsight Of Azure
Application insight is a tool for development team. It helps understand application performance by keeping track of logs, events and crashes. It monitors the followings: