Posts Tagged: software architecture

Home » software architecture

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

JHipster: Generate And Bootstrap CRUD Apps With Spring Boot And Angular

The previous two posts in my series on helpful tools for developing CRUD applications were about tools that addressed very specific problem areas: API format specifications and code generation from those specifications in particular.This post will be both less about APIs and solving specific CRUD-related problems but about a tool that deals with CRUD app requirements in a comprehensive manner. This tool I'm talking about is called - not so slightly tongue-in-cheek - JHipster.Both inspired by tried-and-true frameworks like Ruby on ... Read more

Swagger: A Roundtrip Tool For Creating And Consuming REST APIs

In this second part of my series on useful tools for developing CRUD applications I'd like to introduce Swagger and Swagger Codegen in particular. Introduce perhaps isn't exactly the right word because first of all Swagger is quite well known in developer circles these days. Secondly, a few months ago I wrote a blog post about how to use Swagger to generate client SDKs for REST APIs.Swagger - originally having originated at Wordnik is a tool for documenting and publishing their ... Read more

Annotate and validate data structures with JSON Schema

I'd like to begin my little series of useful tools for developing CRUD applications with JSON Schema:"JSON Schema is a vocabulary that allows you to annotate and validate JSON documents."JSON Schema gives you a straightforward way to provide type information and validation to existing data structures. Say, for example you have a product instance like this (converted from your language's native object or general data structure format using a tool like Jackson for Java):Then using a tool like this online JSON ... Read more

Why Do We Still Write CRUD Applications?

Probably every software developer - since the 1990s at least - has been there once, asking him- or herself: "Why do I have to write tedious, repetitive CRUD code time and time again?"Being good, virtuous programmers some of those developers did what software development in the end mostly is about: They tried to automate a cumbersome, repetitive process that like any repetitive process should be performed by machines rather than humans.Some have succeeded - to some degree at least - ... Read more

Using Netflix Zuul As a Reverse Proxy / API Gateway

Zuul, which like the service discovery tool Eureka and the fault tolerance library Hystrix is part of Netflix' cloud orchestration stack, is a reverse proxy / API gateway.A reverse proxy conceptually works like this:A reverse proxy allows you to route requests to a single domain to multiple backing services behind that proxy. This can be conducive in situations where you want to break up your application into several loosely-coupled components that externally, that is facing the user, nonetheless act as if ... Read more

Should Web Apps Behave More Like UNIX Programs?

Recently, through various discussions about the nature of the web and web applications I came up with an intriguing (to me at least ...) idea: Web apps should behave like UNIX command-line tools.Please hear me out and let me elaborate.Probably the most widespread pattern in modern web app development is that of single-page applications (SPAs). Though that particular term isn't used as abundantly anymore as it used to be a few years ago the design pattern it promoted still persists:Web apps ... Read more

What Causes Over-engineering and How Can You Prevent It?

Last year software engineer Fagner Brack wrote an interesting and thoughtful article on "How To Accept Over-Engineering For What It Really Is"The article is very much worth the read in its entirety. There are a few key takeaways though I derived from it personally:I like the definition of over-engineering (quoted from Jeff Sternal) as "Code that solves problems you don’t have.".Fagner's conclusion is that what constitutes over-engineering depends on both context and the people involved.Over-engineering is usually brought about by unclear ... 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

Interactive Flowcharts with code2flow

Visualisation often helps immensely when trying to understand complex systems and interactions.Visualising these systems and their behaviour can be a daunting task though:Covering each and every path a workflow or process might take can be quite arduous. In many cases it's not even possible to comprehensively describe a system that has not yet been implemented. Edge cases frequently only tend to surface once a software has been tried out under real conditions. Software in turn needs to adapt quickly, which all ... Read more
Next Page »

By continuing to use the site you agree to the use of cookies. more information

The cookie settings on this website are set to "allow cookies" to give you the best browsing experience possible. If you continue to use this website without changing your cookie settings or if you click "Accept" below then you are consenting to this.

Close