RSSAmplifier

Blog

Software Development, Test Automation, and DevOps for Fast-Growing Companies on Dennis Martinez | Helping Tech Teams Ship Rails Code Confidently

Recent content in Software Development, Test Automation, and DevOps for Fast-Growing Companies on Dennis Martinez | Helping Tech Teams Ship Rails Code Confidently

dennmart.comRSS feed ↗36 posts

Latest posts

Should You Fix AI-Generated Code or Rebuild It?

There’s a good chance your organization is running code in your production environment right now that nobody on your engineering team wrote. AI-generated code is finding its way into codebases from every direction, and plenty of it ships without an engineer ever looking at it. A company in the media space I’ve been helping recently contacted me about a Rails application that had grown…

Secure Kamal Deployments With Tailscale SSH

Deploying your applications using platforms such as Heroku can help you get moving quickly at the start. However, as your application grows over time, you might be unpleasantly surprised at how quickly costs can ramp up. These days, we have plenty of options to choose from that are just as easy to deploy on while giving complete control over the infrastructure. Using tools like Kamal , teams can…

Leaving Heroku: Which Provider Should You Choose?

For years, Heroku has been one of the best ways to deploy your web applications. It completely removes the friction of managing infrastructure, which was a huge pain in the days before cloud computing and easy-to-deploy tools were widely adopted. Instead of struggling with server setup and configuration, developers could focus on building new features and leave the “dirty work” to…

Using Kamal's Local Registry for Simpler Deployments

Kamal is a great tool for deploying web applications to the server of your preference, and it’s an excellent choice to ship web projects, especially side projects. However, it does have its shortcomings for people who want to begin using it for the first time. One of the main barriers to adopting Kamal is that it would require you to have access to a remote Docker container registry. When…

Review Apps With Kamal (Part 6) - Docker Cache and PR Comments

Throughout this series of articles, we’ve gone through the entire process of setting up a review application workflow for web apps using Kamal, from setting up our cloud infrastructure to getting our application fully deployed and ready for testing. Get up to date with the series If you want to read the entire series before diving into this article, check out the entire set of previous…

Review Apps With Kamal (Part 5) - Using Hooks to Check Setup

Things are shaping up nicely as we roll along in this series on using Kamal to spin up review applications when opening new pull requests. We have a GitHub Actions workflow that creates new servers on the cloud, sets up a destination for these review apps, and automates the deployment process to get a new web application instance up and running on a unique domain name. This entire sequence already…

Review Apps With Kamal (Part 4): Instant URLs for Our Apps

Throughout this series, we’ve set up an automated system to create temporary environments and deploy web applications for review purposes, similar to Heroku’s review apps functionality. The first step consisted of using Terraform to spin up new servers on the cloud when opening a pull request on GitHub , then we set up Kamal to use a new destination for deploying apps to those review…

Review Apps With Kamal (Part 3): Automating Deployments

In this series, we’re going through the process of recreating a workflow similar to Heroku’s review apps for web applications using Kamal for deployments. The first article covered using Terraform to create the infrastructure for your apps through GitHub Actions, and the follow-up discussed how to use Kamal destinations to configure deployments to different environments. These two…

Review Apps With Kamal (Part 2): Configuring Kamal Destinations

In my previous article, I began setting up a web application that uses Kamal for deployments to create a review app. The intent for setting up this system is so that any time you or someone on your team opens a new pull or merge request, you’ll have an instance of your application running for verification purposes. The first part of this series shows how you can use tools like Terraform and…

Review Apps With Kamal (Part 1): Provisioning Servers

I’m a huge fan of Kamal for deploying my web applications. I love that it gives me more control over how and where I host my web apps, letting me choose more powerful cloud server providers at a cheaper cost without sacrificing ease of use. I’ve been updating my personal projects to use Kamal for deployments, and I couldn’t be happier with how smooth it’s been for me to…

High Availability PostgreSQL Replication With Kamal

One of the downsides of using Kamal for deploying your web applications, compared to using a platform as a service like Heroku, is that you’re now fully responsible for the safety of your application’s data. That means you’ll need to set up processes that’ll help you get back up and running without data loss if something were to happen to your running database—and believe…

Kamal 2: What's New and How to Easily Upgrade Your Apps

37signals , the team behind Kamal , released Kamal v2.0 during the 2024 Rails World conference in September 2024. This release has a lot of improvements that resolve many common complaints about the tool, and it should make your deployments go much smoother than before. Main Changes in Kamal 2.0 Let’s talk about some of the main changes included in this release. Check out Kamal’s…

Secure Your Kamal App Deployments With Let's Encrypt

Deprecated This article covers generating SSL certificates when using Kamal 1.x. The latest versions of Kamal 2.0 and above use a different proxy service that generates SSL certificates for your domains using Let's Encrypt. Refer to the Kamal 2.0 proxy documentation for details on how to set up SSL certificates for applications deployed with newer versions of Kamal. Deploying web applications…

Dead Simple Load Testing at Scale on Lambda or Fargate

Checking the performance and resiliency of your web applications is not an optional step in the software development process these days. Users want what they’re looking for fast, and if your site doesn’t load quickly enough for them, they’ll leave and likely never return. If you want to keep them around, you’ll need to make sure your site is speedy and responsive. My…

Hassle-Free Automated PostgreSQL Backups for Kamal Apps

Kamal makes deploying web applications to your preferred infrastructure a breeze. With a single command, you can run a fully functional app on any server you choose, making it an excellent alternative to pricier platforms like Heroku. However, it has its tradeoffs, mainly that you need to manage a lot of the maintenance work yourself. One of the essential things you’ll need to handle…

Deploy Secure Load Balancers on Hetzner Cloud With Terraform

In my previous article, Get Started With Hetzner Cloud and Terraform for Easy Deployments , I showed how simple it is to use Terraform to manage a firewall, private network, and server on Hetzner Cloud for deploying web applications. For the example used in the article, I provisioned a single server to host a Ruby on Rails web application. The single-server approach works well for smaller sites…

Get Started With Hetzner Cloud and Terraform for Easy Deployments

Prefer to watch a screencast instead? Check out the video at the end of this article. These days, it’s super-easy to spin up a server on the cloud and have it available in under a minute. Less than 20 years ago, provisioning a new server meant installing physical hardware, setting up networks, and configuring all the software you needed, and it would require a few weeks to complete. Now, you…

Automating Rubocop Into Your Rails Development Workflow

Go to the end of this article if you prefer to watch a video instead. Do you have a Ruby on Rails application using Rubocop? If so, you know how beneficial static code analysis tools can be in keeping your codebase clean and organized. In my personal experience, I’ve seen how static code analysis tools like Rubocop can transform not only your codebase but also your engineering organization.…

Setting Up Rubocop for Legacy Ruby on Rails Projects

Prefer to watch a video instead? Check out the video version of this article on YouTube at the end of this article. Every developer has a preferred style of coding. Some people prefer spaces for indentation, while others swear by tabs. Some like to include trailing commas at the end of a multi-line array, while others don’t want to add anything. Regardless of your coding style, these…

Revitalize Your Old Codebase Easily With Static Code Analysis

“Hey Dennis, I saw your pull request to add static code analysis to our app. Why should we add yet another tool and additional steps to our dev and build process?” I received this Slack message from one of the tech leads of a project I recently joined. The project, a relatively large monolithic Ruby on Rails application, had been in service for nearly a decade—an eternity in the web…

20 Lessons Learned From 20 Years in Tech: Part 2

Last week, I began writing about some of the lessons I’ve learned since I began working in tech back in 2004. Doing anything consistently for twenty years will undoubtedly create plenty of opportunities to learn new lessons that apply to one’s career and life. I wanted to share some of that hard-earned knowledge and experience with the world, hoping that others find some use for it.…

20 Lessons Learned From 20 Years in Tech: Part 1

On January 26, 2004, I started my first job in tech. I graduated with a computer science degree one month prior and felt very fortunate to land work as quickly as I did. I lived in Puerto Rico, where tech jobs around software development were minimal at the time. I remember scouring the classified section in the local newspaper and finding very little that interested me. I don’t recall how I…

How Testers Help Developers Elevate Their Productivity

“Testers are slowing us down. We would be so much faster without them.” As a developer for my entire career, I’ve seen this exact comment or variations of it happen at many places I’ve worked in. Early in my career, I also echoed the sentiment. Unfortunately, it’s a common occurrence that development teams aren’t entirely in sync with the work done by the QA…

How to Achieve Speed and Quality in Software Development

The pace and expectations in software development have drastically escalated in recent times. Teams previously mapped out delivery cycles for most software products several months in advance. The Waterfall methodology was the prevalent approach for developing software, and countless organizations widely adopted it throughout different industries. For instance, development for the Microsoft Windows…

The Important Role of Documentation in DevOps Success

Throughout my career, I’ve noticed something among teams that struggle to deliver consistent results: a lack of clear documentation. It’s not the only issue plaguing these teams, but it definitely contributes to their woes. Often, these teams don’t spend much time on internal documentation, like how to quickly onboard new team members or the ins and outs of their application…

Deploying Your Serverless Applications Easily With Terraform

When building infrastructure for your applications, it’s hard to beat a tool like Terraform . Its declarative approach to defining your infrastructure as code makes managing your entire environment a breeze. As someone who frequently needed to provision servers and services manually in the past, I’m glad we can now quickly reproduce these systems without worrying about human error by…

Deploy Your Rails Applications the Easy Way With Kamal

Deprecated This article covers Kamal 1.x, which is now deprecated. While some of the configuration settings still apply to Kamal 2.0 and above, a lot of the functionality mentioned in this article no longer applies. Please refer to the Kamal documentation for the most up-to-date information. Prefer to watch a screencast instead? Check out the video at the end of this article.

The Hidden Benefit of Bringing Freelancers Into Your Teams

Many organizations think hiring a freelancer, whether a software developer, a tester, or a DevOps engineer, is only about producing a tangible outcome. You need to complete a project or a task, and the freelancer comes in to work on it for a fee. It seems like a simple interaction, right? There’s a job to be done, so you want someone—ideally an expert—to handle it for you. However, hiring…

Distributing Docker Images for Rails Apps With GitHub Actions

As someone who’s been working with Ruby on Rails applications for 15 years and counting, it’s been amazing to see how it remains relevant in web development today. It’s always exciting to see a new major version come around the horizon and see what new things are coming down the pipeline to continue helping developers build stable and solid web applications quickly. The upcoming…

Hiring a Freelance DevOps Engineer: What You Need to Know

When a tech-based organization begins to grow successfully, it’ll eventually find itself looking at ways to scale and improve its existing processes. You might be looking at migrating to a cloud infrastructure that better suits your current and future needs. You may need to bolster your automation to help your team quickly get through the more mundane parts of their workday. Your company…

Private File Downloads From S3 With Lambda & API Gateway

A client I worked with recently had an automated system that generated a proprietary file within AWS and stored it in a private Amazon S3 bucket. Their team generates this file daily and uses it as part of a distributed application consisting of dozens of servers outside the AWS ecosystem. They wanted other systems outside their organization to access the file. However, they also wanted to avoid…

Simple Yet Powerful Ways to Shrink Your AWS Expenses

Amazon Web Services (AWS) is the world’s largest cloud service platform, widely adopted in organizations of all shapes and sizes across the web. It’s become a staple for many tech companies thanks to its wide variety of products, from storage, databases, machine learning, and countless other services. Since its launch in 2006, they’ve helped over one million businesses like yours…

Building Lean Docker Images for Rails Apps

One of my favorite tools I use nearly daily is Docker. From helping me experiment, develop, test, and deploy my applications, it’s an indispensable part of what helps me do my work faster. Much of my work with clients revolves around Ruby on Rails applications. In most instances, these are smaller startups with limited resources at hand. Beyond the scope I’ve been given as my project,…

Deploy Hugo Sites With Terraform and GitHub Actions (Part 2)

In the first part of this series , we introduced the concept of using Hugo to build a static website and automating updates to an Amazon S3 bucket using GitHub Actions. In that article, we went through the details of setting up the necessary permissions on AWS to allow GitHub Actions to access the Amazon S3 bucket that will host our static website. For improved security, we’re using…

Deploy Hugo Sites With Terraform and GitHub Actions (Part 1)

In a recent article, I wrote about how to set up an Amazon S3 bucket to host a static website using Terraform . Using Amazon S3 for static website hosting provides numerous benefits, from pricing to scalability. It’s an excellent choice if your organization already uses Amazon AWS since it integrates nicely with many other services. One thing that the previous article didn’t discuss is…

Create an S3 Bucket for Website Hosting With Terraform

Nothing is more ubiquitous in the world of cloud computing services than Amazon S3 . Many organizations use S3 to store their data, from tiny startups to massive organizations. Thanks to its ease of use, scalability, and (in most cases) dirt-cheap pricing, S3 has become the top cloud storage solution in the world. Most companies use S3 to store and serve media like images and videos quickly and…