Powering the Heroku Platform API: A Distributed Systems Approach Using Streams and Apache Kafka

We recently launched Apache Kafka on Heroku into beta. Just like we do with Heroku Postgres, our internal engineering teams have been using our Kafka service to power a number of our internal systems.

The Big Idea

The Heroku platform comprises a large number of independent services. Traditionally we’ve used HTTP calls to communicate between these services. While this approach is simple to implement and easy to reason about, it has a number of drawbacks. Synchronous calls mean that the top-level request time will be gated by the slowest backend component. Also, internal API calls create tight point-to-point couplings between services that can become very brittle over time.

Asynchronous...

Read more →

Neither self nor this: Receivers in Go

Andrey Petrov is the author of urllib3, the creator of Briefmetrics and ssh-chat, and a former Googler and Y Combinator alum. He’s back again to free us of our old ways of thinking, so that we can embrace what's really special about receivers in Go.

When getting started with Go, there is a strong temptation to bring baggage from your previous language. It’s a heuristic which is usually helpful, but sometimes counter-productive and inevitably results in regret.

Go does not have classes and objects, but it does have types that we can make many instances of. Further, we can attach methods to these types and they kind-of start looking like the classes we’re used to. When we attach a...

Read more →

How Emarsys Approaches Service Sizing on Heroku

Based in Budapest, Hungary, Andras Fincza (Head of Engineering) and Rafael Ördög (Technical Lead) work for Emarsys, a global marketing automation platform. Read our Emarsys customer story to learn more about their migration experience on Heroku.

How did you introduce microservices at Emarsys?

We take an evolutionary approach to our architecture. Our marketing automation platform was originally designed as a monolithic system built in PHP and MySQL and running on in-house infrastructure. We were running two major services on our in-house infrastructure: one for HDS (historical data service) and the other for smart insights and analysis. However, it was hard to grow the platform...

Read more →

How Belly Scales Using API Proxies with their Microservices Architecture: Interview with Darby Frey

Darby Frey is Director of Platform Engineering at Belly, the leading loyalty marketing platform in the U.S. For more information, visit www.bellycard.com or read our Belly customer story to learn more about how Heroku has helped Belly scale their business.

How did you approach migrating to a microservices architecture?

Originally, we built the entire business on one Rails app. Then a couple years ago, we pivoted to a microservices approach. It is still a work in progress, but we’re migrating components of the monolithic app whenever it makes sense. For example, when we need to add or expand a feature, or if we need to scale something independently, then it makes sense to pull that out...

Read more →

Introducing Heroku Teams

For many of us, building apps is a team sport. With any team, getting all the people, processes and tools in sync and working together can be a challenge, and this is especially true with software development.

Today we are announcing a new feature designed to help to make building and running effective software teams easier. Available for free (for up to five users), Heroku Teams lets groups of software developers manage different projects, permissions, and people in a unified console with centralized administration and billing. Teams is available today for all users, and is accessible via our newly enhanced dashboard.

Creating Your First Team

With the introduction of Teams, the first...

Read more →

Browse the blog archives, subscribe to the full-text feed, or visit the engineering blog.