<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[DevelopersDevelopersDevelopersDevelopers - Medium]]></title>
        <description><![CDATA[About software development. - Medium]]></description>
        <link>https://medium.com/developersdevelopersdevelopersdevelopers?source=rss----f5a4026e2eb8---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>DevelopersDevelopersDevelopersDevelopers - Medium</title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers?source=rss----f5a4026e2eb8---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 13 Nov 2026 09:33:07 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/developersdevelopersdevelopersdevelopers" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com/" rel="hub"/>
        <item>
            <title><![CDATA[Let’s write a book together — CI/CD for ebooks]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/lets-write-a-book-together-540b1d2cd909?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/540b1d2cd909</guid>
            <category><![CDATA[markdown]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[ebook]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[visual-studio]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Thu, 02 Aug 2018 18:23:52 GMT</pubDate>
            <atom:updated>2018-08-02T18:24:11.701Z</atom:updated>
            <content:encoded><![CDATA[<p>Over the last weeks I’ve been working on a CI/CD chain for ebooks. I will point out the technical details in another post.</p><p>I started this experiment for several reasons.</p><p>One is that I had been thinking about books for quite some time. During my time as evangelist a publisher asked me to write a book on Windows Store App development. While I always wanted to write a book just because it would be awesome to call myself an author at this time the APIs of the Windows RT platform changed rapidly. The publisher told me that it typically is a project of several month or even more than a year to write a book. (We’re talking about a physical book here, made of paper.) Basically my book would be outdated when it was printed. So I declined and started thinking about what authoring a book should look like today.</p><p>[ Years later my first ebook was published. It was only a collection of blogposts wrapped into an PDF, MOBI and EPUB format. (My colleagues at Microsoft helped me with all of this a lot.) The posts contained information on Visual Studio tips in German language. So it was a rather quick &amp; dirty approach but it fulfilled it’s goal: Sharing knowledge with the world. ]</p><p>It it pretty obvious to me today that documentation on something that fast moving and volatile as e.g. a cloud computing platform or a very frequently updated piece of software is outdated very soon if you print it on paper. So going forward I wanted to focus on digital books.</p><p>But even a digital version doesn’t keep itself updated. We have to make sure we can rework and update the content over and over again, fix bugs and include changes rapidly keeping the cycle times low. Wait a second — doesn’t this sound familiar if you’re coming from a software engineering background? Sounds like the need for CI/CD for me! Take a look at <a href="http://docs.microsoft.com/">http://docs.microsoft.com</a> The new documentation is located on GitHub and everybody can work on it or send Pull Requests. The docs improved a lot over the last month and I think the reason for this is the switch to the new platform. Couldn’t this concept also be used to write a book? And: Where’s the difference between writing a book on a technical topic and writing brilliant technical documentation?</p><p>The ultimate driver for me to start working on this was that I own an ebook reader (Tolino) which I take almost wherever I go. And I found that it is pain to read documentation which comes in PDF, because it’s just not made for ebook readers. I realized that when I tried to download the PDF version of some docs.microsoft.com chapters. I thought it would be awesome to be able to take that info with me and whenever I sit in a plane or train or anywhere else without connectivity and I feel like learning new stuff I start reading the docs. However this doesn’t look too good on my Tolino, because scrolling, zooming, panning PDFS is just pain.</p><p>So here’s the very obvious idea: Write a book based on a bunch of markdown files located in GitHub. And then create a build and deployment process to publish a new version every time a PR has been accepted. Pretty straight forward. To make things more attractive I added a function who lists every Contributor on GitHub as an author.</p><p>Now the last thing is which topic I would choose so that the concept of the book will work. I’m a strong believer in the developer community because I learned over years that developers are very willing to share their knowledge. And I really profited from that quite often. So, my choice is obvious: Let’s write a new version of that Visual Studio Tips &amp; Tricks book as a starter. If the tech proofs to be working, we can pick greater challenges later on.</p><p>Do you want to participate? All you have to do is share your one favorite tip to become a book author. The latest version of the book can be found <a href="https://github.com/DanielMeixner/ebook-visual-studio-tips/releases">here</a>. The guidance how to participate can be found <a href="https://github.com/DanielMeixner/ebook-visual-studio-tips/releases">here</a>.</p><p>Thanks for your contributions.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=540b1d2cd909" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/lets-write-a-book-together-540b1d2cd909">Let’s write a book together — CI/CD for ebooks</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to create a Twitter sentiment analysis for your service]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/how-to-create-a-twitter-sentiment-analysis-for-your-service-a08a68c10446?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/a08a68c10446</guid>
            <category><![CDATA[dashboard]]></category>
            <category><![CDATA[azure-logic-apps]]></category>
            <category><![CDATA[cognitive-services]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[devops]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Thu, 04 Jan 2018 10:12:30 GMT</pubDate>
            <atom:updated>2018-01-30T14:07:46.029Z</atom:updated>
            <content:encoded><![CDATA[<p>Brian Harry’s recent blogpost about a twitter <a href="https://blogs.msdn.microsoft.com/bharry/2017/12/15/twitter-sentiment-as-a-release-gate/">sentiment analysis</a> as a release gate <a href="https://twitter.com/DanielMeixner/status/948208273773285376">impressed me a lot</a> and I wanted to find out how complicated it is to do an analysis for my own stuff. So here’s a little tutorial how you set up things from scratch if you want to know what “the internet” thinks about your product.</p><p>I was expecting some challenges but I got up to speed very fast — actually way faster then expected. Here’s what I wanted to do and what I’m asking you to do as well:</p><p>1. Specifiy a hashtag to identify tweets related to my service<br>2. Create an Azure Logic App to check Twitter periodically.<br>3. Call the sentiment analysis service provided by Bing.<br>4. Write the results of the analysis into this Azure SQL Database.<br>5. Create a PowerBI Dashboard to display the results in a chart.<br>6. Publish this chart and show it on my Team Services Dashboard.</p><p>This sounds like a lot of work. In fact: It’s not. Before we dive into the details, here’s what I got:</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/691/0*QyTPS98t3DogYHSz.png" /></figure><p>This diagram shows the average sentiment for all tweets related to my specified hashtag on a per hour basis. The closer the value to 1 (the higher the bar) the better is the mood. The black line gives an indication about how many messages have been tweeted — so you have an indication whether an increase or decline is backed by many voices or just a single tweet. I’m pretty sure you could beautify the chart a lot and integrate all kinds of colors but that’s not the focus.</p><p>As always here’s a warning: This post shows the technical aspects — I’m totally aware that an interpretation of the sentiment analysis is a totally different story. Be aware that this analysis only displays the sentiment of people who spoke up on Twitter — there might be plenty of unheard voices, though, so this should be considered as just <em>another </em>feedback channel. Anyway it’s an interesting metric to look at.</p><p>Here’s what I did to get there. You can follow the steps to build it yourself. Another warning: I’m working mostly with free plans here. This will limit your experience as the database size is limited and the number of free service calls is limited as well. If you’re not working on a free plan, cost might occur!</p><h4>Create an Azure SQL Database</h4><p>I didn’t create a new one, I just used one I had for demos anyway. You can use the free version. <a href="https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal">Here’s</a> how you do this. Then add a new table to the database to store the Tweet Data. I ran this SQL statement to do so:</p><p><em>CREATE TABLE MoreTweets (</em></p><p><em>id int PRIMARY KEY IDENTITY,</em></p><p><em>createdDate datetime DEFAULT(getdate()),</em></p><p><em>tweettext varchar(512) SPARSE NULL,</em></p><p><em>sentiment Float NULL,</em></p><p><em>author VARCHAR (512) ,</em></p><p><em>);</em></p><h4>Create a Twitter account</h4><p>Surprise, surprise, you need a twitter account. Go, get it here: <a href="http://www.twitter.com/">http://www.twitter.com</a> You need it to be able to query Tweets from the logic app.</p><h4>Get a Cognitive Services key</h4><p>Microsoft provides a bunch of cognitive services to analyze images, speech and text and so on. We’ll be using this service, but you have to sign up for it. You can do a limited amount of analysis per month for free, that’s what we’ll be doing.</p><p>Get the key for the Text Analysis API here: <a href="https://azure.microsoft.com/en-us/try/cognitive-services/?api=text-analytics">https://azure.microsoft.com/en-us/try/cognitive-services/?api=text-analytics</a></p><p>See the screenshot below.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/474/0*tUoYw131MN8tNHip.png" /></figure><h4>Create a Azure Logic App</h4><figure><img alt="image" src="https://cdn-images-1.medium.com/max/502/0*-2KEW07ahljWx8_d.png" /></figure><p>We need an Azure Logic app. If you’re working on the free Azure contingent of an VS MSDN Subscription or on a free trial things are free for you as long as you did not delete the cost limit explicitly. If not and you just want to try out things make sure to disable the logic app after some experimentation as cost will occur!</p><p>Edit the workflow of the logic app in the logic app designer after the logic app has been created.</p><p>Click the “new step” button and add three actions. I was impressed when I figured out, that for everything I wanted to do there’s already a step available which means I won’t have to write a single line of code. Just search for the connectors for Twitter, Text Analytics and SQL Server. Those connectors will provide specific events and actions. Just add them as shown below.</p><p>This is what the workflow should look like.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/576/0*3IAc9CdcRSHiWTl0.png" /></figure><p>If you click the Twitter step, it will ask you to configure a connection to Twitter. Specify your credentials. Then enter the appropriate values regarding keywords and interval. I set the interval to 3 Minutes. Choose the keyword as you prefer. If you don’t have a good keyword and still want to do the sample, just search for any product name you’re interested in or check the trending hashtags on Twitter. Be warned: This might bring plenty of traffic to your workflow!</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/479/0*79-FqyKBTGc1oGsX.png" /></figure><p>The sentiment analysis task is pretty straight forward. First you have to specify the keys you created earlier and give the new connection a name. Then you want to pass in the text of the tweet found. Just click into the text box. This will open up a menu showing “dynamic content”, which is provided based on previous tasks. In our case, of course we know all content related to a tweet containing our keyword by now. So we can just add the tweet text by clicking the Icon “Tweet text”.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/509/0*Ob4iw1Vij3IV9al0.png" /></figure><p>This is what it should look like:</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/511/0*W7DhAtSaamRkR_AH.png" /></figure><p>As a result of this step we will get the sentiment of this tweet. So in our last step will will write all of that into our database. Again in the SQL Server “Insert Row” step, we have to establish a connection to a specific database first. This will be very easy if you’re using an Azure SQL Database — the connections will be available already, you just have to pick the database. Then specify the table (Tweets, in my case) and pass the values — again taken from the dynamic content.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/522/0*q8y4Iy4gCSedmQpn.png" /></figure><p>We don’t have to specify the “createdDate” — it will be filled when the value is entered to the database automatically. I also store the author. This would allow me to figure out if there might be a single person who’s affecting the metric (I didn’t implement this filter yet, however).</p><p>We’re done. Let’s run the logic app now. Just click run in the editor. Over time, this will fill your Tweets table in your database.</p><h4>Create a report in Power BI</h4><p>Now create a new report in Power BI. You could do the same thing in Excel, but Power BI is pretty handy when it comes to publishing stuff afterwards.</p><p>In Power BI click “Get Data” and pick “Azure SQL Database”.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/500/0*RCh24z6h6yr9pnOx.png" /></figure><p>Specify servername and database name and choose “Direct Query”. This way the data shown by the report is taken directly from the database (with a cache which can be updated). Now it depends on what you’re going to display. I used the “advanced options” to be able to run a T-SQL query on the data to adjust it before I’ll be using it in my report.</p><p>Here’s the query I’m using:</p><p><em>SELECT</em></p><p><em>Convert ([datetime],</em></p><p><em>(Convert(Varchar,DatePart(year, createdDate ))) + ‘-’</em></p><p><em>+ (Convert(Varchar,DatePart(month, createdDate ))) + ‘-’</em></p><p><em>+ (Convert(Varchar,DatePart(day, createdDate ))) +’ ‘</em></p><p><em>+ (Convert(Varchar,DatePart(hour, createdDate )))+’:00 ‘</em></p><p><em>) as dateBasedByHour</em></p><p><em>,</em></p><p><em>createdDate,</em></p><p><em>id, sentiment FROM tweets</em></p><p>The reason I’m doing this is because I want to have the tweets clustered by hour and not listed separately one by one. This seemed to be a simple way to get there — I basically just skip the minutes and set them to 00. Maybe Power BI can do this in another way as well, but that’s the path I took.</p><p>In Power BI now create a “Line and clustered column chart” as seen below. Activate the values “datebasedbyhour” and “id” and “sentiment” as shown below. Make sure you’re using “Average of sentiment” (not sum) as column value and Count of id (not sum) as a line value. I also added a relative date filter showing values from the last 7 days.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/663/0*ACIY7rVc7Fp6JwKm.png" /></figure><p>Now let’s publish this on Power BI. You can do this via the File menu.</p><h4>Create a public link</h4><p>After publishing you’ll get a direct link into Power BI Web. Create an “Embed code” there by choosing “publish to web” in the file menu of Power BI Web. You’ll be presented a link to your chart. Be aware that every person with this link will be able to see the chart. In our case it doesn’t matter I guess. The information is public on Twitter anyway.</p><h4>Add the chart on your Team Services dashboard</h4><p>Now go to your Team Services account and add an “Embedded Webpage” Widget on your dashboard. I chose the 3x2 size. Specify the embed link you got. Place the Chart on your <a href="https://docs.microsoft.com/en-us/vsts/report/dashboards/index">dashboard</a>. You’re done.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/643/0*-c_eLpgHcpViU_do.png" /></figure><p>I think this is a very easy way to always keep an eye on what’s going on in public about your product. If sentiments are declining badly it might be an indicator that something is going wrong. If its increasing or if there’s just more chat about your stuff going on — you might be on the right track.</p><p>Go ahead and give it a try and let me know what you think about it.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a08a68c10446" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/how-to-create-a-twitter-sentiment-analysis-for-your-service-a08a68c10446">How to create a Twitter sentiment analysis for your service</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Lasttests in der Cloud mit Visual Studio Team Services]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/lasttests-in-der-cloud-mit-visual-studio-team-services-eedae6a1b69?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/eedae6a1b69</guid>
            <category><![CDATA[loadtest]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[free]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Mon, 28 Aug 2017 09:12:40 GMT</pubDate>
            <atom:updated>2018-01-30T14:07:12.165Z</atom:updated>
            <content:encoded><![CDATA[<p>[bing_translator] Dieser Beitrag beschreibt, wie man einen Lasttest mit Visual Studio Team Services anlegt. Mit jedem Visual Studio Team Services Account kommt kostenlos ein monatliches Kontingent von 20000 “Virtual User Minutes” für Lasttests. Das Kontingent verfällt nach einem Monat, wenn es nicht genutzt wurde — es lohnt sich also Gedanken zu machen, es einfach aufzubrauchen, anstatt es verfallen zu lassen.</p><p>Es gibt mehrere Wege einen Test zu erstellen — am, einfachsten ist sicher das Erstellen in Visual Studio. Zur Ausführung in der Cloud benötigt man eine <a href="https://azure.microsoft.com/de-de/free/?wt.mc_id=AID603934_QSG_BLOG_147857">Azure Subscription</a> und und einen <a href="https://www.visualstudio.com/products/visual-studio-team-services-vs">Visual Studio Team Services Account</a>.</p><h4>Erstellung und Ausführung eines Lasttests mit Visual Studio</h4><p>Einen Lasttest kann man am einfachsten mit Visual Studio erstellen. Dazu legt man ein Web Performance and Load Test Projekt an, Wie der Name schon sagt, gibt es hier zwei Komponenten: Webtests und Lasttests. Ein Lasttest führt einen oder mehrere Webtests in einer vorgegebenen Häufigkeit aus, um eine gewisse Last auf dem zu testenden System zu erzeugen.</p><p>Zunächst braucht man aber den Webtest. Eine *.webtest Datei exisitiert schon im Projekt, man kann beliebige weitere hinzufügen. Nach dem Öffnen des Webtests zeigt sich ein kleiner roter “Record” Knopf. Damit kann man das Mitschneiden des Netzwerkverkehrs auf dem eigenen System starten. Anschließend würde man im Internet Explorer die zu testende Website besuchen und hier beispielsweise einen bestimmten Ablauf auf dem Zielsystem ausführen (bsp. User Login, Produktsuche, Ware in Einkaufskorb legen, Ware aus Einkaufskorb entfernen, ausloggen). Den aufgezeichneten Verkehr kann man anschließend einsehen, editieren und parametrisieren. Auf diese Art wird man unnötige Requests los (bspw. Requests auf Advertising-Anbieter) und kann den Webtest flexibler machen, was die Zielsysteme angeht (indem man zum Beispiel die Zielurl als Parameter anlegt.) Die notwendigen Buttons finden sich im Menü zum Webtest.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/344/0*SH9Xcqg42jQm8vrd.png" /></figure><p>Als zweiten Schritt würde man jetzt einen Lasttest zum gleichen Projekt hinzufügen. Das Öffnen des *.loadtest startet einen kleinen Wizard, der durch unterschiedliche Einstellungen führt — hier kann man unter anderem auswählen, welche Webtests im Rahmen des Lasttests gestartet werden sollen. Ein Lasttest ist also eigentlich nichts anderes als eine Ausführungsanweisung für andere Tests — in unserem Fall Webtests.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/496/0*jcLcImr44yjyV0Kb.png" /></figure><p>Eigentlich ist man jetzt schon fast am Ziel. Früher — und damit meine ich die Zeit bevor man die grandiose und komfortable Möglichkeit hatte auf Cloud-Resourcen zuzugreifen — hätte man jetzt den Lasttests direkt aus Visual Studio gestartet und auf einem lokal verfügbaren Agent, vielleicht sogar auf der eigenen Maschine gestartet.</p><p>Die Cloud bietet uns hier aber den Komfort einfach auf Agents zuzugreifen, die immer, wenn wir sie brauchen zu Verfügung gestellt werden — ohne, dass Last auf eigenen Rechnern entseht. Und für diese Agents gibt es auch das erwähnte Freikontingent.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/529/0*AGE_9idKuvohh5q1.png" /></figure><p>In diesem Fall würde ich im Load Test Wizard einfach meinen Team Services Account anwählen und kann dann im zweiten Schritt das Datacenter wählen in dem mein Loadtest ausgeführt wird. An sich ist das Datacenter egal — ich kann rund um den Planeten auswählen. Standardmäßig ist das Datacenter die erste Wahl, das zum Visual Studio Team Services Account am nächsten liegt. Unter gewissen Umständen kann es aber sinnvoll sein hier explizit ein anderes auszuwählen, zum Beispiel, wenn man eine möglichst kleine oder große Distanz von Agent zur Zielapplikation haben möchte.</p><p>Zum Ausführen drückt man einfach auf “Run Load Test”. Abhängig von den gewählten Einstellungen läuft dann der Test eben lokal oder in der Cloud. Die Ergebnisse werden in beiden Fällen im Visual Studio angezeigt.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/435/0*kmV2BHOCSNRfl4lz.png" /></figure><h4>Lasttests im Azure Portal anlegen und starten</h4><p>Zugegebenermaßen ist das zwar ganz nett, aber es haut einen vielleicht noch nicht um — dazu ist es zu naheliegend. Wäre es nicht schön, wenn wir derartige Loadtests auch direkt aus dem Azure Portal ausführen könnten? Von Cloud zu Cloud?</p><p>Auch diese Möglichkeit besteht. Im Azure Portal kann man für Web Apps einen Performance Test anlegen. Hier besteht die Möglichkeit entweder einzelne URLs abzufragen oder auch hier einen Webtest aus Visual Studio zu verwenden. Kleiner Hinweis: Tatsächlich wählen wir hier ein *.webstest File — nicht, wie man vielleicht meint, ein *.loadtest. Die Konfiguration der gewünschten Last erfolgt dann im Azure Portal — daduch wird dann aus dem Webtest unterm Strich ein Lasttest. Über den Menüeintrag “Set Account” legt man den VSTS Account fest, in dem die Lasttestergebnisse später sichtbar werden — so sehen alle Beteiligten, ob das System ein Problem bekommt.</p><p><strong><em>Kleiner Hinweis</em></strong><em>: In diesem Fall kann als Input für die Generierung des Lasttests übrigens auch ein HTTP-Mitschnitt von </em><a href="http://docs.telerik.com/fiddler/Save-And-Load-Traffic/Tasks/VSWebTest"><em>Fiddler dienen — die Beschreibung dazu findet sich hier</em></a><em>.</em></p><p>Die Ausführung der Tests über das Azure Portal ermöglicht es mir also völlig unabhängig von einer Entwicklungumgebung eine Aussage über das Verhalten der Anwendung unter Last zu bekommen. Spätestens jetzt sollte klar sein, dass es sich in jedem Fall lohnt das freie Lastkontingent einfach mal zu verbraten — man bekommt auf jeden Fall ein besseres Gefühl, wie sich die eigene Anwendung unter bestimmter Last verhält und man braucht noch nicht mal eigene Hardware dafür zur Verfügung zu stellen.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/324/0*NKAf1Jg2yHP4P7EQ.png" /></figure><figure><img alt="image" src="https://cdn-images-1.medium.com/max/343/0*LQRVOzrJxve-k37b.png" /></figure><h4>Lasttests und Visual Studio Team Services</h4><p>In Visual Studio Team Services gibt es mehrere Möglichkeiten Lasttests anzulegen. Die offensichtliche ist es ebenso wie im Azure Portal einfach manuell einen Lasttest anzulegen. Die Benutzerführung ist hier ähnlich gehalten wie im Azure Portal. Hier finde ich auch unter “Settings” die Möglichkeit die Last des Lasttests zu konfigurieren.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/403/0*14O8_x25HWm1mXz3.png" /></figure><figure><img alt="image" src="https://cdn-images-1.medium.com/max/587/0*Fo_Ec6C4iPWWHxMQ.png" /></figure><figure><img alt="image" src="https://cdn-images-1.medium.com/max/416/0*6ZWL2HO3G6uw1sgL.png" /></figure><h4>Regelmäßige Lasttests nach einem Deployment</h4><p>Soweit so gut — aber noch nicht gut genug. Wäre es nicht super, wenn wir derartige Lasttests regelmäßig ausführen? Zum Beispiel nach jedem erfolgten Deployment unserer Anwendung in ein bestimmtes Deployment Environment — beispielsweise das Staging System? Auf diese Weise kann man verhindern, dass man ein System öffentlich macht, das zwar “ganz gut” aussieht, aber der zu erwartenden Last nicht gewachsen wäre.</p><p>Hierzu kann ich einen Task im Release Management einbinden, der einen Lasttest ausführt. Konfiguriert wird er nach dem gleichen Schema — einfach ein *.loadtest file im Release Management und den Pfad zum Ordner mit den Testbinaries angeben. Alle Ergebnisse der Testausführung finde ich dann — wie zu erwarten — unter dem Menüpunkt Loadtest in Visual Studio Team Services.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/430/0*0n4UZAjkzYhnScIT.png" /></figure><h4>Wieviel Kontingent habe ich noch?</h4><p>Wer wissen möchte, wieviel Freikontingent noch verfügbar ist, der findet diese Info auch im Azure Portal:</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/608/0*m8M1ioT85ixCw8-H.png" /></figure><p>Hier noch ein paar Links, die den Einstieg erleichtern:</p><ul><li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/reference-qa">Q&amp;A</a> zu Lasttests</li><li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/index">Genereller Übersicht in Last Tests und Visual Studio Team Servcies</a></li><li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/getting-started/get-started-simple-cloud-load-test">Lasttests mit VSTS</a></li><li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/run-performance-tests-app-before-release">VSTS Lasttests Tutorial</a></li><li><a href="https://www.visualstudio.com/en-us/docs/test/performance-testing/app-service-web-app-performance-test">Web App Performance Tests im Azure Portal</a></li></ul><p>Frohes Lasttesten!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=eedae6a1b69" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/lasttests-in-der-cloud-mit-visual-studio-team-services-eedae6a1b69">Lasttests in der Cloud mit Visual Studio Team Services</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to get Visual Studio 2017 version number and edition]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/how-to-get-visual-studio-2017-version-number-and-edition-101e725d1a38?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/101e725d1a38</guid>
            <category><![CDATA[edition]]></category>
            <category><![CDATA[visual-studio]]></category>
            <category><![CDATA[professional]]></category>
            <category><![CDATA[version]]></category>
            <category><![CDATA[enterprise]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Tue, 13 Jun 2017 10:11:36 GMT</pubDate>
            <atom:updated>2018-01-30T14:07:00.363Z</atom:updated>
            <content:encoded><![CDATA[<p>If you try to find information on the exact version of Visual Studio 2017 installed on your machine you might be confused by what you find when you look at the programs and features dialog.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/855/0*Nh37almJnRlemy67.png" /></figure><p>First, you might expect a more detailed display name which also names the edition (like Professional or Enterprise). Next, if you know the version numbers from the past you might expect to see a number starting like “15.x.y.z” instead of “1.x.y.z” — after all Visual Studio 2015 had version numbers starting with “14.x.y.z” so a simple increment seems obvious. Instead you see something like “1.x.y.z”.</p><p>It’s important to understand that the entry shown in the screenshot above relates to the installer of Visual Studio 2017 and not to Visual Studio 2017 itself. The installer of Visual Studio 2017 can typically be found in %ProgramFiles(x86)%\Microsoft Visual Studio\Installer .</p><p>Why is that? You might have noticed already that the overall installation experience of Visual Studio has changed dramatically with Visual Studio 2017 allowing not only very slick and quick installations but also side-by-side instances of Visual Studio 2017 . (See also this <a href="https://blogs.msdn.microsoft.com/visualstudio/2016/06/17/redesigning-visual-studio-installation/">post</a>.) These new capabilities lead to described behavior.</p><p>In case you need to find out the version number of Visual Studio on a PC programmatically there are two ways recommended.</p><p>If you prefer to work with Powershell you can use the vssetup module found here (<a href="https://github.com/Microsoft/vssetup.powershell">https://github.com/Microsoft/vssetup.powershell</a>) which will return all the details of your current Visual Studio 2017 installation. The result will look like shown in the screenshot below.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/533/0*4v-6pDFJ08pNDQvC.png" /></figure><p>As an alternative you can run <a href="https://github.com/Microsoft/vswhere">vswhere.exe</a> which can be found in the installation folder of Visual Studio Installer per default. If you can’t find it there, it can also installed manually, e.g. via <a href="https://chocolatey.org/packages/vswhere">chocolatey</a>. More details can be found <a href="https://github.com/Microsoft/vswhere">here</a>. The result of vswhere.exe looks like shown below.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/839/0*OgwwWO0i1dPOm3vY.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=101e725d1a38" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/how-to-get-visual-studio-2017-version-number-and-edition-101e725d1a38">How to get Visual Studio 2017 version number and edition</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[A speedway to Continuous Integration and Continuous Deployment for Java, Node or .NET — Yo Team step by step]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/a-speedway-to-continuous-integration-and-continuous-deployment-for-java-node-or-net-yo-team-step-by-795b4a90412?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/795b4a90412</guid>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Fri, 28 Apr 2017 09:47:31 GMT</pubDate>
            <atom:updated>2018-01-30T14:08:14.578Z</atom:updated>
            <content:encoded><![CDATA[<p>In this blog post I describe step by step how you set up CI/CD for a Java application in no time. It will take way longer to read this tutorial then actually setting up. I promise.<br>You might have heard of Yeoman, a great code generation tool. My <a href="http://donovanbrown.com/post/yo-Team">colleague Donovan Brown created a generator generator-team</a> to allow setup of complete CI/CD chains for a number of languages in minutes. (You can find Donvans original post <a href="http://donovanbrown.com/post/yo-Team">here</a>).<br>Here’s a quick tutorial how you get going starting from scratch. It’s all pretty straight forward however you might get confused when it comes to the credentials. See below. So I thought it’s a good idea to provide a more detailed guide.</p><p><strong><em>Hint</em></strong><em>:</em></p><p><em>In case you don’t want to run step 1–4 and have Docker installed on your machine you can also just pull danielmeixner/yo-team-bash from </em><a href="https://hub.docker.com/r/danielmeixner/yo-team-bash/"><em>https://hub.docker.com/r/danielmeixner/yo-team-bash/</em></a><em><br>However things might behave differently than described here — this is because in docker you’re command line only and you should set up your git credentials first. I’ll describe some of those specifics in another post.</em></p><ul><li><em>docker pull danielmeixner/yo-team-bash</em></li><li><em>docker run -it danielmeixner/yo-team-bash</em></li></ul><p><strong><em>Step by step:</em></strong></p><ol><li><strong>Install NodeJs.<br></strong>NodeJs provides the runtime required for Yeoman which is the basis for everything else.</li><li>I found the my old 6.x version didn’t work so I recommend using the latest version. On my machine <strong>v7.7.3</strong> works like a charm.</li><li>You can download a NodeJs installer <a href="https://nodejs.org/en/">here</a>.</li><li><strong>Install Yeoman.<br></strong>Yeoman is a based on node so you install it using npm. If you want to know more about Yeoman check out the <a href="http://yeoman.io/">Yeoman website.</a> It’s a fantastic tool so it’s worth a look. And by the way it’s <a href="https://github.com/yeoman/yo">open source</a>.<br>Open a commandline and run</li><li><em>npm install -g yo</em></li><li><strong>Install the team generator.</strong></li><li>Yeoman needs additional code generators to be able to generate stuff. In this step you install the required generator to be able to automate setup of CI/CD in VSTS. It’s called generator-team and it’s open source.<br>Open a commandline and run</li><li>npm install -g generator-team</li><li><strong>Install Git. [Optional|recommended]</strong><br>You might have Git already installed anyway. You don’t really need git for the setup, but it’s good to have it to do the first push into your repo. Also the automation tries to fire some Git commands. If you don’t have Git installed you might run into errors, however these are typically not completely stopping the show. I still recommend having Git installed. For this tutorial I supposed Git is installed.<br>You can download Git <a href="https://git-scm.com/downloads">here</a>.</li><li><strong>Install Visual Studio Code. [Optional]</strong></li><li>You don’t really need Visual Studio Code, but I will use it in this tutorial. It’s works cross platform and is <a href="https://github.com/Microsoft/vscode">open source</a>.</li><li>You can download the installer <a href="https://code.visualstudio.com/Download">here</a>.</li><li><strong>Set up a free Team Services account</strong><br><a href="https://www.visualstudio.com/team-services/">here</a>. If you already have an account, just use that one.</li><li><strong>Set up an Azure trial subscription</strong><br><a href="https://azure.microsoft.com/">here</a>. We’ll deploy to Azure so we don’t have to set up our own hosting in this tutorial. However you could also deploy to a Docker host, if you want. If you already have a subscription that’s fine as well.</li><li><strong>Start Yo Team<br></strong>Trigger the yo team generator. Open a command line and type</li><li><em>yo team</em></li><li><strong>Follow the wizard.</strong><br>Yo asks you for several inputs. I will explain what those inputs are based on a Java application running on Azure. The first thing you might see (only the first time) is this.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/600/0*0xICJUvs-pkkyFtT.png" /></figure><ol><li>This only appears if you’re running yo for the first time. For our purposes it’s not relevant if you answer with Y or n.</li><li><strong>Specify Account Name</strong>.<br>Yo will ask you for an account name.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/477/0*MP28BTkYk7bZ9ZLW.png" /></figure><ol><li>You can use the generator for work with Team Foundation Server. Specify the full URL then as shown. However in our case I consider you have a Visual Studio Team Services account. Then just specify the account name. You can find it in your URL. It’s basically the subdomain. In my case it’s “dmx”. So I respond with dmx.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/699/0*Qt-EkgwdId625Q_v.png" /></figure><ol><li>Now I’m asked for my <strong>Personal Access Token</strong>.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/311/0*j2OZdXOWu6-DNtzR.png" /></figure><ol><li>A personal access token (PAT) is required for giving access to my Team Services account for the Yo tool. I have to create a PAT first. So I navigate to my Team Services account (in my case <a href="https://dmx.visualstudio.com/">https://dmx.visualstudio.com</a>) and mouse over my icon in the upper right corner and chose “Security”. A page opens where I can create a new PAT. Simply click “Add”, give the PAT a description and create a token. I choose “All scopes” to make sure Yo can do whatever it takes. You can invalidate our key right after we are finished. But first create it with “Create Token”.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/683/0*E2g8lJeeCx6CctuH.png" /></figure><ol><li>You have to copy the token in the next dialog. There won’t be another chance so better copy it right now! It’s pretty long. Don’t show it to anybody and keep it safe like a password!</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/584/0*FRz7y88Ls4HCdvP2.png" /></figure><ol><li>Provide this PAT as answer.</li><li><strong>Configure Build Queue.<br></strong>Yo Team will use your PAT to figure out which agent queues are available to build your source code. I prefer to pick “Hosted” here. It certainly depends on what you already have set up, however Hosted should work under all circumstances. You can select using the arrow keys up and down and then just click return.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/564/0*eTJeHiLRiWRVnIBj.png" /></figure><ol><li><strong>Appliation type</strong></li><li>Yo Team will ask you what kind of application you want to set up. I’ll pick a Java app for this demo. Again, chose with the arrow keys.</li><li><strong>Name of application</strong></li><li>Next specify the name of the app. This will be used as Application name and also as name for the team project you’ll be creating in VSTS. You can use whatever you want. I recommend avoiding special characters.</li><li>I chose <em>tmpMyYoJavaDemo03</em></li><li><strong>Deployment Target</strong></li><li>Yo Team will ask you where you want to deploy — to a Docker host or to Azure App Service? For this demo I don’t want to set up a Docker host but just be able to deploy. So I pick Azure.</li><li><strong>Azure Subscription<br></strong>Yo Team asks me which subscription I want to use. Maybe you don’t have a choice here, maybe you’ll see several subscriptions. Just pick the one where you want to deploy to. I’ll go with my MSDN subscription here. If I would have chosen Docker I’d had different questions regarding my Docker host here.</li><li><strong>Group ID</strong><br>Because we chose a JAVA app we also have to specify our GroupId. I just pick <em>MyYoJavaDemoGroup</em> here.</li><li><strong>Install Dependencies?</strong><br>Next you’re being asked if you want to install dependencies. I prefer <strong><em>No</em></strong> here otherwise some dependencies will be downloaded on my machine. But I don’t need this, I just want to push the code later.</li><li><strong>Magic starts now</strong>. All in all it looks like this and now the magic starts…</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/513/0*IU8bMPdqoDlnrW3A.png" /></figure><ol><li><strong>Credentials again?</strong></li><li>You might be asked for credentials again and this might be confusing to you. This depends on how you’ve been working with Git already and how it’s been set up locally for you. It’s important to note that these credentials are credentials to access your Git repo on VSTS. So your default VSTS credentials might not work. If in doubt go to your VSTS account, open the security page again (as before) and set alternate authentication credentials for your account. Use these to login.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/477/0*5S9VIGoG6ni7MPo3.png" /></figure><ol><li>When asked for your username use the user name as specified (including @something.com) so e.g. <a href="/service/mailto:your.name@live.com">your.name@live.com</a>. You’ll be prompted for the password as well.</li><li>When everything worked as expected if you get a “Now all you have to do is push when ready” message.</li><li>If you’re used to Git, you can do the push by using the command line git commands. Or you open Visual Studio Code. First navigate to the brand-new directory containing code. In my case I do so by running</li><li><em>cd tmpMyYoJavaDemo03</em></li><li>Open Visual Studio Code in this folder by typing</li><li><em>code . </em><br>Don’t forget the “.”, otherwise you can navigate to the folder manually in Visual Studio Code.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/520/0*wgU-ZsGnvNAJUvrn.png" /></figure><ol><li>Now navigate to the Git panel in Visual Studio Code and select “Push to …” in the menu.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/596/0*375c3AcD81B5Yjvc.png" /></figure><ol><li>In the subsequent dialog choose “origin” as your target.</li></ol><figure><img alt="" src="https://cdn-images-1.medium.com/max/595/0*Hs8xY523XwYgB192.png" /></figure><ol><li>This will push the code to your VSTS account. You will find it in the “Code” tab of your account. It will also trigger a build and after the build it will deploy to your Azure subscription into a newly created Azure App Service.</li></ol><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=795b4a90412" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/a-speedway-to-continuous-integration-and-continuous-deployment-for-java-node-or-net-yo-team-step-by-795b4a90412">A speedway to Continuous Integration and Continuous Deployment for Java, Node or .NET — Yo Team step by step</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Create an insane developer workstation in the cloud]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/create-an-insane-developer-workstation-in-the-cloud-6f610b6080e3?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/6f610b6080e3</guid>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[msdn]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Wed, 22 Mar 2017 13:07:01 GMT</pubDate>
            <atom:updated>2018-01-30T14:06:47.174Z</atom:updated>
            <content:encoded><![CDATA[<p>In this blogpost I describe how to set up your perfect developer workstation running Visual Studio 2017 in the cloud without any installation steps required on your side.</p><p><strong>Why?</strong></p><p>As developers we always need more performance. A faster CPU or more RAM or more space. Sometimes our physical machines just aren’t powerful enough. On the other hand I often hear from developers who are owning an MSDN license already that they don’t know what to do with the monthly Azure credits which come with MSDN.</p><p><strong>Here’s my proposal</strong>: Even if your company doesn’t build a cloud service yet and even if you are not very experienced with cloud computing at all — <em>why not set up a powerful developer Workstation in the cloud</em> — it will cost you nothing! 56GB of RAM. 8 Cores. Or more? Sounds good?</p><p>If you are licensed with MSDN you get a certain amount of monthly credit you can spend on Azure workloads. If you don’t spend it, it’s gone. If you do spend it, you can use Azure until your credits are gone and then your Azure service just stops working. Per default there’s a spending limit of 0 which makes sure you don’t have to pay and stay within the free credits. So as long as you don’t explicitly delete this limit, you’re save. <br>You haven’t activated your Azure credit yet? <a href="https://blogs.msdn.microsoft.com/dmx/2017/03/22/english-step-by-step-activate-your-free-azure-monthly-credit-for-your-msdn-license/">Here’s a tutorial I wrote how to do this.</a></p><p>In case you don’t have an MSDN license — go ahead and start an Azure trial. You can then follow the same process as described below and can set up a powerful developer VM (However your budget is different and your trial will expire at some point in time). You can <a href="https://azure.microsoft.com/de-de/free/">activate your Azure trial here</a>.</p><p>This is an awesome opportunity to get your hands on new software like Visual Studio 2017 which is provided within a VM template already for you. If you like it you might consider trying out the software with your current project and code files. And if you really fancy the experience, this might become your number one developer workstation you connect to every day. In case this is something you’re looking into you should definitely check out <a href="https://azure.microsoft.com/en-us/services/devtest-lab/">our Azure Dev/Test labs</a> as well which is our service offering for exactly this scenario with some additional features. But I think I will cover this in another post.</p><p>So here’s my step by step tutorial. If you already know how to set up a VM — go ahead, do it, this is the procedure described here.<strong> But make sure you switch on Auto-shutdown to save your credits during the times where you’re not using your machine (see steps below). This is important!</strong></p><p><strong>Control cost by shutting down</strong></p><p>You might wonder if this makes any sense — a powerful VM on Azure doesn’t come for free and if you take a look at the cost of a really powerful VM it might be a multiple of your free Azure credits. The thing is that the estimated cost per VM which you see in the Azure portal is estimated on a 24/7 basis. This means the estimated cost you see here is a good indication — but based on your usage you can control cost. This makes perfect sense and for our scenario it means if you run the VM just for a few hours every workday you can reduce the cost to a level where you stay within the free Azure contingent. Of course — if you find you like what you see you always have the chance to exceed the limit after you disabled it or you also can scale up or down the machine you are using after creation.</p><p>If you want to save credits, don’t just shutdown the machine from within the machine but make sure you stop the machine from the Azure portal. (see below)</p><h3>Step by step — set up a powerful Azure VM running Visual Studio 2017</h3><p>1. Visit the Azure portal (<a href="http://portal.azure.com/">http://portal.azure.com</a>) and create a new VM. To do so, click the + on the left, then select “compute” and “see all”.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/544/0*EhU5UMJtvGsWRtyy.png" /></figure><p>2. Search for Visual Studio, pick the template you want to use.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/580/0*ip7MHBrPvL3hiU1k.png" /></figure><p>3. Click Create. A configuration blade will open. Provide the basic information like machine name, user, password, your Azure subscription and a resource group. A resource group is logical construct which holds some Azure resources (like the VM we are creating). You can pick any name to create a new one or use an existing.</p><p>When it comes to Location pick one which is close to you to avoid unnecessary latency.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/421/0*IvE_cBVPxuaC-C5c.png" /></figure><p>4. Confirm this dialog at the bottom of the blade. No the fun starts. We can pick a size of the VM. This means we can configure stuff like RAM and cores. Pick “View all” to see more available configurations.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/541/0*EZ6O7egvRTchO2jj.png" /></figure><p>5. Go and find a configuration that should work for you. As said before — you can control actual cost of the VM by reducing unnecessary uptimes. A DS3 machine will offer you 8 cores and 56GB RAM. This is somewhat faster than my laptop. As said before — you can’t exceed the zero spending limit if you’re licensed via MSDN as long as you didn’t remove the limit manually.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/637/0*lbr5hU7XEOVRy5nH.png" /></figure><p>6. Confirm your configuration and provide the necessary setting in the next blade. See a sample configuration below. The only thing where you really have to provide some values is the networking part. For all others you can keep the defaults. Provide an adresss space (e.g. 12.0.0.0/24) and a subnet address range (e.g. 12.0.0.0/24) and pick a name for your subnet.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/848/0*pPqipp6fUhIQzGJy.png" /></figure><figure><img alt="image" src="https://cdn-images-1.medium.com/max/332/0*yvecWRloaT8YLSuD.png" /></figure><p>7. Confirm you configuration. You will get a summary and your configuration will be validated. Click OK to start the deployment. In the portal a notification will show up.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/513/0*lf8VPlM_6DC3DIR6.png" /></figure><p>8. In the notification era you will find information on how much credit is left as well. Here’s a sample screenshot from my credits. Thank got the month is almost over and I will get a new credit in a few days.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/434/0*DmE31y6y4xpviU_V.png" /></figure><p>9. After a few minutes you’ll see the message that the deployment was successful. This means your machine is running.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/444/0*RtPYEMNm6ioh2pQC.png" /></figure><p>10. Click the “Connect“ button to download an *.rdp file. Click the downloaded file to start an RDP session with your brand new machine.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/813/0*nNQTBzeADuvXvtNg.png" /></figure><p>11. Enter your credentials. Make sure you provide your name as machinename\username! In case your machine can’t be found it might still be booting. So give it another try in a few seconds.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/223/0*3sufHfitUA22j00J.png" /></figure><p>12. As soon as you are connected you’re done. You have set up a virtual machine running Visual Studio 2017 — go ahead and start it, connect it with your account and your source code repositories in VSTS or on Github.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/622/0*mqXCocHVavMnaKGv.png" /></figure><p>13. This last step is important: I recommend you configure auto-shutdown. Your VM will always be shut down automatically at a point in time you choose. Every day. This will save you some credits when you don’t need the machine.</p><p>15. If you want to start or stop the machine manually, do it from the Azure portal using this menu bar:</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/813/0*bmZYj61LBzZXyuKB.png" /></figure><h3>Check your spending limit</h3><p>1. You may want to check if your spending limit is still active. You can do this by navigating to “Billing” in the portal. Then click “manage” in the upper menu.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/781/0*8iiMCa9jZ13a5itp.png" /></figure><p>2. This will forward you to the “old” Azure portal. You will see that whether you still have set the limit and you can deactivate the limit here.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/891/0*nofK9yq2urSBdbt4.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6f610b6080e3" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/create-an-insane-developer-workstation-in-the-cloud-6f610b6080e3">Create an insane developer workstation in the cloud</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[(deutsch) Schritt für Schritt zum Entwicklerarbeitsplatz in der Cloud]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/deutsch-schritt-f%C3%BCr-schritt-zum-entwicklerarbeitsplatz-in-der-cloud-5dfe1b8835ac?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/5dfe1b8835ac</guid>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[msdn]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Wed, 22 Mar 2017 12:59:20 GMT</pubDate>
            <atom:updated>2018-01-30T14:07:04.978Z</atom:updated>
            <content:encoded><![CDATA[<p>Dieser Blogpost beschreibt, wie man sich seine perfekte Entwicklungsumgebung in der Cloud erschafft, indem man in wenigen Schritten eine virtuelle Maschine mit Visual Studio 2017 erstellt — ohne Kosten!</p><p><strong>Warum das Ganze?</strong></p><p>Der Grund ist recht einfach: Als Entwickler geht es nie schnell genug, wir könnten immer mehr RAM oder mehr CPU-Leistung vertragen. Auf der anderen Seite hat man als MSDN-lizensierter Entwickler ein monatliches kostenloses Azurekoningent — oftmals wissen wir nichts damit anzufangen.</p><p><strong>Mein Vorschlag ist</strong>: Selbst wenn aktuell Cloudcomputing vielleicht für den ein oder anderen im Entwickleralltag noch kein Thema ist, kann ich als Entwickler von der Cloud profitieren. Ich setze mir also einfach eine High-End Entwicklerworkstation gehostet auf Azure auf. Und im Rahmen der MSDN Lizenz wird es mich absolut nichts kosten. 56GB RAM? 8 Kerne? Klingt gut, oder?</p><p>Mit einer MSDN Lizenz bekommt man monatlich ein bestimmtes Kontingent an Azure Guthaben, dass man für nahezu beliebige Workloads auf Azure ausgeben kann. Unter anderem kann ich damit virtuelle Maschinen erstellen. Standardmäßig ist es so eingestellt, dass — sollte ich das Kontingent ausgenutzt haben — mein Workload einfach nicht mehr funktioniert. Meine VM würde einfach abschalten oder mein Service nicht mehr funktionieren. Ich bin also auf der sicheren Seite. Falls Du Dein Azure Kontingent noch nicht aktiviert hast — <a href="https://blogs.msdn.microsoft.com/dmx/2017/03/22/deutsch-schritt-fr-schritt-so-aktiviert-man-sein-azure-guthaben-als-msdn-abonnent/?wt.mc_id=AID603934_QSG_BLOG_147856">hier</a> steht wie das geht. Es ist ganz einfach.</p><p>Falls Du nicht im Besitz einer MSDN Lizenz bist, kannst Du Dir einen kostenlosen Testzugang zu Azure holen. Das kannst Du <a href="https://azure.microsoft.com/de-de/free/?wt.mc_id=AID603934_QSG_BLOG_147857">hier</a> tun. Danach gilt dieses Tutorial auch für Dich.</p><p>Die Möglichkeit eine vorkonfigurierte Maschine auf Azure zu betreiben ist eine super Möglichkeit die neue Version auszuprobieren, damit zu spielen, den eigenen Code damit zu testen, Kompatibiliäten zu überprüfen — oder um damit richtig zu arbeiten. Wer Gefallen an der Vorstellung findet Entwicklermaschine auf Azure für sich oder sein Team zu hosten, der sollte sich die <a href="https://azure.microsoft.com/en-us/services/devtest-lab/">Azure Dev/Test Labs</a> auch einmal näher ansehen. Darauf gehe ich jetzt nicht weiter ein, aber letztlich ist das unser Service, der genau dieses Szenario noch komfortabler macht.</p><p>Hier ist also meine Schritt-für-Schritt Anleitung. Wenn Du schon weißt, wie man eine Azure VM aufsetzt, dann kannst Du einfach loslegen — hier beschreibe ich nichts anderes. <strong>Stelle aber auf jeden Fall sicher, dass Du Auto-Shutdown aktivierst, um Dein Kontingent nicht unnötig zu belasten! (siehe unten)</strong></p><p><strong>Kosten sparen durch Shut Down</strong></p><p>Vielleicht fragt man sich, was das soll — letztlich kostet eine VM auf Azure ja Geld und je stärker die Maschine, umso höher die Kosten. Die geschätzen Preise im Azure Portal pro Maschine übersteigen das Freikontingent im Rahmen der MSDN in der Regel. Allerdings beziehen diese sich auf einen Betrieb rund um die Uhr. Wenn wir also dafür sorgen, dass die VM nur läuft, wenn wir sie benötigen — z.B. ein paar Stunden jeden Werktag — , dann kommen wir mit dem Freikontingent doch schon recht weit. Man hat auch jederzeit die Möglichkeit nach der Erstellung noch die Maschinenleistung zu verändern — eindeutig ein Vorteil einer virtuellen Maschine gegenüber der Abhängigkeit von Hardware.</p><p>Kleiner Hinweis: Es ist nicht ausreichend, die Maschine einfach herunterzufahren, wie man seinen PC halt so herunterfährt. Um Kosten zu sparen muss man die Maschine entweder über den automatischen Azure Auto-Shutdown Mechanismus stoppen oder im Azure Portal stoppen. Weiter unten steht wie das geht.</p><h3>Schritt für Schritt Anleitung: So erstellt man eine VM auf Azure mit Visual Studio 2017</h3><p>1. Gehe auf das Azure Portal (<a href="http://portal.azure.com/">http://portal.azure.com</a>) und klicke + auf der linken Seite, dann “compute” und “see all”.</p><figure><img alt="image_thumb[1]" src="https://cdn-images-1.medium.com/max/544/0*7VJl9Yxr5988SEKZ.png" /></figure><p>2. Suche nach Visual Studio, und wähle die Vorlage, die Du nutzen willst.</p><figure><img alt="image_thumb[3]" src="https://cdn-images-1.medium.com/max/580/0*cWVSMv6qcd8nGUkE.png" /></figure><p>3. Klicke Create. Das öffnet eine weitere Ansicht zur Konfiguration. Hier gibst Du Username und Passwort an. Interessant ist die Resourcegroup. Das bezeichnet eine Art logischer Klammer um einzelne Azure Resourcen. Du kannst sie nennen wie Du willst. Beim Ort bietet es sich an, einen möglichst nahen Standort zu wählen, um Latenzen zu vermeiden.</p><figure><img alt="image_thumb[10]" src="https://cdn-images-1.medium.com/max/421/0*7yIE823hAMpANhob.png" /></figure><p>4. Bestätige und wähle im nächsten Schritt die Größe der VM. Über “View All” siehst Du mehr Konfigurationen.</p><figure><img alt="image_thumb[9]" src="https://cdn-images-1.medium.com/max/541/0*-ZJn7SnPBIME9dWy.png" /></figure><p>5. Du kannst hier wählen was Du willst — lass Dich nicht von den Preisen erschrecken. Da die Maschine nicht rund um die Uhr laufen soll, wird nicht der volle Betrag fällig — und die Kosten sind ja standartmäßig bei 0 Euro gedeckelt, so dass keine Kosten entstehen, nachdem Du Dein Freikontingent aufgebraucht hast. Im schlimmsten Fall ist Deine Maschine schneller abgeschaltet als Du möchtest.</p><figure><img alt="image_thumb[11]" src="https://cdn-images-1.medium.com/max/637/0*PsMCrseUyirfJ2LL.png" /></figure><p>6. Bestätige die Konfiguration. Im nächsten Schritt werden noch ein paar Einstellungen gemacht. Spannend ist nur die Netzwerkeinstellung, hier gibst Du Adressraum (z.B.. 12.0.0.0/24) und Subnetzkonfiguration und Namen an (e.g. 12.0.0.0/24).</p><figure><img alt="image_thumb[35]" src="https://cdn-images-1.medium.com/max/848/0*4i96dLdjkAbUjNc3.png" /></figure><figure><img alt="image_thumb[33]" src="https://cdn-images-1.medium.com/max/332/0*IDkremwjLFx3zSa7.png" /></figure><p>7. Klicke OK. Auf der Zusammenfassung siehst Du nochmal Deine Konfiguration und kannst die Erstellung anstoßen. Das dauert ein paar Minuten. Folgende Meldung wird angezeigt:</p><figure><img alt="image_thumb[16]" src="https://cdn-images-1.medium.com/max/513/0*crfGKz9sbx5XjAiy.png" /></figure><p>8. Im Bereich der Benachrichtigungen findest du auch Info zu Deinem verbleibenden Azure Guthaben. Bei mir sind es noch gut 4€. Aber der Monat ist ja nicht mehr lang.</p><figure><img alt="Smile" src="https://cdn-images-1.medium.com/max/19/0*ier8PL7eLVKVjDMe.png" /></figure><figure><img alt="image_thumb[17]" src="https://cdn-images-1.medium.com/max/434/0*LyXwE9uXsDFqqCSH.png" /></figure><p>9. Nach ein paar Minuten bekommst du den Hinweis, dass die Maschine erstellt ist.</p><figure><img alt="image_thumb[37]" src="https://cdn-images-1.medium.com/max/444/0*PkK9O7UCOwMyVXuX.png" /></figure><p>10. Über den “Connect” Knopf laden wir ein *.rdp File und verbinden uns per Remote Desktop zur VM.</p><figure><img alt="image_thumb[36]" src="https://cdn-images-1.medium.com/max/813/0*JrjDG2PPCKmkZrWE.png" /></figure><p>11. Wir geben Username &amp; Passwort an. Wichtig — der Username benötigt auch den Maschinennamen, z.B.: machinename\username Falls die Verbindung nicht zustande kommt, dann bootet die Maschine vielleicht gerade noch. Probier’s in ein paar Sekunden nochmal.</p><figure><img alt="image_thumb[20]" src="https://cdn-images-1.medium.com/max/223/0*aa2oBSftadUU2OjG.png" /></figure><p>12. Sobald Du verbunden bist kannst Du loslegen. Verbinde VS2017 mit Deinem Account, lade Deine Projekte… Viel Vergnügen!</p><figure><img alt="image_thumb[23]" src="https://cdn-images-1.medium.com/max/622/0*Lfcs0MH4-6H7JDxO.png" /></figure><p>13. Diesen letzten Schritt darfst Du nicht vergessen! Konfiguriere auf jeden Fall Auto-Shutdown. Du kannst eine Zeit angeben, wann Deine VM automatisch heruntergefahren wird. Das spart einen Teil Deines monatlichen Freikontingents und Du kannst die VM länger nutzen.</p><p>15. Manuelles Stoppen geht über den “Stop” Knopf im Azure Portal.</p><figure><img alt="image_thumb[44]" src="https://cdn-images-1.medium.com/max/813/0*JReodNdUUCuWJkwv.png" /></figure><h3>Überprüfe Dein Ausgabenlimit</h3><p>1. Wenn Du nicht sicher bist, ob Dein Ausgabenlimit auf 0€ noch existiert, dann kannst Du das überprüfen. Geh im Azure Portal auf “Billing” und wähle Deine Subscription. Klicke dann auf “Manage”. Die Ersteinstellung für MSDN lizensierte Nutzer ist mit Ausgabenlimit.</p><figure><img alt="image_thumb[54]" src="https://cdn-images-1.medium.com/max/781/0*ssdH5uOVR0u-su-2.png" /></figure><p>2. Das bringt Dich zur Übersicht auf der Du siehst, ob Dein Limit noch besteht.</p><figure><img alt="image_thumb[52]" src="https://cdn-images-1.medium.com/max/891/0*SBCRiCmS4PciJgM9.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5dfe1b8835ac" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/deutsch-schritt-f%C3%BCr-schritt-zum-entwicklerarbeitsplatz-in-der-cloud-5dfe1b8835ac">(deutsch) Schritt für Schritt zum Entwicklerarbeitsplatz in der Cloud</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[(english) Step by step — activate your free Azure monthly credit for your MSDN license]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/english-step-by-step-activate-your-free-azure-monthly-credit-for-your-msdn-license-9994faca326c?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/9994faca326c</guid>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[msdn]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Wed, 22 Mar 2017 10:33:00 GMT</pubDate>
            <atom:updated>2018-01-30T14:07:03.211Z</atom:updated>
            <content:encoded><![CDATA[<h3>In this blogpost I describe how to activate your free monthly Azure credit for your MSDN license. It’s easy! Per default you will have set a spending limit you can’t exceed — it’s set at zero. You have to explicitly delete this limit to be able to exceed you free credits.</h3><p>1. Visit <a href="http://my.visualstudio.com/benefits">http://my.visualstudio.com/benefits</a> and log in.</p><figure><img alt="image_thumb[61]" src="https://cdn-images-1.medium.com/max/801/0*Z2vQOdp-qd7yOkHl.png" /></figure><p>2. Click “Activate” in the Azure tile to start the activation process to get your monthly credit.</p><figure><img alt="image_thumb[27]" src="https://cdn-images-1.medium.com/max/802/0*0AsPY-GSgnhn6DgE.png" /></figure><p>3. The activation page will open. You have to accept the terms and then click to sign up.</p><figure><img alt="image_thumb[62]" src="https://cdn-images-1.medium.com/max/238/0*M_XeKTnZzMH7Itjv.png" /></figure><p>4. The activation is running. Check your inbox for a mail which looks like this.</p><figure><img alt="image_thumb[67]" src="https://cdn-images-1.medium.com/max/563/0*IvS0Ygp9Wv8rmOld.png" /></figure><p>5. Click the link in the mail to navigate to your portal. Sign up if required. Click “Portal” in the upper right to get started.</p><figure><img alt="image_thumb[68]" src="https://cdn-images-1.medium.com/max/626/0*31kNTO_6a_qmAu_z.png" /></figure><p>6. You’ll get a notification on the credits you get monthly. The amount of credits depends on your license.</p><figure><img alt="image_thumb[71]" src="https://cdn-images-1.medium.com/max/570/0*bFdGmskha9A_7M8v.png" /></figure><p>7. You’re done! Go and try out some of our services.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9994faca326c" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/english-step-by-step-activate-your-free-azure-monthly-credit-for-your-msdn-license-9994faca326c">(english) Step by step — activate your free Azure monthly credit for your MSDN license</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[(deutsch) Schritt für Schritt–so aktiviert man sein Azure Guthaben als MSDN-Abonnent]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/deutsch-schritt-f%C3%BCr-schritt-so-aktiviert-man-sein-azure-guthaben-als-msdn-abonnent-5f00a679e34?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/5f00a679e34</guid>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[msdn]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Wed, 22 Mar 2017 10:29:59 GMT</pubDate>
            <atom:updated>2018-01-30T14:06:36.435Z</atom:updated>
            <content:encoded><![CDATA[<h3>Dieser Blogpost beschreibt, wie man sein kostenloses monatliches Azurekontingent als MSDN Abonnent aktiviert.</h3><p>1. Öffne <a href="http://my.visualstudio.com/benefits">http://my.visualstudio.com/benefits</a> im Browser und logge Dich ein.</p><figure><img alt="image" src="https://cdn-images-1.medium.com/max/599/0*NfImBA5POdwTs3hq.png" /></figure><p>2. Auf der “Azure”-Fläche auf “aktivieren” klicken, um den Prozess zu starten.</p><figure><img alt="image_thumb[27]_thumb[1]" src="https://cdn-images-1.medium.com/max/802/0*ie_2q8rkednGFX4P.png" /></figure><p>3. Eine neue Seite öffnet sich. Hier die Vereinbarungen aktzeptieren und “Anmelden” klicken.</p><figure><img alt="image_thumb[62]_thumb[1]" src="https://cdn-images-1.medium.com/max/238/0*IMkZpMeFOn0MiV5G.png" /></figure><p>4. Die Aktivierung läuft. Nach ein paar Minuten sollte eine neue Email in Deinem Postfach sein, die ungefähr so aussieht.</p><figure><img alt="image_thumb[67]_thumb" src="https://cdn-images-1.medium.com/max/563/0*1JCdZ6kwyJLse4nX.png" /></figure><p>5. Über den Link in der Mail kommt man auf eine Website — hier führt der blaue Button “Portal” oben links zum Azure Portal. Bei Bedarf einloggen.</p><figure><img alt="image_thumb[68]_thumb" src="https://cdn-images-1.medium.com/max/626/0*PxntcFqN442k8k4_.png" /></figure><p>6. Man erhält sofort eine Benachrichtigung, wie hoch das monatliche Guthaben ist. Der genaue Betrag hängt dabei von der jeweiligen MSDN-Lizenz ab.</p><figure><img alt="image_thumb[71]_thumb" src="https://cdn-images-1.medium.com/max/570/0*BXv3mqs9F9cUYLXI.png" /></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=5f00a679e34" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/deutsch-schritt-f%C3%BCr-schritt-so-aktiviert-man-sein-azure-guthaben-als-msdn-abonnent-5f00a679e34">(deutsch) Schritt für Schritt–so aktiviert man sein Azure Guthaben als MSDN-Abonnent</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[DevOps for IoT (Part 3 — Talking to Azure IoT Hub from VSTS)]]></title>
            <link>https://medium.com/developersdevelopersdevelopersdevelopers/devops-for-iot-part-3-talking-to-azure-iot-hub-from-vsts-1e44e48c1874?source=rss----f5a4026e2eb8---4</link>
            <guid isPermaLink="false">https://medium.com/p/1e44e48c1874</guid>
            <category><![CDATA[azure-iot-hub]]></category>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[azure]]></category>
            <category><![CDATA[devops]]></category>
            <category><![CDATA[automation]]></category>
            <dc:creator><![CDATA[DanielMeixner]]></dc:creator>
            <pubDate>Fri, 03 Mar 2017 10:08:16 GMT</pubDate>
            <atom:updated>2018-01-30T14:06:38.302Z</atom:updated>
            <content:encoded><![CDATA[<p>In this blogpost, I’ll explain how the communication between VSTS and our devices works in our DevOps for IoT scenario. In two previous blogposts I described the <a href="https://blogs.msdn.microsoft.com/dmx/2017/01/26/devops-for-iot-part-1/">end-to-end scenario</a> and explained how <a href="https://blogs.msdn.microsoft.com/dmx/2017/01/30/devops-for-iot-part-2-installing-an-app-from-within-an-app/">the installation of the application</a> on the target device works. I suggest you read at least the first part to get the big picture.</p><p>It’s important to point out that the scenario described is technology-agnostic for the most part. It really doesn’t matter if your device is running Windows IoT Core (as chosen in my implementation) or any kind or Linux system or something totally different. The only part where this is important is the automated UI tests which clearly demonstrate the power of the <a href="https://docs.microsoft.com/en-us/windows/uwp/layout/design-and-ui-intro">Universal Windows Platform.</a></p><p>For this blogpost, I’ll concentrate on how our devices are being notified.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/0*qqeS4pSjeybBw8vq.png" /></figure><h4>The challenges</h4><p>In contrast to standard DevOps scenarios (something like a CI/CD chain for Web Development) — there are several challenges. Let’s stick with the “refrigerator control” scenario. If I want to program a software for a refrigerator and want to be able to update it after the refrigerator has been shipped, here’s a number of things I have to deal with:</p><ul><li><strong>Access to Devices</strong></li><li>I won’t have physical access to the devices. So, I can’t plug in a USB stick and install new software. I also won’t be able to RDP into the devices.</li><li><strong>Connectivity</strong></li><li>I can’t even tell if the devices are online all the time. So, when I want to send a message, I have to make sure the message really arrives, even if the device is currently unplugged. For an IoT device of course I expect it to be online again at some point.</li><li><strong>Device Management</strong></li><li>I don’t have “System Center” or something similar to manage my device. My device might be pretty low powered and might not be supported by classic device management solutions at all.</li><li><strong>Scale</strong></li><li>I have to expect to have not only ten or 100 devices. If this was the case, you might think it is okay to do something manually. But in my refrigerator scenario I want to be able to ship millions of refrigerators. So, I have to deal with millions of devices. I need to be able to communicate and orchestrate this massive number of “things”.</li></ul><h4>Azure IoT Hub</h4><p>The good news is, that for all of those topics there’s a solution out there which has been built to exactly address these. It’s called <a href="https://azure.microsoft.com/de-de/services/iot-hub/">Azure IoT Hub</a>. It’s here to allow devices to register, to report their state and to communicate bidirectionally between the hub and the device.</p><p>So the implemented flow is:</p><p>Whenever a device starts an app deployed on the device contacts IoT Hub and registers itself with a unique identifier. In my implementation, this is done by a custom app which could be delivered with the device initially (e.g. it might be burned into the OS image). If the device is already registered, that’s fine as well, the device will then just keep a connection open to IoT Hub. This guarantees that IoT Hub is able to talk to the device and vice versa. The protocols supported here are HTTP, AMQP and MQTP — and IoT Hub really doesn’t care what the device looks like as long as it is capable to “speak” those protocols.</p><p>It’s possible to report its state using <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-devguide-device-twins">Device Twins</a>. This could be used to identify certain devices based on properties they are reporting. I didn’t do this in my scenario, it’s just something I want to point out because you probably would be using this to be able to cluster your devices later.</p><p>Whenever you want to send an information to the devices, you would use Azure IoT Hub as your communicator — basically this means we are telling Azure IoT Hub what message we want to transfer to the devices. We can decide what this message should look like content wise. All we need on the device is an app which is able to interpret this message. In my implementation, I already have an app on the device which was responsible for registering the device at IoT Hub. So, I just leverage this application to listen for incoming messages from IoT Hub as well. In my implementation, this is a background application which automatically starts on boot and always restarts itself in case it crashes. (See b<a href="https://developer.microsoft.com/en-us/windows/iot/docs/backgroundapplications">ackground applications for Windows 10 IoT Core</a>) If you’re working with another operation system you’d just pick something similar for your OS.</p><p>In my case the message sent triggers a download of the new application from a FTP server and triggers the installation after the download. I picked this solution because a) it was easy to implement and b) is kind of general purpose. You could of course change the action depending on your specific scenario.</p><p>What is worth pointing out is, that Azure IoT Hub really takes all the pain from me, when it comes to the challenges addressed earlier.</p><ul><li>I don’t have to have physical access — my device registers itself with IoT Hub and I’m able to talk to it afterwards.</li><li>I don’t have to care about connectivity of my device — Azure IoT Hub makes sure messages arrive even if the device is offline while the message is being triggered (similar to sending an SMS via mobile phone).</li><li>I don’t have to set up any kind of homegrown device management — because this is exactly what Azure IoT Hub does for me.</li><li>I really don’t have to worry about scale, because Azure IoT Hub is built for scale — it supports up to 10.000.000 devices per Azure IoT Hub instance. This is amazing — imagine all of those devices are sending messages in short intervals — Azure IoT Hub is capable of receiving them because this is what it’s been created for.</li><li>The best thing is that you can get started with Azure IoT Hub <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal">in literally 5 minutes </a>— you just spin up an instance in your Azure portal.</li></ul><h4>Talking to Azure IoT Hub from VSTS</h4><p>Now that we know how to communicate with our devices it’s really just a question of how to trigger the communication during our End-To-End CI/CD chain based on Visual Studio Team Services (VSTS). In this case I created a release definition which just triggers a node.js script which again is responsible to send a message to all devices.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/911/0*EZdCEBUC40UQG6Rg.png" /></figure><p>The script is based on the <a href="https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-node-node-c2d">sample script </a>for cloud to device messaging and can be found <a href="https://github.com/DanielMeixner/vstsArtifacts/blob/master/sendCloud/sendC2AllDevices.js">here</a>. (I’ll go into details on how to setup everything in a future post where I will also point out all downloads again.)</p><p>What the script basically does is it queries all devices registered at my IoT Hub instance and then ask IoT Hub to send a message to all of these sequentially. (In my case the message just says “Cloud to device message from VSO” to keep things simple. Of course, I could add Ids, version numbers etc. and based on the information I could react differently on the device after receiving. For my end-to-end show case, I’m just triggering an installation, no matter what message is coming in.</p><p>Working with IoT Hub really took the pain from communicating to a wide range of devices. It’s easy to get started with and scales for extensive use in the future. So, it’s a very crucial component when automating communication to IoT devices. I don’t even want to think about building something similar myself because I’d have to bring tons of budget and time to realize this. Azure IoT Hub also works when connecting devices behind firewalls because the connection is always established outgoing — from device to IoT Hub. It should be easily possible to set up the communication whatever the network infrastructure looks like.</p><p>Besides this I think it’s pretty amazing that I’m able to run npm and node during deployments on a hosted (!) VSTS release agent. This makes leveraging existing scripts really easy and in my case saved a lot of work.</p><p>Let me know in the comments section if you have feedback for this scenario.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=1e44e48c1874" width="1" height="1" alt=""><hr><p><a href="https://medium.com/developersdevelopersdevelopersdevelopers/devops-for-iot-part-3-talking-to-azure-iot-hub-from-vsts-1e44e48c1874">DevOps for IoT (Part 3 — Talking to Azure IoT Hub from VSTS)</a> was originally published in <a href="https://medium.com/developersdevelopersdevelopersdevelopers">DevelopersDevelopersDevelopersDevelopers</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>