Posts Tagged: design patterns

Home » design patterns

Monoliths Aren’t Inherently Bad

Self-professed minimalist developer Kelsey Hightower a few months ago wrote about monoliths being the future. The microservice design pattern has been trending in software development for quite some now. Unfortunately, more often than not it's been indiscriminately treated as a panacea to every software architecture and design problem out there. Microservices can help with one aspect specifically: Reducing deployment risk. If you have a large monolith and frequently need to make changes to a specific part or feature provided by that monolith the whole ... Read more

The Richardson Maturity Model for REST APIs

On his website about software design patterns Martin Fowler provides an in-depth explanation of the Richardson Maturity Model for HTTP-based REST APIs by Leonard Richardson. According to that model REST APIs come in 4 levels of sophistication: Level 0, aka the "Everything is a POST request" model for example propagated by SOAP. This is basically tantamount to remote procedure invocation. Level 1 - Resources: Every resource is accessed through its own canonical URL. Level 2 - HTTP Verbs: Verbs such as GET, PUT, PATCH and ... Read more

My Curated Collection of Angular Design Patterns, Best Practices, and Other Resources

This is my personal, non-exhaustive collection of Angular design patterns, best practices, and otherwise useful Angular resources: General Angular Coding Style Guide Angular Cheat Sheet Top 15 Angular INDEPTH articles of 2019 JSON Schema to TypeScript declarations: Keeping Client and Server Models in Sync with Spring Data REST and Typescript Angular ng-template, ng-container and ngTemplateOutlet - The Complete Guide To Angular Templates The Missing Introduction to Angular and Modern Design Patterns Custom Validators in Angular Testing Dependency Management for Angular Unit Tests Using TestModuleMetadata Using Page Objects with Protractor and Cucumber in ... Read more

Cloud Design Pattern Library by Microsoft

Microsoft maintains an extensive library of cloud design patterns. Whether you create applications that run on AWS, Microsoft Azure or Google Cloud Platform, use platforms such as Heroku or you develop enterprise applications which run on on-premise cloud networks within a corporate intranet, cloud computing becomes ever more crucial to providing business value through software. Hence, it's not only expedient to know about the classic relatively low-level GoF design patterns or Martin Fowler's Patterns of Enterprise Application Architecture but about design patterns for ... Read more

References to Design Pattern Libraries

When designing and developing software it's always useful to have a reference to common software design patterns handy. Apart from cloud design pattern libraries there are collections of more low-level or more general design patterns, too. These include the classic GoF design patterns and Martin Fowler's Patterns of Enterprise Application Architecture. Read more

Microservices and Decoupling Front-end Components

Microservices have become a common design pattern for splitting up and modularising monolithic applications. The indiscriminate application of this particular design pattern is quite a bit worrying, though. A few months ago I gave this answer to the question what the biggest struggle with Microservices is: Convincing people that microservices are not a cure-all but just another design pattern. You have to start out with a monolith and only if you realise along the way that some components might work better as a ... Read more

Design Patterns: Event Sourcing and Command and Query Responsibility Segregation (CQRS)

Event Sourcing and Command and Query Responsibility Segregation (CQRS) are system design patterns that allow you to deal with event streams in a consistent manner. Common line-of-business applications typically are built using the MVC design pattern with the database tables representing the model tier in MVC as the single source of truth for the application state. Event-based systems are different - and inherently more complex - in that their single source of truth is the stream of events that led to the current ... Read more

Less Is More

What's true for design in general certainly is true for software design in particular: Less is more - or paraphrasing Dieter Rams - "Write less software in order to write better software." A few weeks ago I read this interesting article by web accessibility consultant Heydon Pickering. In this blog post he argues that the only foolproof way of writing performant web applications is to write less code. Sure, all that fancy minification, transpiling, JIT / AoT compilation and optimisation stuff might ... Read more

A design rationale for Tube stations

In December 2015, Transport for London published the London Underground Station Design Idiom - design and user experience guidelines for London Underground stations, if you will. Ranging from their consistent usage of the Johnston typeface, to the iconic roundel and - of course - the equally iconic Tube map, which constitutes a design feat in its own right, TfL always had a strong foundation in design thinking. London Underground stations from very different eras and styles - Victorian, Art Deco, as well as ... Read more

Sharing and exploring data models and database patterns

Somewhat in the vein of last week's post, I'd like to share a new service called dbpatterns with you. dbpatterns allows you to create ER models in the browser and share them with other users. If a particular pattern or model suits your needs you can directly export its DDL for PostgreSQL, SQLite, MySQL or Oracle RDBMS. I really appreciate the idea of promoting and sharing best practices for database systems. While object-oriented software design patterns are rather common (though some particular ... Read more