Tuesday, November 26, 2019

Thursday, October 17, 2019

Football Pontoon Azure Architecture

As you may have seen from my recent posts on LinkedIn, I have been creating a new website called FootballPontoon.  It is a game you can play with your friends or work colleagues where each player picks a unique team from the Football League, pays a weekly ante and the first team to get to 21 wins the cash.  At that point, you all go back to zero and the next round starts.

It is a good game to play and can even attract people who are not into Football as it is pretty much set and forget.  It was a game my wife's work played and I was always interested in her teams performance.  After hearing that it was managed manually (yep, someone has to manually enter scores for each team into spreadsheet each week!), I thought that it could be done better.

So I created something pretty good which used Google Sheets to auto download results, calculate scores and then used Google Scripts to send out weekly updates and check for winners.

Look at that formula!

This worked really well and meant I had pretty much zero work to do each week.

During my recent journey to pass my AZ-300 and AZ-301 exams, I did wonder if I had a proper application to develop, it would be easier to learn lots of the Azure technologies and how they connect together.  Following walkthroughs and tutorials is fine, but sometimes it can feel as though as though you are blindly following instructions without challenging why certain things are done.

Now, don't get me wrong, docs.microsoft.com is an absolute treasure trove of amazing documentation and in the last few years has seriously ramped up in quality and quantity.

My background is primarily in Operations and End User Compute, so software development is very new to me.  I decided to re-engineer what I had in Google and do it within Azure.  And this is what I ended up with


Current Scores

Previous Round

The architecture is as follows.

Azure Automation
So I am using Azure Automation RunBooks for some activities.  I could have used Azure Functions, but I am more comfortable with PowerShell.  I have three Runbooks.  One that will download the latest score information and update my SQL database, one that will check each night whether a team has won and if so to create the new round and lastly a RunBook which will post a tweet of the latest scores via If This Than That (IFTTT).  It also uses a service called ScreenShot Machine.  This takes a picture of the current scores table on the website and adds it as an image to the Tweet.   

The Runbook which checks the latest scores is triggered by a logic app.  The reason for this is that a standard Azure Automation schedule can do a maximum of once an hour.  During the periods where there are lots of games (Saturday 3pm-5pm) I wanted the website to be updated much more frequently.  Logic Apps give you this flexibility, so I have it initiated every 5 minutes during the busy period and every 8 hours otherwise.

I have a basic SQL database with 5 tables in total (rounds, currentscores, previousrounds, teams and matches).  I won't go into too much detail about the relationships, but I will say that the DB design was the most important step in creating this.  I spoke to a friend of mine who is a SQL expert (Daniel O'Reilly) and he told me to spend some time to map it all out up front.  This certainly helped out a lot further down the line.

I created a basic Azure WebApp in C# to display the information from the SQL database.  I am using DevOps as source control and have configured Continuous Integration to automatically build a new website on newly pushed code.  The following PluralSight course was really useful on getting me up to speed.

ASP Fundamentals

I am using Cloudflare for DNS and HTTPS for the new site.  In Azure, you can add custom domain names and SSL/TLS for WebApps, but only if they were a certain tier.  I am using my VS subscription credits for this service and didn't fancy spending £50 a month just to support a custom domain name for TLS.  Cloudflare gives you this capability at their free tier and is something I use for this blog.

Other bits
I used Azure Bastion quite a lot to connect to a developer VM with Visual Studio and SSMS.  This was really useful as it meant I could get access to my tools from whatever machine and connect to the VM from within a browser (no fancy port opening needed!)  Azure Bastion costs about 7p an hour regardless if you are using it or not and it is not possible to turn it off.  For this reason I would delete it and use Azure RM templates to recreate it whenever I need it.  This would say a lot of money on my VS subscription.

Next Steps
I would like to investigate the possibility of people being able to create their own leagues.  This does pose a number of challenges.  I haven't had to do anything on authentication at all and data privacy would be a big concern.  I don't want to hold user information until I am more confident with c#.

I may look at Microsoft Flow as an alternative for IFTTT going forward.

I want to update the site to asp.net core 3.0 at some point, but at this moment in time, it is not supported for Azure App Services.

Let me know what you think and if you have any ideas.  This process has been really useful to learn new things and will help me going forward when using new features.

Thursday, September 12, 2019

Citrix Future of Work Tour 2019 (London)

I visited etc. Venues in Bishopsgate for Citrix Future of Work Tour 2019 on September 11 2019.  There were three main takeaways

Consumer like experiences
Packed house!
Consumer like experiences
During the keynote, they mentioned how consumer applications like Facebook are very easy to use, data is surfaced to you in the simple way and interactions are straightforward.  Employee tools however, are usually quite cumbersome and difficult to use. 

This product was realised out of the acquisition of Sapho late last year

This provides the employee with a feed built up from connections to various SaaS applications.  This feed also allows some basic interactions e.g. booking leave in WorkDay or approving expenses in SAP.  It is built on their cloud offering and includes AI and ML to increase productivity e.g. if you as a manager always approve expenses under £50, it would start to automate this exercise.  A challenge was raised about employees “gaming” the system, but Citrix’s response was that the same AI/ML would be able to identify staff who were always putting in £49.99 requests and force the manager to review.

This isn’t very “new” news as it was talked about at Synergy, but the demos were pretty good.  They launched a Citrix secure web app to launch WorkDay to book some leave and it took 3-4 minutes end to end.  Using Intelligent Workspace it took about 20 seconds.

There are a bunch of pre-built integrations out there for popular SaaS apps and a Microapp builder which is a low/no code solution for building your own integrations.

Integration of these app notifications into Teams or Slack is supported too.

Again Citrix betting big on their cloud offerings.  By using Citrix Cloud with analytics, they are able to make more intelligent decisions around security for users.  Being able to check risky sign-ins or other unusual patterns.  They can also take feeds from other products such as Microsoft Azure AD to help provide a better context and make better decisions.  They can also output their data to third parties SIEM solutions like Splunk or Azure Sentinel.

The analytics piece is also for performance too.  By leveraging Citrix Cloud, you can get a much better breakdown of the user experience.  It looks like Director that you may have on-premises but includes much more fine grained information about the user’s session.  With their ML, they can see trends too.

It felt like Citrix were trying to flog SD-WANs to anyone that would listen.  They did a session on optimising Office365 and provided some stats on how using SD-WAN could increase MS Word launch speed by 55%.  Sounds great…how do they do that?  Well, in essence they are using SD-WAN to breakout directly to the internet/Office365 from branch offices rather than going through your datacentre.

They also talked about Citrix intelligent traffic management, again using Citrix’s Cloud to make better decisions on network routing and performance.  They are collecting 15 million data points everyday which can help them route traffic in the most expeditious way.  We didn’t get a demo of this, but they provided the following links which might be worth looking at.

Bonus: Secret Demo Room
There was a secret demo room which showed three products that Citrix engineers had created in their 20% free time.  These may not see the light of day and they were keen to ask for feedback from customers.

I won't ruin the surprise if you are due to go to a future event, but I recommend registering to see them if you can. If you can't get there and want to know more, ping me on LinkedIn! 

Other notes
There was a session on provisioning Windows 10 in Azure which I caught the end of.  Citrix are suggesting their USP over WVD and more generally is that you can use Workspace to access any of these services from one single entry point.  This makes sense, but it also requires you to buy in Citrix lock, stock and barrell.  Something I am sure their Sales team will be happy to discuss with you!  Other than that, the provisioning plane in Citrix Cloud looked similar to Workspot.

The key takeaway was the fact that Citrix really want you to become a Citrx Cloud customer.  This obviously provides them with a better licencing model which is sustainable as most tech companies are going down the subscription route, and as many of the offerings they are bringing out have some ML or AI baked in, it is difficult/impossible to backport this to On-Prem.  Other than that, Citrix want you to buy a bunch of SD-WANs…to connect to theirs and other cloud services.

It was a well put together day and if you have the opportunity to attend in a different region, I recommend it.