It’s Saturday in San Francisco and you’re in the mood for a night on the town. What’s new and hot on the restaurant scene? Where can you and your date go to find the best upscale nightlife? Will it be a retro-inspired Tiki bar or a slick cocktail lounge? To plan the perfect night or weekend, sometimes you need a trusted guide to help you live life to the fullest.
For urban connoisseurs who value style, trends, and chic culture, UrbanDaddy has been the go-to guide for curated lifestyle recommendations since 2005. Based in New York, the media company showcases the best of urban life across ten metropolitan areas in the U.S. Audiences can find tips on where to dine, drink, shop or travel, culture and entertainment news, as well as deals on luxury items. The company also publishes numerous content collections on trending topics such as the Super Bowl and Spring Style, as well as an app to find cocktails.
Delivering Style via Microservices on Heroku
About three years ago, the UrbanDaddy development team started to look for ways at reducing the size and complexity of their monolithic app and establish greater flexibility for future growth.
UrbanDaddy original built their app using PHP and Symfony running on a number of servers before eventually moving to Ubuntu on AWS. Every piece of functionality was built using one codebase, which made it unwieldy when adding new features. Moreover, it had been maintained by a string of contractors, which created numerous inconsistencies throughout.
As their business grew, UrbanDaddy’s sales teams required more and more functionality to support their engagement programs and partnerships. However, their monolithic architecture and codebase became cumbersome to maintain and constrained development. Every time a new microsite or feature was needed, the team would have to dive into a massive codebase which brought increasing complexity and risk to development.
They decided to spin off pieces of the app that didn’t have to be a part of the core site and re-build them in their language of choice: Python using Django. They wanted a cloud-based, developer-friendly platform to run these pieces, and the Heroku platform was the clear choice.
We’re confident that running our various app components on Heroku will provide us the stability and scalability we need with minimal maintenance. John Kerbawy, Director of Architecture, UrbanDaddy
Moving towards a more flexible, microservices architecture approach, the UrbanDaddy development team has been slowly spinning off pieces of functionality onto Heroku. For example, they pulled out an internal RSVP system and transactional email processing, as these parts could run independently while still connecting to their central database. In addition, such pieces could also scale independently, which allowed the team to handle spikes in traffic without affecting the user experience of the core site.
With Heroku, it’s incredibly easy for anyone on our team to log into the Heroku interface or use the command line interface to quickly scale up the number of dynos when we need them. John Kerbawy, Director of Architecture, UrbanDaddy
The team has appreciated the range of Heroku Add-ons available to help extend their apps. They use Heroku Postgres for data storage, New Relic APM for performance monitoring, SendGrid for email delivery, and Papertrail for logging.
We really like Heroku Add-ons. In our legacy platform, we’d have to do a lot of work to get the same benefits that we’d get by integrating a Heroku Add-on in just a couple of clicks. John Kerbawy, Director of Architecture, UrbanDaddy
An App in Transition
Going forward, the UrbanDaddy team is working towards spinning off more components from the monolithic app onto Heroku, such as batch jobs, internal administrative interfaces, and their internal API. In this way, they become easier to maintain with less risk of breaking the core user experience. Any new functionality, such as their topical microsites, partner promotions, and other sales projects, will continue to be built on Heroku. This approach enables the development team to move away from DevOps-heavy processes and embrace a faster, more flexible, development experience.
Heroku allows our engineers to focus on producing better code rather than managing servers and infrastructure. They also do a hell of a job on their documentation, which makes our lives easier as well. Jun Han (Johnson) Ooi, Jr. Software Engineer, UrbanDaddy