Introduction This tutorial is the third in our series on container orchestration with Docker Swarm. The first tutorial covered how to bootstrap a Docker Swarm Mode cluster, and the second tutorial covered how to schedule workloads across a Swarm cluster. This tutorial explores the topic of service consumption, both from within and externally to a […]
Category Software Engineering
RESTful Integration Testing with WireMock in Java
Introduction In this tutorial, we will demonstrate how to perform integration testing on a Java web application with WireMock, and automate the tests by running them on Semaphore. The aim of integration testing is to expose the faults, defects, or bugs that can exist between various integrated units. This is done by validating their behaviour […]
Writing, Testing, and Deploying a Django API to Heroku with Semaphore
Introduction In this tutorial, you will learn how to write and deploy a Django API to Heroku using Semaphore. You’ll also learn how to run Django tests on Semaphore, and how to use Heroku pipelines and Heroku review apps with Semaphore. If you’d like to use Semaphore to deploy to other platforms, you can find […]
Building and Testing Web Applications with Elm
Introduction Elm is a functional programming language meant for building reliable web applications. It compiles to JavaScript and is well-known for its helpful compiler that promises no runtime errors. JavaScript is the de-facto language for building web applications. Today, we are building most of our web application logic in the frontend with JavaScript, and using […]
Faster Rails: Indexing Large Database Tables Without Downtime
This article is part of our Faster Rails series. Check out the previous article about proper database indexing. As the scope and size of a Rails project grows, actions that were blazingly fast can become slow, and even downright unacceptable. The cause behind this issue can be an exponential growth of your database tables that […]
Speeding Up Rendering Rails Pages with render_async
Adding new code to Rails controllers can bring a couple of problems with it. Sometimes controller actions get really big, and they tend to do a lot of things. Another common problem is an increase in data over time, which can lead to slow page loading time. Adding new code to controller actions can also […]
Creating a Heroku-like Deployment Solution with Docker
Introduction This tutorial will show you how to create an automation tool for deploying your software in a simple way, similar to deploying to Heroku. We’ll be using Docker to version control each deploy, which makes upgrades and rollbacks fairly easy. Also, we’ll use Semaphore to continuously deploy our application. Our containers can be hosted […]
Managing Secrets in Docker Swarm
Introduction Docker changed how development, testing and running software are done, and that’s why software engineers and companies should develop new habits and follow best practices. On the other hand, orchestration technologies like Docker Swarm, K8S or Mesos are also changing depending on the industry demands. Security management, including secret management in Docker Swarm, is […]
Scheduling Services on a Docker Swarm Mode Cluster
Introduction This tutorial is the second one in our series of articles on container orchestration with Docker Swarm. In the first tutorial, we covered how to bootstrap a Docker Swarm Mode cluster, and in this second tutorial, we’ll cover how Swarm schedules workloads across the cluster’s nodes. Scheduling is a key component of container orchestration, […]
Getting Started with Vagrant
Vagrant is a development environment automation tool. It accomplishes this by leveraging virtual machines with VirtualBox, VMWare, or cloud providers like AWS. It’s primarily designed to standardize environments across platforms. However, it’s not limited to that. Vagrant can be especially useful for cross-platform automated tests. By the end of this tutorial, you’ll be ready to […]
How the Team at 500px Moves Faster with Semaphore
500px has been our customer since 2014, and they have been growing and evolving along with Semaphore. Moving fast is crucial to the 500px team. The less time they spend on testing, the more value they can create for their users. They put new code into production several times per day, and automated testing allows […]
Writing and Testing an Event Sourcing Microservice with Kafka and Go
In this tutorial, we will take a look at how Kafka can help us with handling distributed messaging, by using the Event Sourcing pattern that is inherently atomic. Then, by using a pattern called Command-Query Responsibility Segregation (CQRS), we can have a materialized view acting as the gate for data retrieval. Finally, we’ll learn how […]
Faster Rails: Is Your Database Properly Indexed?
If your Rails app is getting slower, here’s how to properly index your database to make your Active Record queries faster.
Perfection is Useless
One of the most important things we teach the junior programmers who join the Semaphore team is the mindset of shipping in small iterations. This is a simple concept, however there’s an inevitable misunderstanding that stems from the subjective ideas of “small”. Thus, in practice we need to teach by example what we really mean […]
Generating Fake Data for Python Unit Tests with Faker
Introduction When writing unit tests, you might come across a situation where you need to generate test data or use some dummy data in your tests. If you already have some data somewhere in a database, one solution you could employ is to generate a dump of that data and use that in your tests […]