Overview of Tools

Learn about the software tools you’ll be using in this course.

In this lesson, we’ll examine the different tools utilized throughout the course. You’ll learn about each tool to enhance your understanding of what each tool is about.

Operating system

Press + to interact

This course is based on using a Linux Ubuntu-based system. We’ll create applications through the Educative courses user interface, so there won’t be a need to run anything on the computer.

Just use the interactive terminals and coding widgets in this course.

A sample terminal is provided below. Run cat /etc/os-release to check the Linux version. Feel free to run some commands.

Terminal 1
Terminal
Loading...

DevOps

Press + to interact

DevOps stands for developer operations. One of DevOps’s primary methodologies aims to smoothen the process of developers writing code on their computers and shipping code to production servers.

This is done using CI/CD pipelines that run various tests, deploy code to test servers, run more tests, communicate to affected teams, and then deploy code to production. This is all done in an iterative, secure, and efficient manner, making the developer’s life easier so the developer can focus on writing great code.

There are many other DevOps methodologies, but this course will cover CI/CD pipelines.

Continuous integration and continuous delivery (CI/CD)

Press + to interact

Continuous integration (CI) and continuous delivery (CD) is a DevOps software development practice that aims to increase the speed and reliability of the software development process.

CI is automatically building and testing code changes every time they are pushed to a code repository. CI aims to ensure that code changes are always in a releasable state by running various tests and testing new code changes on test servers so that they’re ready for release on production servers. This allows developers to quickly identify and resolve issues with the code before they become more significant problems.

CD extends the principles of CI by automating the deployment of software changes to dev, staging, test, and production environments. The goal of CD is to ensure that software changes can be reliably and quickly deployed to production at any time with minimal manual intervention. This allows development teams to release new features and bug fixes more frequently and with less risk.

CI/CD pipelines must be maintained and improved continuously to ensure they are secure, fast, and reliable.

Together, CI and CD form a powerful combination for modern software development, allowing development teams to release high-quality software more rapidly and with greater confidence.

PHP

Press + to interact

PHP is a widely used open-source programming language that powers approximately 80% of all websites on the internet. This language has a long history, starting as a tool for creating personal web pages. Over time, PHP has evolved and continues to grow to meet the demands of modern web development.

In PHP, developers can choose between two programming styles: procedural or object-oriented. Procedural programming involves writing code step by step, using functions and logic. On the other hand, object-oriented programming (OOP), which is preferred and the latest trend, focuses on objects and data, promoting code reuse, improved performance, and organized structure.

In this course, a basic understanding of programming and PHP is required. However, don’t worry, this course will provide a detailed line-by-line breakdown of code, allowing you to easily follow and learn.

Symfony

Press + to interact

Symfony is a PHP framework that handles microservices, console applications, and web applications. The Symfony framework enables structured and secured PHP code development with a well-structured framework.

It provides features such as:

  • Creating pages
  • Managing URLs
  • Managing controllers
  • Managing front-end templates
  • Managing environment variables
  • Security updates
  • Application architecture
  • Database management
  • Form management
  • Tests—PHPUnit, functional, and integration
  • Caching
  • Logging
  • File management
  • Production management
  • Messaging queues
  • Symfony cloud
  • Plus, a lot more!

The Symfony framework provides continuous updates that include upgrading to the latest PHP versions, which keeps the PHP code and our website secure.

Click the “Run” button below, and then click the “Output” tab to see a sample page created by the Symfony framework.

Do not worry about the code present in the widget below. We’ll have a look at it in the upcoming lessons.

#!/usr/bin/env php
<?php

use App\Kernel;
use Symfony\Bundle\FrameworkBundle\Console\Application;

if (!is_file(dirname(__DIR__).'/vendor/autoload_runtime.php')) {
    throw new LogicException('Symfony Runtime is missing. Try running "composer require symfony/runtime".');
}

require_once dirname(__DIR__).'/vendor/autoload_runtime.php';

return function (array $context) {
    $kernel = new Kernel($context['APP_ENV'], (bool) $context['APP_DEBUG']);

    return new Application($kernel);
};
Running the sample Symfony application

PHPUnit

Press + to interact

PHPUnit is a testing package that enables us to write tests on our PHP code.

A unit test is a function written to test whether another bit of code performs how we want it to and returns success or failure. This is done by writing assertion tests that specify what should be returned. This is a good coding practice to ensure new code doesn’t break and is rigorously tested.

We’ll only be writing basic unit tests in this course, so only basic PHP knowledge is needed. All code is provided, including a step-by-step process for creating PHPUnit tests.

The reason we are creating PHPUnit tests is that tests are required to run as part of the CI/CD pipeline process, so we need some tests to run before deploying our code to servers.

GitOps

Press + to interact

GitOps stands for Git operations and its services provide integrated pipelines to configure, which run when we make changes in our Git repository. For example, let’s say we have made some changes on our custom branch and we want to merge it into the staging branch. We create a pull request (PR), which then runs the automated GitOps pipeline that tests our code changes. If this pipeline fails, we need to make changes until it passes. After the PR is approved, the code is deployed to the staging server automatically. This is an example of a CI/CD GitOps pipeline. Basically, every code change in a Git repository is tied to a CI/CD GitOps pipeline. GitOps pipelines can be configured as per the required use case.

GitHub, GitLab, and Bitbucket provide pipelines for us to use. You’ll learn how to configure these GitOps pipelines in this course.

Amazon Web Services (AWS)

Press + to interact

Amazon Web Services (AWS) is a leading cloud provider that offers physical infrastructure and on-demand virtualization services, along with a range of software services.

AWS acts as a cloud hosting platform that manages physical servers and provides the necessary infrastructure for us to run our code.

During the course, we’ll sign up for AWS and create an Elastic Beanstalk application. Elastic Beanstalk (EB) is an easy-to-use platform that helps us get our code up and running on a live server on AWS. It uses a command line interface (CLI) to deploy code directly from our computer and provides additional benefits, such as automatic scaling and zero downtime deployments. In this course, the Educative user interface code widgets will be configured to deploy from this Educative course to your AWS Cloud.

Be aware of the costs associated with using AWS and be mindful of terminating your Elastic Beanstalk environment when not in use to minimize expenses. Educative will not be liable for any charges.