Saturday, December 04, 2010

So what's so special about a PaaS?

One of the debates/conversations going on right now in the cloud is the value and virtue of Platform as a Service (PaaS) and Infrastructure as a Server (IaaS).

There are lots of different ways to think about the pros and cons of both. To a laymen, you can summarize these arguments as follows; PaaS cares more about the future and less so about the past, where as IaaS cares more about the past, and makes compromises on the makeup of the future. IaaS is concerned with giving you infrastructure in which you can run legacy applications as is, but still get benefits of the cloud such as utilization / elastisicty etc. On the other hand PaaS doesn't offer a direct solution to legacy applications and as such you will need to invest time and resources in customizing them for a PaaS platform. The payback from this is that you should be able to see lower infrastructure costs and greater web scale performance.

The reason this is the case is as follows. Traditionally, customers have had to work on their hardware layers to provide High Availability (HA) of their applications, think RAID, SAN, Redundancy, Live Migration etc. This all costs money, both in terms of expensive hardware and a requirement for highly skilled staff to maintain it.

PaaS platforms on the other hand are designed in such a way that hardware failure is expected and as such the software on these platforms in designed in such a way that system integrity will not be comprised if parts of the hardware footprint should go down. The hardware itself based is highly standardized low cost commodity kit. Its designed to be so cheap and simple that it can be easily repaired or replaced at a much lower TCO than would be obtainable using specialized highly complex kit.

On the other hand IaaS must be designed in such a way that the hardware is failure tolerant as assumptions about the applications failure tolerance cannot be made.

I'm going to be spending a lot of time working with cloud computing solutions and I'll post my thoughts here.

Saturday, July 17, 2010

Azure Patterns and Practices

Looks like the patterns and practices team are starting to build out information on Azure:

http://msdn.microsoft.com/en-us/library/ff728592.aspx

Not so much there right now but will be a good place to keep watch.

Saturday, July 03, 2010

Optimization

This post from Seth Godin struck a chord with me.

I see so much in the day to day life about optimizing that, the creational habits that make true change are somewhat stifled.

http://sethgodin.typepad.com/seths_blog/2010/07/the-nonoptimized-life.html

Sunday, July 26, 2009

A Call to Action: Please help.

Hi, I just dedicated a page to my Family Member Annie McNeill at LIVESTRONG Action.

This page is a part of the world's largest dedication book that LIVESTRONG Action will use to pressure world leaders to do more to fight cancer. Can you add your name to my dedication page? It'll only take a second, and you can help me reach my target of 25 dedications. Please click here, it only takes a second:

http://www.livestrongaction.org/dedication/annie-mcneill

Right now, Lance Armstrong is dedicating his ride in the Tour de France to the fight against cancer. And after the race, he'll send this dedication book with your signature to world leaders and pressure them to make cancer a priority in their own countries. It's our best chance to push for better treatment, more funding for cancer research and access to care for everyone around the world. But if people like us don't stand up, these leaders won't pay attention. Will you check out my dedication page?

Annie McNeill inspired me to take action - hopefully they'll inspire you to do the same:

http://www.livestrongaction.org/dedication/annie-mcneill

Transparency in Software Projects

Status and health reporting of a project are paramount at all times, earlier the better in order to ascertain that a project is on track.

When stakeholders have full visibility of the efforts on a project and the results of that project then they are more able to have confidence that the project is on track.

The converse of this is a project that is not healthy but organizational pressures cause overly optimistic status reporting which masks the issues that need to be addressed. Management should look for transparency and accept that all may not be well but ensure that care is taken to address the issue at hand. An unrealistic deadline cannot be able more realistic by throwing additional resources at it.

When project health is not as it should be it’s important to identify the resources that are effective, and seek to identify those that have a negative impact on productivity and address this issue accordingly.

The full suite of tools in Visual Studio Team System when used properly can ease the burden of status reporting and provide transparency as to the health of the project. The Scrum for Team System can provide several useful metrics which can help ascertain the health of the project.

First and foremost the sprint burn down chart should be used as an early warning indicator that productivity is not as it should be. There are 2 reasons for a flat lining burn down chart. No status from developers or no developer progress. Either of these when it happens is easily address.

The build health reports can provide status as to the quality of the software being produced. Lack of good builds, coupled with poor unit test results should raise alarm bells as to the quality of the software. Stakeholders should expect to see a good amount of early testing and for this to continue as the project develops. These tests should be able to provide assurance as changes are made to the software throughout its development.

An additional report that can be useful is the code churn report. This describes to the view the amount of lines of code that have been changed in the time period specified. If on a larger project this does not tail of it’s reasonable to assume that there are large amounts of new development going on late in the day. This means that large portions of the solution have not either been written or is in a large state of flux which is not good late in the day as it would suggest that defect counts aren’t going to tail off.

Transparency of all these aspects should allow key decision makers to make early decisions around scope or delivery dates which will allow expectations to be managed and avoid situations where teams not set up for success.

Monday, July 06, 2009

IIS6 – Network Service username under impersonation

Had a problem on trying to configure IIS6 to run a website under a specified service account.

Setting the account to use the service account as the anonymous credentials and identity impersonate to true in the web.config didn’t get rid of the symptom of the network service account being passed through to a remote SQL Server.

The trick is to set the App Pool to use the service account and adding the service account to the IIS_WPG group on the web server.

Not quite sure how I avoided hitting this problem before but delighted to suss it out!

Scot ALT.NET – ORM Evening

I had the pleasure of attending my first meeting of the Scottish ALT.NET community last Thursday.

It was an interesting and informative experience around the use of ORMs to assist with .NET development. NHibernate and Fluent NHibernate were presented, then subsequently we were treated to a smackdown of NHibernate vs Microsoft Entity Framework.

Although the comparison of the two frameworks was more geared around the features and usability, I myself can’t get away from the database first approach that stems from being taught Codd’s rules at university. Why would we use a relational database if we’re going to be primarily concerned with making our data model map to our object model? I feel a good software system is born of a good data model.

Tooling should be used to take away any repetitive tasks, which are both boring and error prone but it should not take away the need to have a good working knowledge of all the components of your technology stack.

It’s also plainly clear that right now, the Entity Framework cannot be taken seriously. Maybe v4.0 with VS2010 will change this, but I remain to be convinced.

To this end, I will be sticking with technologies such as Linq to SQL or CRUD stored procedures coupled with template based code generation.

Sunday, June 07, 2009

T4 Templates

Recently been investigating T4 templates. Been doing a lot of work using TDD, with the assistance of Rhino Mocks which is great, but in order to embrace SOLID principles, in particular the Single Responsibility Principle and the Interface Segregation principle I’ve found a lot of coding repetition.

Working with Linq, it takes a responsible attitude towards design to allow proper unit testing. This can be mitigated using technologies such as Type Mock but when tools such as this are not available, you need to ensure you design for testability rather than use tools to provide testability.

To this end I’ve been working with Fowler’s Table Data Gateway pattern, to separate out the actual data access from any business logic associated with it. This leads to a lot of gateway code in itself, DTO code and access code up at the provider level. This provides great testability, working with IoC but does require quite a lot of boilerplate code.

To this end, I want to use T4 Templates to automate some of this work, allowing testability and to maintain adherence to the aforementioned principles.

So, started learning by looking at the following:

Linq To SQL Code Generate with T4

Advanced code generation patterns with T4 and DSL tools

Text Template Transformation Toolkit

I’ll post back here my experiences in using T4 to tackle this issue.

Tuesday, June 02, 2009

When Agile gets Fragile

Agile methodologies have represented a great move forward from in delivering real value in software development. It’s principles are defined by a simple manifesto from the Agile Alliance:

“We are uncovering better ways of developing
software by doing it and helping others do it.
Through this work we have come to value:

Individuals and interactions over processes and tools
Working software over comprehensive documentation
Customer collaboration over contract negotiation
Responding to change over following a plan

That is, while there is value in the items on
the right, we value the items on the left more.”

To be Agile, so many things need to come together, when they don’t you end up with a terrible pot-pouri methodology or lack there of which sabotages a project right from the start.

I state here some things in my experience that have made the process of being agile less than effective:

  • Fixed set of deliverable to be delivered in a fixed short timeframe, without heed to the teachings in  The Mythical Man Month
  • Lack of application of agile software techniques. Including but not limited to code reviews, unit testing, refactoring.
  • Resources being added to team late on in projects. See first point. With tight deadlines, it is most defiantly to stick with the staff on board at kick off and let them do their utmost to meet that goal.

It is true that each of these issues stated here effectively break the software development process, Agile or not. What can we take from this? Maybe this one statement:

“In software development, all stakeholders must make a commitment to a process, and stick with that commitment regardless of external pressures.”

We should stop looking to processes to solve our issues when we don’t commit to those processes.