Skip to content
Cuelogic
  • Services
        • Product Engineering
          • Product Development
          • UX Consulting
          • Application Development
          • Application Modernization
          • Quality Assurance Services
        • Cloud Engineering
          • Cloud Services
          • DevOps Services
          • Cloud Migration
          • Cloud Optimization
          • Cloud Computing Services
        • Data & Machine Learning
          • Big Data Services
          • AI Consulting
        • Internet of Things
          • IoT Consulting
          • IoT Application Development
        • Innovation Lab as a Service
        • Cybersecurity Services
        • Healthcare IT Services
  • Company
    • About
    • Culture
    • Current Openings
  • Insights
  • Tell Us Your Project
Tell Us Your Project  ❯
Cloud  5 Mins Read  January 27, 2017  Dipesh P

Application deployment with Microsoft Azure

Share Via –
Share on facebook
Share on twitter
Share on linkedin

Home > Application deployment with Microsoft Azure

As a developer, I always thought application deployment was another task that requires a checklist, mostly for configuration. I have worked on development of several web and desktop applications in the past few years. Recently, I had an opportunity to work on “Cloud Environment” with Microsoft Azure.

A DevOps team was assigned to setup infrastructure for our current project. Fortunately, I got to be a part of it. The project has vast scope. Its architecture allowed us to explore several services provided by Microsoft Azure. The following article will walk you through project infrastructure set up, cloud services and cloud migration to azure used and why we opted for these services over other alternatives.

Continuous integration and continuous deployment with App Services on AzureApplication Deployment With Microsoft AzureProject architecture demanded AngularJS Development at one SPA (Single Page Front-end Application) base. It also required multiple Web API type of applications (one for each module) developed with Dot Net to serve SPA.  Development started in parallel for all modules.

A DevOps team was specifically assigned to setup an environment where developers can commit and validate their code immediately. This environment helped front end team to work with back end API developers.  A mechanism was required to provide continuous deployment for all code commits on GitHub repositories.  To achieve this, we separated our front end repository from other Dot Net API repositories, which allowed continuous code integration that front end (HTML and AngularJS) team worked upon.  SPA consumed Web APIs with Ajax requests which were configured as part of web application configuration in a single file.

Two types(“namely”) of applications can be deployed with Microsoft Azure. One we used to deploy Web APIs, the other to deploy web application (SPA in our case).  Technically, now there is no difference between a Web API App and Web App; both are considered App Services (In MS Azure’s early days, there were three different types of applications with different capabilities - Web API, Web App and Mobile App as part of App Services.).

App Services

  1. Web API Application
  2. Web Application (being used for SPA)

 

GitHub Repositories

Publish code to development environment:

-          Each module has a separate repository on GitHub.

-          App Services are configured to fetch code from GitHub repositories (look for “Deployment Options” in App Service on Azure Dashboard).

-          Developer commits and pushes code to GitHub repository on a defined branch.

-          As soon as new commit is available, App service pulls code from GitHub repository and starts building application.

-          Application is deployed if application build succeeds; process fails otherwise and previous build remains intact.

-          Web API deployment process is customized to execute required SQL scripts on Azure Database with each commit to development branch.

-          To execute SQL scripts on desired database server, configuration options are defined using Application Settings for each Web API type of application.

-          As soon as SQL script is executed on target database server, a utility written in Python executes and an email is sent to internal organization group with script output in case of any errors in SQL script execution.

Security with Azure Active Directory Integration

The most important factor considered during deployment and in the deployment of Enterprise Applications is “Security”. Microsoft’s Azure AD (Active Directory) provides ways to handle security for all web apps, APIs, Database Servers, Cloud Services, Cloud Storage, etc.

Securing a Web API application with Azure AD has become simple. This is so because we can configure it using Authentication/Authorization configuration section on Azure portal.  All APIs secured with Azure AD authentication will allow only users logged into Azure AD accounts to access respective APIs.  OAuth 2.0 protocol is used for authorization at the base.

Business owners are provided with options for Azure AD.  They can opt to go online and use Azure AD online or synchronize their local Active Directory with Azure AD. For applications, which allow users to sign in using social media, the allowed Authentication Providers Azure are: Facebook, Google, Twitter and Microsoft Accounts.

Our project uses Azure AD authentication for Web APIs. This enables only Azure AD registered users to access application APIs.  We did implement Claims based authorization for this project. Single page web app on client end uses the ADAL library to interact and manage Azure AD authentication.

Azure Database

Microsoft Azure SQL Database is a managed cloud database that makes application development and maintenance easier. When a database is created on Microsoft Azure, the managed database service creates a server instance in background for new database or asks you to select existing server instance on which database will be hosted. The database service takes care of scalability, backup and high availability of the database based on options configured via portal dashboard.

Azure SQL Server V12 version is in use for current project. You may prefer to configure database to provide better performance at one 'geo-location'. This is because project serves more audience in one part of globe than the other.

Microsoft Azure lets user decide where they wish to setup SQL Server - Instance, redundancy mode, expected performance, etc.  Resource utilization can be tracked for selected database from monitoring section.  With Azure Database, you can also setup Alert Rules with which you receive alerts (email) from Azure when selected metrics are met.

A cool option will suggest performance improvement areas based on SQL database analytics.  These include recommendations like modification in table structure, defining indexes on some of the tables (which are used in stored procedures, etc.). This will help improve performance of SQL queries.

Azure Cloud Services

C# based cloud service

Cloud services come in two ‘flavors’, Worker Role and Web Role.  When the requirement is to access local system resources like File System, Worker Roles are preferred as they run like “Windows Service” on Windows Server Virtual Machines.  Web Roles run within boundaries of IIS and act more like web applications.  Deployment of cloud services can be done from within Visual Studio IDE, or cloud service code can be built into a package and uploaded to cloud service with configurations.

The ETL Service (Extraction and Transformation Layer) specific to our project is a Worker Role which works as a background process, manipulates local file system and interacts with database server.

Python based cloud service

In recent years, Python has become a favorite language for developers working with complex algorithms for Image/Audio/Video manipulations.  The requirement was to process images, audios and videos for which Python based web role is used.  Web Role created in Python has a queuing mechanism that uses Azure Service Bus to queue process requests from Web APIs.  This service creates SFTP users as requested with pre-defined privileges.

Automated resource deployment using ARM Templates

Azure Resource Manager allows you to provision your applications using a declarative template. In a single template, you can deploy multiple services along with their dependencies.  One can use same template to redeploy applications on different environments like Development Environment, Staging Environment and Production Environment, etc.  ARM template is just formatted JSON text.  For every environment, resources will remain same and configuration changes can be handled with pre-defined Application Settings. These ARM templates can be executed with the help of PowerShell cmdlets or from Azure CLI.

Future of cloud

For us, moving entire solution to Microsoft Azure environment was a major decision.  It did pay off in terms of gaining lots of experience and knowledge with cloud platforms.  Though we explored a small part of cloud, moving to Azure platform reformed our thought process, providing a different perception towards integration of several application components and how easy would it be to deploy on cloud.

Technological evolution in cloud platforms is taking us to a new high. It is making us counter more complex challenges, and with seamless integration.  Many advancements are due in the upcoming years; scalability, big data analytics, machine learning and serverless architecture are all set to go mainstream.

We hope that you find the blog useful. You are requested to post your comment as response to this blog.

Recommended Content
What is Anthos : The multicloud platform by Google {Updated} ❯
The Most Powerful & Practical Write-up on Cloud Cost Optimization ❯
Tags
.Net angularjs Application deployment with Microsoft Azure Azure Cloud Services GitHub repository python Single Page Front-end Application Web API Application
Share This Blog
Share on facebook
Share on twitter
Share on linkedin

Leave a Reply Cancel reply

People Also Read

Big Data

Data Mesh – Rethinking Enterprise Data Architecture

8 Mins Read
Consulting

Top Technology Trends for 2021

10 Mins Read
DevOps

What is Infrastructure as Code and How Can You Leverage It?

8 Mins Read
Subscribe to our Blog
Subscribe to our newsletter to receive the latest thought leadership by Cuelogic experts, delivered straight to your inbox!
Services
Product Engineering
  • Product Development
  • UX Consulting
  • Application Development
  • Application Modernization
  • Quality Assurance
Menu
  • Product Development
  • UX Consulting
  • Application Development
  • Application Modernization
  • Quality Assurance
Data & Machine Learning
  • Big Data Services
  • AI Consulting
Menu
  • Big Data Services
  • AI Consulting
Innovation Lab as a Service
Cybersecurity Services
Healthcare IT Solutions
Cloud Engineering
  • Cloud Services
  • DevOps Services
  • Cloud Migration
  • Cloud Optimization
  • Cloud Computing Services
Menu
  • Cloud Services
  • DevOps Services
  • Cloud Migration
  • Cloud Optimization
  • Cloud Computing Services
Internet of Things
  • IoT Consulting
  • IoT App Development
Menu
  • IoT Consulting
  • IoT App Development
Company
  • About
  • Culture
  • Current Openings
Menu
  • About
  • Culture
  • Current Openings
We are Global
India  |  USA  | Australia
We are Social
Facebook
Twitter
Linkedin
Youtube
Subscribe to our Newsletter

We don't spam!

cuelogic

We are Hiring!

Blogs
  • What is Infrastructure as Code and How Can You Leverage It?
  • Cypress vs. Selenium: Which is the Superior Testing Tool?
  • Micro Frontend Deep Dive – Top 10 Frameworks To Know About
  • Micro Frontends – Revolutionizing Front-end Development with Microservices
  • Decoding Pipeline as Code (With Jenkins)
  • DevOps Metrics : 15 KPIs that Boost Results & RoI
Menu
  • What is Infrastructure as Code and How Can You Leverage It?
  • Cypress vs. Selenium: Which is the Superior Testing Tool?
  • Micro Frontend Deep Dive – Top 10 Frameworks To Know About
  • Micro Frontends – Revolutionizing Front-end Development with Microservices
  • Decoding Pipeline as Code (With Jenkins)
  • DevOps Metrics : 15 KPIs that Boost Results & RoI
cuelogic

We are Hiring!

Blogs
  • What is Infrastructure as Code and How Can You Leverage It?
  • Cypress vs. Selenium: Which is the Superior Testing Tool?
  • Micro Frontend Deep Dive – Top 10 Frameworks To Know About
  • Micro Frontends – Revolutionizing Front-end Development with Microservices
  • Decoding Pipeline as Code (With Jenkins)
  • DevOps Metrics : 15 KPIs that Boost Results & RoI
Menu
  • What is Infrastructure as Code and How Can You Leverage It?
  • Cypress vs. Selenium: Which is the Superior Testing Tool?
  • Micro Frontend Deep Dive – Top 10 Frameworks To Know About
  • Micro Frontends – Revolutionizing Front-end Development with Microservices
  • Decoding Pipeline as Code (With Jenkins)
  • DevOps Metrics : 15 KPIs that Boost Results & RoI
We are Global
India  |  USA  | Australia
We are Social
Facebook
Twitter
Linkedin
Youtube
Subscribe to our Newsletter

We don't spam!

Services
Product Engineering

Product Development

UX Consulting

Application Development

Application Modernization

Quality Assurance Services

Cloud Engineering

Cloud Services

DevOps Services

Cloud Migration

Cloud Optimization

Cloud Computing Services

Data & Machine Learning

Big Data Services

AI Consulting

Internet of Things

IoT Consulting

IoT Application Services

Innovation Lab As A Service
Cybersecurity Services
Healthcare IT Services
Company

About

Culture

Current Openings

Insights
Privacy Policy  
All Rights Reserved @ Cuelogic 2021

Close

By continuing to use this website, you consent to the use of cookies in accordance with our Cookie Policy.