Название: DevOps with Laravel Автор: Martin Joo Издательство: Independently published Год: 2023 Страниц: 447 Язык: английский Формат: pdf + sources Размер: 57.8 MB
With this guide, you can learn everything about deployments, Docker, Kubernetes, and how to use them with Laravel.
"DevOps with Laravel" is a 447-page guide that teaches you how to be better at infrastructure and architecture.
Before we start talking about technical concepts, let's answer one question: what is DevOps? The answer is more complicated than you might think. A long time ago there was no DevOps but development and operations. Developer teams built the software, and operations teams deployed/operated it. But it wasn't the best model, because these were two different teams and they always fought each other. It was mostly the developers' fault, in my opinion. A long time ago developers did all kinds of weird stuff. Just to name a few:
- Not using package managers but installing dependencies manually and copying vendor folders to servers. I'm guilty. - Not using migrations but running SQL scripts manually on the server. I'm guilty. - Hard-coding secrets and configs into source code. I'm guilty. - Not using .env files properly (or not at all). I'm guilty. - Maintaining multiple code bases to deploy multiple tenants. I'm guilty.
So the IT industry said: "Stop this madness! You'll learn to collaborate with each other. We need crossfunctional teams that can write, build, deploy, release, and maintain software. We need teams that have all the necessary skill set to do so." So there was this new thing called "DevOps." The goal was to merge developer and operations-specific knowledge together. And then Docker came out in 2013 and it streamlined the whole process. And then Kubernetes came out in 2014 and solved tons of production issues. So DevOps is not just a set of cool technologies but a mindset or a culture. To goal is to have automated processes and make the deployment/release process as smooth as possible.
A few key concepts of modern DevOps:
- Automation. automating repetitive tasks, such as software builds, testing, deployments, and infrastructure provisioning, to reduce errors, improve efficiency, and increase consistency. - Continuous integration and continuous delivery (CI/CD). Implementing CI/CD pipelines to enable frequent code integrations, automated testing, and rapid, reliable software releases. - Infrastructure as Code. Managing infrastructure resources using version-controlled code, allowing for reproducibility, scalability, and consistency across different environments. - Monitoring and feedback. Implementing monitoring and observability practices to gather feedback on application performance, user experience, and operational metrics, enabling quick detection and resolution of issues.
Docker is a platform that allows us to create, deploy, and run applications in containers. Containers are a lightweight and portable way to package software and its dependencies, allowing applications to run consistently across different environments. The most important thing is to package software and its dependencies.
And now let's make you a decent DevOps guy in PHP/Laravel projects.
All of the above by deploying a Laravel app with components such as an API, Vue frontend, MySQL database, Redis queue, multiple queues and worker processes, scheduler.