Learning SDL for Azure apps

Microsoft says that Azure development can be done with Visual Studio 2010. This means that we can perform the development functions of  Code and unit test, Packaging, automated tests and Release  from development machine. I started reading on this and there are a lot of great blogs that I read.  Wrote my learning for my reference. More if future post with more hands on.

On development process, one needs to keep in mind the following

  • Deploying an application on Windows Azure does not provides us with a lot of options.You cannot copy files or deploy an MSI on Windows Azure, but for may be the VM role
  • For testing the application also, one needs to l pay for servers and databases and storage. Windows Azure doesn’t treat testing separately.
  • There is no ACL support for any management tasks. The LiveID account defined for service management can do anything and one cannot define finer grained access to the service. For example, we cannot assign “LiveID1” for create storage accounts and “LiveID2” for managing services, etc. This mean team members who need access to Azure portal needs to share that account. We can try with authentication mechanism: certificates.
  • A possible Azure team might build Azure application with break-up of the responsibility as follows.

    Team Role What he performs
  • Runs against the local dev fabric
  • Build server runs tests locally too.
  • Automated Packaging and deployment to Windows Azure
  • Test Engineer
  • The Test team runs tests both locally
  • The test team also runs tests on the “live” environment.
  • Administrator
  • Hel shares a single Admin LiveID  to (seldom) access the portal with all
  • He is also responsible for making payments and subscribing for the right account
  • One can understand some basic information about pricing at Windows Azure Offers and Windows Azure platform Comparison Table and Windows azure billing overview.Let the developers and test engineers earn the responsibility to access the Azure account both from usage and also from metering if they mismanaged the Cloud infrastructure.

    The links Using Development Storage , Limitation of Development Storage over Windows Azure Storage Services  helped to me to get my application run in the development environment., As I have SQL Server on my machine, i need to reset my development storage config settings as follows. Go to Windows Azure SDK directory on the command line and launch the Initialization Tool [DSInit.exe]. One needs to point to the SqlInstance that you wish to create the tables on and in addition can make use of /forceCreate] option to create the tables. The InstanceName should not include periods or slashes
    DSInit.exe /sqlinstance:<YourDatabaseName>/forceCreate

    As developing your application to deploy for cloud is tricky and involves cost, there is a needs to build automated tests that can be run in the development environment  to catch errors before you deploy out to the cloud. The automated test should be generic to run both on the development environment and cloud environment with minimal changes. For examples, the configuration values can be provided in the ServiceConfiguration.cscfg file, and make use of methods like GetDefaultTableStorageAccountFromConfiguration() to run the code beautifully both when your code is configured to run locally or configure it for an endpoint in the cloud. As the configuration are set in the ServiceConfiguration.cscfg file, these values can be updated even after deploying to the cloud by uploading a new Service Configuration.

    To  run your tests on a dedicated build server, Windows Azure SDK needs to be installed and Azure Development Storage  should be verified for existence before start of test execution and also need to be running during the test execution on that machine. One needs to shut down the Development Storage upon completion of your tests.

    Please be aware that DevelopmentStorage.exe only gets automatically started when you start debugging a cloud application project in Visual Studio. if tests are run outside Visual Studio and Development Storage is not running, please issue a command line call from .NET using the Process and ProcessStartInfo and wait for the process to exit till the tests are complete.