DevOps has gained enormous importance as a buzzword in the IT world - without it always being clear what it is actually about.
The goal of DevOps is to overcome the traditional division between development and operations. For a long time, it was the case that developers worked on a new version of the software and, after a completion date, handed it over to operations, which then continued to operate this software version while development worked on a new version.
In this case, the priorities between development and operations are often completely opposite. Development wants to offer the customer new features, implement new standards and thereby differentiate itself from the competition, while operations mainly focuses on stability, bug fixing and security.
DevOps tries to defuse this conflict by bringing development (Dev) and operations (Ops) closer together, ideally working as one team on one product and putting the responsibility for all aspects of the software with features and operations in the hands of one team.
Special attention is given to short release cycles, direct feedback and automation.
p-square can help with the introduction of a DevOps culture in your company, as we have been working on the development and operation of software solutions in a small team for a long time, and these things come from one source with us.
The cloud plays a central role in DevOps, because many things that are or should be implemented with DevOps are only possible in a dynamic cloud environment.
Whether cloud computing services from Amazon AWS, Azure, Google, or your own in-house cloud - we have the experience and the tools to work in this environment and quickly achieve results and implement our customers' requirements.
Continous Integration / Continous Delivery, or CICD, describes the practice of building a completely new version of software even after small iterations in a software, and making it available for testing on a staging environment.
In traditional software development, compiling a new version, or "build," is a laborious process that is only done for major milestones.
In the DevOps approach, on the other hand, versions should be updated even after minor changes, which is why the build process must be completely automated.
For this purpose there is special software, which attaches itself in particular to a version management, in the meantime mainly git.
As an OpenSource tool there is Jenkins, which can take over this task, in the commercial sector Atlassian Bamboo or Gitlab are often used. Github, the largest platform for public git repositories, also provides a cloud mechanism to achieve CICD with Github Actions.
We can help you integrate your project into a CI/CD environment to lay the groundwork for a transition into a DevOps centered approach.
New projects from us will of course use CI/CD where appropriate.
For CI/CD to run successfully and for you as a customer to easily make environments of your software available to your developers, it must be possible to reproducibly install and activate them again and again.
Two technologies play a prominent role here: containers and Infrastructure as Code (IaC).
Short-lived containers are the counterpart to long-running servers or virtual machines. Small, lean containers contain exactly the software needed to run the software, and they are usually built in such a way that they can be started and stopped with little effort, and can also be completely reassembled by CI/CD software. This ensures that your software always runs in a stable, predictable environment.
The most popular technologies to create and run containers are Docker and Kubernetes, but there is a wide range of products there. Also, all major cloud providers offer to either run an environment for containers, or to run the containers directly natively on cloud provider infrastructure.
We are happy to advise you on containers, and help you containerize your software or deploy it to new cloud environments.
But simply launching the container is not everything. The complete infrastructure around it also has to be right - be it network connections, firewall rules or which storage is connected to a container.
This is where Infrastructure as a Code comes into play. Instead of configuring the entire infrastructure manually in the various products, the required environment is described as code, which is subject to versioning in the same way as the written program code.
This allows you to deploy the appropriate infrastructure for a particular version of a program by passing the description to an IaaC tool. This looks then, which of the infrastructure components do not exist yet, which perhaps must be changed the description to correspond, or which perhaps also deleted.
Terraform and Terragrunt have become the standard in many places, but there are also cloud-specific solutions such as Amazon's CloudFormation or Microsoft's Azure Resource Manager.
We can advise you on how to make your infrastructure more manageable with IaC, save costs and only have exactly the infrastructure you need.