Product designers design how HubSpot works. We collaborate with our teams to produce an interactive experience that solves the needs of the customer and the business. Our role is more architect than interior decorator – meaning we spend more time thinking about how customers will use the product than making it visually attractive (although this is also important).
HubSpot’s backend services are almost all written in Java. We have over 1,000 microservices constantly being built and deployed. When it comes time to deploy and run one of our Java applications, its dependencies must be present on the classpath for it to work. Previously, we handled this by using the maven-shade-plugin to build a fat JAR. This takes the application and all of its dependencies and bundles them into one massive JAR. This JAR is immutable and has no external dependencies, which makes it easy to deploy and run. For years this is how we packaged all of our Java applications and it worked pretty well, but it had some serious drawbacks.
Lots of people want to become developers who, like me, didn't go to school for computer science. The good news is: It can be done. Some of the most talented engineers and familiar entrepreneurs behind successful tech companies taught themselves to code. But, that doesn't mean it's easy. I was working on the support team at HubSpot when I started learning how to build software in hopes of becoming an engineer and I quickly realized you can't just dabble in programming. You have to go all in.
HBase is the big data store of choice for engineering at HubSpot. It’s a complicated data store with a multitude of levers and knobs that can be adjusted to tune performance. We’ve put a lot of effort into optimizing the performance and stability of our HBase clusters, and recently discovered that suboptimal G1GC tuning was playing a big part in issues we were seeing, especially with stability.