 Hello everybody. Welcome to the engineering functional update. I hope you can all see my screen. It's not I think this presentation should be linked in the calendar agenda Just wanted to welcome some new team member Chen j for the support team. He is based out of Zimbabwe and We have a few people joining us next week victor for the production engineering and Shinya who's will be a CICD inter. He's already contributed stuff to get lab So really excited to have these people on board next week and I'm happy to have a new team member on the support team What have we done we've done quite a bit and this is just a kind of the best of Highlights that we have accomplished in 9 1 and 9 2 One thing I wanted to call out was with the platform team. We have international internationalization Means we have other languages that we're supporting within get lab We started with a simple page and the Cyclonics page and now we're expanding it but already we're seeing a lot of Community attention to this problem of just being able to have a localization and translating a different Get lab into different languages. So we're already seeing Merge requests for Chinese French Portuguese Bulgarian German people have sort of taken this a ticket upon themselves to add Translations to get labs. So really excited about that. We've got just merged requests. You can check it out in that link Uh as uh, yeah, actually different languages Chinese We have the simplified and traditional Taiwanese and you know Hong Kong and mainland So it's been pretty amazing to see that unleashed On the giddily team, uh Ernst and Andrew talked a lot about what we did and the infrastructure. It's really exciting to actually test One of the main endpoints that we use for a get clones and get pulls And that's the info refs and we tested that briefly in production. It looks like really promising results really excited to see Even more results that come out of that On the geo side in my last update I talked a lot about what geo is and how it works And I talked about how we're moving away from this whole system hooks approach To update the secondary now We have this new event log that essentially helps us track when people push new events and so we can on the secondary respond Faster without doing this hook approach. So this allows for disconnected operations So if the secondary for example gets disconnected from the primary for some extended time We can recover and not have to rely on the retries of some system book events On the support event I know Lee talked about last week that uh, one of the main business problems we had was just getting sort of Zendesk and Salesforce linked so that we could see Uh, you know on a zendesk how many you know, how many seats did a subscriber have? So this has really been helpful If you go to a ticket on zendesk, you can actually go dig in and see like what organization This person belongs to how many seats they have. I think it really helps us prioritize premium customers as opposed to other customers The build team doing a lot of great work with the helm charts So we now have a way to deploy git lab using a helm chart and helm chart is basically a way to manager Kubernetes deployments a lot easier. We have terraform Uh scripts that can set up git lab on google compute engine really cool stuff I'm really looking forward to using that for something like geo where you can have multiple Machines spun up by terraform and just automatically configure them To work together UX side is doing a lot of great work to support a lot of features. We have uh, I wanted to call out a lot of Great work by chris P on navigation check out the screenshots there. I think it's moving git lab in the right direction Uh front end has been doing some awesome work with the real-time updates I think the first time I saw this was watching somebody edit a description for database queries and watching it just Evolve over a few minutes was just amazing. So it's one of those things that you really appreciate when you actually see it in practice So hopefully all of you get a chance to experience that On the database side a lot of great work done on improving project authorizations. I think this has been a really important Fix that we needed to go then we needed to have because it's been a problem for a few releases now where People didn't have permission to access certain projects for some reason because it was stale And we had to manually refresh them that is going away. Fortunately. Thanks a lot of great work by yorick You should look at that merger quits. It's a it's a terrific merger quest on using postgres Ctes which are special queries to basically Do cursive queries to figure out which projects you have access to so really cool work there Prometheus side. I know ben talked and josh talked a lot about what they're doing I wanted to call out some great work by paul on actually instrumenting unicorn Which allows us to put metrics in git lab to actually measure stuff happening within git lab. So check that out cicd one of the long Features that we've wanted for a long time is being able to schedule pipelines For example, you know having a nightly bill is a very common thing to do in organizations And now we have that thanks to a contribution by shinya Um on the edge team, uh remy has been doing some awesome work adding this performance bar, uh, this was This is a way to for anybody at git lab to basically pull up your web page and just see Which views which queries are taking a long time. So instead of having a separate profile You can actually profile within the application itself. I think it's there's some last minute hang ups with javascript But in general, I think it works pretty well Discussion team awesome work on multiple signees. Uh, that was shipped last month Took us a little bit of effort to get that out of the door, but The migration worked and we have it up and running at git lab dot com and users are using it today This performance bar c e or e I believe it's c e It's applicable to all concerns I think everyone in the development team is struggling to Get their tests passed so they can get merged and you can see from this graph here That our test suite takes a long time and it varies significantly anywhere from 40 50 minutes to an hour and a half We've got to get down to the bottom of that. There's a lot of indeterministic behavior that we're seeing and You know something fail. We need to improve the retry mechanism We need to improve the parallelization Try to figure out how do we get this more to a sane level Hopefully, you know, ideally down to under 10 minutes so we can work faster and iterate much quicker Things that are on my mind application performance and stability People often ask me like why is git lab slow? Well, there are two main reasons why they're slow inefficient database queries and just Repeated file system access now the second one we're dealing with with giddily the first one We can all anyone the development team can help I'll give you a good example. You click on an example there This is something we saw when we were deploying 92 is that we had this significant regression where we were just Reloading the same merge quest over and over now. I think that's being fixed It's already fixed but things like that is happening happening in our system that there's a lot of room for optimization A lot of room we can we can do it for improvement So take a look at that dashboard and the main source of git lab sliders You can look at the different URLs for profiling and drilling into exactly why they're slow Other things on git lab.com and other things customers are experiencing are just things like Repository is going missing because we have a cache state that's inconsistent With reality. I know bob is doing some great work to fix that And we have a lot of issues on git lab.com the customer is just trying to import and doing merge quests and reporting that They're getting stuck or not actually completing Again, that's this is something we need to fix. I put this on the okrs for quarter three to really just fix these fundamental issues Uh, so for nine four, uh, one of the big efforts we're making today for Making it easier for people to use it is just to make it either default download So the dowage created a lot of issues about what this means A lot of the licenses have to be checked in certain places But essentially you want to make it easy for people to download the e package Run it if they don't have a license fine. They can use all the features of git lab But when they want to upgrade we should make it really easy for them to upgrade within the application So that they don't need to worry about oh Is it going to be hard for me to upgrade? Do I need to download this separate package? What issues i'm going to run into just going to be there on the system already and they can upgrade really easily One of the things that we want to start on for nine four is graph ql This is really the future of how people are going to be doing apis So traditionally everything there's a rest api you ask for certain things you get started back But graph ql allows you to have more dynamic Uh behavior here where you can just ask specifically what you need and what you don't need And I think we just need to get started on it because we're not using our api today And this is there's not leading to a lot of duplication of effort here because somebody's my Can you make the presentation like allow people to comment or edit? Oh, yeah, sure. I will do that I'll do that after I finish here Your your graph ql URLs broken so like sorry, okay Let me just do that there Okay, and uh geo like I said earlier in the last month's presentation we're going to actually use this event log and deprecate the system hook that actually does the Registrar's push events and then we're going to continue adding the logs So dealing with things like project deletions and renames and things like that Uh, one of the high level efforts that we're making to Uh attract more enterprise customers is having a high availability support. So specifically having postgres high availability support In omnibus is going to help a lot with that and that's something that marin and ian have been working really hard on And I'll go to questions Yeah, so the cycle translations only cycle analytics Performance bar. Yeah c e only right c e and e right now Yeah, jose I will link that query optimization presentation So no, we're not going to kill the rest api and I think you know having graph ql will help and if we need to build a Layer on top of that we can but I think we'll have v4 api there as long for a long time So that's not going to go away But I think people who want to use graph ql will be able to use it Stand what I don't understand is why we're gonna call it v5 of the Uh api I understood that graph ql allows you to have versioning within the api without adding like a v4 or v5 So I I think they'll exist side by side and at some point we'll point the v5 of our api would Would use the graph ql thing in the back end. It would just like be a rest compatibility layer Right that makes a lot of sense Okay, cool. Yep. Thanks. Jose. Could you link that? If there are no other questions, thank you all