Soms kan het voorkomen dat er, als gevolg van hooggespannen verwachtingen of veranderende marktomstandigheden, noodzaak ontstaat om eens kritisch te kijken naar de staat van een softwareproduct. Het is dan raadzaam om analytisch en objectief te kijken naar zaken als de codekwaliteit, kwaliteit van de architectuur, schaalbaarheid of het softwareontwikkelproces. Continue reading
Developing software is one thing, keeping it up and running in production is a whole different challenge. When your software is running in production it will be used in ways you never thought about, and it will behave in ways you’ve never expected it to behave. A common culprit of problems in production is the use of external resources.
What are external resources? Everything that happens outside of the safety of your runtime environment, e.g.:
- Database connections
- Consumed webservices (whether it’s REST or SOAP)
- Inter-process communication
- Network access in general
Treat external resources as slow and unreliable: it should return well formatted XML within 2 seconds, but it might decide to return the latest The Avengers sequel at 50kb/s which takes 5 hours to receive. It seems like an unrealistic scenario but sooner or later, it will happen. To prove this point, a few examples I’ve seen through the years:
- Time-out on a database connection (network problem)
- Broken NFS-mount (after 30 minutes) thanks to a misconfigured firewall
- HTTP contract is not honoured:
- Content-Type says ‘application/json’ but it returns plain HTML
- Content-Length is incorrect leading to half-received responses
- Incorrect XML entities: Microsoft Office generates invalid XML entities in PDF metadata leading to unparsable XML
- An external webservice responding with 10kb/s leading to time-outs and rolled back database transaction on our end
- An external webservice honouring only the second (even) request
- An external webservice crashing on parallel requests (we had to synchronise access on our end)
- A VPN shutting down every night after a few hours of inactivity
There are some grey areas like file access; a local disk could be fine. But hey, it might be an NFS-mount (Network File System) which makes it unreliable since again, networks are unreliable (even though Wikipedia says TCP provides ‘reliable transport’, but we know better). In the end it pays to be protective; don’t trust stuff from the outside.
Much of this awareness has been acquired through my personal bible of software development; Release It!, by Michael T. Nygard. Anyone writing software which is meant to go to production (which probably most of us do) should have read it.
Before you start reading, I must warn you that this article is not intended to advise you. It is just a collection of thoughts on the topic of enterprise software.
Some weeks ago a client approached us because he wanted some assistance with his IT infrastructure. The client has many systems that interact with each other and are quite tightly coupled. Due to some upcoming changes in their business, the time had come to start thinking about how to improve their architecture. One of the goals of the project was that they wanted the ability to decouple the systems so that they could change systems independently of each other. Our solution ended up being a really powerful combination of Apache Camel and Scala.
Have you ever wondered why there is no platform focused on agile software architecture? Have you ever felt the need to share knowledge, ask questions and discuss about these subjects together with other experts?
Well, we did!
Not only at Avisi, but throughout the entire software industry, we noticed the need of creating a platform for the software architect in an agile environment. The symposium will focus on new development in software architecture and software architecture in agile projects.
Some interesting (international) speakers will be there to share their knowledge, answer question en discuss about several subjects within software architecture.
Feel free to contact us for more information on the symposium and stay posted by following the symposium website and twitter @Avisi_IT #ASAS2012
This is an opportunity to share knowledge of this important subject and make a difference in our industry! Please register online, to make sure there’s a spot for you at the Agile Software Architecture Symposium of 2012!
We’ll see you there!
If you are hired as an architect on a project that is not running quite as smooth as it should, there are two things you can do.
You can change everything. You can go all out on process and methodology and architecture. You can lay off project members, you can hire others.
Often we have design discussions that end up in ‘what if’ debates. We must design it in a way that… because ‘what if…’.
For a Java based product we picked Liquibase as the database change management solution. Want to know how we got there?
On October 19th and 20th I attended the Software Architect 2011 conference in London. The conference was intended for technical architects and the published list of topics really made me want to go there to get some fresh ideas and inspiration about development in general and technical architecture in particular.
This is a “live” blog from day 1 at Devoxx 2011, we will be updating this blog post during the day. You can read all three blogs by following the links below
We made it for the last day of Devoxx! A bit tired after the Devoxx party at the NOXX, but luckily there were only two sessions and a keynote today. Like previous years the keynote on friday was a “technical” discussion panel with people from/representing Oracle, Google, Microsoft, JUG’s, open source. Everybody could ask questions which unfortunately meant that the talk was less technical and more politics. With a lot of political questions which of course the panelists couldn’t answer.