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.
In DevOps micro services and continuous delivery allowed teams to take ownership of services and then release updates to them faster.
2. Rapid Delivery
DevOps combines tools and all process in cloud so starting from developing the apps and testing it in cloud by using automated tools and deploying as soon as code commit happens. This enables rapid delivery.
Monitoring and logging practices help you stay informed of performance in real-time.
Infrastructure as code helps you manage your development, testing, and production environments in a repeatable and more efficient manner.
5. Improved Collaboration
With DevOps and a single combined platform Developers and Operation team, collaborate easily. They are no longer isolated from each other and share responsibilities and feedbacks.
Automated compliance policies, fine-grained controls, and configuration management techniques can define and then track compliance at scale.
The Azure platform is full of flexible DevOps workflows. Microsoft provides the following services for DevOps in their azure cloud platform.
1. Visual Studio Team Services: Services for teams to share code, track work and ship software.
2. Visual Studio Mobile Center: Mission control for your mobile apps.
3. Visual Studio: Integrated development environment (IDE) from Microsoft.
4. HockeyApp: Deploy mobile apps, collect feedback and crash reports, and monitor usage.
5. Xamarin in Azure: Xamarin a framework that enables rapid development and testing of mobile apps in cloud, xamarin can deploy to multiple platform from a single codebase and xamarin test cloud can test your application in real devices in cloud.
In addition, Microsoft Azure cloud platform supports third party tools like Jenkins, Redhat, Chef, Spinnaker and Terraform.
Related Page: Azure Stack - Cloud Services
1. Continuous Integration:
Continuous Integration (CI) is the process of automating the build and testing of code every time a team member commits changes to version control. CI keeps the master branch clean and creates a development branch. After testing is completed and pull request is accepted then changes are committed to master branch.
2. Continuous Delivery:
Continuous Delivery (CD) is the process to build, test, configure and deploy from a build to a production environment.
3. Infrastructure as Code:
Infrastructure as Code (IaC) is the management of infrastructure (networks, virtual machines, load balancers, and connection topology) in a descriptive model, using the same versioning as DevOps team uses for source code. Infrastructure as Code enables DevOps teams to test applications in production-like environments early in the development cycle.
Micro services are architectural pattern in which applications are divided into smaller components and deployed to perform specific business logic. They communicate over web using REST APIs.
Azure DevOps life cycle mainly follows two phases.
1. Write code, Test and Debug
During the application development stage the code for Azure applications is most commonly built locally on a developer’s machine. Microsoft has recently added additional services to Azure Apps named Azure Functions. Azure function is a serverless computing feature that enables developer to build enterprise applications without writing codes and maintain infrastructure.
Visual Studio Team Services and Git are two popular code collaboration tools for
2. Deploy and Monitor
Azure App Service for DevOps provides following deployment slots for Continuous integration and deployment of your code base.
* Local git repository
* Visual Studio Team Services
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.
1. Continuous Flow (Inside-Out)
Collaboration between development team using tools like git and visual studio team services. Automated integration testing using Jenkins or Travis CI. Continuous delivery using deployment tools like GitHub or visual studio team service.
2. Ownership & Visibility (Outside-In)
The team or person must able to address the problem is responsible for it (the owner). This can be development or platform.
3. Planning & Time Management
Understanding the work center and automate all process using project and time management tools.
Build a culture that celebrates all of the aspects of DevOps
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.
1. Environment Consistency: Enables portability of the application
2. Operational efficiency: Can run multiple application in a single instance
3. Developer Productivity: Removes cross-service dependencies and conflicts.
4. Version Control: Containers allow you to track versions of your application code and their dependencies.
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.
1. Easy Deployment Solution:
When you write, test and deploy your application inside containers, the environment does not change at different parts of the delivery chain. That makes collaboration between different teams (developers, testers and operation) easier because they all are working with the same containerized environment.
2. Simplify Updates: Containers help to roll out updates on a constant and streamline basis because they make it easy to apply updates to applications. When your app is distributed into multiple microservices, each one hosted in a separate container, you can update one part of the app by restarting the container without interrupting the rest of the app.
3. Multi-Framework Support: Containers enable that agility because they are relatively agnostic toward programming languages and deployment platforms. You can run almost any type of app inside a container, regardless of the language it is written in.
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:
* Page popularity. Response time of application server. It checks if the application failed to perform in peak hours. Loading time of pages and logs, which page is not responding to specific request? It also logs peak hours during day to find out when your apps used most.
* Checks if any external libraries or services making the application irresponsive or any external resource take time for loading.
* Exception reporting and stack trace of both server and browser.
* Session count for application and usage time count.
* Page view count.
* Custom events like file download count or items sold.
* Host diagnostics in container image like docker.
* Load performance in browsers.
* Ajax calls.
Get Updates on Tech posts, Interview & Certification questions and training schedules