In this blog post I would like discuss more about technologies that will aid and boost up the agile projects. I’m writing this article on the basis of Agile implemented on Scrum. So in agile scrum projects we do development, testing and release shippable products at the end of each sprint. It is a known fact that all these sprints are short, from 2 to 4 weeks, and the teams need to run as fast as they can to keep up the development work during the sprint to meet the objectives of the sprint, which is of course to deliver a tested shippable product that adds value to the end user.
For any project the infrastructure is very important. For the development team a development environment is highly important for execute their unit tests. Also for the testing team, a QA environment is important for execution of various tests such as, smoke tests, integration tests, regression tests, etc. If you are using an automated testing approach and the demand for a ready to use platform is very high where you can execute these automated tests.
I can remember couple of years back when we had to wait for days (not just hours) for the Infrastructure team to build us the necessary platform for development and to the QA work. All these environments were created virtually on a local development server. I’m not blaming anyone as the infrastructure team has to make room in the server and take backups which causing more time. Also when decommissioning a server needs to take authorisation from the other teams are some of the difficulties that we faced. So when there are several teams working on the same server in a smaller development company, the network traffic to the server creates a bottle neck and there are respond delays. Above all the hardware gets depreciated with time and the development teams need to be up to date with the latest technologies. So the older servers won’t do any good in that. Also the companies have to deal with maintenance as well. Even if you have larger and state of the art servers, they grow older and you need to spend on replacing them.
For agile projects there is no such time to waste. Time is critical and need to keep up the development and must deliver constantly. So a development team can’t wait for the infrastructure team to build a platform for days. Even waiting for hours will have significant impact on the deliverables.
So with the introduction of the Cloud computing these problems were sold and I’m particularly interested in AMAZON AWS cloud, which provided an infrastructure platform for any scale from development to production. When this was introduced in our company the time that we were waiting for a development platform to start up the work was reduced and in matter of minutes we had a development environment for carry out our development work. The only time taken was to create an AWS machine image and that image can be used over and over again and we didn’t have to wait for the infrastructure team to get things done, the developers themselves were capable of getting this done.
Following are some of the services provided by AWS:
For example with Amazon Relational Database Services you could easily set up a database of your choice and integrated with your development environment.
Select the type of the Database instance you want.
Specify the DB instance details
Do the additional configuration
Launch the DB
Then your instance is done. It may take few minutes to initialize the instance.
To make your instance available locally, you need to add the CIDR/IP. Amazon will detect you a closest match. Since for R&D purposes I’m using that, but I’m sure you will have your own platform architecture.
Now you are ready to connect from SQL Server Management studio:
Open Visual Studio and open the server explorer.
Right click on the data connections and select Add connection and you will be prompted to enter the connection. You need to enter the RDS end point and the user login that you created when creating the RDS instance.
Once the connection is set up you can modify the database as you whish.
There you have a quick an easy way to set up a development or QA db instance.