Current Trends in Software Architecture

Recently I wanted to catch up on technology in software architecture and I watched a couple of presentations, mostly from Goto conference and read some books and other materials. Now I would like to share some key points and references here, grouped by topics.

Continuous Delivery (CD)

Most influence on me was caused by the book “Continuous Delivery: Reliable Software Releases Through Build, Test, and Deployment Automation” by Jes Humble and David Farley.

Must have read: https://trunkbaseddevelopment.com

Sam Newman, Feature Branches and Toggles in a Post-GitHub World

Martin Fowler, Continuous Delivery

Ken Mugrage, It’s Not Continuous Delivery If You Can’t Deploy Right Now

I’ve started also to read: “The DevOPS Handbook: How to Create World-Class Agility, Reliability, and Security in Technology Organizations“.

Microservices

Martin Fowler, Microservices (goto 2014)

Udi Dahan, Microservices and Rules Engines – a blast from the past

A very non-traditional look a micro-services (and software architecture in general):

Daniel Bryant, The Seven (More) Deadly Sins of Microservices

NoSQL Databases

Martin Fowler, Introduction to NoSQL (gogo 2012)

Book: Next Generation Databases: NoSQL, NewSQL, and Big Data buy Guy Harrison

Event-Driven Architecture

Introduction by Martin Fowler. When one says “event driven”, usually one of the four patterns is meant:

  • Event Notification
  • Event-carried State Transfer
  • Event Sourcing
  • CQRS – Command Query Responsibility Segregation

Management & Philosophy

Robert “Uncle Bob” Martin, The Scribe’s Oath

Very interesting view on the state of our profession and a proposal of a Programmer’s Oath (2015-11-18):

In order to defend and preserve the honor of the profession of computer programmers, I Promise that, to the best of my ability and judgement:

  1. I will not produce harmful code.
  2. The code that I produce will always be my best work. I will not knowingly allow code that is defective either in behavior or structure to accumulate.
  3. I will produce, with each release, a quick, sure, and repeatable proof that every element of the code works as it should.
  4. I will make frequent, small, releases so that I do not impede the progress of others.
  5. I will fearlessly and relentlessly improve my creations at every opportunity. I will never degrade them.
  6. I will do all that I can to keep the productivity of myself, and others, as high as possible. I will do nothing that decreases that productivity.
  7. I will continuously ensure that others can cover for me, and that I can cover for them.
  8. I will produce estimates that are honest both in magnitude and precision. I will not make promises without certainty.
  9. I will never stop learning and improving my craft.

Bob Martin, The Future of Programming

In spite of the title, an excellent overview of a history of programming. For the future check the “Scribe’s Oath”.

Dan North, How to Break the Rules

How we introduce new technologies and if they will work for you. Based on the ideas of Eli Goltratt, author of the Theory of Constraints and the book The Goal and Beyond the Goal. How to adopt a new technology? Answer these questions:

  1. What is the power of the technology?
  2. What limitation does the technology diminish?
  3. What rules enabled us to manage the limitation?
  4. What new rules will we need?

Dan North, Patterns of Effective Teams

Fred George, Managing Manager‐less Processes

Misc

Bob Martin, The Principles of Clean Architecture

Serverless Architecture

Another bad term. Serverless does not mean “without a server”, it just means, the server-side code is executed in a cloud as a function, e.g. AWS Lambda, instead of a server component managed and deployed by developers.

Peter Sbarski, Serverless: The Future of Software Architecture

Code Quality

Kevlin Henney, Code as Risk

Kevlin Henney, Seven Ineffective Code Habits of Many Programmers

 

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s