 It's 5.14, so I'll take one minute to introduce myself so that you can save the time in the coming slides. So myself, Rao Kumar, I'm working for Shizhen Technologies as a tech lead. So I'm just going to represent session on Drupal Docker and debugging. So a better way to plan your Drupal application. So let me try to explain and try to connecting the dots between Drupal Docker and how we can debug our Drupal application, or we can say how we can debug our multiple application. So this is my introduction. The next one, the agenda will be life. How was the life without Docker? So first of all, we'll try to cover what kind of challenges we faced when we are using our local machines, like our VMs, our raw servers, like bare machines. And then the second point will be the Drupal with Docker. But it will be like how we can enhance our applications or our productivity using Docker and how it's going to help us to solve some common issues which we usually face. Last thing will be, here will be Splunk. Splunk will be a tool for logging and how we can use Splunk for data mining. So these will be the major agenda for today's session. So this is the Drupal without Docker. So earlier, what we usually do, we have kind of a majorly everyone has three kind of environments, like first one is our local setup, the second one is our QA setup, and then one last one is our prod. So prod is like our last destination for any development. QA just we generally use to do some kind of a sanity, regular sense, pre-prod sanity and the UI kind of a thing and local setup definitely will have to work on your local machine to develop anything. So to develop anything, the basics that will be you'll have to configure your PHP, you'll have to configure your MySQL, your Apache server. Once you have anything to push till QA environment, then you'll have to do again to settle that QA environment basically. And the same exercise we'll be using for the prod. So we are doing 3x activity for the same thing. So I developed one thing, but I'm doing the same kind of a thing for other environment. And Adon will be having some interenvironment again, that will be kind of a 4x effort. So it will be like the other problem which we usually face like developer usually seems to say is that it was working on my machine, but somehow it's not working on my any of the interenvironment or QA environment or prod environment. That was a very common challenge and we don't have usually answer to that scenario because somehow if we somehow if we kind of miss any single library through which we have some dependency in our code, so that will be a kind of a challenge that how we gonna say that it was working on my developer machine, but for we already pass on our code for the UAT purpose, but that is not working there. That was kind of an biggest problem. So the other challenge will be like to working on my local machine. I'm using Apache might be SQLite or might be still I'm using PHP 5.6 version, which is very common and my production. So basically for production environment, we are majorly right now. These days, we are using IngenX and then the MySQL. And now we are upgraded till so till now it's PHP 7.3. But yes, it can be like PHP 7.x anything apart from that. The other challenge will be might be developer using Mac or Windows or Linux. But our most of the server is like Linux machines. So that that again could be a challenge that the environment work on a window will be totally different to environment working on a Linux machine. So that's again a challenge for kind of in development environment. And our all the machines servers are totally Linux based servers. So Docker, modernize your application, accelerate innovation. How it can help us to kind of at least to deal with these kind of issues with these kind of these kind of a problem, how it's gonna solve our life, how it's gonna ease our life. So but when Drupal met that when Drupal met Docker, what happens? So here what we can do is we can install configure maintain every single library, every single dependency which we have for our code for our development for our project, we can configure, we can create a Docker file for that for all those stuff and then we'll need to create and Docker image, that's it. If we'll be having a Docker image with all the configuration, all the developer within my team, all the environment which I have for my application, I'll have to just run that particular image. I'll have to deploy that particular image in all the environments and to all the developer machine. The benefit of having like a single image for all the developers, for all the kind of environments that every single user, every single machine will be having the same configuration. Either it is a PHP version, either it is a PHP library or kind of an Apache or IngenX, everyone will be working in a same environment. So likewise local QA product, the best. So in this scenario, no one will say that it was working on my local machine. If it is working on your local machine, it should work in your QA and in your prod environment. So these are some example of our Docker file. So this one is from the Docker Hub for Drupal images, for Drupal images. Likewise, there are some Apache, PHP, Alpine and FPM images. Here we are kind of like this first statement like from PHP 7.3 FPM stretch. So it is directly coming from the Docker Hub. So Docker also gives you the option that if you want to pull an image from the Docker Hub or if you want to host your own image, either you can push it to the Docker Hub or you can push it to your own setup. That thing you can configure at your own. Apart from that, I can configure what kind of library, what kind of a dependency I need for my Docker environment, for my application dependency. So this is kind of an, this is a Docker file which we are using as of now. Sorry, I cannot show you the source of that file. That's why I had to hide that thing. So my IngenX stable version, and then I have like all the kind of a Unix command which I can run any of the bare local machine or any of the Linux machine. So I just noted down there and then there are some dependency likewise. Here it is, I'm installing Dresch as well here, and I'm installing Composer as well. And then I configured as per my kind of how I want to run my application in any of the environment. So I do some basic configurations, and as per my requirement, I just add some library, just remove something which I don't want. And that's it. And after that, let me just show you some examples as well. I think I hope it is visible to all. So as of now on my machine, I hope you can see that first command like Docker images. So as of now, I'm having this Docker name, sorry, is DCS, these, decon Amsterdam, the decon AMS. This is my image name. And again, it sent tag leaders which Docker command automatically push this one. And then my image ID, and I built it just three hours ago. So let me have an example if I can show you how to build. I just noted down some commands here. So I'll have to do this, I have this command, and I'm in a library. So I'm in a folder like this one, just allow me, sorry. You're going to have the font size, I can't do anything. Just let me check, let me try if I can, is this going to work? Is it visible? Fine, okay. Let me just go to the folder, just allow me a second, run this one. And then just sorry, actually it's just rebuild the same image, but I just want to create another image. Let me just kind of put it demo as well. And that's it because I already run this command and there are lots of, so all the configuration are in Drupal cache, so that's why it's completed very fast. So if I'll check now, Docker images, now we can see there are two images. This one is the older one, and this one is the latest one. Now, let me just show you the Docker. So now I have a container, so now I have a new image, like decon Amsterdam demo. So now what will be, now I'm going to create a new container. So container will be just like the configuration, which I have put in my Docker images. Now I just need to replicate and create a new Linux machine, that will be a container, which is a Linux machine. So let me just run that thing and then I'll show you. So here what I'm doing is just a sec. So here what I'm doing is I'm just creating a container, name, decon container demo, and the image will be decon demo, which we just created. And this is my, sorry, OK. So this one comes because already a container is running with the same port, so that's why it's giving some error. So let me just run that command, now it will run. Number one, let me just rename this one, and now. Now I have a new container, Docker. Now this one is my new container called decontainer demo one. And now if I want to jump in a container, I just need to do this, Docker exe it. I'll have to execute this container, and then just I'll have to pass this container ID. Now this is my new Linux machine. This will be my hosting. If I can show you that Docker file as well, as here I am mentioning, my working directory will be www. And then these are the configuration which I want to do and which I am using as of now. So with this Docker file, I just created my Docker image. And then based on this Docker image, now this is my Docker image, Docker container demo one. Mine image will be, sorry, I have to exit this one. And then Docker images. So this one is my Docker image, deconems demo. And then I'll have to just replicate these containers for each of every environment phone or each of every developer machine. So all will be having the same setup, same environment, and all. That's it. And now they can start their development as per the requirement. So that's the kind of thing in Docker. So let's come to the next slide. So now this one. So I'm assuming that everything is working fine. Everything is done. The next connecting dots will be the logs. So the logs for any application, for any developer point of view, any kind of a business point of view, logs are very important. Either I want to kind of check my server logs, application logs, or I want to analyze my logs based on a kind of, for the business purposes. The business teams need some logs to analyze what they are doing, why they are doing, what's going good, what's not going to good. Everyone, from the developmental business, everyone needs logs. So here, in a few of our projects, we are using Splunk. So how Splunk can help us to do some kind of play around with the data? How it's going to help us to kind of streamline our application? How we can use this tool for our multiple applications? So why to explore logs? Obviously, for system efficiency, I know. I have server logs. I have IP information. I know what can be the security threat I have. Those are already in my logs. Network traffic spike, I want to know. Any vulnerability, CPU usage, access logs, system performance application log. Apart from that, these are the logs in my machine, either in access log, either in error logs. They are sites in my servers. Everyone can access those logs. There are some restrictions. And those are not that much useful for everyone as well, because there are thousands of lines within single requests. There are thousands of lines which are getting logged in that particular file, which is not going to, and every end user can kind of filter that type of a log, or even they cannot access those kind of a log. So how it's going to help us? So how are we going to kind of help our teams, like business teams, our development team, with the help of those logs? Either they will get a replica of those particular access log or error logs, and then they will kind of filter those particular logs. But that not going to make their life easy. That, again, make the process complex. Apart from that, these are the main problem. I want to get some real-time business analysis, that what's going on, how the three. Let's say I'm running a promotion page, and I just want to know how many users are coming on that particular page, and what they are exploring, where they are clicking. But because if they log sites in on my machine, that will be tough for me to kind of analyze. Again, not every user have access. The good news is it's a system admin, bad news is you are still a system admin. So Splunk, how Splunk works? So let me explain first that how Splunk can work and how it make our life a bit easier. So in Splunk, there are usually three components. One is forwarder, one is, second one is indexer, and third one is searcher. So what forwarder usually do, so what do you have? You have a source. Like in my error log, in my access log, I have a source of logs. All the logs are there. I just need a kind of a medium where I can put those logs, I can analyze those logs, and based on those analysis, I'll be able to generate some reports, which can be used by the development team, which can be used by my system admin or by the business people. So forwarder, I'm just passing my logs to the forwarder. Forwarder will collect on a regular basis that it will collect in their JSON format in a Splunk. So forwarder task is just to kind of collect all those logs, application log, whether it is a server or application or anything else. When we have a logs, forwarder pass it to the indexer. Indexer will index all your logs, and it will filter based on some keywords, which either there are some kind of a predefined keywords, which generally every system log files have. And apart from that, if you want to customize or I want to filter based on my custom logs, based on my kind of a custom keyword, indexer will index all those logs based on your kind of custom keywords or just normal system keywords. So just make sure that, so when every logs are indexed, now we can have a dashboard where based on those indexer, we can filter our logs. There are lots of options on a dashboard, on a Splunk dashboard, where you can filter your logs, where you can kind of based on your keywords, based on some kind of lots of search options. So there are, so you can have a dashboard, you can customize that dashboard based on your need as well, because it's a common case. Might be I'm being a tech person, I might need some server related logs, I might need some error logs, but I might need not to go through the analysis part. So that's not useful for me. So I will customize my dashboard as per my requirement and some other guy will customize that thing for their requirement. So search just make sure that you can query your data, you can create your custom query to search your data, you can query your data, that will make sure that your dashboard will get the proper specified result and the keyboard, when you're searching in a Splunk, you'll just let me know, just let me show you. So this is this kind of in raw dashboard of Splunk, where you have the search and reporting where you just have to enter the keywords and then you'll be getting based on your application logs. You can get thousands, lakhs, records and then there will be some on the left hand side, there you will get some keywords based on that you can filter or minimize your that logs count. Splunk as a solution can provide you the real-time system logging, real-time server logging, server monitoring, historical data, alerts and communication, customizable dashboard and easy to filter raw. This slide is a bit simple and I'm just showing you the heading, reason being if you like and if you think it can be a solution for you, just explore yourself, just try to set up a, though it's an enterprise tool, you can just have a kind of trial version, just try with these options and then try to configure those with your local environment and hopefully it will help you. Programming is not a zero sum game, teaching something to a fellow programmer doesn't take it away from you. Thank you. Any query, any question? Thank you. Thanks a lot.