Commit 7027cecdd93d7c9adf8c0316ecbfa1fe1723e8a3
Exists in
master
and in
3 other branches
[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 |  | 167 |  |
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 |