Category: Software Architecture

Feature Flags as Business Enablers

Introduction Deploying code while working in a team can be tricky. If you have multiple developers working on the same repository orchestrating the feature release becomes problematic. Teams usually ask themselves whether a they can deploy to production their current dev branch and whether such a deploy process will be safe and won’t break existing features and/or introduce non working untested new features to the production environment. Features flags can be a mechanism that allow safe deployment of entire branches thus reducing the lead time of features from the developer’s laptop to …

A Detailed Guide to Big Data Architecture

Introduction In recent years, big data has taken the world by storm. Legacy relational database storage on premises has been transformed into complex cloud systems with multiple databases, NoSQL databases, ingestion engines, and so forth. In this post, I’ll explain big data architecture and how it differs from legacy database architecture and describe the different types of big data architectures. What Is Big Data? Legacy Systems Big data refers to extremely large and complex data sets that cannot be effectively processed or analyzed using traditional data processing tools and techniques. When we …

Distributed Database Architecture: What Is It?

Databases power all modern applications. They’re behind your Angry Birds mobile game as much they’re behind the space shuttle. In the beginning, databases were hosted on a signal physical machine. Basically, it was a computer running only one program: the database. Then we moved to running databases on virtual machines, where resources are shared among multiple operating systems and applications. In recent years we moved to running databases in the cloud. And we no longer use a single database instance to store the data. Modern database systems are spread across multiple computers …

The Most Effective SQL Server Activity Monitor Strategy

Databases power all modern applications, from banking and ATM software to space shuttle systems and your Angry Birds game. Wherever you go, you will find databases. The most common databases used today are relational or SQL databases, where data is stored in interconnected tables. In turn, you can query those tables using a query language that resembles plain English, Standard Query Language (SQL). To get the most value of the SQL databases you use as a developer, system administrator, or database administrator, it’s vital that you have visibility into what’s going on. …

Types of Test Data You Should Use for Your Software Tests

Testing is an integral and vital part of creating software. In fact, test code is as important as your production code. When you create test code, you need to generate test data for your code to work against. This post is about the different types of test data that are used in software testing. I’ll elaborate on each type and explain what test types are used in which scenarios. Types of Test Data Valid Data As the name implies, this is the data that your program expects and should operate on. You …

Column-Oriented Database Examples: A Helpful List

Column-oriented databases have seen a resurgence in interest in recent years. The first column-oriented databases appeared decades ago. However, they have never gained a lot of traction in the market. In recent years, though, big data and cloud computing spurred a new interest in these types of databases. The reason for this is that the unique implementation of columnar databases fits surprisingly well into the workloads and applications run in cloud computing. More on this below. In this post I’ll discuss the following: What are column-oriented databases? How do they differ from …

Using H2 as in memory database for unit/component tests instead of MySQL

h2 database

So following my recent post regarding the creation of a component test framework – let’s take a closer look in the use case of using H2 as a lightweight in memory database instead of MySQL, for your unit/component tests. Benefits of using H2 instead of MySQL It makes a lot of sense to use H2 in the context of component tests instead of MySQL: You can create and destroy a DB/table/data on the fly – once the tests are done the DB disappears. Compare this to having to rollback manually every change …

Creating a component test framework

component tests

If you have been reading Martin Fowler’s canonical article on the test pyramid, you know that there is a mystical layer that hides between those braod unit tests (the base of the pyramid) and the integration tests layer (near the top). This layer is called: component tests. This article is about the following : What are component tests? Why should you care, and how to implement them properly? What are component tests and why should you care? Basically component tests are the the part that theoretically should allow you to isolate a …

Creating a readable REST API

API

When you are creating a RESTful API, it’s easy to get overwhelmed by all the different things you need to take into consideration. Throttling, REST verbs, security, authentication, input validation and etc. It’s easy to forget about the more subtle issues that can make a lot of difference in the long run. Most of the topics described above were already discussed (extensively if not exhaustively) elsewhere, so I’ll try to give my take on how to create a readable REST API for developers to consume. It’s a more subtle and less discussed …