top of page
Search

The Road To Continuous Delivery - Part 1

Feb 2, 2012
3 min read

Updated: Aug 18, 2021



The following series of posts are coming from my experience as the head of back-end engineering at Wix.com. I will try to tell the story of Wix and how we see and practice continuous delivery, hoping it will help you make the switch too.


So you decided that your development process is too slow and thinking to go to continuous delivery methodology instead of the “not so agile” Scrum. I assume you did some research, talked to a couple of companies and attended some lectures about the subject and want to practice continuous deployment too, but many companies asking me how to start and what to do? In this series of articles I will try to describe some strategies to make the switch to Continuous delivery (CD).





Continuous Delivery is the last step in a long process. If you are just starting you should not expect that you can do this within a few weeks or even within few months. It might take you almost a year to actually make several deployments a day. One important thing to know, it takes full commitment from the management. Real CD is going to change the whole development methodologies and affect everyone in the R&D.


Phase 1 – Test Driven Development

In order to do a successful CD you need to change the development methodology to be Test Driven Development. There are many books and online resources about how to do TDD. I will not write about it here but I will share our experience and the things we did in order to do TDD. One of the best books I recommend is “Growing Object Oriented Guided by tests”.


A key concept of CD is that everything should be tested automatically. Like most companies we had a manual QA department which was one of the reasons the release process is taking so long. With every new version of the product regression tests takes longer.


Usually when you’ll suggest moving to TDD and eventually to CI/CD the QA department will start having concerns that they are going to be expandable and be fired, but we did not do such thing. What we did is that we sent our entire QA department to learn Java. Up to that point our QA personnel were not developers and did not know how to write code. Our initial thought was that the QA department is going to write tests, but not Unit tests, they are going to write Integration and End to End Tests.


Since we had a lot of legacy code that was not tested at all, the best way to test it, is by integration tests because IT is similar to what manual QA is doing, testing the system from outside. We needed the man power to help the developers so training the QA personal was a good choice.


Now as for the development department, we started to teach the developers how to write tests. Of course the first tests we wrote were pretty bad ones but as time passes, like any skill, knowing how to write good test is also a skill, so it improves in time. In order to succeed in moving to CD it is critical to get support from the management because before you see results there is a lot of investments to be done and development velocity is going to sink even further as you start training and building the infrastructure to support CD.


We were lucky to get such support. We identified that our legacy code is unmaintainable and we decided we need a complete re-write. However this is not always possible, especially with large legacy systems so you may want to make the switch only for new products. So what we did is we stopped all the development of new features and started to progress in several fronts. First we selected our new build system and CI server. There are many options to choose from, we chose Git, Maven, Team City and Artifactory. Then we started to build our new framework in TDD so we could have a good foundation for our products. Note that we did not anything that relates to deployment (yet).


Building our framework we set few requirements for ourselves. When a developer checks our code from Git he should be able to run unit test and integration tests on his own laptop WITHOUT any network connections. This is very important because if you depend on fixtures such as remote database to run your IT, you don’t write good integration tests, limit to work only from the office, your tests will probably run slower and you will probably get into trouble running multiple tests on the same database because tests will contaminate the DB.



 
 
 

150 Comments


What interests me about exploring visual ideas through observation is how a broad idea becomes part of an ordinary day. A small choice of colour or viewpoint can change the feeling of an image. That is why the connection between Jimdonica and creative visual expression makes me want to think through an example. It leaves me curious about the steps between understanding an idea and putting it into practice. How would you describe that change to someone who has not seen the work?

Like

cameron64411
3 days ago

I keep coming back to the everyday side of discovering cultural connections through everyday stories, where a simple detail can lead to a wider question. An ordinary tradition can show how people remember and share a sense of place. With Harmonie Tirol in mind, cultural storytelling ideas feels like a topic worth exploring one question at a time. That is the part I would keep thinking about after moving on to something else. How would you invite different people to describe what the same tradition means to them?

Like

stevenlee67326
3 days ago

I like thinking about building a personal connection with words through small observations rather than trying to reach a conclusion immediately. A single remembered detail can give a short piece of writing a clearer sense of place. That is why the connection between Getrecommendationletter and reading and creative writing makes me want to think through an example. I can imagine different responses depending on the situation, which makes the question more interesting. What would you keep when shortening a story without losing its atmosphere?

Like

brianmartin940
3 days ago

For me, planning travel with room for discovery becomes more engaging when there is room for questions as well as explanations. Leaving space between activities can make a journey more enjoyable than filling every hour. It is the kind of question I would keep in mind when thinking about Esquarehotel and thoughtful travel planning. The smaller details are what I would want to return to, especially when an explanation feels too broad. How would you balance a few planned stops with time to explore?

Like

The theme of building confidence through manageable learning goals makes me curious about what people notice in their own everyday experiences. A clear first step can make a difficult subject feel more approachable. I would connect Eng For You with practical learning skills through an ordinary example rather than a broad claim. It leaves me curious about the steps between understanding an idea and putting it into practice. How do you decide what to practise when a topic initially seems too broad?

Like
bottom of page