Serverless in Real Life: A Case Study in the Travel Industry (Cloud Next '19)
Welcome. Everybody. Service, in real life okay studying the trophy industry we. Are very much aware that we're probably did last session it you're gonna do today so we. Can either decide to drag it along or, rush it through it but we'll see how how, will you respond to our jokes so. Alright. Alright. Well I'm James Daniels, I'm an SDK, engineer. On the firebase team and. Here. I am in the pictures I had a little bit more facial, hair there, but as you can see we're very serious. People yeah and to make sure we added, the arrow so that you don't confuse them for the pineapple and. Sorry. My. Name is the staff and over nine I'm the chief geek and CTO at cloud er cloud, or CCS and I'm also a Google developer expert, for Google. Cloud platform and, firebase. And, yes there's arrows, pointing. To me as well because some people might mistake me for a pineapple. Anyways. So. Imagine. That you want to go on a trip of a lifetime for, most. Europeans, that probably means going through Australia. New Zealand anybody. From Australia or New Zealand just, imagine, that everything that we say about your country basically, applies to you, going to Europe or whatever extra like destination. That you want to go to but, just imagine that you want to go that, you want to go on. A trip of a lifetime. We. Have a customer, that has a, lot of a lot of consumers. Or customers that, really have. That dream and that. Dream that one that, once in a lifetime Oh take me to that wonderful place and provide. Me with that vacation of a lifetime and so, they're really as they say they're in the industry of making dreams, come true, their, specialized in in, Australia New Zealand travels, that's why I mentioned if you're from those areas just imagine that we're doing the other way around and just keep, in mind it's pretty cool but, it's not as cool as your country although we. Don't have stuff that tries to kill you New Zealand that's where the hobbits, are from right absolutely. I need to I need to go yeah, I'm not sure if I was trying to try and kill you as well but I might, have to rewatch the movie anyways. So. Now I imagine it you have to make those stream those, dreams come true. He's, quite a bit of systems and staff today it's not like they're organizing, vacations. For like one family it's, quite a few families that are trying to do, it, so. They need quite a bit of systems quite a bit of staff to do they, need to scale up because they're. Doing a pretty good job at what they do they've. Got the radio commercials, going on there now in different different, countries in Europe they're really scaling, and that, kind of brings brings all the challenges as well and.
So. That that's it, makes it a bit more difficult to you, know make dreams come true. So. Without. Diving, into those. Dreams and all the architecture, and all that let's first try and see how we got started with. Discuss turin and how we introduced, me into service. Funny. Story. The. CEO and the CEO of traffic, license called Andrew Morton he always tells, us that hey we're always looking to. Enhance just to, enhance our systems to it so that we can ensure that the people that are in our company actually speak, to people because, if you make dreams come true well. We're all most of us are have some engineering, background so for us it's probably dreams, coming true by speaking to computers but if, you're in the travel industry it, usually means that you want. To speak to other people that actually tell you where it's cool and where you need to go so yes. That's what their purpose is speak to people deal with people. Now. If you're dealing with people that's it's, pretty cool but just imagine that you're that. Your customer of theirs and, you're. Talking to an agent and you're talking about your vacation and the first thing that the agent goes like oh yeah by the way can you tell me you're at itinerary, number or your customer number you, know if. You're doing, a triple for lifetime you want to feel special you don't want the agents going. So. You, know it's kind of boring or, annoying and, then you, might have somebody else in your party or any family joining, you and sending them emails and saying oh yeah I know, that we're going to somewhere. In somewhere, in Australia but can we also go to that other place and oh can we also see, you. Know more animals Achilles and then. The, agent goes like who are you and then. Somebody else from your from your party also, goes like oh yeah and I want to go there and can you tell me a bit more about this and that so before you know it, either. You I did a customer, T agent will go like what. I mean what am i doing why I make who, are, these people or if you're the customer like why don't they understand who I am and, why don't they make my dream come true so that kind of kind, of its, gonna annoy me I guess yeah. So. What, they all say is first thing to do is you, know can you get and can't, help us and get a grip of the communications, that we have with a customer so, fortunately, the customer, tough. License was already on G, suite so what we did is we took the. Email via API. For. 4G Suite. Ran. A little program on App Engine that would extract emails. From, from the environment we, would then feed those emails through the natural language processing API. Applied. Some other stuff as well obviously you can do regular. Expressions, and all that to identity, sea. Travel, surf IDs and some other stuff that we that you can do programmatically, but we also needed to be able to interpret what was in the emails and really.
Trying To understand who, this relates to or, or. To what travels or what truffle parties the emails related to so we used the NLP API with some with some with some extra, secret. Sauce, we, then took all that information put it back in bigquery and made sure that this stuff really had a better. View and a better understanding of who they were talking to. Now. When, we delivered that the, customer went like oh this is great this is this is this is pretty cool, now, tell us what servers that we need to install this on and we like, well. You. Don't so. The. Customer like okay then, where does it run and we have to explain to them a service so the cool thing is we can now say hey look, Francis no, service. So. Doing. Serve lists or doing, the surface it's not something, that we did accidentally, like oh hey let's. Try it is but it is part of the philosophy that we have as a company that when, you when you try and build a solution the, first thing that you do is you try and do this surplice. You start with service, because. If you start with service one of the one of the very nice things about it is that you can more. Or less only focus on the functionality that you try and deliver and, we've. Been doing this for for, like ages I've been I'm, self have been doing a pension, since what eleven years. So. And that was for me like the first step. Or the first the first item that that I recognized. As, as. Being surplice and that's why for. Service I used the app engine I can James. Had some objections, but hey once again the, cool thing is you just focus, on the functionality now, it might sometimes be that you try and run something on servos in it or you want to do something on service and it just doesn't work on surface yeah you need to use that one specific API or the customer wants you to use that one specific. Library and it just doesn't that. Just doesn't run on service, because of the language because the time it takes and things like so what we then do is we look.
At Containers. We look at container, engine and, things I and run our code there and if we really can't run, it in in containers, we'll, go to we'll go to VMs, and then try and fix it on PM's if it doesn't get if it doesn't work there yeah. We're not gonna run it on an ace 400 or something so we're just trying, to redesign it the, cool thing is that if you take this approach you, you always know, most of the time you end up with an application as a surface and once again you. Can focus on the functionality and. Also, the cool part is that if you start from the other end in which virtual machines you'll, hardly ever make it into service so that's, it's. A nice thing. To know as well. Now. I'm. Very passionate, about service, I'm, so. Passionate and I even have like a very crude. Statement, here if you're offended by that cool. My. Statement is that if you're not building service, you're robbing your customers of innovation, because, what you end up doing is you'll end up providing. Your customers a whole bunch of epidural, and whether your customer is an internal, customer or it's an external, customer, because you're like a Google, porn like we are but, if you if you don't do service, you're, robbing them of innovation because you ask them to spend a lot of time on. Maintaining. Systems understanding. Technology and, all, the customer really wants you to do is, focus on functionality. Because deaths where the cool stuff is quoting. Yourself as a real power move thought. Leader I know I, know. Thank. You for that so. What, we do weird so. To, put it in into context, this was the the landscape that the customer was looking at so coming back from a or, doing. Something service, was kind of new to them at. Least they felt like that but they already had some stuff in the in the cloud so they were using GG sweeeeet they had a financial application that. They weren't running in the cloud but, the primary systems, that the stuff that really makes their organization, what it is and enables, them to sell to create, for you those those magical, the travels. That's. Really all about legacy, systems so they had a legacy itenary system they ran an mi sequel fortunately. They had they. Had a bit of an insight and putting that on con sequel but, that was like the only service. Thing that did they. Had PHP, application, logic running, on some servers they had third party API calls running on servers and a lot of that so it was really a legacy, infrastructure. Now. What, we did, because. We showed him that we could do stuff service and we could, really focus on the under functionality, there also like hey can you help us and maybe replace some of some of our outdated legacy. Features and replace, that with new us. With. New features and new applications and maybe run that under on that service stuff as well so, that's what we started doing we hooked up once again App Engine our faithful.
You Need offline, capability, so, you add sequel, lights or. Local. Storage for web applications, and now again you have data on the. Presentation, tier and, you, need to worry, about keeping those in sync and contention. And you. Know detecting. Online, versus, offline and. That's, a lot of work a lot of code and a, lot of places where, that. Theoretical. Separation, of concerns, breaks. Down and get bugs. Fortunately. We've done that work for you and. Ultimately. This. Empowers, your developers, to. Focus on, the business logic of your application, build. Things and ship things faster, and, hopefully. Have a smaller, office team. So. What. Power is this right is. Breaking. Down this wall the. Idea, is that your, data data. Storage, data access, you. Know pushing things to the database reading, things out, it. Matters. To every. One of these tiers right. The. Application, the presentation, and of course the data layer so, the access, is is co-equal. Between, all these, and. Then you get that the firebase SDK and, the tight, integrations. With. Google. Analytics and. The. Firebase, authentication. And, then. Of course cloud. Functions, to. Respond, as, side. Effects we. Jokingly call it side effects as a service, on the team and ultimately. You. Know when, you write. They do operations. Right back and that streams, to the client, creating, this magical, experience, now. This. Is where I'll talk to a lot of developers. That are used to doing. Things through load balancers, and API. Servers, and. I start saying, interact. Directly with the database the production, database interact, directly with it from. Your client-side, application. And I, always get this little horrified. Look and I. Know what's coming and they're saying how. Can this be, secured, at all right, I'm just giving out the keys to my database to any. IPhone app everyone, who visits my website and the, key here is this integration, with. Firebase authentication and. Our. Security, rules product, so. With security, rules you, can actually write. Rules that. Limit, the operations. On any path in your database any document, to. Some. Sort of condition and you can look at the user doing that the, keys associated. With them and, you can even look in other places in the database and make sure oh they, have permission, to this in that. All. Right so. What, we really have but what you're basically saying is that for, us doing a service thing was like one servlet step for us it's a giant leap in architecture, pretty, awesome yes, I quoted somebody, else. So. What is nice is that you really put that that native, firestorm, on oh yeah, I. Should describe it it really works for us and it kind of took, takes away the complexity, that we might otherwise have you know creating, creating. A REST API on, our database and having to go through all those motions and service and add and and and things like so really the App Engine that we have or the App Engine application that we have in the application is now, only service, service doing, some work to get data out of the out. Of the legacy system so that's pretty awesome so we can actually start, to make, the application a bit simpler and then, by having, the client directly connecting, with the. Woodfire. Store or with firebase, we, have, that that interaction. And we allow the users, because. We have that connection. The. Native. Connection it allows us to build an application where if. Users are working, on an itinerary together, and that happens because somebody, might be booking, a hotel. Somebody, else might be booking a car or, some event that people might want to go to you, actually see the updates appear on your screen straight, away and that actually saves our our customer or did. The agents at our customer quite a bit of time and it allows them to better interact with, the system but also if, they're on the phone with the customer be. Sure that they have those real time and real life updates no matter what the system is doing even if the system in the background is booking airplane. Tickets or whatever they, get the latest information and that's really awesome so, it. Allows us to do to do a bit more volume handling of itinerary events it, doesn't, cause. All sorts of telescas motions where people have to do all sorts of stink all sorts of extra things like, hit extra buttons or actually, actually do actual work it, really helps the, customer to, focus on what is important, in functionality, and, for. Us it also helps, us to focus on what the customer really finds, important does. It you, might have noticed, that there's a theme here.
Now. You. Know if we're talking about one. Of the very nice things is that we're we're, not using functions, to handle, all sorts of things and the, customer is actually quite quite happy with app and we're we're, looking into you, know getting some of the other systems that are integrating, with it and and get that going as well so they've got the financial system, so hey why not you, know use firebase, cloud, functions or use cloud functions to actually start writing information back into the financial system or maybe. Do some office of flight bookings by the way the finance system is actually pretty cool because it has a pretty, good REST API the. Car rental system. Because. Most. Of the time when you know Australian New Zealand you want to drive around and things like that that that, has pretty cool API as well it's just hope API is no schools the REST API but, hey still, pretty good, flight. Booking system that was a bit more, a. Bit more difficult it's a bit more traditional but. Hey we can't deal with that you know functions. Are cool we can do everything with that excellent. So you. Know we, didn't, might, hit a snag way we might need to use some of that container stuff that I talked early about so we do everything service, if we come to service will, hit containers, it goes in the other external store some. Of the things that they want to do because. As you can imagine travel, expensive. And. A u.s.. Travel agency might have to make payments. Due to eight it to to hotels. And things like front. So, they. Have some some fun hedging that they do and the, cool thing is that the bank that they're doing that with is very it phones and sends them in a PDF once in a while that says all you add the exchange. Rates for today for the for the Australian, dollar didn't what is it New Zealand dollar is. This, in that and we have to get that from the from. The PDF. That's. Not too bad now now it sounds like you know you're you've. Touched on a couple points here like functions. Is great I love functions, it has a tight integration with firebase, but. You know you mentioned, container engine maybe some. Harder workloads, you put through that because functions. Has a timeout and that's not really meant for that but.
You. Know I'm concerned about some of these other api's, too so. You. Know I threw functions, at you but let's, talk a little bit about functions. And how they're designed and the workloads, that they support, so, first. And foremost functions. Is at. Least once right. Cloud, functions, are designed to, reliably. Definitely. Do, something, when. You have a right to your database when a files uploaded, you really want that job to. Occur now, I'm. Not. A theoretical, computer, scientist, I wasn't that diligent, in school, but. I work with a bunch of them and from, my understanding with distributed, systems, having. You. Know anything, less than at. Least once maybe exactly. Once has a very hard problem, to do, within a distributed, system so. Maybe. You have a network partition. Show up these, workers, are now out of sync, and they, can't tell if they're doing each other's jobs, so, cloud. Functions. To, ensure, that, a, job occurs will. Trigger more than once right maybe you get duplicate. Fires so. One. Of the things that we always tell people is make sure the. Side effects and cloud functions. Our idempotent. So. They're also designed for, on-demand. Provisioning. Right these, servers, go from 0 to infinity right, they'll scale to meet your workload, and the data enter they're entering, the system but. Cloud functions, is designed, for, database. Rights and, storage, uploads, and, and end-user. Things, basically, right so a user, clicks, a button or, uploads, a file and these, kind of you know maybe they batch and maybe it gets you, have busy parts of the day but ultimately, these are kind of random. Events and, not, very predictable otherwise, and they're, designed for immediate fulfillment since. These are for end-user, response. When. A result. Comes into the system when an action happens, we, want the side effect to happen as quickly. As possible right, maybe. One of the the functions, is busy. We, don't want to interrupt, that we don't want to limit us resources so. Cloud functions, the concurrency. Per worker is one. We. Give it that job. The, full resources, of the container, so. If you have a bunch of events coming in it, has to spin up new functions. And. You. Can have if you imagine if you eat a huge, burst of activity maybe, you'll have a bit of a backlog, and the. Idea there is just to get it done, as. Quickly as possible, and respond, to those so going back to this case, right. You, know if you've worked with stripe, or some of the modern payment. Providers, they're. Great because they're cloud native api's, and they have idempotency. Tokens so, you could use your firebase event ID or your, document, ID to make sure that you don't double bill a client, we're, talking legacy, api's, they're. Probably more meant for this transactional. Centralized. World so. Without, an idempotency, token we, double bill your customers, right. Not good not good, maybe, this flight, booking API as a traditional. API but, you. Know very big enterprise, so. Maybe there's really harsh quotas, on that right. I'm not allowed to. Their API more, than once every 30 seconds, because. They don't want people gaming the system so. If, we, have a lot of events coming at once we. Could get throttled or banned. Which is not a good experience for our users. This. Soap API right. Maybe. Again quotas. But it being, soap maybe they're expecting, batch. Data, right, they're saying don't, hit our API, more. Than once every 15 seconds, but feel free to batch a bunch of requests, and one cloud.
Functions, Is it. Really suited for that it's immediate, action, it's, stateless. Right. It's, not gonna fit well in this world and then. You know you mentioned, the other sources these PDFs, getting. Sent to you from the bank then, include, the you. Know the, the. Conversion. Rate between currencies. Like, that's a lot of data container. Engines definitely good there but. I, imagine. That that could be rapid-fire. Right you're getting when, currencies, fluctuate, they fluctuate rapidly you'll. Get a lot of events from the system, all, at once and you. Know, again that that, stepping function, where. Things spin up not, necessarily great for this use case so. Now you're. Backing. Things up and your back end yeah, I'm starting. To feel a bit like your emojis like you know it's I was quite happy I'm like oh yeah we're gonna do it do talk about server listen I am really cool and you basically know it tells me that I'm. Not that cool well, the cool thing is now by the way that for. The Dutch people you'll recognize this as Dells blob or Delft, blue for. The Dutch about people just look it up on, the. Internet, you'll, get it but you, know I noticed. This this, is a whole bunch of products. That Google has but you know we like our, cloud functions, and. So. So cloud functions do tie in great with firebase right there are native, events, or, sing but there are a lot of products, so, eeny. Meeny. Miny. Moe. Aha, dataflow. So. Cloud, dataflow, is, a. Streaming. Processing. Engine right it's meant, to take either batches, of data or large streams, of data and. Handle. Them in a functional. Model so I'm a functional programming nerd so I really, like this product it's, fully managed and no ops so it does take, your box of serverless. The. Provisioner, is centralized. But. The. Workers, are. Decentralized. Serverless that can spin them up and because. It's meant for event. Sources, it can, be a little bit smarter about provisioning. And it's, based off the open source beam. Model. So. Comparing. It to cloud functions, right I mentioned cloud functions, is at least once you can have double fires, now. Cloud. Dataflow, how. This differs, is, the. Events, that come into cloud dataflow our. First, pass through a, bloom filter so. It's gonna filter, out those duplicates and then. When it spins up the workers, you. Have deduplicated. Data so, because, this is exactly once, you. Can safely handle side effects without, the need of figuring. Out idempotency. Cool, so we can just book that flight once instead of sending the family Jones like six, times on the same flight yeah. Yeah you, would not want to when a network shard, appears, bill.
Your Customer, for six tickets to Australia, it's, a little place all right so this is adding to the dream hmm. So, with, cloud functions you have this on-demand provisioning. Right this. Is meant for sort of random. User generated, events, and it's sort. Of a stepper function, right it'll go do, I have enough workers to fulfill this maybe I'll spin up a new one as load. Increases. And then they'll slowly spin, down, whereas. Data. Flow. Coming. From data, processing, pipeline an ETL, pipeline, tool it's. Gonna have more predictable, scaling, it can actually look at the inflow, and the outflow, of, the system. How. Long the jobs are taking the error rates and it, can calculate the number, of workers it needs and, it's a highly. Model so, it's gonna be able to get those jobs done as quickly as possible well. Also balancing. Cost for, you cool. So we really, get a predictable, pipeline. No backlogs and all that and the customer really gets, to well. I almost I have like a, certain. Reassurance. In time in delivery. Or execution. Of actions without having to spend like a ton of money on it cool yeah more predictable, cost definitely. And then. Cloud. Functions, is designed for this immediate, as quick, as possible I'll, spin up new servers if need be fulfillment. Right. Where, as data. Flow being for data batching, and processing, and this functional, programming motto I can, run filters, on my code I can, group them I can sort them I can, do windows so I can say batch this data by you. Know five minute increments or give me a sliding, 10-minute, window and, that, way we can be a lot more intelligent. In the data. That we take and we put into our stores and processing. The rest of the system. So, that we don't overwhelm, our system excellent. And that really helps us with you know dealing with the car API where, we can only do so many requests. Per time. I returned, unit batch. Those things yeah we'll get a little this kind of that wonderful, and and also those PDFs, from the bank right those, the, interchanges. And the the, currency, transfer, rates. Are gonna change. Rapidly, and, if, you're, working with something like firestore. There's. A quota right so there, are max rates, at which you can mutate, your data over time so. Like in firestore, you can't write to a document. At a sustained, rate more. Than once per minute. So. Now, extrapolating. That into, this this. Architecture. That we that we wrote out so. Now we have, cloud. Functions, and we're, actually going to pipe this data to. Cloud, pub/sub. Because. Cloud, pub/sub is, the, system. That works really well with. Data flow so it can actually ingest events from that that's a stream processing, capabilities. Where as cloud functions, is tightly. Integrated into the the, firestore, event sources, so, we just pipe that along, now. Data flow can do any batching, it can do any filtering sorting, and it. Can also do. These side-effects that you, know might be legacy, systems. From. Their outputs, the data to pub/sub again and then. We can actually have the, cool thing about pub/sub, is we, can have multiple subscribers. To a pubsub stream so, we can have two different cloud. Functions, one. Listening to the pubsub stream and writing back to firestore, and then, one listening to the pubsub stream and writing, any relevant, information we, want back. To, bigquery so. That, way if either one of these has, load problems, or errors they're. Not gonna affect the other cool. Thanks. All, right to be honest I was, kind of joking with oh man our. Presentation. Is going to pieces because we did it wrong no. Customers were heard grading, the system this is actually the architecture, that we deliver it it has, it. We took care of all the and we took care of the idempotency, we took care of the the batching, we took care of all the stuff that we needed to do to make a really, scalable, and reliable system, for this customer and what. Is what is well. Sort. Of funny it depending, if you if you were the IT guy probably not but since. They are in business of selling selling. Travel and they're selling dreams and they're not in the business of selling, IT or creating, ITC running.
IT Systems, what, they actually did is they were using. The system they're not able to serve. More customers, without. Having, even with. Even less IT, people running them it's. Actually quite extreme the number of IT people that they have is exactly, zero. So. That's, the. IT guy by the way got, in great, new position somewhere, else and we're we're, working, with him very, closely on that but the really, nice thing is it really helps, us and it really helped a customer create. A solution, in which they can run their, business and they can run their business at scale because as I said before they're not doing this for it from one or two customers they're doing quite. Quite a few million euros. Per year selling. Selling, truffle so. Now. With, all this. With. All this in place we now have a very strong a very structured environment that we can use and maybe, it's time to also look at some of the future developments, that were that we're seeing that we can do so. Just to kind, of reiterate where, we're coming from so, we helped the initial, customer question was hey help us communicate and, we used, that to interview service to them we, then started adding more complex workloads to their, environment or taking care of some of the more complex workloads they had in their legacy system and move them into a service environment we. Integrated with some, of the legacy systems they had and we really made the system more robust so, that it could handle a higher, volume of traffic now. With that in, place one of the few one of the future steps that we're gonna take is obviously. Connect to the consumer so connect to their customer, and make sure that a customer that customer has an even better experience after. The booking process and. What. We also do is we're gonna optimize the, systems as we, go along because one of the really cool things about a Google cloud platform and, the service operations, that we use is that there's a constant, change in the constant update of those two of those technologies, ever increasing, and ever allowing, for better integrations, and better optimizations, of code and better, developer. Work streams as well. So. One, of the things one of the things that we're gonna do up, next is we're, going to optimize the container.
Based. Development, workflow so, right now the. Forget, for the developers did the container. Workflow was slightly different their container, development workflow was slightly different from, the service, workflow where you're just creating your. Cloud functions, and all that doing, doing the containers was a bit more difficult and with, the announcement, of a, Google cloud run that was that, was made this, morning we'll, be able to kind, of align the, development, process of the. Developers. When they it has to do the containers align that a bit better with the development. Workflows. That they have. Using. Cloud run yeah and definitely, cloud. Runs really, cool technology. If you haven't gone through any sessions today do, sit in the keynotes tomorrow and you. Know there's gonna be plenty of sessions coming up about this container definitely. Definitely check it out and also and I he can't say it but I can because he's under NDA and I'm well, I'm sort of as well but there's. A lot of cool stuff coming coming, up in the in fi base a realm, as well that will really help people. Doing service. Application. Development we're not even in only in the firebase realm but also in the. Beer Google cloud realm with some of it with. A lot of cool stuff that they'll they'll, be announcing over the next days, and some, of the stuff at i/o as well so I'm really looking forward to that. One. Of the other things that we're gonna do is, we're gonna optimize insights, and be more predictive on the workloads so obviously we have some prediction, and we have, optimized, workloads, coming. From from data flow but, they also have their own workflows, and their own. Data loads that. We need to do with and as you might have seen in the image before that we're writing a lot of the information or a lot of the process information we're, writing that back to to bigquery now, the reason why we're doing that is because it will allow us to create. More predictable, workloads get, a better understanding, of their customers get a better understanding of the travels that they're selling getting a better understanding of their success so getting, the information you can imagine they'll be able to even more efficiently, run, their, operations and last. But not least, we're. Gonna build a customer facing application, using using. Flutter the, nice thing about flutter is for those of you who don't know it's. A it's, a way of writing or, using one code base and and write an application it will run on both Android, and iOS and it, will really help the, customer to really. Have that extended. Interaction. With their customers, while, the customers traveling and since. We can use as James explained that native connection to the database and still, be sure that we have the full security in there you can imagine that it will make it will be a lot easier to write those applications, also. Because, flutter really nicely integrates. With the whole Phi base product. Because, firebase obviously, has its roots in mobile development and you can kind of see where this is going so these are a few very exciting. Updates. That we're going to do and it. It's, all updates that will really fit the the development flow that our developers have the work, in the the, technical, understandings that they have so we're quite excited about this definitely, so, it sounds like you have a great. Set, up here right you're definitely, improving. The customer experience and. You. Know reducing, their workloads, so uh. Well. Yeah it means, that because we have service as a new chef we have service so we have more capacity as we need it and for. Us it really means that you, know we, don't need more capacity it's, the time for a vacation right you need you've, been hard at work and once you ship these updates you can schedule. Your own vacation, of a lifetime and. Not get charged six times for your flight - that's true that's true yeah. Well. Uh thank, you.