I have nothing against Go (in fact I like it) but they seem to have built GOV.UK with every damn bit of technology there is available. I've seen Varnish, Go, Ruby, Python, Scala, Java, Mongo, MySQL, nginx, rails, sinatra, Django and PILES of Not Invented Here.
Also I'm not sure it's a great use of public money to build stuff like this when they should have nginx/apache up front and some configuration.
In fact this whole thing stinks of crappy information architecture resulting in a massive front end router hack that they did in Scala, binned and moved to Varnish, then binned and moved to Go.
This is not one "cohesive" web front end. It's a rat's nest and an increasingly expensive one.
We did have some configuration - it was stored in Varnish and Nginx. The time cost of shipping new redirects when content is moved or new routing configuration for new tools coming online is non-negligible, particularly as we're in the middle of moving 300+ government agencies onto the GOV.UK platform. Also having all those redirects, friendly URLs, and application mappings in static configuration makes self-service publishing tools very difficult to build.
This is all outlined in the blog post - perhaps not as clearly as I would have liked, though!
They're incredibly easy to build. I notice you use puppet. That's enough tooling to push configuration out and restart services for nginx or apache+mod_proxy. You can break configuration out into separate files per agency if you need to.
Varnish is different as that requires restarting.
We do the same with commercial kit (Riverbed) with over 140 HTTP application endpoints and that is higher friction than the equivalent setup yet we manage it with a mere 1 person...
Deployment is a solved problem. No offense but you're not Google!
"OMG we're the government and everything we do is huge and unprecedented so it is impossible for us to use off-the-shelf anything and we can learn nothing from best practises" is step 0 of every failed big government project.
There's significant thawing of that attitude (and gov.uk, for their imperfections, is definitely a very positive part of the trend) but the idea is alive and well.
Yes because a real world organization with IT systems going back 50+ years is exactly like some me to macbook and MBA start up with two men and a pantomime horse in old street.
Are you a price comparison site? Or Experian or Equifax perhaps?
Unless you clearly say you're not just some enterprise business that aren't exactly known for their technical competence this comment is totally ambiguous.
Do you just think you know what you're talking about, or do you actually?
You don't have to take my opinion seriously. I could work in Tescos and be splurging false information out on the Internet. I could be an elaborate hoax!
However, please don't write off people as "just some enterprise business that isn't exactly known for its technical competence" because we all know that startups get it right all the time as well...
As for do I know versus do I think, there is the third option do others know and that is all that is important when it comes to getting paid...
So you are handling a small set of related services to a large number of people. That's hardly comparable to the task of migrating 300+ (distinct) government agencies/services to the new system, along with whatever old systems they currently use.
I tend to agree. The post makes a point of saying "we had a router built in scala, but no one on the team knew how to maintain it".
It seems they're allowing team members to play with "language of the week" (lotw), build something that's then used in production without the rest of the team knowing the lotw, that member moving on and then rebuilding it in a new lotw 6 months later. no doubt this GO implementation will go the same way at a later date.
I'm not opposed to using a lotw in production with other languages and such, but it needs to be done in a thought out manner with the whole "what if the project lead gets hit by a big red double decker" mentality.
I wonder if the technology churn is more of an issue with the structure and organisation of GOV.UK rather than a technical one. In the post he states that the previous router was unmaintainable as there was no-one with a deep knowledge of Scala in the team and that this was the main reason for the re-write. Why was this allowed to happen? Is there a rapid/high turn over of staff or are teams moved around without regard for skill balance?
It does not look that bad actually. Your list lacks Oracle, Microsoft technologies to really complain about inefficient usage of public money. I would love if my country used open source more.
New legislation means local councils have to justify their requirement for Oracle/MS licencing costs over open-source/free software. They can still buy the licences if they can show they really need it, but loads of councils are now properly evaluating solutions like Canonical's OS/Cloud stack.
Sadly it's easy to justify because they just play the "this is a critical system and Oracle / MS provide round the clock support and quick resolution milestones" card.
I've lost count of the amount of times I've seen Oracle products bought based off the back of Oracle's keen sales people overstating the value of their post sales support.
Plus since there's so many redundancies happening in local government, they don't like train and retain skilled in house staff who would have been able to offer the same level of support. So 3rd party support is seen as more reliable than in house.
Lastly, many project managers push for such contracts because it means they can deny responsibility (ie if Oracle fucks up, they can blame Oracle. But if the system goes down and they're responsible for their own support, then the buck stops at the project managers). So you often get project managers push for such contracts just out of laziness.
There might be a case that this legislation might see more contracts signed with open source vendors who provide support, but local governments will always still have the argument that MS / Oracle are big trusted names where as a less known (outside of the world of IT) open source vendor may not be able to provide the scale of service that the government wants (complete BS of course, but all to often these decisions are made by project managers who know jack shit about IT)
Having worked along side a number of government projects, I can confidently say that all the projects based on "off the shelf" products end up becoming vastly more expensive because you usually end up with hugely expensive support contracts with BT / IBM / MS / Oracle / etc and often the solutions need some bespoke tuning to work the way needed, so you add on expensive consultancy costs to have the software adapted to fit.
Where as developing stuff in house means that you're employing significantly cheaper labour (namely, the rubbish salaries that most get in the public sector vs the private sector) and as a bonus the cost is more likely going to stay within the UK (ie you're not paying multinational companies nor their overseas consultants (Oracle was particularly bad for this as they dumped our stuff in a US data centre and our support contacts were all living somewhere in eastern Europe. So very little - if anything - provided was UK based).
Sadly our government doesn't seem to understand about doing anything in between - or at least not that I observed when I used to work there. It was either entirely bespoke or entirely bought, developed and set up by some overpriced conglomerate (or worse yet, outsourced completely). So going by the trends that I've witnessed, I'd rather the technology playgrounds just so long as they remain developed in house.
Maybe. I don't know how huge that project is. Maybe technologies that have been chosen are the best for the tasks at hand. Maybe some of those technologies are only minor part, not in critical area, maybe it is some technology research project. Maybe it is kind of managerial pride "let's write how many lines our source code contains". As well, I guess, you don't assume that software developers should learn new technologies on their own time (while I personally love to do that).
That's a silly argument. I'd rather not be pissing an estimated £6400+maintenance up the wall on a project which could have been realised with off the shelf technology.
Just because the organisation uses open-source software doesn't excuse them from public and professional scrutiny.
An MP spending £1645 on a duck house under expenses got a lot more attention than this little bit of waste. Just redressing the balance.
Anything can be realised with off-the-shelf technology plus time. Your posited solution further down the page would also have involved work in setting up the pool configuration and switching, so let's not pretend that it comes at zero cost.
It will come with proportionately less cost initially and over time though which is the issue.
Efficiency is a major problem in government. Government should have a low financial impact on society where possible. A government entering a market with an already solved problem is wasteful at best. If they'd contributed time to Nginx or mod_proxy then they would have a net positive social effect.
But they didn't. They built an inferior product at great cost to the taxpayer.
A government entering a market with an already solved problem is wasteful at best. If they'd contributed time to Nginx or mod_proxy then they would have a net positive social effect.
Is this some sort of Markov-chained free-market/El-Reg-at-its-most-prolix/libertarian experiment in satire? Well played!
That made me laugh and I've upvoted you for that, but no, it's serious.
Various governments are already throwing money at Open Document Foundation (France, Germany come to mind) to support LibreOffice so why shouldn't we throw a few quid at nginx/apache?
Presumably by having a list of different technologies they are taking the approach of right tool for the job. The obvious side affect also being that engineers who work on this need to be polyglot as opposed to any specific tech. I certainly categorise this as a good thing, a developer and as a stakeholder (UK resident and user of the site).
Actually they're using the wrong tools for the job because they're having to rewrite bits regularly in different tech. There is obviously no evaluation taking place.
Establishing technical standards and homogenity is important on projects of this scale.
I think they established the reasons for it fairly well in the blog post, and even better in the comments elsewhere. I'd say they are the right tools for the job.
Maybe. Maybe not. The proof is in the pudding. It's immeasautably better than before and is a lot cheaper to run. Until otherwise I am of the opinion that they are making the right decisions.
In their defense having worked on sorting out problems on old complex large scale publishers sites. If your trying to make a collection of services hang together in a seamless way you do need some sort of front end to tie it all together and that needs to be usable by non gurus.
Though they do seem to be using all the new toys maybe a bit more thought about which technology to use rather than jumping from technology to technology.
We publish several huge legacy applications, several huge new applications, several integrations, public web site, documentation, online support. A mere 80-100 million HTTP transactions a day.
People make changes to their infrastructure. The govuk team are at least brave enough to blog about it, and offer the code up for inspection. Can you post links to similar public contributions you have made?
I'm sure if you joined the team you'd wave your magic wand and everyone would fall in line, and things would be beautiful. Right.
Oh, and I'm sure the golang community are really, really pleased that "in fact, [you] like it" - very charitable of you!
The UK government is a 19th Century 'filing cabinet bandwidth' information architecture. The IT systems as always reflect the organisation structure that produces them. The data redundancy and unnecessary domain separation is frustrating and archaic.
Uk.gov is just the cherry on the top of an old and creaky enterprise design that hasn't kept pace with changes to its mission or the world around it.
Actually the stuff GDS is doing starts from a clean slate and does away with much of what you are complaining about, in fact it is intended to fix a lot of it!
If GDS was the IT department for the whole of government and the departments became a team of policy analysts and ministerial support then you'd be right.
Overwhelmingly the core information management and processing is on the local IT infrastructure of each department. GDS is unifying the web presence and some of the citizen identity systems, its not fundamentally taking over the core information systems of state.
EDIT: To be clear, I think something like GDS should take a long hard look at the core information systems of state and start again with a clean slate breaking the technology and the data out of the policy silos.
I'm not sure why you have such a negative attitude towards gov.uk, the site seems refreshingly good at it's job. It's simple, clear and easy to use. As long as they can execute fast what does the tech stack matter?
I think it's fair to say it's going to take a little while to migrate all of the systems over. Give credit where it's due, they're doing a good job with the new site and I'm sure that when it arrives the replacement for the tax disc application will be of a similar standard.
I think the site is good. I have no problem with the technology ultimately but to put a fine point on it, I'm not paying the government lots of money to invent their own infrastructure components when perfectly good ones exist already.
I have nothing against Go (in fact I like it) but they seem to have built GOV.UK with every damn bit of technology there is available. I've seen Varnish, Go, Ruby, Python, Scala, Java, Mongo, MySQL, nginx, rails, sinatra, Django and PILES of Not Invented Here.
Also I'm not sure it's a great use of public money to build stuff like this when they should have nginx/apache up front and some configuration.
In fact this whole thing stinks of crappy information architecture resulting in a massive front end router hack that they did in Scala, binned and moved to Varnish, then binned and moved to Go.
This is not one "cohesive" web front end. It's a rat's nest and an increasingly expensive one.