Friday, 30 November 2012

Hard reverting a Maven release with Git

When trying to release a maven project, Git automatically tags your repository and then updates the project to a new version. However if there are any failures in between, the release cannot be fully undone and needs manual intervention to clean up the state.

The following code snippet shows how you can fully revert your project by removing both the tags and resetting the previous commit.

Thursday, 29 November 2012

New Age Architecture principles learnt from AWS re: Invent keynote

Was listening to the Keynote from Werner Vogels at AWS re: Invent and wanted to record all the concepts that he discussed. These are so valuable and applicable for large applications in today's environment and worth blogging about.

Fundamental Principle - EVERYTHING IS A PROGRAMMABLE RESOURCE 

Controllable

  • Decompose into small, loosely coupled, stateless building blocks 
  • Automate processes and services
  • Let business levers control the system
  • Architect with cost in mind
Resilient

  • Protecting your customer is the first priority
  • In production, deploy to at least two availability zones
  • Integrate security into your application from the group up
  • Build, test, integrate and deploy continuously
  • Don't think in single failures
  • Don't treat failure as an exception
Adaptive
  • Entla non sunt multiplicanda praeter necessitiatem - dont make things more complicated than it should be 
  • Assume Nothing
  • Use late binding
Data Driven
  • Instrument everything, all the time
  • Inspect the whole distribution
  • Put everthing in logs


Some of the quotable quotes from the session include

"you are allowed to make mistakes"
"if you cannot collect data, you cannot act"
"whole distribution not average or median - inspect 99.9 percentile"
"Thou shalt turn off the lights"