Tuesday, August 16, 2016

Azure Resource Manager Policy management: Usecases and scenarios

I was recently asked to configure certain restrictions in our enterprise Azure Subscription for better utilization of the subscription as well as restrict our members from launching large VMs and potentially avoid evaporating the Azure credits.  The requirements are below.

  • Members must stick to East US and Central US data-centers for launching resources, other data-centers must be denied.
  • Members must tag their resources according to the below guidelines (Click here to learn about Tagging in Azure)
    • Environment : Production or Testing or Development
    • CostCenter : Finance or Engineering or Accounting etc
    • Customer : Contonso or Fabricam etc
  • Only selective Web Hosting Plan SKUs are allowed for Test and Development Purposes
For defining custom policies, we must use Azure Resource Manager Policies, an advanced feature that lets us define our custom policies and  evaluate based on various fields and allow and Deny the execution of the request.

  "if" : {
  "then" : {
      "effect" : "deny | audit | append"

Tuesday, May 31, 2016

Azure App Services : Chennai Azure User Group Meetup (May - 2016)

Microsoft launched Azure App Services during Microsoft Build 2015. Azure App Services is essentially a combination of 4 different but unique offerings which includes Web Apps + Mobile Apps + API Apps + Logic Apps. Logic Apps was a brand new launch, but the rest of the services were existed earlier as individual offerings such as Azure Websites and Azure Mobile Services.

The re-branding and grouping activity was very much logical as all the services compliment each other very well. Developers who were using Azure websites and WebAPIs got lot of questions behind the consolidation and wanted to understand the newer capabilities that Azure Web app plans brings to the table.

Based on the meetup members request, i hosted an exclusive meetup to address some of the common questions around Azure App Services and the best practices to be followed while using Azure App Services.

  1. Understanding Azure App Services
  2. Introduction to Web Apps + Mobile Apps + API Apps + Logic Apps
  3. Similarities & Differences between Web Apps + Mobile Apps + API Apps 
  4. Understanding App Services Plans and its pricing
  5. Understanding App Service Environments
  6. Best Practices for suing App Service Plans

Note: The topic of the next Chennai Azure User Group is going to be on Virtual Network, so join and learn Azure!

Tuesday, April 19, 2016

Summary of Chennai Azure Global Bootcamp 2016

The Chennai Global Azure bootcamp 2016 happened on Apr, 16th 2016 went on really well with lots of technical session and handson labs. We received more than 1000 registrations from people with variety of background, some of them were practicing professionals, few from IT Pro background and lots of students who are aspiring to be a cloud professionals soon.

The event started at 10.00 am and the keynote was delivered by Balaji Uppili, Chief Delivery Officer ,GAVS. He gave a lightning talk on the current cloud landscape and how azure is leading the game also touched little upon how developers must equip themselves to stay relevant in the ever changing IT. Soon after the keynote, presenters started offering session in 2 tracks, 1. Developer 2. IT Pro

We received 10 fantastic speakers from Chennai and Bangalore who delivered various tracks on various topics including Azure Apps Service, Open Source, Big data. I delivered  a topic on Azure Data lake Analytics and Data lake store, the services which are currently in preview, but the attendees were able to recognize the value of the services and how it can help developers to leverage these big data analytics services and exploit big data.

Event Highlights

  • Total Registrations for the event : 1000+ 
  • Attendees joined the session : 450
  • % of Dev/IT Pro : 75%
  • % of Student partners : 25%
  • Total no of Technical Tracks : 10
  • Hands on Lab conducted : 1


Dev TrackIT Pro Track
10:15 - 11:00: Building Mobile Apps with Visual Studio and Azure Services10:15 - 11:00: Power of Open Source on Azure (Ruby on Rails)
11:00 - 11:15: Café
11:30 - 12:15: Deep into Azure Machine Learning & Predictive Analytics11:30 - 12:15: Running LINUX workload on Azure
12:30 - 13:15: 14:00 - 14:45: DevOps In Azure12:30 - 13:15: Kick off your project for success!
13:15 - 14:00: LUNCH
14:00 - 14:15: Deep dive into Azure SQLIntroduction to Data Lake Analytics & Store
15:00 - 15:45: IoT on Azure (Part 1)15:00 - 15:45: Azure AD with Office 365
15:45 - 16:00: Café
16:15 - 17:00: IoT on Azure (Part 2)Azure Hands on Labs

Local Sponsors

GAVS Technologies and 8KMiles Software Services are the key local sponsors who helped us to execute such a larger event in Chennai. Infact, this is one of the largest community driven Azure event in the recent past conducted in the city. I'm very thankful for all the sponsors in helping us to execute the event.


Overall, the event went on really well, and a lot of great content was delivered by our awesome experts and MVP speakers. Thanks to all the presenters as well as all attendees! Without you, there wouldn’t have been an event. Also, special thanks goes to the Global Azure Bootcamp team for organizing the global event and getting together the prizes from all the global sponsors.

I had a great time presenting and helping people out with the hands-on labs launching Windows and Linux VMs towards the end of the day. It was a great learning and fun experience. Currently, I’m planning to help coordinate the Chennai Global Azure Bootcamp event next year as long as god will.

Until next year, adios amigos!

P.S. Please feel free to contact me with any question about Azure or general feedback on the event. You can either submit them to me in the comments on this post, via Twitter @ilyas_tweets or drop an email to me @ ilyas@bornoncloud.com.


Thursday, April 14, 2016

Chennai Azure Global Bootcamp 2016 – By Chennai Azure User Group

Azure Global Bootcamp, as the name suggests a global event organized by community all around the globe at various places. If you got few minutes to learn the history of this event I recommend you to head over to http://global.azurebootcamp.net/. The motto of the event is to bootstrap developers, IT Pros to get into Azure cloud and learn the various services offered by Microsoft Azure. The event happens in various cities and this year I grabbed the opportunity to host and present a session on Azure Data lake analytics and Data store topic.

Chennai compared to rest of the cities in India is kind of offbeat when it comes to Technical events and communities, but it doesn’t mean that Chennaiites are not enthusiastic towards technology or programming, but it’s less compared to other cities of India.

The Azure Bootcamp has been conducted in Chennai ever since the event was started in the year 2013, but for various reasons its been conducted at universities and colleges mainly because of overhead involved in arranging venues, food and other expenses involved in conducting such an community event where there is no source of fund!

Conventionally for the year 2016, I took it as a challenge and wanted to conduct the event mainly targeting the IT community rather than student community, its not that we don’t want students to participate, but the content demanded more of IT Professionals rather than students. However we have got reservations from students from various universities and colleges to participate and learn Azure.

For the 2016 Chennai edition we have received more than 1000+ registrations because of the good work put into marketing this event and reaching out to all my connects through various social media platforms. I wanted to make it as a larger event with multiple tracks under different topics to cater the various kinds of audiences including developers, IT Pros, Big Data enthusiasts, Architects and mid-level managers.

As it is a full day event with multiple sessions with such a crowd, I wanted a larger venue that can accommodate such a size, but unfortunately hiring an auditorium to host such a larger event is outside of our budget. So i reached out to many IT & ITES services partners in around Chennai especially around the IT Express Highway where the majority of the IT communities exist. Many It partners came forward, but unfortunately some of them has a smaller venue or away from the potential location we were looking forward.

Atlast, GAVS Technologies, a leading IT & ITes provider located at Sholinganallur, OMR Chennai sponsored us the venue, food and other key assistance for us to host the bootcamp at their premise. Similarly audio/video, mic and speakers arrangments were sponsored by 8KMiles, my current employer, thanks to my boss Mr.Harish Ganesh who is the CTO of the company.

Getting speakers for a community events like this is always challenging, however with the help of   Chennai Microsoft user group and the right connects with the community people helped me to find experts in various areas to offer a session in the azure bootcamp!

We are very excited to conduct and host the session and looking forward to see there!

Tuesday, April 12, 2016

Sorting Operations in U-SQL

Just like SQL we can sort rowsets by using the ORDER BY operator in U-SQL by specifying the ASC and DESC keyword controls whether the sort is ascending or descending, respectively. In the below U-SQL SELECT * FROM statement you can order the output rows IF and ONLY you also specify how many rows you want to fetch back, failing to using FETCH First clause will result in error. The reason for this behavior is, when running U-SQL scripts in the Azure Datalake analytics distributed environment, performing any sorting will be a very expensive operation. It is for this reason that the ability to order rows has been deliberately restricted to the cases shown above.
DECLARE Out_File string = "/Smples/Output.tsv";

@searchlog = 
EXTRACT UserId          int, 
            Start           DateTime, 
            Region          string, 
            Query           string, 
            Duration        int, 
            Urls            string, 
            ClickedUrls     string
    FROM @"/Samples/Data/SearchLog.tsv"
    USING Extractors.Tsv();

// List the sessions in increasing order of Duration
@output = 
    SELECT * 
    FROM @searchlog
    ORDER BY Duration ASC

OUTPUT @output
    TO @Out_File
    USING Outputters.Tsv();

Alternatively, you can also specify ordering when using an OUTPUT statement which does not require a FETCH FIRST.
@output = 
    SELECT * 
    FROM @searchlog;

OUTPUT @output 
    TO @"/Samples/Output/SearchLog_output.tsv"
    ORDER BY Duration ASC
    USING Outputters.Tsv();

Declaring Parameters in U-SQL

Declaring re-usable parameters is always handy when writing a lengthy U-SQL Scripts. U-SQL also supports using DECLARE statement while writing queries. You can use the DECLARE instruction to save values of Native U-SQL datatypes.
DECLARE Out_File string = "/Output/sample.txt";

@searchlog = 
EXTRACT UserId          int, 
            Start           DateTime, 
            Region          string, 
            Query           string, 
            Duration        int, 
            Urls            string, 
            ClickedUrls     string
    FROM @"/Samples/Data/SearchLog.tsv"
    USING Extractors.Tsv();

@output = 
         (Duration>300 ? "long" :"short") AS DwellType
    FROM @searchlog;

OUTPUT @output
    TO @Out_File
    USING Outputters.Tsv();
U-SQL Data Types DECLARE can be used with all the U-SQL native datatypes. String Type
DECLARE @text1 string = "Hello World";
DECLARE @text2 string = @"Hello World";
DECLARE @text3 char = 'a';
You can use other variable declarations in a #DECLARE statement to combine strings.
DECLARE @text4 string = "BEGIN" + @text1 + "END";
DECLARE @text5 string = string.Format("BEGIN{0}END", @text1);
Numeric signed
DECLARE @numeric1 sbyte = 0;
DECLARE @numeric2 short = 1;
DECLARE @numeric3 int = 2;
DECLARE @numeric4 long = 3L;
DECLARE @numeric5 float = 4.0f;
DECLARE @numeric6 double = 5.0;
Numeric unsigned
DECLARE @unumeric1 byte = 0;
DECLARE @unumeric2 ushort = 1;
DECLARE @unumeric3 uint = 2;
DECLARE @unumeric4 ulong = 3L;
DECLARE @misc1 bool = true;
DECLARE @misc2 Guid = System.Guid.Parse("BEF7A4E8-F583-4804-9711-7E608215EBA6");
DECLARE @misc4 byte [] = new byte[] { 0, 1, 2, 3, 4};
DECLARE @d1 DateTime = System.DateTime.Parse("1979/03/31");
DECLARE @d2 DateTime = DateTime.Now;
Usage of user definied function in DECLARE is currently not supported. For example, you cannot use the below statement which will result in error
DECLARE myName string = MyHelper.GetMyName();
Similalry Values cannot be assigned from a RowSet. For example, you cannot use the below statement which will result in error
DECLARE @maxval int = SELECT MAX(value) FROM data;
The above statements are not explicitly supported by U-SQL, however an alternative is to get a single-row rowset with a single column and then JOIN that tiny rowset other rowset to get what you need.