Titulo Estágio
A new Pipeline-As-Code language
Áreas de especialidade
Engenharia de Software
Local do Estágio
Linda-a-Velha (Lisboa)
Enquadramento
OutSystems is revolutionising the way software applications are developed.
Using a visual programming language, the OutSystems platform allows developers to create state-of-the-art web and mobile applications, without having to worry about the complex technologies that implement those applications. Application development with OutSystems is much faster than with traditional software development methods and is being increasingly adopted all throughout the world.
The OutSystems platform itself is being developed in Portugal, by a R&D team of more than 100 engineers, using mainly C# but also other programming languages such as Java, Typescript, Javascript and the OutSystems visual language itself.
Central to the lives of these engineers is the process of continuous delivery of new features (and fixes) and the consequential re-building of the platform. The correct configuration of the build pipeline is essential for each R&D team to be able to validate the platform components that are under their responsibility. In order to empower teams to be autonomous, we need to give them full control over these build pipeline configurations.
Modern continuous delivery tools like Jenkins and GO CD support that kind of control through a feature called Pipeline as Code, which enables developers to define pipeline configurations using a pipeline description language. One problem with these approaches is that they are too tightly coupled to specific “tool vendors” and the pipeline description language is restricted to what the tool can offer out of the box through their common UI.
Continuous Delivery tools are evolving very fast. Because of that, OutSystems' challenge is twofold: on one hand we need to be able to hide from our Engineers the specificities of the toolset that is being used to support build pipelines; but on the other hand, we want to give our engineers a simple language that will allow them to have full control, flexibility and expressiveness for configuring their pipelines.
Objetivo
The main goal of this project is to define a new Domain Specific Language (specifically, a new “Pipeline As Code language”) that will enable OutSystems engineers to specify all aspects of their build pipeline, from the stages, jobs, dependencies, and artifacts, to the automatic creation and destruction of test environments.
Associated with that main goal is the need to investigate the state-of-the-art of Continuous Delivery tools, as well as the specific requirements of the OutSystems continuous delivery process.
The following are some of the high-level requirements that we believe the new language will need to satisfy, each of which should be analysed in detail during the project:
- The ability to describe different build pipelines used by each R&D team;
- The ability to support “code reuse” so that developers can reuse each others pipeline constructs;
- Support complex build pipeline definitions by composing modules defined in multiple source code files, according to each team’s needs.
- The most common pipeline jobs and constructs should be built-in the language;
- Should have native support for task parallelization;
- Should be very simple to use. Developers should be able to use it with the minimum knowledge of build pipeline concepts and without the need to know anything about the underlying CD system being used or details about the jobs implementation;
- Should be able to have language built-ins to deal with the managing (creating and destroying) the necessary agents needed to execute the jobs;
- Should be extensible.
If successful, this project will have a huge impact on the OutSystems product development process and on the daily lives of more than 100 software engineers.
Plano de Trabalhos - Semestre 1
1 - Analysis and understanding of the build pipeline being currently used by OutSystems R&D, its challenges, shortcomings and requirements. The deliverable should be a detailed problem definition report.
2 - Study the state-of-the-art of Pipeline as Code and textual Domain Specific Languages.
Plano de Trabalhos - Semestre 2
1 - Design the solution. Validate with OutSystems R&D developers.
2 - Prototype Implementation.
3 - Evaluate results.
4 - Write final project report.
Condições
O estagiário receberá uma bolsa de investigação para licenciados de acordo com as tabelas da Fundação Para a Ciência e Tecnologia. Poderá também ser atribuído um subsídio de transporte, cujo valor será definido caso a caso.
O estagiário terá as mesmas ferramentas de trabalho que qualquer outro Engenheiro da OutSystems, incluindo um laptop, e acesso total às instalações da OutSystems e todos os seus benefícios (cozinha, café, ténis de mesa, snooker, entre outros).
Orientador
Miguel Antunes
miguel.costa@outsystems.com 📩