<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Aws on ZeroSharp</title><link>https://www.zerosharp.com/blog/categories/aws/</link><description>Recent content in Aws on ZeroSharp</description><generator>Hugo</generator><language>en-gb</language><copyright>Copyright © 2012–{year} Robert Anderson</copyright><lastBuildDate>Thu, 02 Mar 2017 11:37:00 +0100</lastBuildDate><atom:link href="https://www.zerosharp.com/blog/categories/aws/index.xml" rel="self" type="application/rss+xml"/><item><title>Improvements to Serverless PHP support</title><link>https://www.zerosharp.com/improvements-to-serverless-php-support/</link><pubDate>Thu, 02 Mar 2017 11:37:00 +0100</pubDate><guid>https://www.zerosharp.com/improvements-to-serverless-php-support/</guid><description>&lt;p&gt;I was inspired by two events to jump back into serverless framework.&lt;/p&gt;
&lt;img class="img-left" src="https://www.zerosharp.com/images/blog/serverless-php-improvements-001.jpeg" alt="200 Serverless London Meetup"&gt;
&lt;p&gt;Firstly, I attended the second &lt;a href="https://www.meetup.com/Serverless-London/"&gt;London serverless meetup&lt;/a&gt; yesterday evening which was excellent and showed just how much enthusiasm there is for serverless architectures. Check out their new logo on the left. It was significant that each of the three speakers announced that they are actively hiring serverless developers.&lt;/p&gt;
&lt;p&gt;Secondly, &lt;a href="https://github.com/Stolz"&gt;Stolz&lt;/a&gt; has contributed improvements to my sample project for integrating PHP into the serverless framework. It&amp;rsquo;s the purpose of this blog post to cover the changes.&lt;/p&gt;</description></item><item><title>A concrete PHP Serverless example - export chess games in PDF</title><link>https://www.zerosharp.com/a-concrete-php-serverless-example/</link><pubDate>Tue, 29 Nov 2016 17:37:00 +0100</pubDate><guid>https://www.zerosharp.com/a-concrete-php-serverless-example/</guid><description>&lt;p&gt;In &lt;a href="https://www.zerosharp.com/the-serverless-framework-and-php/"&gt;the last post&lt;/a&gt; I built a PHP capable sample project for &lt;a href="https://serverless.com/"&gt;the Serverless Framework&lt;/a&gt;. In this post, I&amp;rsquo;ll show a concrete use of it.&lt;/p&gt;
&lt;p&gt;The service I&amp;rsquo;m building connects runs a PHP function for pretty-printing chess games from the &lt;a href="http://lichess.org/"&gt;lichess online chess server&lt;/a&gt;. &lt;a href="https://github.com/clarkerubber/lichessPDFExporter"&gt;James Clarke&lt;/a&gt; has written a PHP function to do this using &lt;a href="http://www.fpdf.org/"&gt;fpdf17&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The lichess exporter takes the game id of any game that has been played on the lichess server and produced a PDF output. Take for example, Game 8 of the current World Championship which is &lt;a href="https://en.lichess.org/COQChpzH"&gt;here&lt;/a&gt;. When I open the resulting file, I see this:&lt;/p&gt;</description></item><item><title>The Serverless Framework and PHP</title><link>https://www.zerosharp.com/the-serverless-framework-and-php/</link><pubDate>Mon, 21 Nov 2016 09:21:00 +0100</pubDate><guid>https://www.zerosharp.com/the-serverless-framework-and-php/</guid><description>&lt;p&gt;The goal of this post is to explain how to call a PHP function from within an AWS lambda using the &lt;a href="https://serverless.com/"&gt;Serverless Framework&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;First check everything we need is installed.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ serverless --version
1.1.0
$ node --version
v7.1.0
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id="install-the-sample-php-function"&gt;Install the sample PHP function&lt;/h2&gt;
&lt;p&gt;Install my sample &lt;em&gt;Hello&lt;/em&gt; function from my github repository.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ sls install --url https://github.com/ZeroSharp/serverless-php
&lt;/code&gt;&lt;/pre&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-sh" data-lang="sh"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Serverless: Downloading and installing &lt;span class="s2"&gt;&amp;#34;serverless-php&amp;#34;&lt;/span&gt;…
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Serverless: Successfully installed &lt;span class="s2"&gt;&amp;#34;serverless-php&amp;#34;&lt;/span&gt;.
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="the-code"&gt;The code&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;$ cd serverless-php
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&amp;rsquo;s have a look at the &lt;code&gt;serverless.yml&lt;/code&gt; file.&lt;/p&gt;</description></item><item><title>Serverless Framework Part 5: Pulling in a node package</title><link>https://www.zerosharp.com/serverless-framework-part-5-pulling-in-a-node-package/</link><pubDate>Tue, 09 Feb 2016 11:31:00 +0100</pubDate><guid>https://www.zerosharp.com/serverless-framework-part-5-pulling-in-a-node-package/</guid><description>&lt;p&gt;This is the final part of an ongoing series about the &lt;a href="https://github.com/serverless/serverless"&gt;Serverless framework&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In the previous posts, the &lt;code&gt;PasswordGenerator&lt;/code&gt; always returned &amp;lsquo;Password&amp;rsquo;. Instead each date should corresponds to a new unique password. We&amp;rsquo;ll make use of the &lt;a href="https://www.npmjs.com/package/crypto-js"&gt;Crypto-js&lt;/a&gt; node package and we&amp;rsquo;ll see that the AWS lambda copes just fine.&lt;/p&gt;
&lt;h3 id="installing-a-node-package"&gt;Installing a node package&lt;/h3&gt;
&lt;p&gt;Pull in the crypto-js package into the serverless component.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cd nodejscomponent/
$ npm install crypto-js --save
crypto-js@3.1.6 node_modules/crypto-js
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now we need the typescript definitions. Watch out there are two different TypeScript typings called &lt;em&gt;cryptojs&lt;/em&gt; and &lt;em&gt;crypto-js&lt;/em&gt;. The first one is more complete.&lt;/p&gt;</description></item><item><title>Serverless Framework - Part 4: Connecting the parts</title><link>https://www.zerosharp.com/serverless-framework-part-4-connecting-the-parts/</link><pubDate>Mon, 01 Feb 2016 09:44:00 +0100</pubDate><guid>https://www.zerosharp.com/serverless-framework-part-4-connecting-the-parts/</guid><description>&lt;p&gt;This is part of an ongoing series about the &lt;a href="https://github.com/serverless/serverless"&gt;Serverless framework&lt;/a&gt;: &lt;a href="https://www.zerosharp.com/serverless-framework-part-1-up-and-running/"&gt;Part 1&lt;/a&gt;, &lt;a href="https://www.zerosharp.com/serverless-framework-part-2-typescript-and-mocha/"&gt;part 2&lt;/a&gt;, &lt;a href="https://www.zerosharp.com/serverless-framework-part-3-the-guts/"&gt;part 3&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="new-version-031"&gt;New version 0.3.1&lt;/h2&gt;
&lt;p&gt;
&lt;span class="fluo"&gt;Edit: since the original version of this post, a new version 0.3.1 of Serverless was released. I have updated the tutorial below to reflect the newer version. Also, &lt;a href="https://github.com/DefinitelyTyped/tsd/issues/269"&gt;TSD has been deprecated&lt;/a&gt; in favour of &lt;a href="https://www.npmjs.com/package/typings"&gt;Typings&lt;/a&gt; so I&amp;rsquo;ve updated to use Typings instead.&lt;/span&gt;

All parts have been updated for the latest version of the framework 0.3.1.&lt;/p&gt;
&lt;h2 id="the-password-of-the-day-generator-class"&gt;The Password of the Day Generator class&lt;/h2&gt;
&lt;p&gt;First up we need a class to generate and check the password of the day. For the moment, let&amp;rsquo;s pretend the password of the day is always the string &lt;em&gt;&amp;ldquo;Password&amp;rdquo;&lt;/em&gt;. Put the following typescript class in &lt;em&gt;nodejscomponent/src&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>Serverless Framework - Part 3: The guts of a serverless service</title><link>https://www.zerosharp.com/serverless-framework-part-3-the-guts/</link><pubDate>Fri, 29 Jan 2016 17:44:00 +0100</pubDate><guid>https://www.zerosharp.com/serverless-framework-part-3-the-guts/</guid><description>&lt;p&gt;This is part of an ongoing series about the &lt;a href="https://github.com/serverless/serverless"&gt;Serverless framework&lt;/a&gt;. For those following along, &lt;a href="https://www.zerosharp.com/serverless-framework-part-1-up-and-running/"&gt;part 1&lt;/a&gt; and &lt;a href="https://www.zerosharp.com/serverless-framework-part-2-typescript-and-mocha/"&gt;part 2&lt;/a&gt; have been updated for the current latest version of Serverless 0.3.1.&lt;/p&gt;
&lt;p&gt;In this post, we&amp;rsquo;ll discuss how a Serverless function actually works.&lt;/p&gt;
&lt;h2 id="the-guts-of-a-serverless-function"&gt;The guts of a serverless function&lt;/h2&gt;
&lt;p&gt;When we visited the deployed endpoint at the end of &lt;a href="https://www.zerosharp.com/serverless-framework-part-1-up-and-running/"&gt;part 1&lt;/a&gt;, it correctly returned some JSON content.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;message:&lt;/span&gt; &lt;span class="nt"&gt;&amp;#34;Your Serverless function ran successfully!&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Where does this message come from? Look at &lt;em&gt;index.js&lt;/em&gt; in the component&amp;rsquo;s &lt;em&gt;lib&lt;/em&gt; folder.&lt;/p&gt;</description></item><item><title>Serverless Framework - Part 2: TypeScript and Mocha</title><link>https://www.zerosharp.com/serverless-framework-part-2-typescript-and-mocha/</link><pubDate>Tue, 12 Jan 2016 08:08:00 +0100</pubDate><guid>https://www.zerosharp.com/serverless-framework-part-2-typescript-and-mocha/</guid><description>&lt;p&gt;Happy New Year everyone!&lt;/p&gt;
&lt;p&gt;This is the second part of a series about the &lt;a href="https://github.com/serverless/serverless"&gt;Serverless&lt;/a&gt; framework. Read &lt;a href="https://www.zerosharp.com/serverless-framework-part-1-up-and-running/"&gt;the first part&lt;/a&gt; to get up and running.&lt;/p&gt;
&lt;p&gt;First I&amp;rsquo;ll describe the webservice I&amp;rsquo;m building. Then we&amp;rsquo;ll configure our environment for Typescript and Mocha testing.&lt;/p&gt;
&lt;h2 id="poor-mans-dual-factor-authentication-via-a-password-of-the-day"&gt;Poor man&amp;rsquo;s dual factor authentication via a password of the day&lt;/h2&gt;



&lt;p&gt;I&amp;rsquo;m the technical lead for an enterprise application which is in use by about 100 large multinational corporates. As part of the installation process, we ask for a registration code which is based on the date. The customer has to call us to get the password of the day. This gives us an opportunity to engage with the customer and also gives us little more control. It&amp;rsquo;s a simple form of dual factor authorization where one of the factors requires a phone call.&lt;/p&gt;</description></item><item><title>Serverless Framework - Part 1: Up and running</title><link>https://www.zerosharp.com/serverless-framework-part-1-up-and-running/</link><pubDate>Tue, 22 Dec 2015 20:26:00 +0100</pubDate><guid>https://www.zerosharp.com/serverless-framework-part-1-up-and-running/</guid><description>&lt;h2 id="new-version-031"&gt;New version 0.3.1&lt;/h2&gt;

&lt;span class="fluo"&gt;Edit: since the original version of this post, a new version 0.3.1 of Serverless was released. I have updated the tutorial below to reflect the newer version.&lt;/span&gt;

&lt;p&gt;I was in the middle of a blog post about the JAWS framework and before I had finished it changed its name to &lt;a href="https://github.com/serverless/serverless"&gt;the Serverless framework&lt;/a&gt;. It is a very clever way to build apps without worrying about provisioning server or whether it will scale. This is because it uses Amazon Web Services and in particular the Amazon lambda compute service. It&amp;rsquo;s currently in beta.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Part 5 - Analysis</title><link>https://www.zerosharp.com/load-testing-xaf-part-5-analysis/</link><pubDate>Sun, 14 Apr 2013 07:37:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-part-5-analysis/</guid><description>&lt;p&gt;This is the final post in a series about load testing XAF applications. Previously in the series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-overview/"&gt;Load Testing XAF: Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-1-deploying/"&gt;Part 1: Deploying the target webserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-2-selenium/"&gt;Part 2: Selenium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-3-uploading-and-validating-the-virtual-user-script/"&gt;Part 3: Uploading and validating a script&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-4-launching-the-load-test/"&gt;Part 4: Launching the load test&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this part, we analyse the results of the load test we ran in &lt;a href="https://www.zerosharp.com/load-testing-xaf-part-3-uploading-and-validating-the-virtual-user-script/"&gt;Part 4&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="results"&gt;Results&lt;/h2&gt;
&lt;p&gt;The results of the test we ran are &lt;a href="https://load.wpm.neustar.biz/load/test/share/e0f547d711624168bc7fa0a69ddd8283"&gt;here&lt;/a&gt;. The graphs are interactive and give quite interesting data about the load tests. Feel free to have a look and play around with the results.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Part 4 - Launching the load test</title><link>https://www.zerosharp.com/load-testing-xaf-part-4-launching-the-load-test/</link><pubDate>Mon, 08 Apr 2013 11:19:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-part-4-launching-the-load-test/</guid><description>&lt;p&gt;This is another post in a series about load testing XAF applications. Previously in the series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-overview/"&gt;Load Testing XAF: Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-1-deploying/"&gt;Part 1: Deploying the target webserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-2-selenium/"&gt;Part 2: Selenium&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-3-uploading-and-validating-the-virtual-user-script/"&gt;Part 3: Uploading and validating a script&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this part, we will launch a 1 hour test with 25 virtual users using the &lt;a href="http://home.wpm.neustar.biz/"&gt;NeuStar Web Performance Management&lt;/a&gt; module.&lt;/p&gt;
&lt;h2 id="schedule-and-launch-a-test"&gt;Schedule and launch a test&lt;/h2&gt;
&lt;p&gt;From the script validation screen, click on &lt;em&gt;Schedule a load test with this script&lt;/em&gt;. The defaults are good, but you can specify in detail how to run your load test. For instance, you can coordinate multiple Selenium scripts to simulate different types of activity on your site.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Part 3 - Uploading and Validating the Virtual User Script</title><link>https://www.zerosharp.com/load-testing-xaf-part-3-uploading-and-validating-the-virtual-user-script/</link><pubDate>Wed, 03 Apr 2013 16:39:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-part-3-uploading-and-validating-the-virtual-user-script/</guid><description>&lt;p&gt;This is another post in a series about load testing XAF applications. Previously in the series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-overview/"&gt;Load Testing XAF: Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-1-deploying/"&gt;Part 1: Deploying the target webserver&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-2-selenium/"&gt;Part 2: Selenium&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In this part, we will load test the application we set up in &lt;a href="https://www.zerosharp.com/load-testing-xaf-part-1-deploying/"&gt;Part 1&lt;/a&gt;, using the Selenium load test we created in &lt;a href="https://www.zerosharp.com/load-testing-xaf-part-2-selenium/"&gt;Part 2&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="neustar-web-performance-management"&gt;Neustar Web Performance Management&lt;/h2&gt;
&lt;p&gt;NeuStar (formerly BrowserMob) are a company specialised in web application performance monitoring. We are interested in their &lt;a href="https://home.wpm.neustar.biz/"&gt;web performance module&lt;/a&gt;. It is free to create an account. To run a test with less than 25 virtual users costs only $0.15 per virtual user. Tests with more than 25 users (up to 5000) require an additional paid plan.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Part 2 - Selenium</title><link>https://www.zerosharp.com/load-testing-xaf-part-2-selenium/</link><pubDate>Thu, 28 Mar 2013 16:56:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-part-2-selenium/</guid><description>&lt;h1 id="writing-a-selenium-user-test-against-maindemo"&gt;Writing a Selenium User Test against MainDemo&lt;/h1&gt;
&lt;p&gt;This is another post in a series about load testing XAF applications. Previously in the series:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-overview/"&gt;Load Testing XAF: Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/load-testing-xaf-part-1-deploying/"&gt;Part 1: Deploying the target webserver&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="why-not-use-devexpress-easytests"&gt;Why not use DevExpress EasyTests?&lt;/h2&gt;
&lt;p&gt;The DevExpress recommended method of writing functional tests is to use the EasyTest functionality of the expressAppFramework. This has several advantages over other functional testing approaches.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It uses a domain specific language tailored for XAF making it easy to test views and actions&lt;/li&gt;
&lt;li&gt;It makes it easy to interact with the DevExpress controls that are used within XAF&lt;/li&gt;
&lt;li&gt;A single EasyTest can be run against both the ASP.NET and WinForms applications&lt;/li&gt;
&lt;li&gt;EasyTests work against both the debug webserver and IIS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;However, one feature which is not (yet) available is the ability to use EasyTests for load testing.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Part 1 - Deploying</title><link>https://www.zerosharp.com/load-testing-xaf-part-1-deploying/</link><pubDate>Fri, 22 Mar 2013 11:21:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-part-1-deploying/</guid><description>&lt;p&gt;This is the first part of a tutorial about load testing XAF applications. See the &lt;a href="https://www.zerosharp.com/load-testing-xaf-overview/"&gt;overview&lt;/a&gt; for a bit of background. In this post we set up the target webserver.&lt;/p&gt;
&lt;p&gt;You can target any machine which has a publicly available web address, but for this tutorial, I&amp;rsquo;m&amp;rsquo; deploying the MainDemo to the Amazon cloud, by following the instructions in &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/"&gt;Part 1&lt;/a&gt; and &lt;a href="http://blog.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/"&gt;Part 2&lt;/a&gt; of my previous series about Amazon Web Services.&lt;/p&gt;
&lt;p&gt;I am using version 12.2.7 of the DevExpress XAF MainDemo. There are a couple of extra changes to make to the web.config.&lt;/p&gt;</description></item><item><title>Load Testing XAF: Overview</title><link>https://www.zerosharp.com/load-testing-xaf-overview/</link><pubDate>Tue, 12 Mar 2013 18:20:00 +0100</pubDate><guid>https://www.zerosharp.com/load-testing-xaf-overview/</guid><description>&lt;p&gt;Over the next few posts, I will demonstrate how to load test XAF web applications.&lt;/p&gt;
&lt;h2 id="history"&gt;History&lt;/h2&gt;
&lt;p&gt;Performance testing has traditionally been difficult and expensive. A few years ago, to do it well required a powerful piece of dedicated load testing software such as HP LoadRunner (typical cost back in 2007: USD 50,000-100,000 or more per year!). This software was capable of simulating multiple virtual users via the use of recorded scripts and providing detailed performance statistics. Usually the cost was increased further increased by the need for powerful hardware to be able to run the application.&lt;/p&gt;</description></item><item><title>Deploy XAF ASP.NET Applications to Amazon Web Services: Part 5</title><link>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-5-load-balancing/</link><pubDate>Wed, 05 Dec 2012 11:03:00 +0100</pubDate><guid>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-5-load-balancing/</guid><description>&lt;h2 id="part-5-load-balancing"&gt;Part 5: Load balancing&lt;/h2&gt;
&lt;p&gt;This is the final post in this 5 part series about deploying XAF to the Amazon cloud. The other parts are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/"&gt;Part 1 - Creating a database in RDS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/"&gt;Part 2 - Deploying to ElasticBeanstalk&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-3-troubleshooting-via-remote-desktop/"&gt;Part 3 - Troubleshooting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-4-incremental-deployment/"&gt;Part 4 - Incremental Deployment&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This part covers load balancing and autoscaling.&lt;/p&gt;
&lt;h3 id="load-balancing"&gt;Load balancing&lt;/h3&gt;
&lt;p&gt;In order to enable load balancing with DevExpress XAF applications, you must activate client affinity (sticky sessions) which you can do in the &lt;strong&gt;Load Balancer tab&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Deploy XAF ASP.NET Applications to Amazon Web Services: Part 4</title><link>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-4-incremental-deployment/</link><pubDate>Mon, 05 Nov 2012 14:16:00 +0100</pubDate><guid>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-4-incremental-deployment/</guid><description>&lt;h2 id="part-4-incremental-deployment"&gt;Part 4: Incremental Deployment&lt;/h2&gt;
&lt;p&gt;This is the fourth post in a series about deploying ASP.NET applications to the Amazon cloud. In the first three posts covered deploying the XAF ASP.NET MainDemo to the Amazon cloud (&lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/"&gt;Part 1&lt;/a&gt;, &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/"&gt;Part 2&lt;/a&gt;, &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-3-troubleshooting-via-remote-desktop/"&gt;Part 3&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;When we deployed to the Elastic Beanstalk in &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/"&gt;Part 2&lt;/a&gt;, we chose &lt;em&gt;not&lt;/em&gt; to enable incremental deployment.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.zerosharp.com/images/blog/aws/launch-aws-beanstalk-2.jpg" alt="figure 11"&gt;&lt;/p&gt;
&lt;p&gt;I want to explain this decision further.&lt;/p&gt;
&lt;p&gt;If you choose not to deploy incrementally your deployment will take longer because the entire web deployment package needs to be uploaded every time you re-publish which takes about 4-5 minutes on my connection. The incremental deployment option creates a git repository in the target environment so that only the modified files are re-deployed. If you are frequently making changes and redploying, you can save considerable time. A re-deployment takes only a few seconds.&lt;/p&gt;</description></item><item><title>Deploy XAF ASP.NET Applications to Amazon Web Services: Part 3</title><link>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-3-troubleshooting-via-remote-desktop/</link><pubDate>Fri, 02 Nov 2012 17:54:00 +0100</pubDate><guid>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-3-troubleshooting-via-remote-desktop/</guid><description>&lt;h1 id="part-3-troubleshooting"&gt;Part 3: Troubleshooting&lt;/h1&gt;
&lt;p&gt;This is the third post in a series about deploying ASP.NET applications to the Amazon cloud.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/"&gt;Part 1&lt;/a&gt; we created an Amazon RDS instance of SQL Server to act as the database for the deployment.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/"&gt;Part 2&lt;/a&gt; we published the DevExpress MainDemo.Web to the Amazon Elastic Beanstalk.&lt;/p&gt;
&lt;p&gt;In this part we will look at troubleshooting methods and in particular how to connect to an EC2 instance in order to troubleshoot installations.&lt;/p&gt;</description></item><item><title>Deploy XAF ASP.NET Applications to Amazon Web Services: Part 2</title><link>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/</link><pubDate>Wed, 31 Oct 2012 12:52:00 +0100</pubDate><guid>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-2-publishing-maindemo/</guid><description>&lt;h1 id="part-2-publishing-maindemo"&gt;Part 2: Publishing MainDemo&lt;/h1&gt;
&lt;p&gt;This is the second post in a series about deploying ASP.NET applications to the &lt;a href="http://aws.amazon.com/"&gt;Amazon cloud&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In &lt;a href="https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/"&gt;Part 1&lt;/a&gt; we created an Amazon RDS instance of SQL Server to act as the database for the deployment. Make sure this is up and running before continuing.&lt;/p&gt;
&lt;p&gt;This part guides you through publishing the &lt;a href="http://www.devexpress.com/Products/NET/Application_Framework/"&gt;DevExpress XAF&lt;/a&gt; MainDemo application to the Amazon Elastic Beanstalk.&lt;/p&gt;
&lt;h2 id="amazon-elastic-beanstalk"&gt;Amazon Elastic Beanstalk&lt;/h2&gt;



&lt;p&gt;Amazon Elastic Beanstalk provides automatic capacity provisioning, load balancing, auto-scaling, and application health monitoring. &lt;strong&gt;That sounds like a lot of features we don&amp;rsquo;t really need&lt;/strong&gt; for the MainDemo, so let me explain.&lt;/p&gt;</description></item><item><title>Deploy XAF ASP.NET Applications to Amazon Web Services: Part 1</title><link>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/</link><pubDate>Tue, 23 Oct 2012 12:52:00 +0100</pubDate><guid>https://www.zerosharp.com/deploy-xaf-asp-dot-net-applications-to-amazon-web-services-part-1-putting-the-database-in-the-cloud/</guid><description>&lt;h1 id="part-1-putting-the-database-in-the-cloud"&gt;Part 1: Putting the Database in the Cloud&lt;/h1&gt;
&lt;p&gt;This is the first part of a tutorial for installing the DevExpress MainDemo.Web to Amazon Web Services, but the same principles apply to any ASP.NET web application.&lt;/p&gt;
&lt;p&gt;This part covers creating an Amazon RDS instance running SQL Server Express and connecting a (locally running) MainDemo to it.&lt;/p&gt;
&lt;p&gt;At the time of writing the DevExpress version is 12.1.7.&lt;/p&gt;
&lt;h2 id="amazon-web-services"&gt;Amazon Web Services&lt;/h2&gt;
&lt;p&gt;If you have not already done so, you will need to sign up with &lt;a href="http://aws.amazon.com/"&gt;Amazon Web Services&lt;/a&gt;. There are costs associated with AWS, but the tutorial only uses very small cheap instances which cost as little as 2 cents per hour to run. Also, new customers get a load of hours for free as part of the &lt;a href="http://aws.amazon.com/free/"&gt;AWS Free Usage Tier&lt;/a&gt;. See the &lt;a href="http://aws.amazon.com/ec2/pricing/"&gt;AWS pricing&lt;/a&gt; for more information. Don&amp;rsquo;t forget to terminate your instances when you have finished.&lt;/p&gt;</description></item></channel></rss>