Commit 7027cecdd93d7c9adf8c0316ecbfa1fe1723e8a3

Authored by Melissa Wen
2 parents 01222dd8 a3f537ad

[i3eSW] Remove first challenge; put explanation about SPB in the beginning of Pi…

…peline; fix some information conclicts
Showing 1 changed file with 170 additions and 175 deletions   Show diff stats
ieeeSW/releaseEng3/IEEE_ThemeIssue_ReleaseEng_CD.md
@@ -45,41 +45,44 @@ overcome them. @@ -45,41 +45,44 @@ overcome them.
45 45
46 ## Introduction 46 ## Introduction
47 47
48 -We worked on a thirty-month-long Brazilian government project to modernize the  
49 -Brazilian Public Software (SPB) portal (www.softwarepublico.gov.br) [1]. This  
50 -project, started in 2014, was a partnership between the Ministry of Planning,  
51 -Budget, and Management and two public universities: University of Brasília and  
52 -University of São Paulo. 48 +From 2014 to 2016, we were part of a team that worked on a thirty-month-long
  49 +Brazilian government project to modernize the Brazilian Public Software (SPB)
  50 +portal (www.softwarepublico.gov.br) [1]. This project was a partnership between
  51 +the Ministry of Planning, Budget, and Management and two public universities:
  52 +University of Brasília and University of São Paulo.
53 53
54 -With this partnership, the SPB portal evolved to a Collaborative Development 54 +During this time, the SPB portal evolved into a Collaborative Development
55 Environment (CDE) [2] which brought significant benefits for the government and 55 Environment (CDE) [2] which brought significant benefits for the government and
56 -the society. The government could minimize bureaucracy and costs of software  
57 -development, encouraging the use of the same set of applications across  
58 -different government agencies. The society gained a mechanism of transparency,  
59 -follow government expenses, and collaboration, contribute to project  
60 -communities. . 56 +the society: The government could minimize bureaucracy and software
  57 +development costs, by reusing the same set of applications across
  58 +different government agencies; society could more transparently
  59 +follow government expenses and contribute to project
  60 +communities.
61 61
62 In this article, we discuss the use of Continuous Delivery (CD) during our 62 In this article, we discuss the use of Continuous Delivery (CD) during our
63 experience as the academic partner in this project. We focus on how we managed 63 experience as the academic partner in this project. We focus on how we managed
64 to implement CD in a large institution with traditional values and how CD 64 to implement CD in a large institution with traditional values and how CD
65 helped to build trust between the government and the university development 65 helped to build trust between the government and the university development
66 -team. CD enabled us to show our progress and earned the government’s confidence 66 +team. CD enabled us to show our progress and to earn the government’s confidence
67 that we could adequately fulfill their requests, becoming an essential aspect 67 that we could adequately fulfill their requests, becoming an essential aspect
68 of our interaction with them. According to this experience, the use of CD as a 68 of our interaction with them. According to this experience, the use of CD as a
69 tool to build such trust relationships is yet another of its benefits [3]. 69 tool to build such trust relationships is yet another of its benefits [3].
70 70
71 ## Context 71 ## Context
72 72
  73 +<!-- Avaliar se a descrição técnica sobre SPB não deveria vim aqui -->
73 SPB is a governmental program created to foster sharing and collaboration on 74 SPB is a governmental program created to foster sharing and collaboration on
74 Open Source Software (OSS) development for the Brazilian public administration. 75 Open Source Software (OSS) development for the Brazilian public administration.
75 -For their projects, the Ministry managed both software requirements and server 76 +In their own projects, the Ministry managed both software requirements and server
76 infrastructure. However, its hierarchical and traditional processes made them 77 infrastructure. However, its hierarchical and traditional processes made them
77 unfamiliar with new software development techniques, such as CD. Any of our 78 unfamiliar with new software development techniques, such as CD. Any of our
78 -requests had to pass through layers of bureaucracy before being answered,  
79 -accessing their infrastructure to perform a deploy was not different. 79 +requests had to pass through layers of bureaucracy before being answered;
  80 +accessing their infrastructure to deploy updated software was not different.
  81 +The difficulties were aggravated because the new SPB portal is an unprecedented
  82 +platform in the Brazilian government, with a complicated deployment process.
80 83
81 -During its lifetime, the project suffered significant interference from the  
82 -board of directors because the portal represents an interface between 84 +The project suffered significant interference from the
  85 +board of directors throughout time because the portal represents an interface between
83 government and society. In light of political interests, directors continually 86 government and society. In light of political interests, directors continually
84 imposed changes to the platform while ignoring our technical advice. In 2015, 87 imposed changes to the platform while ignoring our technical advice. In 2015,
85 the board of directors was changed and, with it, the vision of the project. New 88 the board of directors was changed and, with it, the vision of the project. New
@@ -90,142 +93,136 @@ requirements previously approved. @@ -90,142 +93,136 @@ requirements previously approved.
90 mudar em todas as ocorrências de agents por staff, mas checar com o Fabio. 93 mudar em todas as ocorrências de agents por staff, mas checar com o Fabio.
91 --> 94 -->
92 95
93 -In this context, we overcame three distinct challenges: (1) finding a system  
94 -solution with which government and development team agree, (2) deconstructing 96 +In this context, we overcame three distinct challenges: (1) deconstructing
95 the widespread belief among government staff that any project in partnership 97 the widespread belief among government staff that any project in partnership
96 -with a University is doomed to fail, and (3) dealing with bureaucracies  
97 -involved in the deployment process by the Ministry. 98 +with a University is doomed to fail, and (2) dealing with bureaucracies
  99 +involved in the deployment process.
  100 +<!-- Melissa: Acho que no segundo, seria bom falar: lidar com a aritmia que as burocracias do governo causavam ao nosso processo de deploy? -->
  101 +
  102 +<!-- TODO:
  103 +sugestão: Tira o primeiro challenge e acrescenta um texto no final desta
  104 +seção dizendo "no final deu tudo certo: construímos uma ferramenta modular
  105 +(inclui o conteúdo do parágrafo sobre o primeiro challenge) com uma equipe
  106 +heterogênea (coloca a descrição das pessoas) e chegamos a um pacote com
  107 +7 ferramentas blah blah blah
  108 +-->
98 109
99 -To face the first issue, we designed the SPB portal as a CDE with additional  
100 -social features. Due to the complexity of creating such a system from scratch,  
101 -we decided to adapt and integrate existing OSS tools to build a  
102 -system-of-systems [4]. We created a solution that orchestrates multiple  
103 -components and allowed us to smoothly provide a unified interface for final  
104 -users, including single sign-on and global searches [1]. On top of that, the  
105 -new SPB portal was an unprecedented platform to the Brazilian government, with  
106 -a complicated deployment process. 110 +Firstly, our team was not from a typical company, consisting mainly of
  111 +undergraduate students coordinated by two professors. Accordingly, time and
  112 +resources allocation, accountability, and team continuity might be construed
  113 +as "unprofessional". On the government side, the SPB portal evolution was the
  114 +first software development collaboration between universities and the Ministry
  115 +staff involved, raising disbelief.
107 116
  117 +Secondly, our team approached software deployment differently from the Ministry.
  118 +We believed frequent delivery is better for the project’s success. In contrast,
  119 +the Ministry is used to the idea of a single deployment at the end of the
  120 +project, and neither their bureaucratic structure nor their technical expertise
  121 +were conductive with this style of work. That ended up hampering the benefits of
  122 +the tool and preventing us from showing off the fruits of the project to those
  123 +responsible for evaluating it.
108 124
109 -Regarding the second problem, our team was not from a typical company,  
110 -consisting mainly of undergraduate students coordinated by two professors. In  
111 -the first year, we had a group composed of 24 undergraduate students, one  
112 -designer, and two senior developers. In 2015, our team grew to 36 students, two  
113 -designers, eight senior developers. In the end, due to budget constraints, our  
114 -team shrinked to 20 students, one designer, and two developers. On the  
115 -government side, the SPB portal evolution was the first software development  
116 -collaboration between university and government experienced by the Ministry  
117 -staff involved in the project.  
118 -  
119 -Finally, our team thought software deployment differently than the Ministry. On  
120 -our side, we believe that frequent deliveries are better for the project’s  
121 -success. However, the Ministry works with the idea of a single deployment at  
122 -the end of the project. In other words, neither the bureaucratic structure of  
123 -the Ministry nor its technical abilities were conducive to this style of work.  
124 -Furthermore, there was little effort to deploy new versions of the system  
125 -promptly. That ended up hampering the benefits of the tool and preventing us  
126 -from showing off the fruits of the project to those responsible for evaluating  
127 -it. 125 +<!-- Melissa: tentar dividir esse último parágrafo em 2? Tá cansativo ler ele todo - não consigo respirar :P -->
128 126
129 These challenges made our relationship with the Ministry staff tense, in 127 These challenges made our relationship with the Ministry staff tense, in
130 particular during the first year, and alerted us to the fact that they could 128 particular during the first year, and alerted us to the fact that they could
131 finish the project at any time. The deployment limitation was the substantial 129 finish the project at any time. The deployment limitation was the substantial
132 technical issue we could tackle in the short term. As a result, we worked to 130 technical issue we could tackle in the short term. As a result, we worked to
133 deploy one version of the project onto our infrastructure and showed it to the 131 deploy one version of the project onto our infrastructure and showed it to the
134 -government evaluators. This strategy proved them we could efficiently deliver 132 +government evaluators. This strategy proved them we could efficiently provide
135 new features, fulfill their expectations regarding the delivery of the 133 new features, fulfill their expectations regarding the delivery of the
136 -requirements, and incited them to demand that the latest version be deployed in 134 +requirements, and incited them to demand the latest version to be deployed in
137 the Ministry infrastructure. This generated more pressure on the IT department 135 the Ministry infrastructure. This generated more pressure on the IT department
138 responsible for the deployment routines. With each CD cycle, we gradually built 136 responsible for the deployment routines. With each CD cycle, we gradually built
139 a new relationship among all parties and, by the end of the project, we became 137 a new relationship among all parties and, by the end of the project, we became
140 active participants in the deploy operations. 138 active participants in the deploy operations.
141 139
  140 +<!--
  141 +In
  142 +the first year, we had a group composed of 24 undergraduate students, one
  143 +designer, and two senior developers. In 2015, our team grew to 36 students, two
  144 +designers, eight senior developers. In the end, due to budget constraints, our
  145 +team shrinked to 20 students, one designer, and two developers.
  146 +-->
142 ## Our Continuous Delivery Pipeline 147 ## Our Continuous Delivery Pipeline
143 148
144 -The SPB portal is a system-of-systems with five integrated software projects.  
145 -Colab (www.github.com/colab), a systems integration platform for web  
146 -applications based on a plugin architecture, orchestrates communication  
147 -among them. For this, we had also to develop specific plugins for each portal  
148 -software component. 149 +SPB portal was designed as a CDE with additional social features. Due to the
  150 +complexity of creating such a system from scratch, we decided to build
  151 +system-of-systems, adapting and integrating five existing OSS projects - Colab,
  152 +Noosfero, Gitlab, Mezuro, and Mailman. All integrated system represents a total
  153 +of more than XXX.XXX commits and X.XXX.XXX lines of code. We created a solution
  154 +that orchestrates multiple components and allowed us to smoothly provide a
  155 +unified interface for final users, including single sign-on and global searches [1].
149 156
150 -<!--- Falta dados do Colab e a soma destes ao total ---> 157 +<!--
  158 +Melissa: avaliar se esse detalhamento é necessário para o texto
151 These software component have different levels of complexity and size. Colab 159 These software component have different levels of complexity and size. Colab
152 has had X commits which represent Y lines of code, Gitlab, 64.446 commits and 160 has had X commits which represent Y lines of code, Gitlab, 64.446 commits and
153 502.597 lines, Noosfero, 14.175 commits and 607.490 lines, Mezuro, 9.007 commits 161 502.597 lines, Noosfero, 14.175 commits and 607.490 lines, Mezuro, 9.007 commits
154 and 217.828 lines, and, finally, Mailman with 19.101 commits and 180.871 lines. 162 and 217.828 lines, and, finally, Mailman with 19.101 commits and 180.871 lines.
155 We can thus realize, with only the sum of the integrated projects, we have a 163 We can thus realize, with only the sum of the integrated projects, we have a
156 platform that totals more than 106.729 commits and 1.508.786 lines of code. 164 platform that totals more than 106.729 commits and 1.508.786 lines of code.
  165 +-->
157 166
158 ![The SPB Deployment Pipeline](figures/pipeline_3.png) 167 ![The SPB Deployment Pipeline](figures/pipeline_3.png)
159 168
160 -Figure 1 presents our CD pipeline. It follows a typical deployment pipeline  
161 -[3], adapted to the technical and organizational complexity of our project and the  
162 -use of OSS best practices. The pipeline started when new code arrived. A new  
163 -feature might require changes to more than one SPB integrated software project.  
164 -Notice that each one of them could be modified independently. As the code went  
165 -through each step, it was tested and improved until it finally reached the 169 +Figure 1 presents our CD pipeline. It follows a typical deployment pipeline [3],
  170 +adapted to the technical and organizational context of our project and the use
  171 +of OSS best practices. The pipeline started when new code arrived. As the code
  172 +went through each step, it was tested and improved until finally reaching the
166 production environment. At this point, we would restart the pipeline to release 173 production environment. At this point, we would restart the pipeline to release
167 -more versions. 174 +new versions.
168 175
169 <!--- 176 <!---
170 Comentário do Fábio: A partir daqui o texto já deveria mostrar o tamanho da plataforma e trazer dados que comprovem isso. 177 Comentário do Fábio: A partir daqui o texto já deveria mostrar o tamanho da plataforma e trazer dados que comprovem isso.
171 -  
172 -https://www.openhub.net/p/gitlab  
173 -https://www.openhub.net/p/noosfero  
174 -https://www.openhub.net/p/mezuro  
175 -https://www.openhub.net/p/mailman  
176 -  
177 -  
178 --> 178 -->
179 179
180 ### Automated Tests 180 ### Automated Tests
181 181
182 -As a software integration, the entire SPB platform, as well as each of its  
183 -components need to be tested. Futhermore, the plugins developed to integrate a  
184 -component has its own test suite, and this also work as integration tests.  
185 -  
186 -Both unit and integration tests provided us the performance and security needed  
187 -to guarantee the stability of components and the platform. If any test suite  
188 -failed, by either a test error or coverage reduction below a certain threshold,  
189 -the process stopped. Only when all tests passed, the pipeline proceeded to the  
190 -step of release preparation. 182 +Each integrated system had to be tested with its own test suite. This was not
  183 +enough, however: we also had to test the platform as a whole. Given that the
  184 +plugins also have their own test suites and these suites assume a double role as
  185 +both plugin tests and as integration tests. These tests provided us the
  186 +performance and security needed to guarantee the stability of components and
  187 +the platform. If any test suite failed, by either a test error or coverage
  188 +reduction below a certain threshold, the process stopped. Only when all tests
  189 +passed, the pipeline proceeded to the step of release preparation.
191 190
192 ### Preparing a New Release 191 ### Preparing a New Release
193 192
194 -An SPB portal release was composed of all its software component releases.  
195 -Each software component release had a Git tag that referred to a specific  
196 -feature or bug fix. When all tests passed for a given component, we manually  
197 -created a new tag for it. Therefore, a new tag on any software component  
198 -yielded a new SPB portal release. More precisely, SPB had a script that  
199 -produced a single release for the entire system based on each component tag. At  
200 -the end of this process, we started packaging. 193 +Each software component was hosted in a separate Git repository. A new release
  194 +of a component was tagged with a reference to a specific new feature or bug fix.
  195 +SPB, as an integration project, had its own Git repository. An SPB portal
  196 +release was an aggregate of releases of all of its components. When a new
  197 +component release passed all of the SPB integration tests, we manually created a
  198 +corresponding new tag in its repository. Therefore, a new tag on any software
  199 +component yielded a new SPB portal release. At the end of this process, we
  200 +started packaging.
201 201
202 ### Packaging 202 ### Packaging
203 203
204 -The platform runs on the CentOS 7 GNU/Linux distribution. Packaging a software 204 +The platform runs on the CentOS 7 GNU/Linux distribution. Packaging software
205 for that distribution involves three steps: writing the script for the specific 205 for that distribution involves three steps: writing the script for the specific
206 environment (RPM), building the package, and uploading it to a package 206 environment (RPM), building the package, and uploading it to a package
207 repository. 207 repository.
208 208
209 -We decided to create separate packages for each software component since:  
210 -Packaging makes easy to manage the software on a given distribution,  
211 -simplifies the deployment, follows the distribution's best practices, and  
212 -enables configurations and permissions control. 209 +We decided to create separate packages for each software component.
  210 +Packaging makes it easy to manage software in a given distribution,
  211 +simplifies deployment, follows the distribution's best practices, and
  212 +enables configuration and permission control.
213 213
214 After creating a new tag for a component, the developers informed our DevOps 214 After creating a new tag for a component, the developers informed our DevOps
215 -[6] team, and the packaging process began. A set of scripts fully automated the  
216 -three packaging steps aforementioned. When all them ran successfully, the new  
217 -packages would be ready for our deployment scripts. 215 +[6] team and the packaging process began. A set of scripts fully automated the
  216 +three packaging steps aforementioned. When all of them ran successfully, the new
  217 +packages would be ready and available for our deployment scripts.
218 218
219 ### Validation Environment Deployment 219 ### Validation Environment Deployment
220 220
221 The Validation Environment (VE) is a replica of the Production Environment (PE) 221 The Validation Environment (VE) is a replica of the Production Environment (PE)
222 -with its data anonymised, as well as only Ministry staffs and our DevOps team  
223 -had access to it. To configure the environment, we used a configuration  
224 -management tool named Chef (www.chef.io) with Chake support  
225 -(www.github.com/terceiro/chake) -- a serverless configuration tool created by  
226 -our team. It maintained environment consistency simplifying the deployment  
227 -process. Additionally, the packages we built on the last step were readily  
228 -available to the management tool. 222 +with anonymised data, and access restricted to Ministry staff and our DevOps team.
  223 +To configure this environment, we used Chef (www.chef.io) and Chake, a serverless
  224 +configuration tool created by our team (www.github.com/terceiro/chake). This
  225 +maintained environment consistency, simplifying the deployment process.
229 226
230 The Ministry staff used the VE to validate new features and required changes. 227 The Ministry staff used the VE to validate new features and required changes.
231 The VE also was used to verify the integrity of the entire portal as part of 228 The VE also was used to verify the integrity of the entire portal as part of
@@ -233,19 +230,18 @@ the next step in the pipeline. @@ -233,19 +230,18 @@ the next step in the pipeline.
233 230
234 ### Acceptance Tests 231 ### Acceptance Tests
235 232
236 -After we deployed a new SPB portal version in the VE, the Ministry staffs were  
237 -responsible for checking the features and bug fixes they required. If the  
238 -Ministry staffs identified a problem, they would notify the developers via  
239 -comments on the SPB portal's issue tracker. The development team fixed the  
240 -problem and the pipeline restarted. If everything was validated, we moved  
241 -forward. 233 +After a new SPB portal deployment in the VE, the Ministry were
  234 +responsible for checking the required features and bug fixes. If they
  235 +identified a problem, they would notify the developers via
  236 +comments on the SPB portal's issue tracker, prompting the team to fix
  237 +it and restart the pipeline. Otherwise, we could move forward.
242 238
243 ### Production Environment Deployment 239 ### Production Environment Deployment
244 240
245 -When the Ministry staff finished the VE check, we could finally begin the  
246 -deployment in production. We also used our configuration management tool, the  
247 -same scripts and package versions as in the VE. After the deploy was completed,  
248 -both VE and PE were identical. Here was the point where new features and bug 241 +After the VE check, we could finally begin the
  242 +deployment in the PE, with the same configuration management tool,
  243 +scripts, and package versions as in the VE. After the deploy was completed,
  244 +both VE and PE were identical. At that point, new features and bug
249 fixes were finally available to end users. 245 fixes were finally available to end users.
250 246
251 ## Benefits 247 ## Benefits
@@ -257,56 +253,53 @@ Working with the government, we noticed the following additional benefits. @@ -257,56 +253,53 @@ Working with the government, we noticed the following additional benefits.
257 253
258 ### Strengthening Trust in the Relationship with the Government 254 ### Strengthening Trust in the Relationship with the Government
259 255
260 -CD helped to strengthen trust in the relationship between developers and  
261 -Ministry staffs. Before using CD, Ministry staff had access to the features  
262 -developed only at the end of the release, usually every four months.  
263 - 256 +CD helped strengthen trust in the relationship between developers and
  257 +the Ministry staff. Before using CD, they had access to the features
  258 +developed only at the end of the release cycle, usually every four months.
264 With the implementation of CD, intermediate and candidate versions became 259 With the implementation of CD, intermediate and candidate versions became
265 -available, allowing Ministry staffs to perform small validations over time. 260 +available, allowing them to perform small validations over time.
266 Constant monitoring of the development work brought greater security to the 261 Constant monitoring of the development work brought greater security to the
267 -Ministry leaders and improved the interactions with our development team. 262 +Ministry leaders and improved the interactions with our team.
268 263
269 ### Responsiveness to Change 264 ### Responsiveness to Change
270 265
271 Responsiveness was one of the direct benefits of adopting the CD pipeline. The 266 Responsiveness was one of the direct benefits of adopting the CD pipeline. The
272 -ability to react quickly to changes requested by the Ministry staff was vital  
273 -to the project’s survival for 30 months. Every meeting with the Ministry  
274 -leaders resulted in requirements and priorities changes, several of them  
275 -motivated by political needs. We observed that if we took too long to meet  
276 -their demands, the Ministry would use undelivered requirements to justify cut  
277 -in the financial support and cancel the project. 267 +ability to react quickly to changes requested by the Ministry was vital to the
  268 +project’s survival for 30 months. These changes in requirements and priorities
  269 +were mostly motivated by political interests. We noticed that if we took too
  270 +long to meet their demands, they would threaten to reduce financial support and
  271 +even cancel the project.
278 272
279 CD helped us keep the PE up-to-date, even with partial versions of a feature. 273 CD helped us keep the PE up-to-date, even with partial versions of a feature.
280 -That way, we always had something to show on meetings, reducing anxiety in  
281 -getting the platform finished. For our team, it made the developers more 274 +Therefore, we always had something to show on meetings, easying their
  275 +concerns about the final delivery of the platform.
  276 +For our team, CD made developers more
282 confident that the project would last a little longer. 277 confident that the project would last a little longer.
283 278
284 ### Shared Responsibility 279 ### Shared Responsibility
285 280
286 According to the conventional Ministry process, the development team could not 281 According to the conventional Ministry process, the development team could not
287 -track what happened to the code after its delivery, since Ministry staff were 282 +track what happened to the code after its delivery, since their staff were
288 the only ones responsible for deployment. The implementation of CD made our 283 the only ones responsible for deployment. The implementation of CD made our
289 development team feel equally responsible for what was getting into production 284 development team feel equally responsible for what was getting into production
290 and take ownership of the project. 285 and take ownership of the project.
291 286
292 Interestingly, the CD pipeline had the same effect on the Ministry staff. They 287 Interestingly, the CD pipeline had the same effect on the Ministry staff. They
293 became more engaged in the whole process, opening and discussing issues during 288 became more engaged in the whole process, opening and discussing issues during
294 -platform evolution. Additionally, developers worked to improve the CD pipeline  
295 -to speed up the process of making new features available in the production  
296 -environment for the Ministry staff's validation.  
297 -  
298 -  
299 -### Synchronicity Between Government and Development  
300 -  
301 -The CD pipeline performance depended on the synchronicity between our  
302 -development team and the Ministry staffs so that the latter were prepared to  
303 -start a step as soon as the former concluded the previous step and vice versa.  
304 -Initially, the agenda of the Ministry staffs did not contemplate this concern,  
305 -which generated delays in the validation of new features. This situation  
306 -combined with governmental bureaucracy to release access to the production  
307 -environment (up to 3 days) resulted in additional delays for the deployment  
308 -step begin. This problem was softened when the Ministry staff realized the  
309 -impact of these delays on the final product and decided to allocate the 289 +the evolution of the platform. Additionally, developers worked to improve the CD pipeline
  290 +and speed up the process of making new features available in the production
  291 +environment.
  292 +
  293 +### Synchronization Between Government and Development
  294 +
  295 +The CD pipeline performance depended on the synchronization between our
  296 +development team and the Ministry staff: each party had to be prepared to
  297 +take action as soon as the other concluded a given task.
  298 +Initially, the Ministry staff did not contemplate this in their schedule which,
  299 +combined with the bureaucracy in providing access to the PE
  300 +(up to 3 days), resulted in significant delays in the validation of new features.
  301 +This problem was softened when they realized the
  302 +impact of these delays on the final product and decided to allocate
310 revisions in their work schedule. 303 revisions in their work schedule.
311 304
312 <!--- 305 <!---
@@ -316,15 +309,14 @@ Fabio sugeriu Lessons Learned, mas vamos mostrar exemplos da revista para ele ol @@ -316,15 +309,14 @@ Fabio sugeriu Lessons Learned, mas vamos mostrar exemplos da revista para ele ol
316 ## Lessons Learned 309 ## Lessons Learned
317 310
318 Due to the successful building of the CD pipeline, we improved the Ministry 311 Due to the successful building of the CD pipeline, we improved the Ministry
319 -deployment process and kept the project alive. We map now lessons learned. 312 +deployment process and kept the project alive. We now look at the lessons learned.
320 313
321 ### Build CD From Scratch 314 ### Build CD From Scratch
322 315
323 -Taking on responsibilities for implementing CD impacted on the whole team.  
324 -Mostly, our team members did not have know-how in this approach, and we had few  
325 -working hours available to allocate for building the pipeline. The construction  
326 -and maintenance of the CD process were possible by taking some decisions to  
327 -mature the project: 316 +Taking on the responsibility for implementing CD impacted the whole team.
  317 +Most of our team members did not have CD know-how and we had few
  318 +working hours available to build the pipeline. The construction
  319 +and maintenance of the CD process were made possible by the key decisions to:
328 320
329 <!--- 321 <!---
330 pensar em generalizar/filosofar 322 pensar em generalizar/filosofar
@@ -332,53 +324,56 @@ pensar em generalizar/filosofar @@ -332,53 +324,56 @@ pensar em generalizar/filosofar
332 324
333 1. _Select the most experienced senior developers and some advanced students of 325 1. _Select the most experienced senior developers and some advanced students of
334 the project to work on a specific DevOps team._These senior developers used 326 the project to work on a specific DevOps team._These senior developers used
335 -their experiences in OSS projects to craft an initial proposal for the 327 +their experience in OSS projects to craft an initial proposal for the
336 deployment process. The solution enabled us to automate the deployment, even 328 deployment process. The solution enabled us to automate the deployment, even
337 though the process was, initially, still rudimentary. 329 though the process was, initially, still rudimentary.
338 330
339 2. _Interchange team members and encourage teammates to migrate to the DevOps 331 2. _Interchange team members and encourage teammates to migrate to the DevOps
340 -team._ The benefits of these movements were twofold: mitigating the difficulty  
341 -to transmit the knowledge between DevOps developers and feature developers, and 332 +team._ The benefits were twofold: mitigating the difficulty
  333 +in sharing knowledge between DevOps developers and feature developers, and
342 evolving the process on-the-fly. 334 evolving the process on-the-fly.
343 335
344 ### Overcoming Mistrust 336 ### Overcoming Mistrust
345 337
346 -Taking an unfamiliar approach requires trust. In the Ministry, traditional  
347 -software was the product delivered at the end of a development contract. They  
348 -expected and were prepared to validate and deploy a single delivery. Because  
349 -the SPB portal is a system-of-systems, the steady growth of its complexity made  
350 -large deliveries unsustainable. The long time for homologation of developed  
351 -features also gave the government room to change requirements and priorities.  
352 -The CD approach was necessary, but how to build trust and gain autonomy to  
353 -implement a process that was not yet part of the dynamics of the Ministry? 338 +<!-- Precisa 'dessuavizar' o porque das mudanças de requisitos - a motivação para ela não era tão natural como as que ocorrem em métodos ágeis -->
  339 +Taking an unfamiliar approach requires trust. In the Ministry, traditionally,
  340 +software was the product delivered at the end of a development contract; they
  341 +expected and were prepared to validate and deploy a single deliverable. This
  342 +was not adequate for the SPB: because the SPB portal is a system-of-systems,
  343 +the steady growth of its complexity made large deliveries unsustainable; the
  344 +fluid nature of how people use and interact with it brings the need to change
  345 +requirements and priorities. Therefore, the CD approach was necessary, but how
  346 +to build trust and gain autonomy to implement a process that was not yet part
  347 +of the dynamics of the Ministry?
354 348
355 1. _Demonstrate actual results, do not simply tell._ Initially, we did not have 349 1. _Demonstrate actual results, do not simply tell._ Initially, we did not have
356 access to the Ministry infrastructure, so we created our own validation 350 access to the Ministry infrastructure, so we created our own validation
357 -environment. Thus, we were able to follow the CD pipeline until the stage of 351 +environment. Thus, we were able to follow the CD pipeline until
358 production deployment, when we faced two problems. First, our pace of 352 production deployment, when we faced two problems. First, our pace of
359 -intermediate deliveries to the government was faster than the deployment in 353 +intermediate deliveries to the government was faster than the deployment to
360 production by the Ministry staff. Second, specific issues of the Ministry 354 production by the Ministry staff. Second, specific issues of the Ministry
361 infrastructure made some validated features not work as expected in the PE. 355 infrastructure made some validated features not work as expected in the PE.
362 -That situation gave us arguments to negotiate access to production. 356 +That situation gave us arguments to negotiate access to the PE.
363 357
364 2. _Make project management transparent and collaborative for government 358 2. _Make project management transparent and collaborative for government
365 -staff._ Allowing the Ministry staff to follow our process for version  
366 -deliveries and bug fixes, we showed them we were fulfilling our commitments.  
367 -They started to interact more actively in the generation of versions and became  
368 -part of the process. After understanding the process, the Ministry staff helped  
369 -us in negotiations with the Ministry leaders. Finally, they created a VE as an  
370 -isolated replica of the PE and gave us access to it.  
371 -  
372 -3. _Gain the confidence of government staff._ With the replica of the PE, we  
373 -were able to run the entire pipeline and won the trust of the Ministry staff 359 +staff._ Allowing the Ministry staff to track our development process showed them
  360 +we were fulfilling our commitments. They started to interact more actively in
  361 +the generation of versions and became involved in the CD. After understanding it,
  362 +the Ministry staff helped us negotiate access to a VE with the Ministry leaders,
  363 +creating as an isolated replica of the PE.
  364 +
  365 +3. _Gain the confidence of government staff._ With the PE replica, we
  366 +were able to run the entire pipeline and win the trust of the Ministry staff
374 involved in the process. They saw the mobilization and responsiveness of our 367 involved in the process. They saw the mobilization and responsiveness of our
375 -team to generate a new version package. They also recognized the quality of our  
376 -packages and our deployment process. Finally, the Ministry staff then realized  
377 -that it could be beneficial for the project if they granted us access to the 368 +team to generate each new version package. They also recognized the quality of our
  369 +work and deployment process. In the end, the Ministry staff realized
  370 +that it would be beneficial for the project if they granted us access to the
378 infrastructure, both VE and PE. 371 infrastructure, both VE and PE.
379 372
380 <!--- 373 <!---
381 -Paulo: Acho que precisamos de algo ligado ao Ha-Ha-moment para fechar o texto aqui; ou fechar falando que tudo foi feito de forma aberta e colaborativa com as comunidades dos projetos envolvidos, estão todos os fontes disponíveis em https://softwarepublico.gov.br/gitlab/softwarepublico/ 374 +Paulo: Acho que precisamos de algo ligado ao Ha-Ha-moment para fechar o texto aqui; ou fechar falando que tudo foi feito de forma aberta e colaborativa com as comunidades dos projetos envolvidos, estão todos os fontes disponíveis em https://softwarepublico.gov.br/gitlab/softwarepublico/
  375 +
  376 +Melissa: Acho que não temos perna, mas podemos usar o gráfico como ah-ha
382 --> 377 -->
383 378
384 ## References 379 ## References