Hexagonal Architecture - Introduction

An overview of the concept of Hexagonal architecture, also known as ports an adapters. It's a well-known good practice of software engineering to keep the business logic separated from external, uncontrolled dependencies (implementation details), yet something that keeps on happening repeatedly. A design with an hexagonal architecture aims to solve this problem, helping to achieve a clean architecture.

The main idea

The main idea behind the hexagonal architecture is to design our software in a way that external dependencies, or implementation details don't pollute the main purpose of the software we're building: the business logic. Put in a different way: an information system is a solution to a particular problem. We build software because we want something done. In that process, of course we'll have to deal with accidental complexity (the technical nuances of the technology involved in what we're building), after all, software doesn't run in the vacuum. But we don't build a software solution just to tinker with technology, we do it because we want something done. And those technical nuances do tend to change over time. This hinders the maintainability of our software, making it more fragile over time. That's why both aspects need to be as isolated as possible.

Read more...

Book Review: Release It!

I've been meaning to read this book for a long time, and finally got the chance and finished it! It's been a fantastic journey throughout the main important topics of modern software architecture.

Following the DRY principle, I won't repeat myself, so here's the review I left on good reads.

Release It!: Design and Deploy Production-Ready Software by Michael T. Nygard My rating: 5 of 5 stars It’s a fantastic book about good software engineering from non-traditional viewpoints.It takes another approach on good practices of software architecture: it considers more than just classic quality attributes, and it makes you think you to architect your system in a way that’s not only reliable and with good quality, but also easy to operate with. Concepts such as evolutionary architecture, adaptable architecture are reivewed throughout the chapters on the last section. In particular I enjoyed to read more about how to make the architecture easy to build and integrate continuously, deploy it safely to production, and make changes on it (because, of course, “change is the defining characteristic of software”). It finishes with a great introduction to chaos engineering.It covers all important topics on good software architecture: stability patterns, deployability, security, how to avoid typical errors (like cascading failures, and what to do in such scenarios), 12-factor app, and more.I really liked the concept of cynical software: rather than assuming everything is going to be fine, ask what could possible go wrong, and expect (and be prepared to) the software to fail. Failures will inevitable occur, and we have to think what to do about it.As an experienced software engineering practitioner, it was highly enjoyable for me to read the case studies presented, as their analysis and conclusions were deeply enlightening.All in all, a fantastic read, which gave me a lot of food for tought, and lots of materials and references to follow up on! View all my reviews

Read more...

Oncoming events of Python and Architecture in September

The next Saturday 10 of September, I will be presenting my talk "Clean Code in Python", as presented in the previous EuroPython 2016, at a local Python event in Córdoba, Argentina12.

The following week, I will be attending a local architecture meetup (arqconf), on which a talk3 about OpenStack will be hosted, explaining how they work in a distributed fashion.

I look forward to enjoying both events!

Read more...

Notas sobre la ArqConf 2015

Este es mi resumen sobre la ArqConf 2015, la conferencia sobre arquitectura de software que tuvo lugar en la UCA el 30 de Abril de 2015. La idea es sintetizar las principales ideas que me llevé y resaltar lo más importante.

Se presentan a continuación un listado de las ideas principales por charla con un breve listado de lo que más destaco por cada uno. Nótese que la lista no es de ninguna manera exhaustiva, y cada sección es en realidad un breve párrafo ilustrativo a modo de resumen muy a alto nivel.

Read more...