Tag Archives: virtual machine

Moving to the Cloud – Part 3 of 3

Part 3 – Implementing the Hybrid Cloud for Dev and Test

In Part 2, I presented an overview of the main benefits and drawbacks of using a hybrid cloud infrastructure for Dev and Test environments whilst Part 1 defined my interpretation of a hybrid cloud in modern day parlance. In the third and final part, I will talk about the processes involved when implementing Dev and Test cloud-based environments and how they can be integrated to achieve application release automation through continuous build and testing.

Read More

An obvious starting point is the selection of a public cloud provider and it appears that Amazon is currently winning that race, though Microsoft, HP and Google are in contention creating the ‘big four’ up front, with a multitude of SME cloud providers bringing up the rear. Before selecting a public cloud vendor there are a number of important aspects (based on your requirements) to consider and decisions to be made around things like; value for money, network and/or VM speed (and configuration), datacentre storage etc.

Perhaps a simple pay-as-you-go model will suffice or alternatively there may be benefits to be had from reserving infrastructure resources up front. Since the public cloud offers scaling, then some sort of inherent and easily invoked auto-scaling facility should also be provided as should the option to deploy a load-balancer for example. Even if it initially appears that the big players offer all of the services required, the final choice of provider is still not all plain sailing, since other factors can come into play.

For example, whilst Amazon is the a clear market leader and a understandable vendor choice, if conforming to technology standards is a requirement this could pose a problem, since large vendors can and do impose their own standards. On top of that SLAs can be unnecessarily complicated, difficult to interpret and unwieldy. Not surprisingly, to counter the trend of large consortium vendors, there has been substantial growth in open source, cloud environments such as OpenStack, Cloudstack and Eucalyptus. Openstack for example, describe themselves as “a global collaboration of developers and cloud computing technologists producing the ubiquitous open source cloud computing platform for public and private clouds” [1].

By it’s very nature, IAAS implies that many VMs exist in a networked vLAN and there is an innate ability to share and clone VM configurations very quickly. This implies that there is a need for some sort of API which supports the requirement to create VMs, share them (as whole environments) via REST-based web services. This point retraces its way back to my remark in Part 2 where I mentioned that new infrastructures should be built with automation in mind. This approach would utilise the customisable APIs that vendors generally provide and would normally support automatic provisioning, source control, archive and audit operations.

Having settled upon a public cloud provider, the private cloud is likely to be created using whatever means are available, i.e. Windows or Ubuntu Server for example could serve as a basis for creating the infrastructure though other tools such as VirtualBox or VMWare may be required. In an ideal world the technology stack in the Private cloud should be the same as that in the Public cloud, so examining the in-house technology stack could shape the decision about the choice of public vendor.

‘Integrate at least daily’ has become one of the mantras of the proponents of new agile methodologies, and like cloud vendors there is a wealth of continuous integration and delivery (CI/CD) tools on the market. It isn’t easy to choose between them and whilst some general considerations should be taken into account, the online advice seems to be to ‘dive-in’, see what works and what doesn’t.

A lot of the tools are free so the main cost is time taken for setup and benefit realisation, however the advantages of any CI/CD system that works properly will almost always outweigh the drawbacks, whatever the technology. Jenkins and Hudson appear to be market leaders but there are a number of others to consider and quite often they will include additional components to configure for continuous delivery.

Test automation is clearly fundamental to moving to a CI/CD approach and is key to accelerating software quality. Assuming that development is test-driven, enterprises implementing the hybrid cloud architecture can expect to produce higher quality software faster by eliminating traditional barriers between QA, developers, and ops personnel. In instances where there is substantial code development, several test environments may be required in order to profit from the expandable nature of the public cloud by running several regression test suites in parallel.

Again there is a large number tools (or frameworks) available for test automation  available on the market. Selenium Webdriver, Watir and TFS (coded UI tests) are three of the more widely used. For testing APIs there is SOAP UI and WebAPI, and for load testing, JMeter. The frameworks and associated tools selected will likely compliment available team skills and current technology stack. Whatever the choice, there is still the significant challenge of integrating and automating tools and frameworks effectively before the benefits of automation will be properly realised.

As well as a fairly large set of development, source control, build, release and test automation tools a typical agile team will also typically require some sort of project management tool which should ideally have a method to track and monitor defects as well as plan and control sprints during the lifecycle of the application. Tools such as Rally or Jira are suitable for this and offer varying levels of complexity based on project requirements and available budget.

Clearly, there is a lot to consider when making the move to cloud development and this is likely to be one of the reasons why more businesses have not embraced cloud technologies for anything other than storage. My advice would be think big, but start small and take it one step at a time, understanding and integrating each new element of technology along the way is key to the final setup. Ultimately, the end goal should be well worth it and it may shape your business for years to come. The cloud technology curve is here and here to stay, the question is, are you on it?

Virtual Machine – Adding a Shared Folder to a Win 8 Guest

Virtual Machine – Adding a Shared Folder

It’s great when you’re searching the web for something specific, then you find something relevant and extrapolate to a successful result. If you read my last tip you might have realised that in my spare time I have been doing an install of Windows 8 on a VirtualBox VM. Again in my last tip I alluded to writing a blog about the install or an overview of Windows 8.  Well as you can see I still haven’t got around to that, but I did want to install the latest version of Visual Studio Express, i.e. VS 2012 on the Windows 8 VM, again just to have a poke around to see what has changed. This could be the subject of another blog at some point I guess, but let’s get this one finished first. You will need some prior knowledge of installing windows and for Windows 8 it seems, you need an account with Microsoft. Assuming you have all that and you’re gust is running happily within VirtualBox, then we can get started.

To copy files from a host to a guest machine, in this case Windows 7 to Windows 8, respectively, there are a few obvious steps and one or two not so obvious. Having scoured the net looking for different solutions as to the best way to do this and I did find a few options, I will now present a step-by-step way to do this. I’m assuming that you have Win 7 64-bit host and Win 8 Release Preview, 64-bit guest, already installed and all you need to do now is share files between the two.  Here goes.

  • In VirtualBox install the ‘Guest Additions’ by clicking the ‘Devices’ menu and selecting ‘Install Guest Additions’
  • Create a folder on the host machine that you would like to share with the guest
  • Enable folder sharing in VirtualBox by performing the following steps
  • Click on ‘Devices’ in the VirtualBox menu and then select ‘Shared Folders’
  • This will open the ‘Shared Folders’ option in the settings, then click the add shared folder icon
  • Select ‘Other’ under ‘Folder Path’ and navigate to the folder you wish to share
  • Check the ‘Make Permanent’ checkbox to ensure the folder is shared when the guest machine boots-up
  • Click OK. The folder should now be shared, however upon opening Explorer, you probably can’t see it, even under Networks
  • In order to get access the folder you must create a folder mapping by performing the following steps
  • Click on ‘Computer’ in the left-hand panel list to ensure that ‘Computer’ is selected
  • Click on ‘Computer’ on the top menu, exposing the available options
  • Select ‘Map Network Drive’ (this could also be accomplished by right-clicking on ‘Computer’ and selecting ‘Map Network Drive…’
  • Select a drive letter (probably Z:)
  • For the folder name, type \\VBoxsvr\YourFolderName, where YourFolderName is the folder you have created on the host machine for sharing and just nominated as the sharing folder in the VirtualBox settings
  • Click ‘Finish’ and the shared folder should appear in a separate window with any shared contents

That’s it, once you pop files into this folder on the guest, they will automatically appear in the mapped, shared folder in the host.