Doing More with Less: Serverless Events (Cloud Next '18)
So. First of all thank you everyone for one. Finding, this a little. Difficult to get here from the main area and. Two for, coming at, the end of the day I realized that I am the last thing between you and starting. Your evening, so I really appreciate your making it here so. GCP. DCP. Next day 1 a lot of exciting stuff is announced today and I hope you're excited to hear about a few more things and. The cool things that you can build on top of Google cloud platform and. So with that I'm gonna jump into it so, as I said I know it's the end of the day I'm gonna promise to keep it light fun. There's actually even a demo at the end with a little bit of audience participation to, please, stay for that and. Let's get started so my, name is Morgan Holman I'm a product manager on the, surplice team within GCP, and I, can't wait to tell you about what you can build using surveillance and events and so. I thanked you a number of times one for finding it two for coming at the end of your day and three, for attending a session that actually had a pretty nebulous title, right doing, more with less with. Less what, well. Here Google we care a lot about developer, productivity we really want you to be able to do, the most in the shortest amount of time and add value to your users so we want you to be able to code with less. Code, less. Infrastructure, and less work overall and I'm going to talk to you about service events and how we make that possible and, so, what would what would be your ideal right, if you if you had any system, any, framework, what. Would be your ideal framework, it would be one that allows you to do nothing but focus on your, business logic right to focus on user value the things that keep users coming back to your application day, in and day out which is frankly hard enough and things, such as monitoring. Configuration. Service. Discovery Auto healing, rollback, all these. You. Know complicated, and thankless. Tasks, that frankly at times take teams of people to do their very very important, but, they have almost nothing to do with actually running your business so. Ideally you would just focus on business logic and, software. Is evolved. For this purpose right if you remember the old days of httpd. And. You had this very very thin interface. That literally just lets you receive a request, and send, a response and everything, in between you had to do yourself and over. Time software, evolved to do a lot more of the heavy lifting for you right a lot of the modern frameworks, do you just about everything nowadays, right they do routing, they do session. Management they do caching ORM. So you don't actually have to talk to the database a lot of the heavy lifting has. Been removed when. It comes to writing software and infrastructure. Has been on the same trend, of evolution, right abstracting. Away more and more and more such, that you, can focus more on adding. User value focus, more on business, logic from, the early days of self, hosted servers I mean, if you've been in the industry for a while maybe remember the days where you had a co-worker, coworker or a colleague rung, a 10 million dollar business under their desk right I mean it was kind of the Wild West but certainly, not the way to build a resilient, reliable. A fault-tolerant business. And, we then moved to managed data centers we then moved to coalos we got more efficiency, we, moved to VMs, where, you pack more onto the machine itself and then public cloud was, a step function change, meaning. Making it much much easier to provision infrastructure, much much easier to build systems and then, even on top of public cloud right we've added a lot of services, to make things even easier on you as a developer things like App Engine bigquery, cloud storage, compute engine datastore. Firebase. Data. Flow and many other technologies. But. There's still a lot of challenges right, I mean. It's not it's not a completely solved problem there's, complexity, even, a modest, internet business these days let's. Say you're doing e-commerce a small e-commerce site you've probably got a users database products, database a transactions. Database you're getting a number of different API is it's necessarily, complex. You've. Got an efficient infrastructure, many of you and that, if you're running on traditional infrastructure, let's. Say you have nothing more than a diurnal pattern to. Your usage right now let's say you're a single. Geography. A single continent when. Your users are asleep and not actually hitting your service you're, still running servers, right you're inefficient, and then.
These Systems at times can be very difficult to it to extend right, it's the corollary, of the complexity, point that, the more complex the system. Every, new feature you want to add ends up being surgery, that you do to that system. And. So you know it's called doing more with less service, in events you know I'm going to say that service plus events helps to solve these problems so, how did you do it so one it's very simple and I'm gonna talk more about each one of these points it's just code you give us your code we, do everything else it's, fully managed, again we run your code I we take care of patching, and auto scaling and everything else you, just give us your actual. Business logic and we do everything else and, we automatically, make connections, between services. So you don't need to think about api's and handshakes and all that it's. Efficient, and that you pay for what you use again, in that diurnal, example, with, service when, your users are asleep you're, not paying it's. Event-driven, so. Again we, only, spin, up compute when there's actually an event to process and then finally it's extensible, so the very nature of service, encourages. Us to write software. As micro, services and so adding, a new feature adding, new functionality is. As simple as just adding a new micro service to your overall, application. And. So now let's talk really briefly about, Google's. Service, event driven framework cloud, functions, yes I'm calling it a framework and that very much like the web and app frameworks, cloud, functions, is a framework that sits on top of Google's, infrastructure, right that lets you very, simply, access, a number of services, and just focus on writing your code, and. So it's circles what does that mean no, server management you don't even need to think about service simple. Deployment, model just give us your code I can't say that enough times we. Oughta scale it up and down and you, pay only for what you use it's. Event-driven it seems, pretty simple but, let me just go through it an. Event is admitted if. Your function is configured, to listen to that particular event we. Didn't spin it up your. Code executes, and so what does this look like this. Looks like just focusing, on your business logic right we had all those things that, need to happen to actually get your code in a place where it could spin up and run and respond to things on.
That Very first slider I guess that second slide but. This is where you're focused just your business logic now. And. Con function supports events for more than 20 Google services. So many of the most popular Google services, are already integrated with cloud functions, and we're adding, more all the time and. This is really exciting for us because each. New source that we add ends. Up unlocking, a whole new set of use cases and, you can imagine that the things you can build with let's say a cloud, build integration, or a stack, driver logging, integration, are quite different from the things you might build with a Gmail integration and. So every time you open up on these new sources, developers. Just amazes, some Wow with the things they build like, the you guys are much more creative than we are. It's. A recap why should you do this way the serval is an event-driven way again, it's simple it's, efficient, and it's, extensible, easily extensible. So. Don't just take my word for it that's enough for the theory let's look at an actual example. So. In the traditional development model I'm gonna go, to a situation or scenario that many of you have probably faced if you've done anything consumer facing at least you've probably faced, the situation where you. Want to allow people to create profiles, or some sort of artifact. That, they exist in your system and so if you've got profiles, you probably want to have a photo associated, with that profile, so, the user let's, say once it upload, a photo and then you want to crop it and store, it down for the profiles, page how. Would you do that in the traditional model well, you'd. Probably stand, up a server and, use a single server out to do everything and. So the user would upload the photo around. A crop the image and store down into the profile directory. It's. Not too bad. But. Now I want to extend that right I want to resize that same image and I want to use it for my user gallery right I've, got a number of images let's say I. Want. To be able to actually have a gallery and see all the users that are there how. Do we do that well we just add more logic to our server app right so now we upload, the photo we, crop the image we store it in the storage and profiles we, now resize, the photo we, store it into the gallery section. Roof. That. Was a fair amount of work but at least we're done, but. Now, let's. Say I want to index those. Profile images for searches all right let's see some metadata comes in it's the users name right and you should be able to search via a name for for, some profile that's on the system, and. So what do I do well, let's just add even more logic, to that server round right so upload the image crop it stored, and profiles resize, the image stored in the gallery and now take that metadata in this case I've shown the the first name last name in the image URL, and let's, write that into search.
Is. Anyone starting to feel a little bit like this woman at the edge of this cliff very. Cool picture I don't know how they ticket looks like she's gonna fall. What's wrong with this model right, what, are some of the shortcomings well it's incredibly, complex right there's a lot going on inside that single, round it's, hard to understand, because so much is going on it's hard to debug the. Infrastructure, is inefficient, right we have a server in the middle to do nothing but just write things to storage doesn't, really need to be there we. Have servers running whether there's traffic or not and, then. It's difficult to extend right every change requires surgery, to the router because we keep adding more and more and I haven't even talked about some of the hairy distributed, systems problems associated with failures. What happens you know how do we handle retries. And. So. Is. There another way to do this again. The. Title of this talk is service plus events you know I'm gonna get a service event so yes there's another way but let's look at how the. Event-driven model, helps. To solve this problem so. How. Would we do this with cloud functions, googles and then driven service. Framework. Well. Let's. Say the user with then upload, the file directly to storage right you don't need a server there are no servers in this picture whatsoever, that. Would then cause an event to fire it's. Called object final as the name is unimportant, but it's basically a create event that. Then causes a function, to trigger which crops the image and stores, it down into profiles. No. Servers on this page nothing for you as a developer to operate less. Code less, infrastructure, less, work with. Cloud functions, we really can do or with. Less. And. So let's come back to some of those advantages I talked about right on that slide with a simple. Efficient, extensible, let's start with simple so. There's less boilerplate, code to write and then, even even, in a very very lightweight web, serving framework like flask here in Python. There's, a lot of boilerplate right, I've got an import flask, I've got to decorate my route to tell it where to send the request I've, got a write a main function action, on the app there's. Just a lot here, that has nothing to do with the business logic right but business logic is in is really just in two lines of code here and. For those of you who actually know something about deployment right, if you're not just writing. The backend code or potentially deploying it as well you know I've skipped an entire step, which, is having to configure engine. X right like how do I configure, my proxy. Who. Here believes that, the, way they add superior. Value to their users is by, configuring, nginx, better than the competition right. It's somewhat rhetorical please no one raised their hand but.
But But it's true right it's something we all have to deal with and it adds almost, no user value and to be clear so you don't, feel like I'm beating up and nginx I think it's great it's wonderful in fact we here at Google packaged, nginx, into many, of our images for. Our runtimes but again it's something we, should worry about not something that you as a developer should worry about you should just worry about your code and let's, look at what happens when. We start getting this in the service in advanced way it's. Just the business logic right just those two lines of code Google. Is your framework Google is. Your proxy. It's. All so simple in the sense that it's single purpose right, so, we go from something like this and I know it's I've kind of loaded this slide by calling it the monolith, hand handler but, we go from a handler. That's doing a lot of different things right it's cropping an image it's saving it to storage its resizing, the image saving. It to storage it's indexing, the metadata. And. Again I didn't even talk about retries, and failures right I've shared a pretty simple case we. Move from that to, this where. Everything. Is single purpose right, we're still doing all the same steps admittedly, right I'm still have to resize we have to crop it you have to index things but, everything is single purpose and it's much easier to understand much, easier to debug and oh, you know those distributed. Systems, problems associated with failures. And retries you. Know who handles that Google. We, retry your code but it fails. And. It's also simple in the sense that we. Make automatic connections, between services, and so this, is a point that at times can get lost but if, I want to talk from service a service B let's say its cloud storage, talking to a cloud function, I don't, have to pull I don't have to check and say did something change is something new is something there was something new when, most, of the time the answer's no the, event is delivered directly to my. Service, function there, are no API is to contact I don't need to figure out how to go talk to the service to go get a piece of data I don't need to know how to go, talk to a service to configure. To talk to talk to my function all. The data that I need is delivered, to my. Event delivered, directly to my, function in most cases and. Then finally, we. Broker those connections, and automatically, in a sense that it, literally takes about five, seconds, in the UI maybe, two seconds in the command, line to, say a wired function, X up to cloud storage bucket.
Making. It very very simple for you to, build sophisticated, powerful. Systems, it's. Also very efficient I won't, belabor this point because I think you've heard it many times but, if you have an input that looks like this something that's kind of spiky let's say you're a startup. Company and you. Have very few users adding profiles in the very beginning of your company's evolution, or, maybe you're very mature and people. Already have the profiles on their system and let's pretend that this is not Facebook where people change their profile every single day but a normal website, where, you know you might change it once a year your input could very well look like this with cloud functions, your bill would track the input with, the traditional, server dominated, model when, that servers up you're paying for it and. Then. It's also very extensible, so. Let's go back to that original example, right, we, were already bursting, at the seams with complexity, when we just had three steps right now let's say I want to add a fourth let's, say I want to actually extract information, out of the image right I don't want to just take the metadata that you've provided I want to see what's going on in the image maybe I want to make it a visual search, and. Then I want to index those attributes for even better searches, so, how could I do this well I could. Just add, more logic to the server right I could upload the photo crop, it and save it resize. And save it and, the metadata run, into the vision API and, analyze the, the information and index, those tags. That's. A lot of work it's, a lot of surgery, that we have to go do. Whereas. With. The service, model the event-driven model, let's, say I saved. The original image and I'm triggering these three function, flows right the crop and save the resize and save the index metadata I've already got this right, adding. A new piece of functionality is, as simple as just, adding. Another action, to, the upload event much. Much simpler much more extensible, no surgery required, and. So. A recap it's. Simple it's just code it's fully managed we automate all the connections it's, efficient, you pay for what you use in its event-driven and, finally, it's highly extensible and, that you're basically writing micro services and so extending, it is just as simple as adding a new Mike reserves. So. Don't take my word for it let's look at how some customers are using service plus events they build very sophisticated, systems. So. The first customer going to talk about is smart, parking and they're building a real-time analytics system, a. Little. Bit of information on, smart, parking so, they've, been around for over 15. Years they're in Australia New, Zealand and the UK they've, got tens of thousands, of sensors in production, and they. Are powered by Google cloud platform. Let's. Feel a little bit more about what they do, the. Number of cars using urban roads is on the rise, putting. Additional strain, on traffic, infrastructure. Finding. A safe and convenient place to park your car also, adds to the frustration of, planning a journey we. Have a solution for this in our smart park system the. Beauty of smart Park lies in its simplicity and agility. Allowing. Us to configure each site to any set of requirements. First. We, survey and assess which of our technologies, is most suitable to record vehicle activity, this. Could be automatic. Number plate recognition. Variable. Message signs car. Counters, in, ground or overhead sensors, or a mix of all the above, these. Sensing, devices are designs of relay live parking, events to our smart spot units which, provide gateways, for the data and, act as zones of compatibility, for other services. Let. Me introduce you to the brains behind our system we. Call it smart cloud and it's, a powerful and intuitive two-way, communication. Platform, that processes, millions of events each day, first. Smart. Cloud in takes the data from the smart spot gateways, it. Then. Processes, each action and sends real-time information around, guidance, and availability to display, such as our mobile app overhead.
Occupancy, Indicators. And guidance, signage. So. I know, a lot of you came in from different locales and but if your city looks anything like San Francisco I know you're probably asking one, question after seeing that video when. Is this coming to my city very. Very interesting solution the. Dense and wonderful things so, what are some of the challenges associated with building a real-time. Data analytics system one, you need up-to-the-minute sometimes even up to the second freshness you can imagine that having. Steel data if you're the operator of a parking lot or a parking garage can. Be a huge, problem right if there's an event going on since, it's a ball game or concert, being, stealing by even as much as 10 minutes could, show. A very very different picture to, the. Data is coming from a disparate set of sources as you saw in the video they've, gotten in ground sensors they get overhead sensors they've got plate. Readers. They've, got car, counters, many. Different sensors providing, data into the system and so as a result what. Do you have to do you've got to normalize, that data you've got to transform, that data and, then finally you get aggregated, so a lot, of data manipulation. That. Smart parking has to do. And. How are they doing it well, with this architecture here. So. This is their SmartCloud, architecture. And you can see they have a number of devices that, are sending information from, the different parking spots they've got their smart spots which do a little bit of aggregation, of just the raw data and then, the backbone. Of this system, is really Google. IOT. Core it's. Taking. It all the data and piping. That into GCP, through, pumps up at which point it then, enters, two different, data. Flows so one is the event flow where, the raw data is simply being piped, in and. Saved into persistent, storage if, you notice this whole thing is serviced there's no infrastructure, to operate and. Then there's the data flow and it's almost, interpretations. A inappropriately, named but poorly named or unfortunately, named because we have a product called data flow that sits in the data flow but try not to be confused bottom. Line what it's doing there is it's running through a number of different analytic, systems so bigquery Cloud. Ml data. Lab sorry. Vision. Data, lab ml, and it's, analyzing. The data adding insights to the data and then also saving it into persistent, storage at. That point there api's that digests the data and, send. That data to different. Clients you've, got dashboards, so this is the car offer in the parking. Garage operator, they can see real-time what's going on payments. If you're making a payment keeping. That data accurate, signage. So you know how many spots are available or, free in a particular area our. Favorite, enforcement, here yes they are helping. Folks. To know when you have overstayed, your welcome in a particular parking spot and then finally there's a metrics pipeline for folks. Internal, in the company to understand, how, the network is performing and perhaps even troubleshoot, some issues so, all of this done without operating, any infrastructure, and don't, take my word for word. Listen. To their CTO in fact he's here at GCP, next you'll recognize him from that wonderful beard, that he's got if you see him tell him I said hi but. Just listen to the efficiency, in the productivity, that he has gotten out of operating. A service event-driven, infrastructure.
They, Were able to completely, reaaargh attack their platform something that took them 12, years to build in less, than 18 months using shirtles that. Allowed them to then expand their business globally. Also. Cloud functions, are services event-driven framework, was. The foundation for their smart cloud data intelligence platform, and it provides their customers with instant, to the second accurate data intelligence and scale for millions, of transactions, each day so. Very sophisticated very powerful, system operating. Absolutely, no infrastructure. So. Let's switch gears a little bit this is the last customer example, I have but. - something that's completely different to, building a mobile application so. I want to tell you about how development. Firm Posse. Used. Service, and events. To, build the Hamilton a. Little. Bit more about that. Hamilton. Is one the most talked about in best-loved musicals, with, shows on Broadway in, London, and around the country we wanted something to make, the show more accessible. For our fans so we wanted to develop an app to meet the needs of fans as we started to expand the brand. We. Turn to a posse a newer face development, firm to help us develop an economic Hamilton's. Flutter app launched, in the app store in the Play Store three, months after we wrote our first line of code and we accomplished a time fans can enter a daily lottery for a shot at $10 tickets buy merchandise from e-commerce experience. Take, selfie photos with a ham can and get daily news nothing. So. Very cool Hamilton. Is doing exceptionally well on Broadway and. It's pretty exciting that they build there are their their app on our infrastructure, so it's, completely built on serverless plus events it's, got a number of pieces of functionality they've, got a lottery we're gonna talk a little bit more about that later they, got karaoke trivia. And, the ham cam the selfie app and, you can buy merchandise from within the end as well. So. Let's talk about the lottery so, for those of you who aren't familiar, the. Lottery you know Hamilton is extraordinarily popular, the. Lottery is an opportunity, to not, pay the, entry price which I believe is around $200, but the reality, is that these things sell out so it's probably more like 800 or $1000.
But, Instead be ten dollars to enter a lottery I'm. Gonna chance it at tickets these are great tickets I think maybe 40 or so per. Show sign, up for the lottery two days beforehand, a day beforehand. The drawing happens, and you're, either selected as a winner or you're told to into the lottery on the subsequent day and, it's you, know it's really interesting and I love making. Developers, lives better and I love making you more productive but. I also love and I hate to use the trite line in. Fact I won't use a trite line making the world a better place but, we're making the world a better place in. The sense that the. Creators of Hamilton with this lottery have allowed a whole, new demographic to actually access Hamilton. And, it's interesting because they're, all about flipping models on their head the. Whole play itself is about it's in a majority-minority, cast. Portraying. The life and times of Alexander, Hamilton and this lottery as I said kinda does the same thing for for. The demographics, of the audiences. So. How they're doing that so. A user. Says I want, to be formal lottery enter me that. Request then gets written to the real-time database which is the backing store for, all, of the Hamilton app it. Then triggers a cloud function which first goes through firebase off to, say that this is a legitimate, request that. Function, then registers, the fact that the user has, chosen to enter the particular lottery there's, a cron job but, then operates, down here on a daily basis, triggering. A cloud function, that. Says who's. Won on that particular day it selects, the winners writes it back into the, real-time database and also notifies. Lucky, seat that these people have won print their tickets and the users are told of their winning, status or to. Enter. The lottery the next day. Really. Interesting feature next. Feature the. Ham cam the selfie, app so. This is a pretty simple feature but again it's completely service. Completely. Event-driven. Users. Basically take a photo take a selfie, in the app it then, writes directly, to cloud storage it's actually a lot like our theoretical, example that we went through, mediated. By fired us off just to make sure that this is a legitimate request that, then kicks off the cloud function, which crops and resizes, the image then. Writes that image URL back to the real-time database, so, that the user knows he's there, wonderful, selfie in the app and posse, told us that we, made it so easy for them with. The real-time database with cloud functions, with, found storage, to, build this feature that, instead of operating infrastructure, they could spend much more time I'm just making it fun making it interesting and adding effects like this to. The app and. Then. Finally, last, example I'll show you from Hamilton, is, merchandising. Right just buying merchandise in the store so, the. User says I want to buy something that then kicks off to different club functions, the first contacts, that the Magento, API which, is an API for managing, e-commerce stores, things, like SKU, management, pricing. Inventory. Management. All. Done via functions, the, next function then, contacts stripe, to make payments and, this. Is a really, interesting application kind, of a perfect application of service in this sense and that, stripe doesn't, trust mobile. Clients, doesn't trust desktop, clients, to make transactions, so, it requires you to have a private API key that sits, on a server so, if you're a very large site that does you know tons and tons of transactions, per day maybe this is a non-issue but, if you're an app like Hamilton where most. Of its about consuming, content and not really about buying merchandise then. Having, that infrastructure, operating, that infrastructure, is quite the burden cloud, functions allows you to do that server key without. Operating, any infrastructure whatsoever so a perfect, application of service. Alright, so those are just a couple examples of what customers, are doing with. Service, with, events to build very sophisticated systems. And now I want, to show you something, that we can build very simply using. Shortlist and events. So. We're, going to come back to that example I showed earlier the. Gallery happen so. We have a gallery it, is. Backed by a cloud fire store that just went beta today hopefully you all saw that it's. A an, infinitely, scalable no. Sequel database and. What. We're gonna do is we're gonna upload photo it's gonna hit Twilio we're. Then gonna save that down to storage into profiles, we're, then gonna index, the data basically, take the name that was entered in and the image URL put, that in the cloud fire store which date are our gallery and then, that will kick off another function that then analyzes, the image pulls, out and extracts, the visual information.
Via. The vision API right. Sit back into fire. Stores sorry my pointer, is dying and then updates the gallery in real time. And. So. With. That. See. Let's, switch to the demo please. All. Right so here's our gallery app and you, can see I'm in, the interest of making. It easy to understand what's going on you can see I have both the name of the person who's uploaded something and the, tags on it so we can search here it's a visual search engine. So no. Connor put a dog in so, see, that image we. Can search on things. In the image content itself like sky. Mountain. Bike, in spell. Lake. So you see we have a visual search engine right here you know I'm giving giving Google search a run for its money funny. Enough this actually doesn't look that different from the original version of Google, so. Anyway let's. Now add an image to. This gallery, so I'm gonna upload I'm, gonna, walk you through what's going on behind the scenes but I'm gonna, upload, an. Image. Actually. Of my daughter so. Upload. That. Okay. Let's. See hopefully, connectivity, is good enough here that goes through and so, I'm going to show you one it's completely, surplice so I got firestorm, running right here that's our backing store. I've. Got a number of functions, so this is the SMS, function, that talks to Twilio this is a function that then writes the data into, storage this, is the function that takes that that, data and storage and extracts. The tags writes it into fire store and this, is the function that adds vision tags to our app I'm, going to just show you very quickly how that, flows through our system. Alright, so we can see the very first function. So, scent. Okay yep name, is easy that's our daughter's name and the, image was, sent there next. Step let's, see if that completed, this, is saving down to storage yep success. Next. Step, writing. A fire store, Wow. Lot of stuff there okay, success, right there and then final, step is actually, running, the vision, API. And. We can see you, can see all the tags that come through so person, facial, smile child, girl, emotion, sitting standing fun laughter, all. Added, as tags to, our. Image. And, now if I look, oh well, I've got two, copies there of, my. Daughter I hope that's not a demo. Bug but rather the fact that I have loaded it twice we know so now I can search, on that, search. On girl. Role that shows up as well, so, that's our app and. So can we switch back to the, presentation. Really quickly. And. So now I'm gonna do something potentially risky, audience. Participant, participation. Now, it's your turn so, text, an image with, a name all in the same text it, can be a picture of you you'd be a picture of your, kid I put mine up there your dog or, anything, if you a flower but. Text, me an image as I said it's a little dangerous and. Put. It in our gallery I'm trusting, you. Okay. Let's see we am so, you. Have any news guy we've, got a lot of stuff now all right the images, here all, right we got Tomatoes, this. Lets this is cool oh another let's see let's teach child. Imaginable. Look. At that like all those kids cute kids and I don't know why we have to it my daughter, not. Sure. Just. Putting kid. Man. All, right how, about fun all. Right okay kids are having fun car. Look, at that some. Cool images so. I don't know if you, notice. But as I said I trusted, you, folks but, I, didn't. Show the in the code but I've also got safesearch running and, so Dan I, made. A mistake in trusting you apparently. To. Be clear I, you, know tuned this actually I decided to be very conservative because I knew someone would upload something so it's actually very possible, this is just a picture of a family vacation and, Dan has a shirt off very.
Possible, It's totally innocuous, Linus. Same thing this, one I had to clean the word here. So not, sure that's so innocuous, but. Anyway you can see that we've built a pretty, sophisticated system. And I'm operating zero, infrastructure. Here it's all being done because, journalists via events can, we jump back to the presentation please. Alright. And. So with that I wanted. To recap in Service, Plus, events, increases. Developer productivity you. Can build more powerful. Systems with less code less, infrastructure, and less, work it's. Simpler, it's. More efficient, and allows. You to build more extensible systems, there. Are ton of event, sources, available on GCP to trigger our service, framework cloud functions, and we're adding more all the time, customers. Are using it and they're building real systems, they're building powerful systems using, service events and frankly. You can too so. Here, a few others shirtless talks companies, have actually already happened, there, few tomorrow as well if. You're really interested in service please go to those and, with. That that's, it again thank you so much I really appreciate your coming for this talk especially, at the end of the day now, go forth and enjoy, your evenings.