 No, I'm usually loud enough Let's see So hello everyone, my name is Bjorn. I'm a programmer So I've been a programmer for many years. It's a struggle every day, but I get through it Just believe in yourself and you can do it So I'm gonna talk to you guys about what is DevOps? You're gonna have a lot of repetition now from which Serena's been saying so you're gonna have to live with that Very thorough very. Thank you for that So why do I think I can talk about DevOps? So for the last couple of years I've been working very heavily in a lot of places helping people Understand what DevOps is I've been helping implement DevOps culture in Singapore government agencies I've been in banks. I've been with a bunch of startups. I've been with a bunch of people So that's why I think I I can talk a bit about DevOps So my background is that I am primarily a back-end developer doing a bunch of things But I worked in a bunch of different themes and because of that I become one of these known full-stack developers meaning that In my case, I know a lot about doing back-end work and I have a rough idea of how you do things in the front Then I can muddle it through So what that means is also that I Have a pretty good idea of what it means that all of the other people in the stock that I'm working on is doing like I don't fully understand it, but I've gotten a lot of empathy for What it is that it goes into what does it mean when you're dealing with influx or with react or whatever that is like I don't understand. I don't have to but I understand there's a lot of work to it and Empathy is key because DevOps at the end of the day. It's all about culture It's a culture that everyone should be working together The the point there comes into that we're developers. We are operations people the sys admins Scouring away figuring out what disgusting drivers aren't working on a Saturday morning because something with bananas It happens business people figuring out that yeah, the Increase in taxes it meant something now. I have to change everything new feature has to happen really fast It just goes on QA is so on like we all have to work together But what does it really mean that we all work together? And what are we trying to achieve by working together? Well, what we're trying to do is get our code into production because what's the point of writing code? Building the software if we people aren't using it. We need to get people to use the stuff that we build and Preferably as quickly as possible That's why we have a tooling to help us out with that and we should do it to as much quality as possible because What's the point of releasing bad software to people that want to use it? That's just gonna lead to frustration frustration leads to people leaving and Terrible for customers to leave because I like their money Hey end of the day, right But so how do we go about actually achieving these things because What we want to do is that we want to have quality. How do we get quality? Well, you write some tests TDD. I am a big agile guy Despite what it might look like Hey, it's okay. I'm me So practice TDD that's my key thing I would recommend everyone to do It's just gonna make your life so much easier, especially when you're trying to go up as all of these agile practices really comes into play and DevOps is a culture of also taking care of this. It's all agile in the end and The other things that comes into now we start talking a little bit more what people generally talk about comes to DevOps Provisioning so what does that mean? Well, it's pretty much things like you get your servers off the things that you used to do Once the thing that you just get written down that yeah Yeah, we got a server someone took two weeks off and they installed it and now we have it working Please don't mess with it too much. It's gonna be fine Create databases. Maybe you need to do some database migrations get your schemas up to date Do some migrations for like actual data and so on, you know all of that stuff Then you also need to make sure that you have something you can actually run and you want also have the ability to go back to it Sometimes in the future. So if I do a deployment and my tests weren't perfect. They're probably not I'm human after all They're they're never gonna be a hundred percent tests are always gonna be about what you can cover as a developer at point in time When you're writing it, that's why we do pair programming as well because that will help us better see a different point of view and Having deployable artifacts will help us get things out quicker and back again when they go wrong and of course automated deployments because We can't get our stuff into production fast unless we know what we can have it can happen at a click of a button or even better automatically and The thing you can notice about all of this is that this is all about what people do like pretty much this is all about like the things that we need to get done to actually make it happen, but How do we actually do that and The way of that is it's tools of course It's always about tools in the end like we talk about culture, but which is the important bit It's about the outcomes, but we do need tools So we have tools like ansible chef puppet Which is like the thing that you install some kind of agent or you log into a server It will install this package that package configure engine X put the patch you on hold whatever it is That's what you have. That's a good tool to have in your belt if you're doing that Maybe you need to create a easy to instance or Connect to the Google cloud and need to give them a server terraform fantastic tool for provisioning infrastructure Tell it that I want a survey. It's gonna be this big. It's gonna be ten of them. They're gonna be named like this So it works great together with ansible. You can get that to configure the way you need It takes time, but that's pretty much what it is a lot of people these days are using container orchestration Which is more like Kubernetes like nomad or ECS from Amazon These tools are all about containers and it's all about making sure that you can get your code take that artifact Put in a container run it somewhere Generally when you have it up and running it's a lot less work than doing something like Ansible and so on so I would if you if you're starting out look into that Amazon together with their Fargate is Really no frills way of going about it. If you want to look into it Then you want to probably look at cloud provider API's maybe there isn't some particular tool that fits the bill exactly for you Each organization is different. Maybe you have specific deployment scenarios. You have to care about Knowing that you can just connect to their API's and do it yourself is very powerful and really empowering Which also comes into custom scripts. I personally do a ton of these at One of my previous gigs I wrote something like 40,000 lines of bash It it it was a particular deployment scenario involving 12 service three data centers and the government I begged for pearl Which for those who know So The question then also becomes how do you know that you need a tool? Oh Well, apparently I forgot to enable the thing that makes it the only do one at a time So yeah, so did it take a lot of effort manual effort to do something? So yeah, so a lot of the ways people go about this is that well It's really complicated to get the oldest automated tooling I spent a day doing it but it only takes half an hour to do it manually take some screenshots. It's all done It's good Yeah, but if it's runnable code, you know that if you run it again, you can see when it works Documentation just stays there and the ten the tendency with documentation, especially with screenshots is that it's taking with a version That version was changed one and a half years ago on no one has updated nothing works anymore and names have changed everything Runnable code is always a winner. The code is documentation as it were Make sure everyone does things the same way like in my company. We have a deployment process Do we want everyone to follow like obviously it happens through cei But before we had cei up and going because I came in late we had to do it from our laptops and Having that checklist of how to do all the steps Nah, I'd rather have a script. I can check all those things and it does it much better than I do because I get bored easily so much much better and What do you do when? Well, this you which hits the air what generator as I say Do you take two weeks of downtown or your business stands still or do you? Just spin it up again. Maybe we'll take half a day. It's what it takes It's one of my previous gigs one of the we had that happen every week we took down one of our environments spun it up from scratch saw it everything was still working and Sadly almost every week something went wrong because we didn't think about the fact that we aren't always Starting over from a good known state. We have to start from nothing and It's really valuable to know that you can do that and I will admit that Right now this will not work in my company in my team because I haven't spent the time fixing that I will get there some work on it, so You need tools like it's important the tools are important, but at the end of the day if you're talking DevOps It's not about the tools It's it's about the people doing it and it's also important to think that just because you're buying things It doesn't necessarily mean that you're getting The story behind it Also, just because a tool is big and fancy and because everyone is using Kubernetes doesn't mean that it's the best choice Sometimes maybe the best tool is something you make yourself Doesn't have to be that big. Maybe you figure out that Like for instance, I have a service in my company that figures out. What is the next? What's the next version I should use for the thing that I just built? We have 20 odd services when they get a version number. Yes, I could build something and put something on flask or on Sinatra I can get it up and running Also using Amazon. They have something called DynamoDB and if I use the Amazon CLI I can just ask them to give me a number and it does Works great. It took 10 minutes Best spend time ever still running So to give an example of a deployment scenario when you have this kind of automation which I said running on CI CD It's because it all comes down there It's the place with a lot of these things happen at the end of the day because you don't want it to happen on your machine But for the sake of argument, let's assume that you start there So the way my deployment process starts with I run all of my tests to make sure that everything is green I don't want to make sure I push something that's wrong The reason I have this in the script is because we have multiple code bases using many different things different versions of Python Lots of setup. It's a lot easier if I just don't have to care about exactly how that happened That's another it's avoid a checklist Then I want to deploy this this particular thing onto staging. I don't I just want a new version I want you to build this thing for me since I know that my tests are green and please do that But what goes into that? So you build a deploy package that goes into my artifact Repository and I can then pick it up later and I can roll it back Curious that central database for number to use so that we know that we can refer to it later So when we say that deploy 27 failed, we know that it's deploy sent 27 everywhere If I deploy build 27 in staging and I say that I want build 27 in production. It's the same package I know it. It's fine. I don't have to worry about drift And especially important that hopefully you also have all of your dependencies in your package So you don't get stung stung by that because that can be annoying and Yeah, upload packaged repository for archiving Deploy it Notify monitoring environment. So we know that there has been a deploy if we start seeing anything that's a little bit odd Maybe we can tie it back to that. We deployed something because it said tests are still at the end of the day written by humans We're gonna miss things. We don't think about everything. It's what it is So to recap what I have talked about is so DevOps is a culture about collaborating with other stakeholders who they are depends on where you are and what you're doing At the end of the day. It's it's your your situation that matters It's about getting a code running as fast as possible with as high high quality as possible Somewhere so people can use it. You want to keep that cycles as quick as possible. That's what you really want So what that was is not is tools like you don't buy DevOps I Don't at all have strong opinions about this The closest thing you come to buying DevOps is the help of getting it set up by a good company like Mavericks but that's it and DevOps is not a person It's something that you as a team do like you don't want to be in a situation where there's one person that knows What's going on? This is an effort that everyone should be involved in everyone should feel Responsible for their build if it goes red you go in and fix it if if if nothing is happening You have to pick up as a team to work on it. So the idea of hiring a DevOps engineer to do DevOps, it's like having a collaboration person that does all the collaboration for the entire team. It's a ridiculous notion and the as a final point on tooling is that saying that you're doing DevOps because You bought some tool. It's like saying that you are a developer because you use a VIM I mean first off No, it's emacs Secondly, it's it's all about the outcomes. It doesn't matter if you It doesn't matter where the code comes from as long as it works and that's what we all should care about and remember that When it comes to getting things out, you should know where you're coming from You should make sure that you have your fundamentals, right? You work on your tests You work on your design patterns you work on how things fit together and it's work on how it works with the product because Delivering shit faster just gets it messy and any questions Yeah, so I just couldn't figure out how to segue into this but I really want to share this gif so here goes You