Sunday, July 5, 2020

Adding Docker to the ASP.NET Core Angular Template


What’s better than starting a new greenfield project? You finally have the opportunity to leverage all the new patterns, technologies, and frameworks that you’ve been dying to get your hands on. A project I started recently had a strong focus on Docker. Being a new project, we were also able to use the latest version of ASP.NET Core and Visual Studio 2019. If you’ve read any of my previous posts, you know that .NET Core and Visual Studio have a lot of very convenient interaction points with Docker.

Things that would normally take a couple hours to setup are created with the click of a button. This is of course until you use the ASP.NET Core Angular template and noticed the Enable Docker Support checkbox is disabled. If only life were so simple. Fortunately with a couple small changes, we are able to incorporate Docker into the default ASP.NET Core Angular template and take advantage of a benefits that come along with the Visual Studio container tools.

In this article, we will discuss enhancing the default template configuration to build and run your ASP.NET Core Angular app in Docker.

THE ANGULAR PROJECT TEMPLATE

When we create a new ASP.NET Core Web Application using the Angular template, a new “Hello, World” application is generated. In addition to the Angular frontend, we also have an ASP.NET Core API setup server-side. Debugging the project in Visual Studio, we will notice both the Angular and ASP.NET Core applications are running together.

If you’ve worked on a project like this before, you are probably used to debugging your frontend with the Angular CLI and your API with Visual Studio. The Angular project template appears to be doing both for us! But how? We can see this by looking at the Startup.cs file.

public class Startup
{
// Removed for brevity
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// Removed for brevity
app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseAngularCliServer(npmScript: "start");
}
});
}
}

As we can see, npm start is getting executed under the hood by leveraging the Microsoft.AspNetCore.SpaServices nuget package. Looking at our package.json file, we can see this is effectively calling ng serve.

{
"name": "jrtech.angular.docker",
"version": "0.0.0",
"scripts": {
"ng": "ng",
"start": "ng serve",
"build": "ng build",
"build:ssr": "ng run JrTech.Angular.Docker:server:dev",
"test": "ng test",
"lint": "ng lint",
"e2e": "ng e2e"
},
...
}

All this bridges the frontend and backend together nicely however, it doesn’t come without some downsides. First and foremost, when a backend change is made, ng serve needs to run again which can take 10+ seconds depending on the size of the frontend application. Microsoft mentions this in their documentation and offers a convenient workaround as shown in the Startup class below.

app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
// spa.UseAngularCliServer(npmScript: "start");
spa.UseProxyToSpaDevelopmentServer("http://localhost:4200");
}
});

Making this change allows us to debug our Angular application from the command-line while using Visual Studio to debug our ASP.NET Core API.

INTRODUCING DOCKER

While we have a nice development environment setup, let’s circle back to the beginning of the article. On this new project, we wanted to leverage Docker as much as possible. So how does Docker fit into our new project? Well at the moment it doesn’t but, we can fix that!

Just like anything else, we have a couple options. For example, we could take the entire project and throw it into a container. This of course would work however, it will have the same issues as previously discussed. Any changes to the backend code would require us to rebuild the backend AND frontend projects and vise versa. To build them independently, we will have to split them into separate containers.

First lets take a look at running our ASP.NET Core API in Docker.

ASP.NET CORE WITH DOCKER

Even though we can’t include Docker support when we create an Angular project, we can still add Docker support after the fact from the project menu. This will automatically generate a Dockerfile similar to the one shown below.

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.
FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["JrTech.Angular.Docker/JrTech.Angular.Docker.csproj", "JrTech.Angular.Docker/"]
RUN dotnet restore "JrTech.Angular.Docker/JrTech.Angular.Docker.csproj"
COPY . .
WORKDIR "/src/JrTech.Angular.Docker"
RUN dotnet build "JrTech.Angular.Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "JrTech.Angular.Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "JrTech.Angular.Docker.dll"]

At this point if we try to debug our project, the browser will display a “Failed to proxy the request to http://localhost:4200/” error message. As the error message states, our ASP.NET project is unable access our Angular application. Since ASP.NET Core is now running in a container, we will get the same error message even if ng serve is running locally. We can solve this by continuing our with our journey into Docker.

ANGULAR WITH DOCKER

The next step is to configure our Angular application to run in Docker as well. For this, we will create a separate Dockerfile. This gives us the flexibility to stop and start our API without rebuilding the frontend. I like to use a Dockerfile similar to the one shown below.

FROM node:10.15-alpine AS client
EXPOSE 4200 49153
USER node
RUN mkdir /home/node/.npm-global
ENV PATH=/home/node/.npm-global/bin:$PATH
ENV NPM_CONFIG_PREFIX=/home/node/.npm-global
RUN npm install -g @angular/cli@8.1.0
WORKDIR /app
CMD ["ng", "serve", "--port", "4200", "--host", "0.0.0.0", "--disable-host-check", "--poll", "2000"]

The resulting Docker image image will contain node, npm, and the Angular CLI. When the container is started, ng server will be executed in the app folder. Of course the app folder will be empty but, we can make our code accessible to that location by mounting a volume in the container.

BRINGING IT ALL TOGETHER

To run these two containers together, we use a tool that goes hand-in-hand with Docker called Docker Compose. If you are not familar with Docker Compose, it is a container orchestration too that is used for configuring and running multi-container Docker applications. When using Docker Compose everything gets configured in a yml configuration file. We can create a create a docker-compose.yml file in Visual Studio by right-clicking the project and selecting Add | Container Orchestration Support.

After it is created, our Angular container will need to be included, as shown below.

version: '3.4'
services:
jrtech.angular.docker:
image: ${DOCKER_REGISTRY-}jrtechangulardocker
build:
context: .
dockerfile: JrTech.Angular.Docker/Dockerfile
jrtech.angular.app:
image: ${DOCKER_REGISTRY-}jrtechangularapp
build:
context: .
dockerfile: JrTech.Angular.Docker/ClientApp/Dockerfile
ports:
- "4200:4200"
- "49153:49153"
volumes:
- ./JrTech.Angular.Docker/ClientApp:/app

Lastly, we will need to update our Startup.cs file to proxy requests to the Angular container. We use the service name (jrtech.angular.app) in order to work with Docker’s internal network.

app.UseSpa(spa =>
{
// To learn more about options for serving an Angular SPA from ASP.NET Core,
// see https://go.microsoft.com/fwlink/?linkid=864501
spa.Options.SourcePath = "ClientApp";
if (env.IsDevelopment())
{
spa.UseProxyToSpaDevelopmentServer("http://jrtech.angular.app:4200");
}
});

Voila! Now if we set the docker-compose project as our startup project and debug, both containers will start running. If we make some changes and rerun the debugger, it will be fast as the Angular container never stops!

DEPLOYING AS A SINGLE CONTAINER

We now have a nice development process setup however, we may not want to deploy in this configuration. While nice for local development, deploying our frontend and backend applications separately means we will have to deal with CORSpreflight requests, etc. If we want to avoid this, we can support a single container deployment by making a few tweaks to our Dockerfile.

By default, Visual Studio creates a multistage Dockerfile. We can extend this by adding an additional stage for our Angular application. We also introduce a build time argument which will dictate if we want to build the frontend components or not.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM node:10.15-alpine AS client
ARG skip_client_build=false
WORKDIR /app
COPY JrTech.Angular.Docker/ClientApp .
RUN [[ ${skip_client_build} = true ]] && echo "Skipping npm install" || npm install
RUN [[ ${skip_client_build} = true ]] && mkdir dist || npm run-script build
FROM mcr.microsoft.com/dotnet/core/sdk:3.1-buster AS build
WORKDIR /src
COPY ["JrTech.Angular.Docker/JrTech.Angular.Docker.csproj", "JrTech.Angular.Docker/"]
RUN dotnet restore "JrTech.Angular.Docker/JrTech.Angular.Docker.csproj"
COPY . .
WORKDIR "/src/JrTech.Angular.Docker"
RUN dotnet build "JrTech.Angular.Docker.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "JrTech.Angular.Docker.csproj" -c Release -o /app/publish
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
COPY --from=client /app/dist /app/dist
ENTRYPOINT ["dotnet", "JrTech.Angular.Docker.dll"]

We give the argument a default value of false but, in our docker-compose.yml file, we override it to true. This way when we build our containers with docker-compose, the Angular application will not be redundantly built inside of the ASP.NET Core container.

version: '3.4'
services:
jrtech.angular.docker:
image: ${DOCKER_REGISTRY-}jrtechangulardocker
build:
context: .
dockerfile: JrTech.Angular.Docker/Dockerfile
args:
- skip_client_build=true
jrtech.angular.app:
image: ${DOCKER_REGISTRY-}jrtechangularapp
build:
context: .
dockerfile: JrTech.Angular.Docker/ClientApp/Dockerfile
ports:
- "4200:4200"
- "49153:49153"
volumes:
- ./JrTech.Angular.Docker/ClientApp:/app

Lastly, we can remove the majority of the custom build configuration in our project file as all of our Angular build steps are now in Docker. I cleaned mine up to look very similar to a typical ASP.NET Core web application.

<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>netcoreapp3.1</TargetFramework>
<TypeScriptCompileBlocked>true</TypeScriptCompileBlocked>
<TypeScriptToolsVersion>Latest</TypeScriptToolsVersion>
<UserSecretsId>9803d20b-7c4b-45ad-b021-58160cf46b32</UserSecretsId>
<DockerDefaultTargetOS>Linux</DockerDefaultTargetOS>
<DockerComposeProjectPath>..\docker-compose.dcproj</DockerComposeProjectPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.SpaServices.Extensions" Version="3.1.0" />
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.9.10" />
</ItemGroup>
</Project>

With this configuration, when running our application with docker-compose our Angular app is built in a separate container. When the container is built individually, all of the Angular components are self-contained within the ASP.NET Core container. This gives us the ability build, compile, and debug these applications while developing and generate a self-contained image for deployment.

How are you leveraging Docker with the ASP.NET Core Angular template?

Saturday, July 4, 2020

15 Infrastructure as Code tools you can use to automate your deployments

This is the third article in our Infrastructure as Code blog series. Check out other posts here:

Now that you’ve read our first two blog posts about Infrastructure as Code (you’ve read them, right?), it’s time to learn about some of the tools that will help you integrate IaC into your development processes.

There are MANY tools that can help you automate your infrastructure. This post highlights a few of the more popular tools out there and some of their differentiating features.

Configuration Orchestration vs. Configuration Management

The first thing that should be clarified is the difference between “configuration orchestration” and “configuration management” tools, both of which are considered IaC tools and are included on this list.

Configuration orchestration tools, which include Terraform and AWS CloudFormation, are designed to automate the deployment of servers and other infrastructure.

Configuration management tools like Chef, Puppet, and the others on this list help configure the software and systems on this infrastructure that has already been provisioned.

Configuration orchestration tools do some level of configuration management, and configuration management tools do some level of orchestration. Companies can and many times use both types of tools together.

All right, on to the tools!

 

15 Infrastructure as Code tools

Terraform

Terraform logoTerraform is an infrastructure provisioning tool created by Hashicorp. It allows you to describe your infrastructure as code, creates “execution plans” that outline exactly what will happen when you run your code, builds a graph of your resources, and automates changes with minimal human interaction.

Terraform uses its own domain-specific language (DSL) called Hashicorp Configuration Language (HCL). HCL is JSON-compatible and is used to create these configuration files that describe the infrastructure resources to be deployed.

Terraform is cloud-agnostic and allows you to automate infrastructure stacks from multiple cloud service providers simultaneously and integrate other third-party services.

You even can write Terraform plugins to add new advanced functionality to the platform.

AWS CloudFormation

Similar to Terraform, AWS CloudFormation is a configuration orchestration tool that allows you to code your infrastructure to automate your deployments.

Primary differences lie in that CloudFormation is deeply integrated into and can only be used with AWS, and CloudFormation templates can be created with YAML in addition to JSON.

CloudFormation allows you to preview proposed changes to your AWS infrastructure stack and see how they might impact your resources, and manages dependencies between these resources.

To ensure that deployment and updating of infrastructure is done in a controlled manner, CloudFormation uses Rollback Triggers to revert infrastructure stacks to a previous deployed state if errors are detected.

You can even deploy infrastructure stacks across multiple AWS accounts and regions with a single CloudFormation template. And much more.

We’ve written a ton of CloudFormation templates, so we’ll dig much deeper into this in future posts.

Azure Resource Manager and Google Cloud Deployment Manager

azure resource manager

If you’re using Microsoft Azure or Google Cloud Platform, these cloud service providers offer their own IaC tools similar to AWS CloudFormation.

Azure Resource Manager allows you to define the infrastructure and dependencies for your app in templates, organize dependent resources into groups that can be deployed or deleted in a single action, control access to resources through user permissions, and more.

GCP Deployment Manager

Google Cloud Deployment Manager offers many similar features to automate your GCP infrastructure stack. You can create templates using YAML or Python, preview what changes will be made before deploying, view your deployments in a console user interface, and much more.

 

Want this in a handy eBook? Click here to download our 62-page Infrastructure as Code Handbook, which includes IaC benefits, best practices, tools, and analysis of three AWS CloudFormation scripts!

 

Chef

Chefchef logo is one of the most popular configuration management tools that organizations use in their continuous integration and delivery processes.

Chef allows you to create “recipes” and “cookbooks” using its Ruby-based DSL. These recipes and cookbooks specify the exact steps needed to achieve the desired configuration of your applications and utilities on existing servers. This is called a “procedural” approach to configuration management, as you describe the procedure necessary to get your desired state.

Chef is cloud-agnostic and works with many cloud service providers such as AWS, Microsoft Azure, Google Cloud Platform, OpenStack, and more.

Puppet

puppetlogoSimilar to Chef, Puppet is another popular configuration management tool that helps engineers continuously deliver software.

Using Puppet’s Ruby-based DSL, you can define the desired end state of your infrastructure and exactly what you want it to do. Then Puppet automatically enforces the desired state and fixes any incorrect changes.

This “declarative” approach – where you declare what you want your configuration to look like, and then Puppet figures out how to get there – is the primary difference between Puppet and Chef. Also, Puppet is mainly directed toward system administrators, while Chef primarily targets developers.

Puppet integrates with the leading cloud providers like AWS, Azure, Google Cloud, and VMware, allowing you to automate across multiple clouds.

Saltstack

Saltstack differentiates itself from tools like Chef and Puppet by taking an “infrastructure as data” approach, instead of “infrastructure as code.”Saltstack_logo

What this means is that Saltstack’s declarative configuration patterns, while written in Python, are language-agnostic (i.e. you don’t need to learn a specific DSL to create them) and thus are more easily read and understood.

Another differentiator is that Saltstack supports remote execution of commands, whereas Chef and Puppet’s configuration code needs to be pulled from their servers.

Ansible

Ansible is an infrastructure automation tool created by Red Hat, the huge enterprise open source technology provider.Ansible logo

Ansible models your infrastructure by describing how your components and system relate to one another, as opposed to managing systems independently.

Ansible doesn’t use agents, and its code is written in YAML in the form of Ansible Playbooks, so configurations are very easy to understand and deploy.

You can also extend Ansible’s functionality by writing your own Ansible modules and plugins.

Juju

Juju is an IaC tool brought to you by Canonical, the company behind Ubuntu.

You can create Juju charms, which are sets of scripts that deploy and operate software, and bundles, which are collections of charms linked together to deploy entire app infrastructures all at once.

You can then use Juju to manage and apply changes to your infrastructure with simple commands.

Juju works with bare metal, private clouds, multiple public cloud providers, as well as other orchestration tools like Puppet and Chef.

Docker

Dockerdocker logo helps you easily create containers that package your code and dependencies together so your applications can run in any environment, from your local workstation to any cloud service provider’s servers.

YAML is used to create configuration files called Dockerfiles. These Dockerfiles are the blueprints to build the container images that include everything – code, runtime, system tools and libraries, and settings – needed to run a piece of software.

Because it increases the portability of applications, Docker has been especially valuable in organizations who use hybrid or multi-cloud environments.

The use of Docker containers has grown exponentially over the past few years and many consider it to be the future of virtualization.

Vagrant

Vagrant is another IaC tool built by HashiCorp, the makers of Terraform.

The difference is that Vagrant focuses on quickly and easily creating development environments that use a small amount of virtual machines, instead of large cloud infrastructure environments that can span hundreds or thousands of servers across multiple cloud providers.

Vagrant runs on top of virtual machine solutions from VirtualBox, VMware, AWS, and any other cloud provider, and also works well with tools like Chef and Puppet.

Pallet

PalletPallet logo is an IaC tool used to automate infrastructure in the cloud, on server racks, or virtual machines, and provides a high level of environment customization.

You can run Pallet from anywhere, and you don’t have to set up and maintain a central server.

Pallet is written in Clojure, runs in a Java Virtual Machine, and works with AWS, OpenStack, VirtualBox, and others, but not Azure nor GCP.

You can use Pallet to start, stop, and configure nodes, deploy projects, and even run administrative tasks.

(R)?ex

(R)?ex is an open-source, weirdly-spelled infrastructure automation tool. “(R)?ex” is too hard to type over and over again, so I’m going to spell it “Rex” from now on.

Rex has its own DSL for you to describe your infrastructure configuration in what are called Rexfiles, but you can use Perl to harness Rex’s full power.

Like Ansible, Rex is agent-less and uses SSH to execute commands and manage remote hosts. This makes Rex easy to use right away.

CFEngine

CFEngine is one of the oldest IaC tools out there, with its initial release in 1993.

CFEngine allows you to define the desired states of your infrastructure using its DSL. Then its agents monitor your environments to ensure that their states are converging toward the desired states, and reports the outcomes.

It’s written in C and claims to be the fastest infrastructure automation tool, with execution times under 1 second.

NixOS

NixOS is a configuration management tool that aims to make upgrading infrastructure systems as easy, reliable, and safe as possible.

The platform does this by making configuration management “transactional” and “atomic.” What this means is that if an upgrade to a new configuration is interrupted for some reason, the system will either boot up in the new or old configuration, thus staying stable and consistent.

nix logo

NixOS also makes it very easy to rollback to a prior configuration, since new configuration files don’t overwrite old ones.

These configuration files are written in Nix expression language, its own unique functional language.

Conclusion

So there you have it. Check out these configuration orchestration and management tools that you can use to implement Infrastructure as Code and help you automate your infrastructure.

This list is by no means exhaustive but it should give you a starting point for tools that you can use during your IaC journey.

Check out other posts in our IaC series:

Or you can download all of these articles together in one handy eBook by clicking the link below. Thanks for reading!

Top 10 Tools for Microsoft Azure Development

Cloud computing is slowly turning out to be a staple for every business. Cloud computing provides essential safeguards against unnecessary expenditures and overheads. Most important of all, businesses could shift the tasks of maintaining servers and databases to fully managed services with cloud computing. The search for Azure development tools and other cloud computing resources is common for every business. The reason?

Designing, developing, and deploying applications for the cloud is a crucial advantage for every type of business. Cost reduction and simplicity are the foremost determinants of the popularity of cloud computing. However, the selection of different cloud service vendors, according to your needs, could be quite difficult. Why?

Preparing to become a certified Azure professional? Check our Azure Certifications Training Courses now!

Many cloud service vendors in the market right now offer a wide range of services for architecting and developing solutions on the cloud. Therefore, the demand for Microsoft Azure development tools is also clearly evident in the present scenario. The following discussion would provide essential insights regarding the top development tools on the Azure platform. Most important of all, the guide points out the introduction of Microsoft Azure and the process for development.

What is Microsoft Azure?

The discussion on azure development tools should start with an introduction to Microsoft Azure. Microsoft Azure is a cloud computing platform with continuous expanding possibilities and excessive potential. However, is it a good alternative for businesses? Obviously, yes, the company among the Big 3 of the public cloud service market is definitely a worthy investment. Microsoft Azure is a public cloud platform that offers IaaS, PaaS, and SaaS solutions for different services.

The services of Microsoft Azure include virtual computing, networking, storage, analytics, and many more. The best thing here is the facility of sophisticated Microsoft azure development tools. The different elements of Microsoft Azure services are prominently beneficial for realizing its importance in the cloud computing landscape.

Microsoft Azure development provides a flexible, compatible, reliable, economical, and global solution. Developers have the option of scaling resources up and down according to their requirements. The compatibility of Microsoft Azure with major operating systems, programming languages, frameworks, and tools is a promising aspect for developers.

In addition, Azure provides the assurance for 99.95% availability with its SLA alongside providing round the clock tech support. The best feature of Microsoft Azure cloud development is the economical pricing of its services. You have to pay only for the resources that you use. Now, you must be wondering about the factors that differentiate Azure development from development on other cloud service vendor platforms. 

Microsoft has launched many new certifications and retired previous ones. Here’s the complete guide to Microsoft Azure Certifications Path 

Microsoft Azure development and tools

The basics of Microsoft Azure cloud development could be the starting to master the concepts of Azure development gradually. You can learn to create and customize dashboards in the Azure portal alongside sharing them with team members. The starting guide for azure cloud development could also help in the creation and deployment of simple .NET Core web app and database by leveraging the Azure portal.

The next important learning outcome in the basics of Microsoft azure development is the extension of application for performing data analytics by using Cognitive Services and Logic Apps. In addition, you can also learn the process of setting up continuous delivery with GitHub. As a result, you can deploy changes automatically in a continuous delivery pipeline, thereby improving the resilience of the app. Furthermore, you could also make the apps easier to update. 

Top tools for Azure developers

Now, let us take a look at the different azure development tools that developers should take into concern. The most important aspect that validates the effectiveness of Microsoft azure development is the integration with Visual Studio. The integration with Visual Studio offers uninterrupted development flow starting from project setup till deployment.

In addition, Visual Studio also offers better opportunities for resource management. Microsoft has made the most of Visual Studio, and many third-party solutions providers have come up with unique tools. Here are some of the popular azure developer tools that you can use for coding apps and run them quickly. 

Cloud monitoring tools have a lot of benefits for businesses. Here we bring a list of 20 best cloud monitoring tools

1. AzurePing

AzurePing is the first entry in this list of azure development tools that is an effective productivity tool. It is a free monitoring utility extension that runs as a local Windows Service. AzurePing helps in maintaining tabs for Azure Storage resources or Azure-hosted databases. AzurePing contains simple in-built logging capabilities in addition to the facility of adding own additional logging or notifications by using Apache log4net extensions. 

2. Cloud Explorer for Visual Studio

Cloud Explorer for Visual Studio is another prominent mention among azure developer tools. The tool helps in the identification of Microsoft Azure resources according to name, type, or resource groups and that too directly from Visual Studio IDE (Integrated Development Environment). Cloud Explorer helps in finding out resource properties alongside available developers and diagnostic activities and processes. Furthermore, Cloud Explorer also integrates effectively with the Azure Preview Portal for the management of resources and groups. 

3. Cloud Combine

Cloud Combine is also a prolific mention among Azure development tools because of its multiple functionalities. It helps in easier browsing, downloading, upload, and transfer of files between cloud storage services. The cross-platform compatibility with different cloud storage services such as Google Cloud, Microsoft Azure, and Amazon Web Services is one of the notable highlights of this service. Furthermore, it also helps in easier logging into all the cloud services and management of storage resources. 

4. SQL Database Migration Wizard

The SQL Database Migration Wizard is also another notable entrant as a Microsoft application development tools. This tool helps in the migration of SQL Server 2005, 2008, 2012, and 2014 databases to the SQL database. The tool also includes upgrades and migration analyzers for identification and troubleshooting potential issues. 

Cloud management tools help in managing & monitoring the different applications in the cloud environment. Check out the list of top cloud management tools!

5. Azure Blob Studio

Azure Blob Studio is an old entrant among popular azure development tools. It helps in easier management of Azure blob storage through the creation and removal of containers, retrieval of URIs, and management of blobs. The standalone utility of this tool is also a helpful aspect for developers. 

6. Microsoft Azure Storage Connected Service

Microsoft Azure Storage Connected Service is a new tool from Microsoft that is helpful in accessing design-time tools. The design-time tools can help in the configuration of Azure storage services and generating code for the consumption of services. This tool is also an ideal Microsoft application development tools because of the functionality in the consumption of containers, blobs, and entities. 

7. Graph Engine VSExtension

Graph Engine VSExtension is also a useful mention among azure development tools. It is an SDK by Microsoft Research to provide development functionalities by using the distributed, in-memory graph processing engine, Trinity. This tool supports direct deployment to Azure. 

8. Docker

Docker is definitely one of the important tools for Microsoft Azure developers. It is presently the recommended option for the creation, management, and deployment of application containers. Docker is a completely supported tool with Microsoft Azure. The new Visual Studio 2015 Tools for Docker help in establishing locally hosted Docker containers for development and debugging. Furthermore, the advantage of complete integration with Visual Studio IDE provides effectiveness.

Docker is among the best DevOps tools. If you’re aspired to become a Docker expert, start your journey with this introduction to Docker fundamentals.

9. Azure developer portal

The Azure developer portal is also a prominent tool for azure development. It serves as a promising open-source developer portal with customization, styling, and authoring facilities through an in-built visual editor. In addition, the new Azure developer portal in Azure API development would provide an extension of the core functionalities existing now. 

10. Azure Grid

Azure Grid is also another prominent entry among popular azure development tools. Developers generally follow a modular approach by breaking down a problem at hand and then ensuring the allocation of cloud resources. Azure Grid leverages the Grid Computing framework that provides considerable functionalities for simplifying the work of Azure developers.

The Azure Grid framework helps in easier establishment of a grid, definition of code, and data for allocation to each node. Furthermore, Azure Grid also offers better control over these activities through an effective WPF client application. The client app is helpful for monitoring of the entire development process. In addition, the friendly user interface equipped with all the necessary tools for visualization help in the better observation of the project’s progress. 

Conclusion

The diverse assortment of developer tools on azure can be very confusing for developers without any proper guidance. Therefore, detailed knowledge regarding Azure development tools can help considerably in selecting the right tools according to requirements. A clear understanding of the functionalities of different tools is important for cost-effective development.

First of all, the use of Visual Studio is evident in cases where you need easier development, debugging, deployment, management, and diagnosis of cloud-scale applications on Azure. Visual Studio offers a comprehensively, feature-rich integrated development environment (IDE). Therefore, if you want a one-stop development solution, then Visual Studio is the right option. 

On the other hand, Visual Studio Code is ideal for editing and debugging code with a flexible and simple code editor. The compatibility of the code editor with different operating systems such as Windows, Mac OS, and Linux helps in cross-platform development. In addition, Visual Studio Code helps in building and deployment of Node.js and Java applications to the cloud. Most important of all, Visual Studio Code supports the use of serverless computing, containers as well as managed Web Apps. 

The next important set of tools for Microsoft Azure developers are SDKs. The SDKs are language-specific and could be ideal for flexible development in .NET, Python, Java, and Node.js. Therefore, the assortment of development tools on Azure offers easier chances to find out the best development functionality.

To get ahead in your career, it is always recommended to validate your skills with a certification. So, check out Azure certifications training courses and lean towards becoming a certified Azure professional.

Free hosting web sites and features -2024

  Interesting  summary about hosting and their offers. I still host my web site https://talash.azurewebsites.net with zero cost on Azure as ...