Commit 2b94e087a4fca0ee5f0c2709e9cf05025e8dc9c5

Authored by Rafael Reggiani Manzo
1 parent ff8bdf06

Create pipeline image

ieeeSW/releaseEng3/IEEE_ThemeIssue_ReleaseEng_CD.md
1   -# The Strategic Importance of Continuous Delivery
2   -
3   -## Abstract
4   -
5   -Many software development teams think of the operational aspects of Continuous
6   -Delivery (CD) and the competitive benefits that come along with it. For us, it
7   -was much more: it was a survival technique. This article presents the
8   -experience applying CD in a Brazilian Government project for the development of
9   -a Collaborative Development Environment (CDE), sharing its unconventional
10   -challenges and our strategies used to overcome them. This report from the
11   -trenches of the Brazilian Federal Government can help practitioners to
12   -understand how important the CD adoption is to their projects.
13   -
14   -## Introduction and Context
15   -
16   -We have worked on a Brazilian government three-year-long project to redesign an
17   -existing platform that had technical issues and a lack of political support.
18   -This evolution project started in a presidential election year and everyone
19   -involved were under Presidential re-election campaign pressure to show results.
20   -Even with the re-election of the Brazilian President, leadership in government
21   -agencies suddenly changed that reflected on the project’s requirements: each
22   -new leader wanted to fulfill their political agenda. In this scenario, delivery
23   -delays could have sunk the project into oblivion.
24   -
25   -From 2013 to 2016, our team developed the new platform for the Brazilian Public
26   -Software (SPB, Portuguese acronym) Portal (www.softwarepublico.gov.br). The SPB
27   -Portal has evolved to a CDE [1] and this evolution has brought important
28   -benefits not just to the Brazilian government, but also to society as a whole.
29   -For the government, the bureaucracy on using the same software across
30   -government agencies, duplicate works and costs all are reduced. The society
31   -gains a transparency and collaboration mechanism, since anyone can check the
32   -government expenses on software and contribute to the software communities. To
33   -achieve these goals, rather than writing everything from scratch, we have
34   -chosen to integrate free software tools such as Gitlab (www.gitlab.com),
35   -Mailman (www.gnu.org/software/mailman), Noosfero (www.noosfero.org), and
36   -Colab (www.github.com/colab).
37   -
38   -During the entire SPB Portal evolution project, we had to handle three distinct
39   -issues, usual in a software engineering scenario: reaching the goals which have
40   -guided the platform development, managing the diversity of team project
41   -members, and communicating effectively with clients (in this particular case,
42   -government agents). Managing the interaction of these elements was not easy and
43   -the unstable Brazilian political scenario only made things worse.
44   -
45   -To reach the SPB project goals, we had to overcome strong political bias
46   -tied with complicated technical issues and relatively low budget. Because it is
47   -open to the public, the government representatives have seen the platform as a
48   -marketing opportunity and have often ignored the technical advice in favor
49   -of political decisions. Furthermore, integrating a number of distinct systems
50   -to work seamlessly was not an easy job. We had to learn how each system worked
51   -and come up with ideas of how to integrate them as fast as possible, with a
52   -team of mostly inexperienced developers.
53   -
54   -We also had to manage the diversity of the SPB team members. This team was
55   -composed of approximately 50 undergraduate students (not all simultaneously)
56   -together with professors, masters students and professional designers as well
57   -as senior developers from the Brazilian free software community. Undergraduate
58   -students have received a fellowship and, for most of them, this R&D project was
59   -their first professional experience. Seniors developers and masters students
60   -had two important contributions to the project: transfer knowledge to
61   -undergraduate students and address hard tasks. Finally, professors were
62   -responsible for interacting with the Brazilian government and control the
63   -political pressures applied to the project.
64   -
65   -Our third point to be handled was the communication with the two independent
66   -groups of government representatives: requirements analysts and deployment
67   -technicians. Requirements analysts were the real representatives of the
68   -Brazilian government in the project. They usually tested new features, provided
69   -feedback, and reported for directors. The deployment technicians only had the
70   -access to the host machines wherein SPB platform was running. They were,
71   -theoretically, responsible for deploying the project. However, the new SPB
72   -Portal was composited from more than ten different software projects,
73   -generating a complex deploy process working on seven servers.
74   -
75   -Therefore, we realised that we needed to take control over the deployment
76   -process. We would use CD as a mean to keep the government satisfied and provide
77   -quick response times to their requests which were, most of the time, influenced
78   -by the uncertainties of project continuity. We believed that would keep the
79   -project alive even in an politically unstable and complex technical scenario.
80   -For that, during months we have worked to automate all the deploy process. For
81   -instance, we have created a tool called Shak (Self Hosting Applications Kit)
82   -that offers an application installation with only instruction. It aims to make
83   -the deploy process easier for users without technical knowledge, ensuring
84   -privacy and security for their Internet applications. Thereby, we created a
85   -specific team dedicated to the deployment process to mature our CD pipeline
86   -that would give us confidence to meet the government’s requirements faster and
87   -faster.
88   -
89   -We describe our CD pipeline and how it speeded up our software delivery time.
90   -The CD made us adaptable for all requested changes and helped us to mitigate
91   -those aforementioned political challenges besides the technical issues. Among
92   -CD’s known benefits[2], we also explain those that were the most important in
93   -the project scenario for us: improving customer satisfaction and making
94   -reliable releases. Both kept the project alive for more two years during the
95   -worst political crisis after the re-democratization in Brazil.
96   -
97   -## Our Continuous Delivery Pipeline
98   -
99   -[//]: # (TODO - Fazer a imagem. Sem esquentar muito a cabeça, uma vez que a revista deve refazer tal imagem)
100   -
101   -[//]: # (conjunto de features -> testes automatizados → criação de tag → empacotamento →deploy em homologação → testes de aceitação → deploy em produção)
102   -
103   -[//]: # (TODO - Rever essa frase - é uma legenda da imagem?)
104   -
105   -Figure X represents our CD pipeline. After each release, we have defined a set
106   -of features we would develop to comply with government’s requirements and then
107   -we have followed this pipeline.
108   -
109   -### Automated tests
110   -
111   -[//]: # (TODO - Rever a escrita desta ideia com mais calma)
112   -[//]: # (TODO - Adicionar que as mudanças no Colab quebravam todos os plugins.)
113   -[//]: # (https://www.linux.com/blog/learn/chapter/dev-ops/2017/7/devops-fundamentals-part-3-continuous-delivery-and-deployment)
114   -
115   -The SPB portal is composed of a set of FOSS systems. All of them have their own
116   -automated test suite. So, we encouraged the teams to keep unit tests coverage
117   -high for each system. We implemented the systems integration using a plugin
118   -architecture and wrote integration tests to check if they were working
119   -properly. The plugin architecture made the PSPB’s components decoupled. That
120   -allowed us to be confident that changes on one system would not affect others.
121   -This characteristic allowed the test execution of only the component with
122   -changes instead of the entire system.
123   -
124   -Our CD’s first step was to execute each system’s automated test suite. If any
125   -error was found, the pipeline stopped and the developers were notified. Only
126   -after all tests passed we move to preparing the release. Preparing a new
127   -release
128   -
129   -Our release system was divided into two perspectives: the application and the
130   -PSPB. The application tag refers to the specific feature or bug fix and is a
131   -monotonically increasing. A new tag on any system yielded a new PSPB tag.
132   -
133   -When all tests passed for a given component, we manually created a new
134   -application tag for it. As a consequence, that automatically created a new tag
135   -for the PSPB. Notice that we have forks of the original softwares and, as
136   -consequence, we had different tag values. Packaging
137   -
138   -The PSPB platform is running under the CentOS GNU/Linux distribution.
139   -Basically, packaging a software for that distribution has three steps: (1)
140   -write the script for the specific environment (RPM), (2) build the package, and
141   -(3) upload it to a package repository. We chose to package our components for
142   -several reasons:
143   -* Not all software was packaged by the community;
144   -* And those that existed were outdated;
145   -* Packaging makes it easy to manage the software on a given distribution;
146   -* It simplifies the deployment;
147   -* Packaging follows the distribution’s best practices and,
148   -* Allows configurations and permissions control.
149   -
150   -After creating a new tag for one component, the DevOps team was notified and
151   -packaging process began. In the normal case, the three packaging steps
152   -aforementioned are fully automated by a set of scripts. However, if the team
153   -reports to DevOps any eventual dependency change, the first step has to be
154   -manual. For instance, one system could start requiring another system to be
155   -initialized and that made necessary for someone to manually update the package
156   -script.
157   -
158   -After all these scripts have run successfully, the new packages would be ready
159   -to use by our subsequent deployment scripts.
160   -
161   -### Validation Environment
162   -
163   -[//]: # (TODO - Mencionar que a ferramenta era baseada em Chef - Dá um peso importante.)
164   -
165   -The Validation Environment (VE) is a replica of the Production Environment
166   -(PE), with two exceptions: only the government officers and us had access to it
167   -and all the data is anonymised. To configure the environment, we use a
168   -configuration management tool. That maintained environment consistency which
169   -makes the deployment process simpler. Additionally, the packages we built on
170   -the last step were readily available to use by the management tool.
171   -
172   -The VE was used by the government agents to validate new features and required
173   -changes. Also, the VE was useful to verify the integrity of the entire portal
174   -as part of the next step in the pipeline. Acceptance Tests
175   -
176   -After we completely deploy a new PSPB version in the VE, the government agents
177   -are responsible for checking features and/or bug fixes required by them. If the
178   -technicians identify a problem, they notify the developers, the problems are
179   -fixed and the pipeline restarts from scratch. If everything is validated, we
180   -move to production deployment. Production Deployment
181   -
182   -After the government authorizes the VE, we can finally begin the production
183   -deployment. We use the same configuration management tool with the same
184   -scripts. After the deploy is completed, both VE and PE are on the same state.
185   -The new features and bug fixes are finally available to end users.
186   -
187   -
188   -## Benefits
189   -
190   -We had to handle many tensions between development and political issues. Our CD
191   -pipeline gave us strong mechanisms to tackle most of the problems. As a result
192   -we came with some benefits from our decision to adopt CD.
193   -
194   -[//]: # (TODO - Melhorar título - Ideias: Response to mistrust)
195   -
196   -### Response to tensions
197   -
198   -[//]: # (TODO - Decisão do secretario acima do diretor)
199   -
200   -The direct benefit from the CD pipeline was the fast response to the changes
201   -required by the government. That was vital for the project’s renewal over the
202   -years. We could manage the tension between the government and the development
203   -team better. Every meeting with the government leader was delicate and resulted
204   -on many new requirements, most of them motivated by political needs. For
205   -example, once it was demanded a completely layout change because one director
206   -suddenly decided to make a marketing campaign about the portal. They would use
207   -undelivered requirements as a means to suggest the project’s cancellation. We
208   -believed that if we took too long to attend their demands, the project would
209   -end. CD helped us to move fast on deploying to production, even of smaller
210   -parts of the requirements. That way, we always had something to show on the
211   -meetings, reducing their eagerness to end the project. For our team, it made
212   -the developers more confident the project would last a little longer and they
213   -would not go looking for another jobs.
214   -
215   -### Build client’s trust
216   -
217   -After we established the CD, the government agents started to be more confident
218   -in our work. First, because they noticed that each new deploy made by us in the
219   -VE was stable and reliable. Second, they could see new features fast since we
220   -constantly updated the VE based on their feedback. This made our relation
221   -strong and in moments that needed quick action they would rather give us access
222   -to production.
223   -
224   -
225   -## Challenges
226   -
227   -We successfully built a functional CD pipeline. In the end, we took over the
228   -deployment process from the government. That allowed us to survive into an
229   -unstable political scenario. However, we recognized that many challenges still
230   -need to be addressed by the industry and academia together. Build CD from
231   -scratch
232   -
233   -Taking on CD responsibilities had a significant impact on the team. We did not
234   -have the know-how and had little time to come up with a working pipeline. To
235   -make things worse, we were not aware of how companies normally organized their
236   -teams to make CD feasible.
237   -
238   -[//]: # (TODO - Deixar uma abertura para uma eventual pesquisa)
239   -
240   -The seniors were crucial at this point. They came up with an initial solution
241   -to get us started. That already enabled us to automatize the deploy, even
242   -though the process was still rudimentary. We had to evolve our solution
243   -on-the-fly. We dedicated a few developers to this task.
244   -
245   -### Handling inexperienced teams
246   -
247   -After the developers learned how CD worked, it was difficult to pass the
248   -knowledge along to other teammates. We tried to mitigate this by encouraging a
249   -member's migration to the DevOps team. Further research on how to effectively
250   -spread knowledge across inexperienced developers in a scenario with a high
251   -turnover are needed.
252   -
253   -[//]: # (TODO - Refazer título abaixo - ideias: overcoming the challenges / overcoming the mistrust)
254   -
255   -### Building trust
256   -
257   -[//]: # (TODO - Deixar claro que government = os técnicos , análista ou agentes do governo, conforme for padronizado no texto)
258   -
259   -In the project’s first half we struggled with deploy related problems in the
260   -government structure. We were in a paradoxical situation. The government
261   -demanded speedy deliveries but would not give access to their production
262   -infrastructure. As an example, only in a very specific situation the government
263   -allowed us to access the PE. After some interactions with the government we
264   -convinced them to create the VE as an isolated replica of the PE in their own
265   -infrastructure. The government agents then realized that it could be good for
266   -the project if they granted us access to part of the structure since we could
267   -deliver new features to them faster. We believe it is required more research on
268   -development protocols and policies to improve the relation between industry and
269   -government, specially regarding CD.
270   -
271   -
272   -## References
273   -
274   -1. G. Booch, A. W. Brown, "Collaborative Development Environments, in Advances in Computers", vol. 59, 2003, pp. 1–27.
275   -1. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too", in IEEE Software, vol. 32, no. 2, 2015, pp. 50-54.
276   -1. P. Meirelles, M. Wen, A. Terceiro, R. Siqueira, L. Kanashiro, and H. Neri, "Brazilian Public Software Portal: an integrated platform for collaborative development", in Proceedings of the 13th International Symposium on Open Collaboration, 2017.
277   -
278   -
  1 +# The Strategic Importance of Continuous Delivery
  2 +
  3 +## Abstract
  4 +
  5 +Many software development teams think of the operational aspects of Continuous
  6 +Delivery (CD) and the competitive benefits that come along with it. For us, it
  7 +was much more: it was a survival technique. This article presents the
  8 +experience applying CD in a Brazilian Government project for the development of
  9 +a Collaborative Development Environment (CDE), sharing its unconventional
  10 +challenges and our strategies used to overcome them. This report from the
  11 +trenches of the Brazilian Federal Government can help practitioners to
  12 +understand how important the CD adoption is to their projects.
  13 +
  14 +## Introduction and Context
  15 +
  16 +We have worked on a Brazilian government three-year-long project to evolve an
  17 +existing platform that had technical issues and a lack of political support.
  18 +The evolution project started in a presidential election year and everyone
  19 +involved were under Presidential re-election campaign pressure to show results.
  20 +Even with the re-election of the Brazilian President in 2014, leadership in
  21 +government agencies suddenly changed, what was worsened by corruption scandals
  22 +revealed by the Brazilian Federal police, in particular the "Car-Wash"
  23 +investigation. That reflected on the project’s requirements: each new leader
  24 +wanted to fulfill their political agenda. In this scenario, delivery delays
  25 +could have sunk the project into oblivion.
  26 +
  27 +From 2014 to 2016, our team developed the new platform for the Brazilian Public
  28 +Software (SPB, Portuguese acronym) Portal (www.softwarepublico.gov.br) funded
  29 +by a grant of 2,619,965.00 BRL (about 1,000,000.00 USD in January 2014) from
  30 +the Federal Government. The SPB Portal has evolved to a CDE [1] and this
  31 +evolution has brought important benefits not just to the Brazilian government,
  32 +but also to society as a whole. For the government, the bureaucracy on using
  33 +the same software across government agencies, duplicate works and costs all are
  34 +reduced. The society gains a transparency and collaboration mechanism, since
  35 +anyone can check the government expenses on software and contribute to the
  36 +software communities. To achieve these goals, rather than writing everything
  37 +from scratch, we have chosen to integrate free software tools such as Gitlab
  38 +(www.gitlab.com), Mailman (www.gnu.org/software/mailman), Noosfero
  39 +(www.noosfero.org), and Colab (www.github.com/colab).
  40 +
  41 +During the entire SPB Portal evolution project, we had to handle three distinct
  42 +issues, usual in a software engineering scenario: reaching the goals which have
  43 +guided the platform development, managing the diversity of team project
  44 +members, and communicating effectively with clients (in this particular case,
  45 +government agents). Managing the interaction of these elements was not easy and
  46 +the unstable Brazilian political scenario only made things worse.
  47 +
  48 +To reach the SPB project goals, we had to overcome strong political bias
  49 +tied with complicated technical issues and relatively low budget. Because it is
  50 +open to the public, the government representatives have seen the platform as a
  51 +marketing opportunity and have often ignored the technical advice in favor
  52 +of political decisions. Furthermore, integrating a number of distinct systems
  53 +to work seamlessly was not an easy job. We had to learn how each system worked
  54 +and come up with ideas of how to integrate them as fast as possible, with a
  55 +team of mostly inexperienced developers.
  56 +
  57 +We also had to manage the diversity of the SPB team members. This team was
  58 +composed of approximately 50 undergraduate students (not all simultaneously)
  59 +together with professors, masters students and professional designers as well
  60 +as senior developers from the Brazilian free software community. Undergraduate
  61 +students have received a fellowship and, for most of them, this R&D project was
  62 +their first professional experience. Seniors developers and masters students
  63 +had two important contributions to the project: transfer knowledge to
  64 +undergraduate students and address hard tasks. Finally, professors were
  65 +responsible for interacting with the Brazilian government and control the
  66 +political pressures applied to the project.
  67 +
  68 +Our third point to be handled was the communication with the two independent
  69 +groups of government representatives: requirements analysts and deployment
  70 +technicians. Requirements analysts were the real representatives of the
  71 +Brazilian government in the project. They usually tested new features, provided
  72 +feedback, and reported for directors. The deployment technicians only had the
  73 +access to the host machines wherein SPB platform was running. They were,
  74 +theoretically, responsible for deploying the project. However, the new SPB
  75 +Portal was composited from more than ten different software projects,
  76 +generating a complex deploy process working on seven servers.
  77 +
  78 +Therefore, we realised that we needed to take control over the deployment
  79 +process. We would use CD as a mean to keep the government satisfied and provide
  80 +quick response times to their requests which were, most of the time, influenced
  81 +by the uncertainties of project continuity. We believed that would keep the
  82 +project alive even in a politically unstable and technically complex scenario.
  83 +For that, during months we have worked to automate all the deploy process. For
  84 +instance, we have created a tool based on Chef called Shak (Self Hosting
  85 +Applications Kit) that offers an application installation interface based only
  86 + on instruction. It aims to make the deployment process easier for users
  87 + without technical knowledge, ensuring privacy and security for their Internet
  88 + applications. Thereby, we created a specific team dedicated to the deployment
  89 + process to mature our CD pipeline that would give us confidence to meet the
  90 + government’s requirements faster and faster.
  91 +
  92 +We describe our CD pipeline and how it speeded up our software delivery time.
  93 +The CD made us adaptable for all requested changes and helped us to mitigate
  94 +those aforementioned political challenges besides the technical issues. Among
  95 +CD’s known benefits[2], we also explain those that were the most important in
  96 +the project scenario for us: improving customer satisfaction and making
  97 +reliable releases. Both kept the project alive for more two years during the
  98 +worst political crisis after the re-democratization in Brazil.
  99 +
  100 +## Our Continuous Delivery Pipeline
  101 +
  102 +[//]: # (TODO - Fazer a imagem. Sem esquentar muito a cabeça, uma vez que a revista deve refazer tal imagem)
  103 +
  104 +[//]: # (conjunto de features -> testes automatizados → criação de tag → empacotamento →deploy em homologação → testes de aceitação → deploy em produção)
  105 +
  106 +[//]: # (TODO - Rever essa frase - é uma legenda da imagem?)
  107 +
  108 +![Deployment Pipeline](figures/pipeline.png)
  109 +
  110 +Figure X represents our CD pipeline. After each release, we have defined a set
  111 +of features we would develop to comply with government’s requirements and then
  112 +we have followed this pipeline.
  113 +
  114 +### Automated tests
  115 +
  116 +[//]: # (TODO - Rever a escrita desta ideia com mais calma)
  117 +[//]: # (TODO - Adicionar que as mudanças no Colab quebravam todos os plugins.)
  118 +[//]: # (https://www.linux.com/blog/learn/chapter/dev-ops/2017/7/devops-fundamentals-part-3-continuous-delivery-and-deployment)
  119 +
  120 +The SPB portal is composed of a set of FOSS systems. All of them have their own
  121 +automated test suite. So, we encouraged the teams to keep unit tests coverage
  122 +high for each system. We implemented the systems integration using a plugin
  123 +architecture and wrote integration tests to check if they were working
  124 +properly. The plugin architecture made the PSPB’s components decoupled. That
  125 +allowed us to be confident that changes on one system would not affect others.
  126 +This characteristic allowed the test execution of only the component with
  127 +changes instead of the entire system.
  128 +
  129 +Our CD’s first step was to execute each system’s automated test suite. If any
  130 +error was found, the pipeline stopped and the developers were notified. Only
  131 +after all tests passed we move to preparing the release. Preparing a new
  132 +release
  133 +
  134 +Our release system was divided into two perspectives: the application and the
  135 +PSPB. The application tag refers to the specific feature or bug fix and is a
  136 +monotonically increasing. A new tag on any system yielded a new PSPB tag.
  137 +
  138 +When all tests passed for a given component, we manually created a new
  139 +application tag for it. As a consequence, that automatically created a new tag
  140 +for the PSPB. Notice that we have forks of the original softwares and, as
  141 +consequence, we had different tag values. Packaging
  142 +
  143 +The PSPB platform is running under the CentOS GNU/Linux distribution.
  144 +Basically, packaging a software for that distribution has three steps: (1)
  145 +write the script for the specific environment (RPM), (2) build the package, and
  146 +(3) upload it to a package repository. We chose to package our components for
  147 +several reasons:
  148 +* Not all software was packaged by the community;
  149 +* And those that existed were outdated;
  150 +* Packaging makes it easy to manage the software on a given distribution;
  151 +* It simplifies the deployment;
  152 +* Packaging follows the distribution’s best practices and,
  153 +* Allows configurations and permissions control.
  154 +
  155 +After creating a new tag for one component, the DevOps team was notified and
  156 +packaging process began. In the normal case, the three packaging steps
  157 +aforementioned are fully automated by a set of scripts. However, if the team
  158 +reports to DevOps any eventual dependency change, the first step has to be
  159 +manual. For instance, one system could start requiring another system to be
  160 +initialized and that made necessary for someone to manually update the package
  161 +script.
  162 +
  163 +After all these scripts have run successfully, the new packages would be ready
  164 +to use by our subsequent deployment scripts.
  165 +
  166 +### Validation Environment
  167 +
  168 +[//]: # (TODO - Mencionar que a ferramenta era baseada em Chef - Dá um peso importante.)
  169 +
  170 +The Validation Environment (VE) is a replica of the Production Environment
  171 +(PE), with two exceptions: only the government officers and us had access to it
  172 +and all the data is anonymised. To configure the environment, we use a
  173 +configuration management tool. That maintained environment consistency which
  174 +makes the deployment process simpler. Additionally, the packages we built on
  175 +the last step were readily available to use by the management tool.
  176 +
  177 +The VE was used by the government agents to validate new features and required
  178 +changes. Also, the VE was useful to verify the integrity of the entire portal
  179 +as part of the next step in the pipeline. Acceptance Tests
  180 +
  181 +After we completely deploy a new PSPB version in the VE, the government agents
  182 +are responsible for checking features and/or bug fixes required by them. If the
  183 +technicians identify a problem, they notify the developers, the problems are
  184 +fixed and the pipeline restarts from scratch. If everything is validated, we
  185 +move to production deployment. Production Deployment
  186 +
  187 +After the government authorizes the VE, we can finally begin the production
  188 +deployment. We use the same configuration management tool with the same
  189 +scripts. After the deploy is completed, both VE and PE are on the same state.
  190 +The new features and bug fixes are finally available to end users.
  191 +
  192 +
  193 +## Benefits
  194 +
  195 +We had to handle many tensions between development and political issues. Our CD
  196 +pipeline gave us strong mechanisms to tackle most of the problems. As a result
  197 +we came with some benefits from our decision to adopt CD.
  198 +
  199 +[//]: # (TODO - Melhorar título - Ideias: Response to mistrust)
  200 +
  201 +### Response to tensions
  202 +
  203 +[//]: # (TODO - Decisão do secretario acima do diretor)
  204 +
  205 +The direct benefit from the CD pipeline was the fast response to the changes
  206 +required by the government. That was vital for the project’s renewal over the
  207 +years. We could manage the tension between the government and the development
  208 +team better. Every meeting with the government leader was delicate and resulted
  209 +on many new requirements, most of them motivated by political needs. For
  210 +example, once it was demanded a completely layout change because one director
  211 +suddenly decided to make a marketing campaign about the portal. They would use
  212 +undelivered requirements as a means to suggest the project’s cancellation. We
  213 +believed that if we took too long to attend their demands, the project would
  214 +end. CD helped us to move fast on deploying to production, even of smaller
  215 +parts of the requirements. That way, we always had something to show on the
  216 +meetings, reducing their eagerness to end the project. For our team, it made
  217 +the developers more confident the project would last a little longer and they
  218 +would not go looking for another jobs.
  219 +
  220 +### Build client’s trust
  221 +
  222 +After we established the CD, the government agents started to be more confident
  223 +in our work. First, because they noticed that each new deploy made by us in the
  224 +VE was stable and reliable. Second, they could see new features fast since we
  225 +constantly updated the VE based on their feedback. This made our relation
  226 +strong and in moments that needed quick action they would rather give us access
  227 +to production.
  228 +
  229 +
  230 +## Challenges
  231 +
  232 +We successfully built a functional CD pipeline. In the end, we took over the
  233 +deployment process from the government. That allowed us to survive into an
  234 +unstable political scenario. However, we recognized that many challenges still
  235 +need to be addressed by the industry and academia together. Build CD from
  236 +scratch
  237 +
  238 +Taking on CD responsibilities had a significant impact on the team. We did not
  239 +have the know-how and had little time to come up with a working pipeline. To
  240 +make things worse, we were not aware of how companies normally organized their
  241 +teams to make CD feasible.
  242 +
  243 +[//]: # (TODO - Deixar uma abertura para uma eventual pesquisa)
  244 +
  245 +The seniors were crucial at this point. They came up with an initial solution
  246 +to get us started. That already enabled us to automatize the deploy, even
  247 +though the process was still rudimentary. We had to evolve our solution
  248 +on-the-fly. We dedicated a few developers to this task.
  249 +
  250 +### Handling inexperienced teams
  251 +
  252 +After the developers learned how CD worked, it was difficult to pass the
  253 +knowledge along to other teammates. We tried to mitigate this by encouraging a
  254 +member's migration to the DevOps team. Further research on how to effectively
  255 +spread knowledge across inexperienced developers in a scenario with a high
  256 +turnover are needed.
  257 +
  258 +[//]: # (TODO - Refazer título abaixo - ideias: overcoming the challenges / overcoming the mistrust)
  259 +
  260 +### Building trust
  261 +
  262 +[//]: # (TODO - Deixar claro que government = os técnicos , análista ou agentes do governo, conforme for padronizado no texto)
  263 +
  264 +In the project’s first half we struggled with deploy related problems in the
  265 +government structure. We were in a paradoxical situation. The government
  266 +demanded speedy deliveries but would not give access to their production
  267 +infrastructure. As an example, only in a very specific situation the government
  268 +allowed us to access the PE. After some interactions with the government we
  269 +convinced them to create the VE as an isolated replica of the PE in their own
  270 +infrastructure. The government agents then realized that it could be good for
  271 +the project if they granted us access to part of the structure since we could
  272 +deliver new features to them faster. We believe it is required more research on
  273 +development protocols and policies to improve the relation between industry and
  274 +government, specially regarding CD.
  275 +
  276 +
  277 +## References
  278 +
  279 +1. G. Booch, A. W. Brown, "Collaborative Development Environments, in Advances in Computers", vol. 59, 2003, pp. 1–27.
  280 +1. L. Chen, "Continuous Delivery: Huge Benefits, but Challenges Too", in IEEE Software, vol. 32, no. 2, 2015, pp. 50-54.
  281 +1. P. Meirelles, M. Wen, A. Terceiro, R. Siqueira, L. Kanashiro, and H. Neri, "Brazilian Public Software Portal: an integrated platform for collaborative development", in Proceedings of the 13th International Symposium on Open Collaboration, 2017.
  282 +
  283 +
... ...
ieeeSW/releaseEng3/figures/pipeline.dia 0 → 100644
No preview for this file type
ieeeSW/releaseEng3/figures/pipeline.png 0 → 100644

63.5 KB