What is DevOps?
Making the end product available to its users and ensuring its smooth operation are key in the world of software development.
The DevOps engineers are tasked with making sure that this happens in the easiest, quickest, and most error-free way possible. Key factors in accomplishing these goals include:
- close collaboration with the other team members
- design and automation of the creation and management of the infrastructure used for product development (test environments, CI/CD pipelines)
- design and automation of the creation and management of production systems (servers that host user-facing software)
- setup of monitoring systems and troubleshooting automation
Which technologies do we use in our work?
The DevOps engineer toolbox contains a wide variety of state-of-the-art tech.
Cloud-based solutions such as Amazon Web Services, Microsoft Azure and Google cloud are used to provision the necessary devices, while in some instances servers are not needed as in the so called serverless infrastructure such as Amazon Lambda.
Creating, installing, and configuring servers is done via infrastructure as code tools, which allow the makeup of the system to be stored in version control tools such as Git.
In this way DevOps engineers essentially write infrastructure “code”, which is then transformed into real systems. Infrastructure as code tools include Terraform, Ansible, Puppet.
In addition to that deploying the completed applications is not done by manually installing software packages, but by containerization and orchestration tools such as Docker, Docker Compose, and Kubernetes.
Achieving a high level of automation often includes writing scripts such as Bash and PowerShell, or even fully fledged software solutions that use standard programming languages such as JavaScript, Python, and Go, when necessary.
Integration and delivery processes (CI/CD pipelines) use tools, which work together with version control systems (Git) . In this way all steps in the delivery of the software product can be executed automatically in a correct way and can signal an alert when a problem occurs. Such systems include Jenkins and Gitlab CI.
A successfully deployed product needs to be monitored in order to track its performance and efficiency. This is done by tools for monitoring used resources, request execution times, number and type of raised errors, etc. Such tools include NewRelic, Datadog, and AWS Cloudwatch.
What does the Astea DevOps engineer internship look like?
The internship starts with theoretical and practical introduction to key DevOps subjects, technologies, and tools. This happens via lectures given by experienced mentors from the company, as well as via the accompanying exercises and tasks.
In the second half of the internship the DevOps interns participate in a group project together with the rest of the interns. The role of the DevOps engineers is to provide everything necessary in terms of infrastructure in order to ensure the smooth development, testing, and delivery of the final product.
This team consists of the main roles that are necessary to develop a software product: in addition to DevOps engineers we have developers, QA engineers, a software analyst, and a client. The team follows a work process that is used by other teams in the company. The goal is to recreate the lifecycle of a real product/project and all the activities that make up its development.
The end product is demonstrated to the company by the interns in a presentation.
The responsibilities of the DevOps team include the creation, automation and management of:
- local development environments – these are the tools necessary to facilitate work on the development of the software product on the machines of the developers
- test environments – these are different version of the product that are tested by the QA engineers
- process of automated testing and deployment (CI/CD pipelines) – the integration of the version control system that allows changes to the product to automatically become available on the deployed environments, automation tests to be executed. If all these checks pass the product is then deployed on the production environment for end users.
The technologies that will be covered in the internship include:
- Linux and virtualization
- Docker and docker-compose
- Git and Gitlab
Depending on the specifics of the developed product it is possible to use other tools such as AWS cloud, Terraform, Kubernetes.
What are the requirements for the DevOps intern candidates?
- Willingness to learn new things and grow as DevOps engineers
- Basic experience with Linux and its main commands and terminal
- Basic knowledge in the field of networks (for example, network addressing, subnets, masks, IP address or DNS configuration)
- As Bulgarian is the primary language of the internship, non-native speakers need to have a level of B2 or higher proficiency in Bulgarian
Bonus:
- Experience with scripting or programming languages such as Bash, Python, JavaScript, etc,
- Basic knowledge in the fields of cloud solutions, virtualization, or containers (Docker)