News

Modern delivery for modern apps

Image

What is DevOps and why we need it

As a logical evolution of Agile methodologies applied for application development, and the requirement for higher automation, DevOps’ promises is to align developers (Dev) with Operations (Ops) teams. The ultimate aim is to think and prepare deployment as from the beginning of the cycle of app creation, and while shifting to the second half of the process, having operations (processes and infrastructure) embrace development agilities and constraints.

Along the DevOps journey, testing activities are pushed before in the process, and are continuously running to ensure higher quality and automated checks.

From experience and early adoption of DevOps in Fujitsu Luxembourg software factory, Yann Dagorn, Head of Managed Application Services, confirms that it is a real success factor for application development. DevOps reunites two worlds that were isolated in the past, generates better team collaboration and allows a synergy that leads to efficiency.

Among the reported benefits from the Fujitsu Luxembourg software factory, we identified a significant risk reduction, effortless deployments and straightforward application management, and sharing of responsibilities between stakeholders”, says Yann Dagorn.

Current challenges for DevOps

DevOps is not new. It has been developed and optimized over years, and embraced at different stages by companies.

What is new however is the fast evolution on Ops side linked to the emergence of Public cloud platforms, including Multi- and Hybrid- Cloud deployments.

Which means pragmatically that the software currently being built will be deployed on one target (such as a development environment in a public cloud), and then released for production on another target hosted in the customer datacenter.

This brings obviously challenges upstream: developers will have to take into consideration this homogeneity and prepare code to be deployed in the unknown.

Another challenge is the evolution on the Dev side, where best practices and modern architecture push for containerization and micro-services. This is indeed a good approach, improving code portability and maintainability, but the counterpart is the consequence of development frameworks. Each good software development team has put its own history and knowledge into a framework, which is leveraged from application to application, allowing reusing pieces of code that have been tested and proven. In the past, this framework was either built or reused, or source code has been copy pasted from projects to projects. Now, with micro-services, the shift is more to build framework as a service or set of services, and let it be consumed by applications. The shift tends to have a framework as a core application, with its own maintenance and roadmap. Which adds complexity regarding dependencies and version management.

Finally yet importantly, more and more projects are business driven, thus paid by the business. They also see more the economical or direct impact on their business activities, especially if an application crashes, get slower or has a defect. The need is to be able to directly link a technical failure to its business consequence, and ultimately its economic impact.

DevOps adoption in such context

As DevOps is a need and has been democratized, companies who do not have in-house DevOps experts rely more and more on integrated toolchains or packaged pipelines. They cannot afford to build a competence center or reinvent the wheel, and cannot afford either to stay behind in terms of agility, flexibility, and time to market.

As an example, financial services companies tend to adopt software factories approaches and best practices, as they need to internally have the needs and capabilities of a software factory to enable its business lines (core activity of the company) achieve its goals and provide its services to customers.

As this is the current state of the market, it is obvious to see that the skills gap might be wide in some cases, regarding DevOps skills, landscape knowledge and also public cloud selection and management.

Yannick Bruck, Fujitsu Luxembourg’s CTO, advises to “leverage the same standard tools adopted by experts (mainly coming from Open Source world such as Jenkins, Kubernetes, Istio, etc.) that have been made more integrated and more usable by non-experts. To name a few of them, we can think of the DevOps toolchains available on Azure or IBM Public Cloud, but also of integrated tools such as IBM Cloud Pak for Applications or even MultiCloud Management to help on automating the development and deployment of apps.

Some very good platforms have also integrated a full DevOps lifecycle, such as Red Hat Openshift container platform leveraging Docker, Kubernetes and Ansible.

Combined with one of those powerful continuous integration platform in charge of automated testing, code review, processes and deployments building, DevOps allows improving the quality of deliverables while reducing the burden of manual tasks.

Adopting the DevOps approach or adapting your existing toolchain will provide even higher results in a Hybrid- or Multi-cloud targets environment.