Keynote | Maxim Fateev, Temporal Technologies
Welcome. I think we're going to get started. Thank you all for coming to the main day of Replay, the first year of this conference. I'm going to be your host for the day, my name is Charles Zedlewski, I'm the chief product officer at Temporal. I've been in the company for a little over a year and I'm extremely excited to welcome you all here today. Replay is a conference hosted by tim pearl
but it's a conference that we want to be for uh the larger developer community and we see this as something we want to do every year and of course it's going to be a lot about temporal but we want it to be about all kinds of interesting things that are developing in software development and particularly in back end or server-side software development and we think that there's an enormous potential for for for uh for the future years um and when i thought about the fact that this was the first ever conference uh and i thought about the the adoption of temporal i kept thinking about beginnings because i've had the fortune to see movements technological movements start very small and get surprisingly big in a short amount of time and that's obviously why i found myself at temporal and i like to think it's why you found yourself here and the uh so i think what's with for all of us at temporal what gets us so excited about um this event and getting to be with all of you is you know when you when you work with people at temporals the sense of just how big this all could get someday and how important it could be for uh technology and for software development generally but how small it still is right now but you could kind of see where it's all going to go and so there's this sense of kind of pent up energy of some some kind of chain reaction that we know is is getting unleashed and uh this this sort of uh this sort of event is part of that um and what i think what a technical movement becomes uh is a lot is is is as much a function of the users and the community as it is about the technology and uh one of the things which makes replays so special for us is we could not be more proud of the community that we get to be a part of um we at temporal we thoroughly enjoy the interactions that we have with the user community on slack or on discourse or at meetups and the fact that we get to do it all together here in person today is just phenomenal and if you look at the speakers we have today and i'll be thanking our speakers multiple times but uh please know that at temporal like for speakers for users we are flattered by the quality of the company that we keep and we know that it is a a big reason why the interest in temporal continues to grow is because of all of you so thank you very much for helping make this real um just to illustrate the point this is kind of the current uh adoption of temporal these are ping backs of usage of temporal in any given day since the inception of the project and the interest has been growing uh exponentially but uh that and is now we some i can't get into precise numbers let's say it's the many tens of thousands and perhaps even hundreds of thousands of developers that are using temporal on a weekly basis um but the thing is is that for most of you who are here that's not news to you you are way back over there right and what i what i would you you were sort of ahead of the curve and what i would submit and i think everyone who attends this conference and has the first t-shirt which we won't make any more of will eventually look back in this too and say oh yeah i was there i was this that spot on the curve all the way in the right is going to look extremely small in scale in another two years time um so thank you for for kind of helping set all this in motion where uh we couldn't be more excited that we get to realize that we get to realize this vision um okay enough about about beginnings um i wanted to also just mention a few logistical bits we have an exciting lineup of speakers we also have a bunch of breaks that are gonna that are going to be in between the majority of the talks we have today there's going to be opportunity for q a which is all going to be done through slido so could we pull up just like a representative example of a slido qr code for a second possibly there we go so we'll have qr codes like these for all but one of the sessions uh and i'll take i'll be reading off all the questions and i'll ask the speakers so that's the general order of the day thank you again for your attendance and with this i would now like to introduce the co-founder of the temporal open source project the co-founder of the cadence open source project the co-founder of temporal our fearless leader maxime fatiev it's certainly pretty emotional to be here it's first time first time ever i i give a keynote so bear with me and certainly it's first time we make a conference and a super big deal for us certainly when we started to plan that we didn't expect such a attendance to tell the truth it's you know first time it's you never usually they say if you have more people than your company people in the conference you already won but we have many more people i think right now so it's really cool and i remember five years ago i did my first presentation about cadence at some conference i don't even remember the name of conference i remember one thing that i prepared for a long time i come there and i get 10 people in the room and it's not even recorded the mistake i made is that this conference had parallel tracks and i put word workflow in the title and parallel track had machine learning in the title and obviously 100 whatever people went there and i've got 10 people in my room it's not wasn't that bad because technically one of the distant people was employee architect and one pretty well known sap 500 and he's still here with us so this is his crew so it means that you never know how it plays out long term um but i think i i want to just thank you all of you to be here and because i as charles said you're all early adopters we are just talking and uh just i think we'd be just super grateful to all of you so i want to talk about uh jim porter we always get this question what is it and it's very hard to describe it's uh it's the hardest problem i think we have it's not that people like our technology but explaining what it is to other people is always the challenge and i struggle with that and always struggle with that if somebody comes up the best way to describe it even after this talk come to me please i want to hear it but first i want to talk about vegetables um really i want to talk about application architecture but register was a cool so but technically think about it you write an application and it doesn't matter what technology you use what language you use whatever you do but these days especially if system is distributed it needs to kind of be useful in most systems you want to have some sort of bottom markup you have some business logic but then you need to make this business logic fault or touring and reliable and usually this reliability component is much larger than actual business logic and then obviously you have persistence because you need to kind of do make it durable and you want to make sure that if you have failure in recovery you recover from resistance in disk so it can survive machine failures and so on the funny part is that in real life do you do this you don't have them separate you take all of that and just blend it all together and this is the i might claim it's practical application architecture of majority applications these days i would call it a smoothie application architecture and this is exactly what we are trying to avoid but this is our life because it doesn't matter if you use the functions you use kubernetes or run on bare metal this technology helps you to run those processes but they don't actually allow help your application business logic to deal with failures in most cases unless just restarting processes and i think the main goal of us here is kind of get rid of smoothie application architecture and imagine situation if somebody comes and say i don't like strawberry anymore please uh your customer just comes i like banana and then you have this blender going and it's probably still going and like please replace one with another and this is what we are doing in these applications because uh it's all just mixed up and you have all your business logic and 50 functions and it's all state machines and so on and you don't want to have that so what's the solution okay solution is k architecture because you have clear layers you can separate things out and if you need to replace something with like strawberries banana you just do it and you do it in one place um okay it's all cool in theory right how do you get there so how we get from the smoothie architecture to cake architecture and my answer is uh it's actually durable execution you know like we call it workflow in temporal for historical reasons but i think i i have physics degree and in physics they cannot teach you to think from first principles and i started to think about temporal in general what is the most core abstraction we have and my claim is the core abstraction is exactly what we can call durable execution and let's talk about durable execution on a surface it's very simple it's just a runtime environment which allows code and usually caught in a general purpose programming language to execute to guarantee guarantee that is complete practically runs to the end actually completes is probably not precise because you can have infinite loop in the middle so technically you want to say it it guarantees it keeps running in the presence of all possible failures so if you crash kind of i don't know power goes out in the middle of execution after fully executed or something else failed the network event happened and so on i can talk probably next five hours about possible failures in the distributed systems but the point is that there is guarantee that this will eventually complete and it's very simple idea that you have code which will eventually complete in the presence of all possible failures but in the way that code doesn't see that it just keeps executing that but as soon as you have this property you you can do all sorts of interesting things you can guarantee compensations you can guarantee execution it is kind of i would say the next best thing after the distribute transaction and you don't want to distribute transactions right and this is the way people walk around the lack of transactions in the systems if they can have this abstraction other property of durable execution is that as by its nature all the state of durable execution is always durable persistent so practically every variable in the durable execution is practically saved in some persistent store and it's done in a way that you as a programmer you don't need to do anything about it you just go write your code you have your local variables so fields and like sometimes global variables and these things are just durable all the time which means that if you use durable execution to write your code you don't need to actually even program against the database you don't need to because in our smooth architecture all you do is load state from database update it save back load state from database update it save it back right call back loads so it's all together all the time and your code is broken in pieces here you just write normal sequential code and everything is fully preserved and i think it's very important property i think the other very important property is that just by nature of durable execution the state the any api call can take unpredictable amount of time any amount of time is necessary so if you call buzz and it takes 10 weeks fine it's okay because there is eventual guarantee that this code will return and you will continue executing and just think about it a little bit it's not something we're used to but it's very cool property and why is it i think it's cool property because it allows to do really cool things seamlessly for example you can just have an api call which is sleep and you can say sleep for a month sleep for 10 days so if you need to do something i don't know send a mail 10 days later you can just say sleep 10 days and send email and try to do it usually using any other approach like against doing smooth architecture you will watch your callbacks you will have crown job you will kind of need to tie all these things together you need to preserve state somewhere here's just one line the other interesting part is that durable execution is has and again we are talking about abstraction not even concrete implementation is a nice kind of this uh it lives in this world it has the all these guarantees but it has to communicate with external world so it uh an external world is not perfect and it can have failures it's it's normal and the the way it practically means that everything you do can fail anytime so connection can fail the external service can fail it can be human task and human can forget about it how do you deal with failures systems which don't use durable executions you do retries usually all compensations and so on the cool part here is that if you call full and you do it right for five ten days or five milliseconds you still call full there is no difference you probably hide all this complexity of free try and can be asked don't necessarily come as complex as necessary basically try exponential and so on besides a single api call we also can invoke functions for queuing it's very common to in asynchronous systems to put queues in between services and in between components and queues have nice properties you can greatly they do rate limiting they do flow control they also do retries but my point is that api to call them is still the same so that is kind of my thing is that durable execution allows you to hide so much complexity of error handling again that's exactly what i said it does allow us to take this error handling out and you as an engineer don't care it's all handled by the underlying system and i think it's a super cool property of the durable execution so just to recap a little bit this is the way practically to do this layered architecture durable execution allows you to separate very cleanly the error handling and recovery code so as durable is connected to execute any failures will not affect its execution itself and if it needs to talk to external systems and we need to deal with external system failures for retries cue any other asynchronous means we can just have an api call which takes a little bit longer and but eventually completes also as i mentioned uh we also get persistence for free practically i mean from developer experience point of view you just use your normal code you have local variables and these local variables are durable so you don't need to actually write the explicit database related code and also because it's layered you can replace one database with another without changing the line of code so you can switch from something like i don't know in case of temporal can switch from cassandra to uh to postgres and you need to change the line of application code to do that because these layers are very well defined and i think it's very important and my claim is and that's why i think we all hear is that durable execution is the best way it's the best developer experience to build resilient systems and not necessarily distributed people build desktop applications using that and in future i think we can do more of that my dream is to have durable execution every cell phone as a library but we'll get there one day but i think the basic idea is that uh this is the best the best way to develop software uh for certain types of systems obviously it doesn't solve all the problems but uh there are clearly big class of systems where it makes developer experience much much cleaner one thing i want to mention is certainly we talked about temporal via the temporal conference but it's not just one product which does that the whole idea of global execution started at the simple workflow service that it wears i i don't know if you know about that but i was technically for that service for the public release of that it were multiple iterations inside of amazon to get to the point where simple workflow is then who's cto and co-founder of temporal went to azure and he created a durable task framework which later was adopted by azure durable functions and we have azure durable function product there is also an infiniti project which builds a durable execution top of apache pulsar uh it's pretty young project and uh but i think some the idea is that this is not specific to like one technology it's a general abstraction which can be used in other places and we've probably heard about cadence and how temporal kind of grew out of cadence later and now we have kenyans project which is as you know open source project and also a company so one thing is uh stuff we started to think about these abstractions and one thing became kind of clear is that this cake thing technically uh i've saw it before in multiple places and one place i saw this kind of layered architecture was actually when people talk about operating systems because operating system kind of has the same general goal it is about abstracting out complexities of hardware complexities of some failure modes as well and given application developers uh high-level abstraction to write the applications right because first computers were just programmed directly against the metal now we write code in high-level languages but all this complexity of different type of operating systems hardware and so on is kind of hidden from us one thing which is interesting if you look around we don't have distributed systems like people talk about operating system for distributed world but reality is we don't have them probably we have systems like kubernetes but they are not problem with them is that they allow you to manage processes but as soon as you you write applications for a single machine then you say this application can run this process can run multiple machines you completely need to change the architecture of your application it's not that there is an operating system which allows you to seamlessly distribute things the same way why we don't have infinitely scalable sql databases just because you need to need to make certain trade-offs you need to do charting and so on because just general sql relational doesn't work like in if you want to distribute infinitely and thinking about durable execution what i thought is if you repli take for example id operating system an operating system operates on the level process if you replace the process with durable execution and drupal execution also name we could call durable process if you decided to but it's again it's naming but it would allow us to write see a operating system which hides completely like distribution part and error handling part and i think this is a um kind of realization which came to oh button realization that you can have kind of operating system but application layer doesn't need to know about these fillers so practically if you write it for a single machine or you run it on huge fleet your programming model doesn't change and i think durable execution is unique obstruction to do that so far i didn't see any either kind of attempt to do that because if you look every distributed system out there obviously we have things things like mapreduce for example which are high level abstraction but it's very very specialized to very specific use case kind of big data and pipelines but general programming model which allows you to write application and then you don't really think about this application as running a specific piece of hardware i think durable execution the first abstraction which allows you to do that and i i think and as you see here the main idea is the application software doesn't need to do you still will have all the problems of distributed system in the os itself but application is kind of hidden uh is shielded from that certainly it is a little bit strange to kind of call temporal the operating system at this point but i think it's more like inspiration let's think about because i've seen people oh you already kind of have product it's there it works it's kind of more or less complete i just wanted this additional maybe bells and whistles better ui and so on but i think my main idea is that we're just starting that uh kind of we need to understand what important is and temporal is just one of the existing things it is much more than that and my main point is that it's day one like at amazon they say it's day one always okay jeff bezos was telling it all the time because people oh amazon made so much progress you know it's day one we guys we're just starting we'll be much more and it always was true i don't know how he managed to do that but he did it and i think it's the same thing here is temporally today is day one it's a just uh idea it's a it's a useful idea you use it in production but i think the idea is like can we move it much much more can we have applications built on top of that can we have much nicer developer experience can we start thinking about different ways kind of to execute these durable executions can we host them can we attach them what about api ecosystem and so on there are so many things we can do with this abstraction and my main point of this kind of talk is that just think where we can move that if we execute on this vision so i wanna can switch gears from this fancy new future to today's and i just want to talk a little bit more about uh progress temporal as an open source project as a company made last year and maybe talk a little bit future a little bit some people who were here saw some of that but i think it's worth repeating so i think for me the main goal at least initially of the project was to put it in the hands of more developers and uh what it means is that if you had for example typescript developer you couldn't use temporal before before recently and right now we've got typescript sdk so if your typescript or javascript developer you're not js developer you practically can have the full power of temporal uh to uh and i think it's as nice as it can get to to get distributed reliable system the coolest part about typescript is dk i don't know if all of you especially people who use other sdks know is that closest approximation to the operating system abstraction because we run every workflow in its own container practically we use v8 isolates but the idea is that every workflow is fully isolated and determinism which is required by temporal is provided out of the box by the container which means that you cannot make no different determines mistakes inside of typescript code you can do random you can do time you can do whatever all these apis are deterministic and provided by the runtime so it's as close as you can get to the notion of the process it's not like 100 airtight yet there are some edge cases but in general it is very very cool system because it is not done by asking developers politely do the right thing it is provided by the runtime um in the future maybe we do webassembly which can for certain languages would provide similar capabilities other exciting development is python sdk certainly people ask us for typo this was one of the most requested sdks and it's still in better but please it's out there try it out play with it give us feedback because the more feedback we get faster we get it it will take less time to release that in production but we'll we've heard that some of some people already use it in production some some some some of you on the leading edge like to be there and we appreciate that but uh we are working to actually have official production release very soon and look it's nice i i'm not a big fan of python but uh no you know what it's kind of funny because uh i have son his uh he was 12 at the time and he was doing this scratch programming like visual thing and whatever and then i showed him like two pages like page of python code he's like oh it's a block he just like was immediately was able to defy things just by offset and he was able to read that code and even find a bug there and like okay then after that it was converted so other thing we did uh uh so these improvements um the temporal light if you didn't hear about that this is the ability to run temporal server as a single process including the database sqlite database so practically you just get one binary and you have full-blown temporal service including ui in in single binary it actually was created by datadog team and we are super grateful to them to do that to take because without them probably it would take very long time for us to implement and uh now it's this project actually kind of graduated to the top level because right now it's part of the official temporal io organization on github but we still collaborate closely with datadog team uh on improvements and next releases of this product so our goal is that for development single binary should be the best way to do development because it's uh much easier than docker composing all these other things um the other thing we've got we've got new ui um very wrote fully ui which we inherited from cadence now this ui more or less has feature parity and but it will allow us to do things like uh mutations in the future for example you would be able to send signals updates and so on for ui and just new architecture allows to do all sorts of cool stuff and move much faster my kind of dream is we have special ui features for them just for development because right now there are certain developments uh kind of workloads you need to click too much i want to get to the point when it's as usable as ide we'll see if we get there but now we have framework to actually uh do that other one thing we we talked about applications one thing we found is that a lot of people used one of the first use cases they used temporal for scheduled actions for cro has crown practically distributed crown and we had this chrome feature and this uh in the product which we built very long time ago and the way it was built i can tell you we looked at that and said okay we don't have resources but what would be the minimalistic implementation of the crown and we put it there and still there and you use it but you hate it because it lacks tons of features and it's hard to use and so on so we've stopped and said what it would take us to uh kind of think it from first principles can we go and look at the what would be the make tempura the best distributed crown engine out there for scheduled actions we spend a lot of time doing they designed that and now it's there it's actually in the open source right now you can use it you just need it's behind the feature flag but next release will kind of flip it you can use it so it's pretty powerful it allows us to do all sort of scheduling and pretty complex one and manage the scheduled jobs and so on so please check it out other thing which we productized recently was enhanced visibility so its ability to search workflows by custom attributes managing those searches and so on but it's not only about software i think from the developers point of view documentation is as important as software because if you get temporal and no documentation yes we have slack we have support but it's still not the best experience i don't know if i don't know if you guys know but temporal has five people full time working just on documentation uh so we treat the communication super seriously and it's awesome very strong team so uh and we did a lot of improvements application development guide is one of the recent additions and we plan to invest more and more in that for example we know that uh the documentation of the how to operate cluster how to set up cluster and production issues isn't far from perfect it's almost unexistent we will heavily invest in that uh this year and later and later in the beginning next year other thing is that documentation reference the community is not enough we wonder people learn temporal some of you yesterday attended our first 101 class and uh it looks like feedback was pretty positive we want to make sure this class is accessible through the website so we created learn.temporal.your website and you would be able to we'll have more courses which you can do on your own pace we also have in person courses so i think we will take a lot of as you know it's new technologies people takes time to grasp grasp it so we will uh we have education team which is building those courses we did some service improvements um some some of them are small but very useful like name space deletion now you can you see icd pipeline can create namespace around something and delete namespace simple thing but very useful we increase retention and we did a lot of refactoring of history service to make it much more stable and scalable and so on uh we can give you details but mostly it's about multi-tenancy so we get much better multi-tenancy support now one other thing i mentioned enhanced visibility but uh the way it is done right now it only works if you have elasticsearch we have kind of this weird situation when uh you have dual mode if you just run with one database without elasticsearch you don't get all these features so we want to have parity so we will add it has visibility to every single implementation which means that even if your sqlite or mysql postgres you would be able to get all the same features as if you run with elasticsearch and this is uh something which will allow us to make a nice ui because you don't need to switch that and it also will just allow you to actually do full development for some using sql lite because you won't have some features missing i think it's relatively small but very important addition the other feature which is frequently requested is the ability to send updates to the workflow because now you can send one-way event signal you can query workflow but you cannot mutate state but now you would be able to send update to the workflow mutate state of the workflow and update can take as long as necessary it can take milliseconds and it's a super optimized path as a single database right or it can be as long as necessary it can be it can be days and we will support uh all sorts of features around that also obviously workflows and other workflows would be also supported and um this will probably allow you to build interactive applications of temporal like you could press a button and get a next page as a response uh to the uh it will allow practice i don't know i don't know where it goes but i'm pretty sure there are a lot of people who would be very excited about that feature versioning is another kind of pain point we know about it and it's super powerful because you can update workflows which running long-running processes while in production but it's for situations when you just have short-lived workflows and you want to just be able to write your code don't think about that it's uh it's not it's far from perfect and we are working on that so we will have native support for uh allowing deploying new versions running multiple set of workers through different task queues but it will be kind of hidden from you it will be kind of done automatically so like all consumers will not care they will just use start workflows on whatever task you they are starting but behind the scenes we will do all the right thing to route to the appropriate version and also the other part of that is self-reliance we want to invest heavily into the ability to roll out code safely because again temporal is not only about how you write code it's about how you operate we want to make sure that we are the best platform for actually operating things in production so we will put a lot of effort into these features uh there are a lot of other features we want to like most basic ones like pause workflow and pause workflow like make sure that workflow there are a lot of things we want to do just to make sure that you can operate things very efficiently the other big area of investment we are going to make is what we call nexus and it's kind of code word i don't know how it will end up being called at the end but basic idea is that right now uh people you use temporal a lot to build single application and they build multiple applications but uh sharing kind of calling each other like if you have one application like set of workflows and then you want to expose apis to other applications to other set of workflows or services outside of temporal it's not easy very we have child workflow in a different name space but it doesn't work very well does it work with global uh namespaces and so on so there are a lot of limitations there so we have we want to make sure that you probably practice the best way to expose your functionality to other parts of your company or even outside of your company and this uh can be done very cleanly for very clean defined apis and and also we want to make sure that this technology works not only with temporal but people outside of temporal so you can expose http gateways grpc gateways to other applications and as part of that we also need to solve problem that industry doesn't have standard to define long-running operations because what we call a lo arbitrary line iteration because uh if you have i don't know standard grpc so http service it's it's very easy to say okay this is a request i support but then i say if this request takes five days how do i model that then you need to do web hooks you need to do long polling and there are different ways to do that cues and so on so there is no clean way to define interfaces with for operations which can take uh long longer than a few milliseconds or seconds and we want to make part that uh if if we succeed we want to make it more like industry standard which is not important specific but allows to define those operations maps and specific technologies like http or jrpc and then make them a callable from workflows directly or workflows being able to implement those operations directly it's a big area of uh there is proposal actually right right now no prop i don't know if all of you know we have temporal dot io slash proposals repo this github repository and we push every time we do any kind of serious change to the temporal we actually always publish proposals there all new sdks uh for example right now there is a ruby sdk proposal out there if you don't if you are in anyone in ruby uh that and this proposal like first phase of this nexus project is out there so please check it out comment we want to feedback it's a level of design right now but the biggest i think not complain but uh if you go to our forums or go to slack you you clearly see that people get temporal it takes some initial harm but after people understand how to write code they implement super complex applications on top of temporal without talking to us they can ask questions about specific age cases and so on but it's called you know how to program java know how to program goal we don't need to teach you that you can do it better than us and that's why i think if you look at our forums a lot of questions are about how to run temporal how to operate important especially at large scale especially with high reliability at the companies and the way we're planning to to kind of help you there is and obviously temple of the company is going to monetize this open source this is one thing which we don't want to play with licenses we don't want to go this open core model when we will kind of create this enterprise version like take some features i don't know something out of that and not let you to kind of use full version we don't want to do any of that we don't want to change licenses we want to keep mit license we want to have open source being very feature reach but at the same time we hit all the time people just don't want to run any infrastructure themselves we just want to rely on ours that's why temporal cloud is the way we are planning to help like this adoption you can develop and uh run production with that the idea of the pro cloud is that we're not going to host clusters for you we are giving you name space as a service practically the idea is that you don't know what's out there it's just uh so fully serverless namespace is a service offering on the cloud you just provision namespace using api cli ui and you get this namespace you can just start using that right away and it's production quality service and you don't need to think about clusters you need to think about capacity all of these things are taken care of and i want to just give you some preview of that uh mike i want to invite mike i was to to help there and he will give you even some demo and then we'll talk more about that thank you max so i get the opportunity to give you all that first look of temporal cloud and the new features that we've been working so hard on to make this adoption of namespace as a service even more streamlined so one of the exciting things coming up is that uh creating a name space is now going to be fully self-serviced so the design partners that we've been working with so far are going to understand how much of a benefit that is no more is zendesk tickets and so this is this is a really big deal so i'm going to take you through real quickly a process of creating a namespace in in the cloud and just as a quick reminder a namespace is the fundamental unit of isolation in temporal it's used for a variety of reasons however you want to want to isolate your services so it might be based on application team organization environment or a combination of any of these so real quickly i'm gonna go out to the interface and show you what it's like to create a namespace so it's pretty straightforward i need to provide a name which just needs to be unique for the temporal cloud account that i have and i need to choose one of the seven regions we're going into other regions and we're also planning to support other cloud providers as well i need to specify what the retention period is going to be for the namespace as a reminder this is the amount of time that workflow history remains closed workflow history remains in your storage and i'd need to provide a certificate because all the connections to the cloud are secured via mtls okay so from your workers or from your client i can optionally provide one of the certificate filters these are useful for that segregation reason reason it can simplify your certificate strategy at your organization so maybe you want to aggregate namespaces according to environment or however you want to approach that and then finally i can optionally provide search attributes whenever you are have a temporal cloud account then you have advanced visibility fully backed by elasticsearch okay so when i create the namespace it does take a few moments to appear um and so what i wanted to do one of the questions that we get that comes up is what does it mean to adopt temporal cloud how if i'm an existing temporal user how do i how easy is it to migrate my code over to embrace the cloud and uh so i want to go into that but real quickly i just kind of want to review what it's like to even adopt temporal at all so you're going to have your in your own environment you're going to have your own workers that are connecting to temporal and you're connecting to temporal services whether it's your own self-hosted instance or whether it's in the cloud so what does the code experience look like i'm an engineer i'm doing some local development i've got some things working so i'm just going to do that for you now right now i'm going to just fire up a local instance of temporal using temporal light and it's pretty straightforward a lot of you have already experienced this so i'm just going to start a workflow out at temporal you'll see some logging going on what i'm doing is the ubiquitous money transfer application so i've just transferred a million bucks from one account to the other but it hasn't happened yet so i need to start my worker and down below you'll see that the transfer has taken place and so on so many of you have already gone through this sample are similar so what do i have to do in order to change my code from running locally and run this in the cloud so this is the a typical client factory for temporal the temporal client and there's not a whole lot of voodoo going on in here this is just i have an environment variable where i can specify using tls to con to connect to temporal obviously if i'm running locally i don't need to worry about that but i want to run this in the cloud so so let me share with you just a few of the variables that i'm going to have to change in order to do that first instead of using localhost i'm going to use a address that's given to me from the namespace that's handed to me in the cloud so i have a namespace that i created earlier and here's what the address looks like so i have the namespace identifier is or the namespace was called paymentsdev and then my account name my account id is sdvdw so the namespace id then is a concatenation of those two things and this is just a typical grpc endpoint that i'm going to use as the address that i'm going to pass in so let me comment this out and one thing that i've got here in the comments is just an indicator that uh operating temporal is very much the same in the cloud as it is to your current temporal instance as well so i can use t control which is our command line client for uh operating uh temporal on the command line and um it's just i'm going to be passing in the same address into the command line there so now that i've got these variables set up this is going to be used by my client and this time i'm going to be using tls to connect so i'll specify that here and let's go ahead and start the money transfer again and i want you to think i'm lying so i'm going to stop temporal down below okay so i've just started a workflow out in the cloud and so before i go and start my worker what i'll do is pop into the workflows view it's out in the interface and you'll see that i have a running workflow this is what i just executed or just started okay so i'm going to go into the workflow here really i am right there okay so uh this is showing me that i don't have a worker running there's nothing picking off the tasks off the queue right there's nothing new here uh except i am going to point out that my access to this namespace was made available because i'm a global admin on this account this is another new thing that we're rolling out in the cloud which is role-based access controls so over here on the left you'll see a little usage tab that's only viewable because i'm a global admin you can also designate namespace admin developer and so on and this is super exciting if you've been working with the cloud already you can finally govern access to these name spaces and also the different affordances that are inside of there so that's great so now i'm going to go ahead and start up my worker and fail because i did not have my tls flag set up okay so i just deposited a million dollars from maxime's account into mine and so now i can go out to my workflow and see that yeah the workflow was completed so one of the questions that comes up a lot whenever people are moving into the cloud is you know how do i know what's going on inside of my workloads now whenever i was running temporal uh in my own environment then i had access to the metrics i had access to controlling things right all the little dot dials and knobs so so how do i know uh so there's two big improvements uh that are new features that we're rolling out that are super super exciting so the first one is the ability to go out and generate an end point down in the settings you can go into the observability panel and pass in a certificate here that you can generate an endpoint that you can use as a data source in your grafana dashboards okay so what this is exposing to you is a subset of those temporal service metrics okay so it's not all of them but it's uh it's the critical ones that a lot of your set have alerts set up on already and if you need something else then you know talk to us and and we can work with you to see what we can put in there to help you be able to monitor your own applications so you can here's a we have a dashboard that we can hand you that has all those metrics already set up another feature that we're rolling out which is thrilling for uh understanding your costs inside of temporal cloud and also understanding what am i doing right you're right we're writing these workflows we're using these primitives and we're spread across teams and maybe you want to have an overview of how many queries am i sending how many signals am i sending this is really important if you're paying for it right and um so this new usage view uh there's a couple of views here to look at one is i have an aggregated view of the namespaces i'm a global admin like i said earlier and so i'm able to go in and see an accumulation of all of these across the name spaces and here's a daily view that lets me go in and actually see bursts and traffic so you can see i have one namespace that i was just jamming i was using meru to jam a ton of traffic in and so i've got i was doing this uh all day yesterday you can see i was just jamming a lot of traffic in there so i can see what's going on through the day and be able to optimize my workflow so it's not just a cost estimator but it's also just to understand what's happening inside your your workloads and this is also available in the namespace itself so if you're a namespace admin or anyone that can access the namespace you can actually go in and see what is the usage on my on my namespace and it split up according to those primitives that's huge today it's kind of hard to tell what are the different commands you know what what are the actions what is an action you know what's going on inside of my workflows uh we spent a lot of time with our design partners trying to help them understand their costs and so this is this is a huge deal so i this is a real quick snippet on uh just some some of the features that we're rolling out you can expect to see other features like there's batch operations they're going to be available via t-control when connecting to the cloud we have audit logs for security logs and so on coming out so there's a lot of great new features that we have planned and the intent here is to get it so that you can start working on keep working on your features instead of just always dealing with the services right and so i think you'll agree this is a big step for us thanks mike i think one important thing is that uh we show you the cloud and i know that we have uh quite a long signup list so you can sign up for the cloud but we didn't implement yet the self account provisioning so once you get account you get this experience you can manage everything yourself so what we want to do is uh we will uh first we are working on implementing self account provisioning so you will get it probably earlier next year but we still we want to go through that backlog as fast as we can once we uh fully register these features uh later in september or begin in october and so uh if you are on this wait list please or you're not there please sign up uh you can find it in temple.io cloud link to that and you will get email from us right now you will get email and if you're interested in signing up please reply to that email you can fill up the online form and uh we will provision namespace for you as fast as we can i think the couple things about cloud in general is um it's very scalable we can do right now what we call up to 200k actions per second per namespace and we probably can go higher but talk to us and action is in this case is not event it's an actual activity execution signal workflow start so if you have workflow with 10 activities it's probably like 11 actions i think so it's pretty easy to kind of guess how many actions your workflow will consume and we can go pretty high rates and we have uh customers in production one thing about cloud we are showing you preview but we have uh companies uh we have over 50 what we call design partners which actual pain customers which are now platform for like over 18 months now uh because one thing to understand temporal as a product was pretty stable like data plane is stable it was production worthy for a long time just because we started uber and was production there for three years before even temporal was created so our cloud was robust and like very mature from the beginning from the data plan point of view but we spend time doing the control plan we want to make sure that we onboard more people it's all fully automated we don't want to do manual operations so all upgrades and everything all provisioning everything is obviously you can guess this bunch of workflows because workflows are the best way to do uh infrastructure provisioning so we are working on this workforce making sure this experience is as perfect as we can get and we hide all the complexity of managing clusters because we give you just name spaces and the other thing which is worth mentioning is that right now in aws only we certainly want to be in all major cloud providers this time so next we will start looking into the at least second provider we will see talk to us actually we want to know which one to go to so it's uh but and the other features we want to do is for example we want to be able to do live migration from what we call name space migration from oss to cloud without downtime and back because we want to make sure that we want to have guarantee that you always if code runs in the cloud can run back on oss without any changes and we want to actually even support live migration back and forth and then also between regions for example you should be able to take namespace me the best region one and migrate to i don't know azure region two then gcp region three and then back to your ss if necessary i wanted that demo we'll do it maybe next next next conference yeah i think this is a kind of uh end of this talk but i i just want to emphasize again thank you for being here it's a i think it's exciting for us but i believe it should be exciting for you as well because you can all adopters of this technology and i believe this technology will be something which actually can help you in your career as well and kind of in what you're doing in your companies one thing is just i had a lot of talks yesterday and uh it's interesting to see people from like the largest corporations on earth been here and at the same time i had talked to a founder of a startup which is not even founder yet he's saying i'm going to do startup and i'm working on the idea of the startup so trying to figure out what i'm going to do but i know i'm going to use temporal so i think this is exactly what we want we want every startup just assume that temporal is the default if they want to implement any kind of business logic thank you you
2022-09-01 11:58