Adam Gross is CEO of Heroku, one of the leading PaaS (platform-as-a-service) providers, and part of Salesforce’s App Cloud platform.
A CS graduate of Carnegie Mellon University, Adam has founded two companies (Personify and Cloud Connect) and was an early employee at two others — Salesforce and Dropbox — where he had a variety of product management and marketing leadership roles to compliment his engineering background.
In addition, Adam is an active angel investor in a variety of startups in the infrastructure and apps space (including Pantheon, Docker, Streak, Depict and MileIQ.)
[00:00:04] Well, first of all thank you everyone for staying around for my talk. I know I'm between you and beer. That's an auspicious place to be. I want to thank Brian for inviting me here at the conference. It's really been an amazing experience for me to experience the tech community here firsthand. It really is an amazing community and I I hope you're all proud to be part of it. It's something that really does feel special and it's been great to get acquainted with it over the past couple of days. So to kind of wrap things up, what I wanted to do was - as you heard in the introduction I'm responsible for Heroku, I've done a whole bunch of other things and app dev before then - and what I thought might be interesting to share, and kind of leave you with to kind of round out the conference, is to spend a little bit of time talking about platform as a service. And really, where is app dev going? I guess I'll start with how many of you in the audience consider yourself developers? Okay, perfect. My kind of people. How many of you have used Heroku? Perfect. Awesome thank you. I welcome any feedback. So you're familiar with broadly the kind of problems that we're looking to solve. I thought it would be interesting to share perspective on where we think all of that is going. From my vantage point I get to work with developers like you around the world and millions of others who use our platform and kind of just replay the things that we're hearing and where we think that's all going.
[00:01:32] Heroku is part of a publicly traded company, this is our Safe Harbor slide. You can also read that on our website. So believe it or not, Heroku is 10 years old. Last month. Which is kind of amazing when you think about it and how much app dev has changed in 10 years. For those of you who remember Heroku v1, it was actually an online IDE where you actually wrote your code in a browser and kind of deployed automatically. There's probably an important startup lesson in there, where your original idea could be a couple of degrees off but still ultimately be a good product. But of course it's been a really amazing 10 years for app dev, for everything associated with cloud development, with platform as a service. What were once kind of obscure or esoteric ideas are now increasingly common. So as we kind of reflect back on the past 10 years and say "happy birthday" it's really about where are things going for the next 10 years and what should we expect? And there's kind of this idea sometimes that's like - OK, well a lot of the core pieces of platform as a service are kind of pretty well-known, they're pretty rounded out. So where is this whole thing going? Or is kind of platform as a service just really done? And my message, as you'll see today, is really that we have only begun to scratch the surface on the kinds of things that you should expect from services like Heroku.
[00:03:00] And the reason, as you heard from the last panel of course, is that technology change isn't just increasing. Technology change is accelerating. The amount of change that we see in new technologies and new services, in the legal and regulatory issues, in every single aspect of the Internet, the amount of change we're seeing isn't just increasing, it's actually accelerating. And at the same time there's kind of this interesting thing happening where all of us as developers and the companies we work for we are all under increasing pressure to move faster. So we kind of have these dual headwinds against us right. More and more that we have to kind of learn about and know and be competent at, and pressure to do more and more with less and less time. And that's really a problem that PaaS is really well suited to solve, because at the core of that - if we don't have higher level abstractions, if we're not able to take advantage of all these new technologies with more ease and fluency - then we're just going to get stuck on the wrong part of that curve and just become completely overwhelmed. So at its core, what is it that we're trying to solve with PaaS and abstraction in general? And of course this was true 10 years ago and it's equally true now, this is basically what your app stack looks like right? There's, of course, your app and then there is a whole category of stuff that you're doing but you don't want to. There's a category of stuff that you don't have to do anymore and you're grateful for. And then there's the stuff that you don't even know about, like how your router tables are getting distributed throughout the web and stuff like that.
[00:04:39] So we're constantly looking at the world through this lens and saying, OK what's basically in that category of stuff you don't want to do but you still have to, as all the work that you need to do to build modern applications increases? And of course through this view of every company needs to become an app company. Right? The impetus for creating applications, for mastering all this technology, it isn't just a business problem for innovative people in this room that are looking to create interesting new apps. It's a problem for every single business because of course they need to create new applications to connect with their customers or some startup will do it for them, right? So we have this kind of technology problem and we have this business problem, and both of these things are coming together to create a new urgency for platform as a service and for all of the active tools and technologies that we use. And so you can kind of boil this down. What have we really learned in the past 10 years as values that we want to take forward into the next decade about PaaS? And the first is cloud native. Now maybe this isn't controversial today, but it was certainly controversial 10 years ago. This idea that you should actually be deploying and running your stuff in the cloud, right? I don't know how many of you participated in a cloud versus on prem battle, that's certainly been a big part of my career. And what's interesting about how this has been resolved is, not surprisingly - and maybe this is controversial maybe it's not - is of course the future is cloud development. If you are rocking and stacking your own servers, if you are wiring your own networks - while that's fun and I love playing with raspberry pies too - that's not a really an effective thing for a business to do in terms of operating their infrastructure. But what's happening with cloud native in this kind of second generation or second decade of PaaS, is when you can assume cloud, versus say cloud will have parity with on prem. When you can assume cloud, you can start building new data services and new application primitives that expect all of the things that cloud provides. And that really forms kind of a departure between the kinds of tools we got as developers that we could just kind of run locally on our laptops or in our data centers, and the kinds of tools and services that we can expect to be consuming in the next 10 years. So that's kind of the first.
[00:07:11] The second is abstraction. And this is kind of the essence of what we deal with as developers. We're constantly seeing new abstractions being developed that we're then learning how to take advantage of. And that's been true throughout history. You can think about HTML and CSS as just being kind of a massive abstraction layer on top of lower level windowing toolkits, so you can think about how virtually all of us write for some kind of language virtual machine as opposed to compiling down to native code. We're using the increasing capabilities of all of the kind of benefit of Moore's Law to be able to inherit more and more abstractions which ultimately make us more productive. And that is not something that is slowing down. That's something that's continuing as well.
[00:07:57] And then finally, and this is something that's kind of near and dear to the Heroku product philosophy, is that it's opinionated that we shouldn't just create developer services that kind of leave it up to the reader to decide how to wire things together. That you should bake good ideas and best practices as deeply into your developer products as possible. Otherwise the chance of success and the chance of just proliferating anti-patterns and bad ideas will be too high, and success will be too hard.
[00:08:26] So with that, take a look at a couple of trends and then kind of come back around to what are some of the ideas we're thinking about for the next decade of PaaS. So the first of course is containers, and I'm very grateful for the original founders of Heroku who did some amazingly innovative work in containers. It's been incredibly gratifying to see, with obviously the rise of things like Docker, containers become a mainstream part of app dev. And we're really only at the beginning of seeing how containers can really benefit our application architectures and bring a whole new layer of agility and productivity to how we build and run our applications. There's always a tendency of course to just kind of shift and lift, right? To just take your existing apps and workloads and maybe like package it all up at a Docker, just like we did with our existing machine images, and then packaging them up into a virtual machine images or eyes. The real power of course comes when you can assume those primitives in your application architecture and really take advantage of them. And we're still in the early days in that era.
[00:09:31] And another of course really really important trend is with micro services, and I get the benefit of getting to talk to a lot of different companies and I'm pretty willing to bet that - if you are working on an application that's more than seven years old - one of the things that you're working on is decomposing it, right? And all of these things go hand in hand because, of course, where say five or six years ago it was a big deal just to be able to get a Prosgress and Rails application up and running and secure and productive. The challenges we're dealing with now is - OK well, what does it mean if I have an application that's composed of seven services? What's the deployment lifecycle look like for that? How do I manage a repos, a repose associated with that? How do I do all of the traditional kind of user acceptance testing on what is now a much more complex application? And while it might seem a little elusive today, certainly in the next 10 years we're going to be kind of deploying and managing and orchestrating those systems with the same simplicity that we can do with kind of simple or more simple monolithic systems today.
[00:10:42] And of course that's all part of a broader shift from thinking vertically about our application architectures and kind of a simple stack configuration, to thinking much more horizontally, where really what our application is about is being able to compose services, some of which the developer might provide, some of which they may be consuming, but being able to handle all the problems of interaction and orchestration and security that come with it. So a lot of background as to what's changing, and one way of then pulling that together into the components that you can think about for the future of PaaS, is really to separate out what I think about as the three core value propositions that PaaS is doing for you, both today in the future. And these are developer experience, data, and trust in enterprise.
[00:11:39] So the first is developer experience. And this of course is something that is most near and dear to the heart of PaaS and really what has distinguished PaaS from the technologies that have come before it. Because of course the whole power is how do we make it easy for you to do things that were otherwise really hard? How do we create a really simple and compelling developer experience? Of course with Heroku that's something like git push Heroku master, the ability to take a piece of code and very quickly get it up and running. It's about thinking about all those things that you don't have to do, that are abstracted away, the fact that you can just provision services automatically. And there's a thinking that - OK, well once you've done that kind of initial developer experience you're kind of done. Where do we go from there? And, as we'll talk about, really we've only started scratching the surface.
[00:12:30] The second and perhaps most interesting is everything that's happening in data services. And if you think about it, in the past 10 years, just getting a database to be running as a service - so you don't have to do the operations, the back up, the stability of the database - that was a huge advancement in app dev. And it's been hugely liberating for all of us as developers to be able to take advantage of databases which were once some of the more complex pieces of information architecture, or I.T. architecture. Now the fact that I can kind of provision these things infinitely and not have to worry about their stability or state is really a game changer. And that's now just like the oxygen we breathe. Well where does that go for the next 10 years across a whole new set of data services?
[00:13:16] And finally, and this is one of the more interesting ones, in the last panel there was a lot of discussion about kind of regulatory issues and privacy and security. What does it mean to run an application in a given geography or within a given set of regulatory requirements? In the States this will be something like Hippo, which governs healthcare information, but of course there are many others around the world. We tend to not think about those as problems that are the domain of our platforms, right? We tend to think about those things that happen out of band, that are done typically with some degree of teeth gnashing and some degree of developer pain. But what does it mean to start thinking about having those things baked in as primitives, as abstractions, into your platform? So in fact you can inherit those capabilities the same way you inherit other capabilities from platforms that you expect today.
[00:14:11] So first we'll talk about developer experience, and this is kind of a really interesting one. So if you think about the past 10 years, really what we've done a great job at as an industry is first and foremost just making developer experience important. The idea that the tools that developers use and developer productivity is something that's important for industry, something that's important for companies to focus on, something that is important for vendors to create products for, is really only invention of the past 10 years or so. Before that people tended not to really give a shit about what developer tools were. You know, you just had to kind of work it out. It's a little bit like computers themselves in the old days. Not that long ago people said "well it doesn't matter if it's hard to use and all you get is a command line. You just have to work it out." And of course now we judge computers and phones and other devices based on their user experience. And similarly there's really been a revolution in being kind of mindful and empathetic to the quality of the experience that you're providing developers. And we've seen that across an entire ecosystem of tools of the past 10 years. And thank goodness for it. It's been a great revelation and how it has helped increase the number of people who are successful programmers. So if that was the problem of the last 10 years, what's the problem the next 10 years? And it kind of goes back to that slot I was talking about before where you think about the apps that we create. You think about how every company needs to become a software company, because of course software is eating the world. Well what's the next problem in developer experience that we're all going to have? And that is that very few of us, beyond our hobby projects, code in teams of one, right? Typically software is created in groups of people and it remains kind of a dark art for both those teams and their organizations to know how to organize themselves and know how to think about their processes and their pipelines and their workflows in a way that can be really successful and repeatable. And I'm sure all of you have had those discussions or worked in those organizations where you've kind of struggled with what's the best way to build an effective software development process. Well, what if those processes and those best practices from everything - about how you integrate source control all the way through testing to staging to deployment - what if those could actually be encoded as workflow in your software? What if your incident response and the tools you use for managing that, and be integrated with something like Slack or other communications mechanisms, were baked into the software, so that those were things that you didn't have to invent each time? If you think about it, the amount of software engineering practice we're inventing at each one of our organizations is kind of crazy. It's a little bit like the amount of time we spent racking and stacking servers in the old days. So for the next kind of outlook, what is next for DX, what is next for developer experience, it's really about how we make it better for teams to work together more prescriptively, more simply, with more abstraction and with much more out of the box thinking. So you'll see some of those ideas at Heroku, you'll see some of those ideas at a lot of other companies, but it is something that I hope you will look forward to. At each of your organizations we can kind of take all of the best practices about everything - about how we do testing, how we do configuration management, how we do all of these kind of esoteric things - and more and more of that happens automatically.
[00:17:45] The second kind of area of growth, or kind of area I would look at, is what's happening with data. And it's kind of interesting because as an industry - if you read Hacker News or you just kind of talk about what's going on - we spend a lot of time talking about Docker and we spend a lot of time talking about Kubernetes, and we spent a lot of time talking about what's happening with the kind of execution side of the house - and it's really interesting and I'm fascinated by it too. The part that we don't really spend as much time talking about is everything that's happening in data services. And if I had an hour or a dollar or a year to bet on either side of that house, I would absolutely bet on what's happening in data services. Because this will fundamentally change applications architecture and capability and opportunity in a more profound way even than what's happening on the container side, because of course what's happening is we're moving from a kind of homogeneous data world where the only kind of data service you have in your application is just something like postscripts - which I love deeply- to a world where our applications more typically have multiple data services which we have to use heterogeneously. Now this gets back to what I said before about cloud native. If you as a developer or as a team of developers had to operate each one of those data services, that kind of incremental cost of operation would be so prohibitive that you would never be able to imagine an application being able to have that complexity. If I had to say to you as a team of five to ten software developers: "You're going to use Postgress and you're going to use Kafka and you're going to use Redis and you're going to use Spark in your application. You would say that's great. And that's also crazy because my team will be completely underwater just trying to manage those services. Well, if your platform is providing those services to you automatically - in a way that you don't have to think about them and you can just consume them as you need them and they just effectively come for free in your architecture - they become available to you in a way that was previously impossible. And so now the opportunity for taking advantage of all of these new data services is really opened up. And if I were really to stress one thing in this talk it's that fact that the nature of our applications - what we're going to think about what they can do - will most fundamentally change because of the introduction of these new data services, their democratization, and their proliferation.
[00:20:12] So your applications that I hope you're all imagining and leaving this conference thinking about - and maybe you're thinking about a standard web app and what you can do with Rails and Postgres, which is great - what I would also encourage you to think about is what can you do with Kafka? What can you do with the ability to stream and process and do machine learning on 20 billion events a day in real time? How does that change what you would think about building or what your opportunities are? Because this wave is coming and it's coming fast and it's a massive benefit everybody in this room. This is truly one of the reasons why it's such a great time to be a developer, because we're kind of the maximum distance between the availability of all these new services which are just coming online now and the ability of people like you to take advantage of them and think about how you can use them in interesting new commercial contacts. And it's really really interesting of course because these data services get stitched together to create application architectures into themselves. So in a way if we think about apps that past provide today being standard kind of web apps that we all know and love, not that those are going away, but that they're going to be augmented by different kinds of apps - what we're really seeing is the creation of a new kind of data centric app that will become as common as the app server database patterns are today. And you can kind of break these out into a couple different categories which is kind of helpful in imagining some of the possibilities.
[00:21:38] The first is kind of a classic inbound stream processing application. And I'm always fascinated by this because it wasn't that long ago that if you had an application that was, let's say, a web analytics application - I started a Web analytics company 10 million years ago so I'm particularly sensitive to this case - if you wanted the ability to process every single thing that's happening on your Web site in real time (and maybe you know, maybe a really big Web site maybe you get 10, 20, 30 million visitors a day), the ability to even think about architecturally how you would process that data, how you would reason about it, how you would maybe do machine learning against it, you're now talking about the upper echelons of you know Developer-ness at organizations like Google and Facebook. Right? It's pretty rare to be able to do that. That kind of capability is now virtually point and click accessible. Any three developers in this room could probably get that up and running between now and the end of the pub crawl tonight. So that's really transformative in terms of the accessibility and just thinking about what's possible with those patterns.
[00:22:50] The second is data pipelines. And this one is really really important and really common because we're moving from a world of course just single or homogeneous data services to being able to take advantage of data moving across these data services. So maybe I want to take all that data that's coming inbound from that Web site or from my Internet of Things, I want to do some processing on it, then I want to take the aggregates and put it into post graphs so that I can build some application that's displaying the aggregate results. All of that requires stitching together all of these different data services, and data services like Kafka become important for that itself. So actually how you kind of bind and synthesize these things together.
[00:23:30] And then finally, as I was alluding to earlier, are micro services. So there's a relationship between the creation of these new data services and the creation of new application architectures, because the combination of both containerization and new data services as we move to more heterogeneous and distributed architectures requires a way of stitching together and orchestrating those applications to end it. It turns out of course that these new device services provide a great mechanism for doing that. To get a little more esoteric, one way of thinking about this - and this is a really fundamental shift that's happening in the industry, and I would encourage you to think about the commercial opportunities for - we're all so used to building traditional relational database applications that are very much about request response, and that's kind of a pattern that's really baked into all of our heads. The opportunity for the next 10 years, and of course that isn't going away but will be augmented with, thinking in an event orientation. And so this is where primitives like Kafka become so important because they form the kind of core event management system in the same way that postgresser form the core relational system. And together these things enable really entirely new architectures. And again developers like you have the opportunity to build applications that have a degree of sophistication that was previously prohibitive. And I'll I'll make another maybe controversal point about this.
[00:25:03] All of this benefits the kind of democratization and commoditization of these technologies, much like PaaS in the first decade, and has unusual benefit for places like Edinburgh. Because if you have kind of a domain of technology where the information about it is kind of more closely held and kind of more shared more tribally, where you are and who you're working with and how that information flows becomes much more important. You have to have worked at LinkedIn to have experience with something like Kafka. You have to have worked at Facebook to get the experience on high scale systems. And that's been true in the past but that's increasingly not true. Right? And that's to the benefit really of companies everywhere as this stuff becomes more commoditized and more valuable.
[00:25:48] Last piece is what we think about enterprise. So we've talked about how there are changes in moving from individual developer experience to Team developer experience, moving from kind of single homogeneous data services to complex heterogeneous data services. The last piece has to do with enterprise trust and compliance. And those are words that usually make developers' hair stand on edge because I've never met a developer who raises their hand and says "I want to spend the next two years implementing a bunch of esoteric policy and legal controls that are written by lawyers for lawyers and have kind of obscure translation into code, that sounds like fun and a good time. Let me please do that." But of course doing so is essential for all of our applications because as our cloud applications become more central to any business - and of course as we look at the headlines and how the importance of security in our applications increases - it's an essential piece of what we do and we would be professionally negligent if we weren't adopting the best practices and standards in that domain. But there's good news. Just in the same way that we don't rack and stack our machines anymore, or worry about kind of network port overflows and things that I'm sure we all spend time with in the past, we should increasingly expect our platforms to handle these capabilities for us. So what does that mean? What are some examples about that?
[00:27:25] So I'll ask a random question: how many of you require two factor authentication in order to push from staging a production? That's really something everybody should do. Right? And it's really hard to. How do you even think about building a system to do that? You would have to kind of instrument all of your deploy processes, you'd need to integrate into a phase system, you'd need to make sure that that system itself has the right kind of security. And to have the audit logging all these things are really hard. But these are things now that platforms will expose as primitives directly. And it gets even more sophisticated when you think about certain regulatory requirements.
[00:28:07] I'll give an example from the US: hyper-regulation requires that every single operator interaction with a production service is logged, right? How many of us have Keystroke logging on all of our operator interactions with production? How many of us want to spend the next two years implementing that? But again it's really really important and it's something that all of our applications will be better served to have and will allow us as developers to bring our ideas to regulated industries like healthcare and finance, so those industries that are so eagerly in need of innovation can have it as well.
[00:28:47] So early days still for this domain but one that's increasingly an active part of PaaS, and I would expect we'll continue to give a plug for Heroku and also similar services. The developer and your platform should have an assigned role. The roles and the roles of the developers, and the relationships between each application, whether they have testing access where they can push to production, whether it's in development mode, all of those things, and relationship should be encoded in the platform itself. The platform's job isn't just to execute your code or to build your images. It is to maintain the integrity of the relationship between all of the different actors involved in it. So you can imagine getting back to what I was saying before, that these are ideas that are near and dear to thinking about the right kinds of abstraction that PaaS can provide.
[00:29:53] So in summary, hopefully you got a little bit of a flavor for how organizations like Heroku are thinking about the next 10 years. And a little bit of a flavor for how much opportunity there is for all of you as developers to easily take advantage of all of this innovation that's coming your way, and how we are just getting started at the opportunities that platform as a service, that abstraction, that cloud native application development can provide.
[00:30:22] And with that thank you all for your time and also those of you who have been using Heroku, I appreciate that. If you have any questions or if there's anything we can do to help you at Heroku about your use of the service or ideas you've heard today, please, I look forward to you getting in touch. Enjoy the pub crawl.