Blog Feed

Microservice: In-Memory Repository Adapter

Oh, Were You Using That? Once there is enough business logic in place, the development team can start implementing various integration and adapter layers. Nearly all web applications will, at some point, require a persistence layer. So a natural first place to look is any repository layer. As stated at the very beginning of this … Continue reading Microservice: In-Memory Repository Adapter

Microservice: Business Logic

Not Just for Sci-Fi and RPGs Cynical developers treat "business logic" as an oxymoron. Their business unit makes decisions, which are implemented by the development team into layers within an application. When the business unit decides, inevitably, to pivot on features or offerings, the development team has to scramble to heavily refactor their code in … Continue reading Microservice: Business Logic

Microservice: Code Organization

Go That Way Microservices are built the same way as any other piece of software: one line of code at a time. But where that code lives, and how it is organized, is an essential part of the life-cycle. As an architectural pattern, "microservice" is very much about organizing an application into small, manageable pieces. … Continue reading Microservice: Code Organization

Design Principles: Dependency Inversion Principle

Flip It and Reverse It The Dependency Inversion Principle is an object-oriented software design principle that easily has the most far-reaching implications across both the underlying code and overall architecture of a software application of all design principles. This post is part of a series on software design principles. As with all design principles, this … Continue reading Design Principles: Dependency Inversion Principle

Design Principles: Interface Segregation Principle

Gotta Keep 'em Separated The unfortunately-named Interface Segregation Principle is an abstraction-level corollary to the Single Responsibility Principle. Like the SRP, this principle seeks to limit the burden on consumers and implementers by focusing the exposed API of an interface. This post is part of a series on software design principles. As with all design … Continue reading Design Principles: Interface Segregation Principle

Design Principles: Liskov Substitution Principle

Why Won't this CuboidCylinder Fit?!?! Like Bertrand Meyer's Open/Closed Principle, the Liskov Substitution Principle is an object-oriented software design principle that is unfortunately poorly understood within the industry. It seeks to deal with code quality issues arising for poor use of inheritance mechanisms in object-oriented languages. This post is part of a series on software … Continue reading Design Principles: Liskov Substitution Principle

Design Principles: Single Responsibility Principle

Laser-Focused Coding The Single Responsibility Principle is fairly self-explanatory: don't try to do more than one thing at a time. The goal is to improve cohesiveness of software by decoupling ill-suited components. Improving cohesion by reducing coupling may seem a bit counter-intuitive until you look at the meanings of those words from the perspective of … Continue reading Design Principles: Single Responsibility Principle

Design Principles: Open/Closed Principle

Object-Oriented Huh? The Open/Closed Principle is one of the least well-understood object-oriented software design principles in the industry. It deals primarily with one of the three fundamental pillars of object oriented design in an attempt to foster the creation of readily reusable code. This post is part of a series on software design principles. As … Continue reading Design Principles: Open/Closed Principle