Saturday, March 15, 2014

Hi there!I hope everyone had a great and productive week. I certainly did. On this post I would like to share what I learnt about Automated Deployment with Windows Azure at the AX 2012 R3 Tech Conference. As always, I would like to extend my gratitude to TriBridge for taking me to this event. As discussed in previous events, Microsoft said that it was moving to a cloud environment where it would provide a service to host and run AX instances in the cloud. At this stage, Microsoft offers a wide variety of services to an organization that provide a well-designed infrastructure for development, testing and small-scale production environments.

The following is the Azure Hosting Model (Blue boxes is what Azure is proving us)

Azure Setup

Only AX 2012 R3 is certified and supported for Azure at this time. When asking Microsoft about older CU (i.e. CU6), they said it could be possible to work with these versions, and there are a number of companies that are doing it, but it is not supported.

A very cost-effective concept is that Azure takes care of all the back-end processes when creating a new Azure instance. Microsoft accomplished this by using a set of automated scripts that install, and slightly configures the instance. However, customer specific configuration as well as customer specific network details are not part of the automated process for obvious reasons.

Moving right along, Azure provides a very good cost effective solution for hosting. Azure calls it, “Pay-as-you-Go”, which mean that a user will be charged a certain amount of money only when he/she is using the Azure instance.

One of the main benefits of this solution is that any device with RDP capabilities can access the Azure instances.

Azure Deployment Services

Microsoft provides a robust framework for deploying Microsoft Dynamics AX Instances to Azure. The following are most of the steps needed to make use of these services.

A user/Organization must get an Azure subscription ID by signing into the Azure website.

There is a 3 month free trial available.

A new subscription will include 20 cores for a basic deployment of a development and test environments.

The Azure subscription service will setup the instance automatically.

Azure will provide different topologies (Development, Test, and Production, which needs more than 20 cores in a real business deployment scenario).

By default, Azure creates 2 machines per instance to support maintenance.

A typical development Dev/Test deployment takes approximately 8-10 hours.

The deployment process is an “intelligent” process that retries failures. In addition a user can define the maximum number of retries, which helps on troubleshooting times.

Azure provides a Demo instance with Contoso data.

Azure provide Lifecycle services as a default feature in each instance.

Post Deployment Considerations

Although Azure does many of the configuration tasks automatically, there are a number of post-deployment actions we need to follow up after each setup. The following describes the steps needed after deployment.

In addition, an important point to take in consideration is setting up TFS, Outlook and Lync (if available for a customer). Microsoft can help a customer/partner to set these applications.

One important point is the existence of SQL Server Always On feature, which brings SQL Server high availability and disaster recovery to a whole new level by allowing multiple copies of the database to be highly available. Always On Availability Groups allow you to fail over a group of databases as a single entity, unlike database mirroring where you can only do so one database at a time. Further, this architecture also offers SQL Witness. Its main task is to monitor the mirroring scenario and to initiate automatic failover.

Azure also provides a REST interface instead of a SOAP one. REST is a simple stateless architecture that generally runs over HTTP, and is often used in mobile applications, social networking Web sites, and automated business processes.

Finally, Microsoft recommends starting virtual machines in Azure in a sequence, otherwise the IP addresses will not match the VM’s sub-nets. A question was asked to Microsoft to expand on this issue, and they are not sure why this happens. The good news, however, is that they are working on it. The following is the Azure portal possible architecture that Microsoft is working on.

Friday, March 7, 2014

I hope everybody is doing great! I had the opportunity to attend to the MS AX 2012 R3 Tech Conference thanks to TriBridge. Microsoft has worked hard in improving the X++ compiler for the new release. The new compiler is also available in CU7.

X++ Compiler Performance

In the past releases, the X++ compiler has been the bottleneck of build and installation scenarios across the board. For this, Microsoft has recommended the following tips to improve the compiler performance (CU7 and up only)

Solid state drives, which are typically more resistant to physical shock, run silently, have lower access time, and less latency.

How the Microsoft Dynamics AX compiler works

The following depicts the phases of the X++ compiler in previous versions of Microsoft Dynamics AX.

It is important to note that in earlier versions of Microsoft Dynamics AX the build performance is affected by the metadata moving from the client to the server metadata. In addition, the long compiling times are due to the deserialization of metadata and in memory cache. The following is the architecture for the current compiler

R3 Compiler Improvements

Microsoft enhanced the compiler by allowing us to use the Build.exe command or the client. However, from an architectural point of view, they removed the client portion of the compiler in the R3 release. The following is the new architecture improvements

A few key points to underline is that the AOS now contains the logging information, therefore there is no cache in memory. In addition, logs are generated in each AOS. In case of a multi AOS deployment scenario, the AXBuild.exe process automatically consolidate these into one log. Finally, when using the parallel compiler, the CPU usage is extremely high. In a multi CPU scenario, the AXBuild.exe process will automatically balance the load between CPU’s. Also, is important to understand that parallel does not mean multi-threading, the new compiler is very much still a single-thread process.

The following picture depicts what a parallel compiler output looks like